Version 1.8.0-dev.2.0

svn merge -r 41254:41388 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

git-svn-id: http://dart.googlecode.com/svn/trunk@41389 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/LICENSE b/LICENSE
index 7af3211..fa95f12 100644
--- a/LICENSE
+++ b/LICENSE
@@ -17,8 +17,11 @@
 Httplib2 - in samples/third_party/httplib2
 JSON - in third_party/json
 JUnit - in third_party/junit
+NSS - in third_party/nss and third_party/net_nss
 Oauth - in samples/third_party/oauth2client
+SQLite - in third_party/sqlite
 weberknecht - in third_party/weberknecht
+zlib - in third_party/zlib
 fest - in third_party/fest
 mockito - in third_party/mockito
 
diff --git a/pkg/analysis_server/bin/dartdeps.dart b/pkg/analysis_server/bin/dartdeps.dart
index 6fdcb8b..c0eaad4 100644
--- a/pkg/analysis_server/bin/dartdeps.dart
+++ b/pkg/analysis_server/bin/dartdeps.dart
@@ -28,7 +28,7 @@
  */
 class _DartDependencyAnalyzer {
   /**
-   * The name of the application that is used to start the analyzer.
+   * The name of the application that is used to start the dependency analyzer.
    */
   static const BINARY_NAME = 'dartdeps';
 
@@ -180,6 +180,6 @@
     print('Usage: $BINARY_NAME [flags] <application_directory>');
     print('');
     print('Supported flags are:');
-    print(parser.getUsage());
+    print(parser.usage);
   }
 }
diff --git a/pkg/analysis_server/bin/fuzz.dart b/pkg/analysis_server/bin/fuzz.dart
index 8fc71d9..2ca29c2 100644
--- a/pkg/analysis_server/bin/fuzz.dart
+++ b/pkg/analysis_server/bin/fuzz.dart
@@ -25,6 +25,10 @@
  * containing sources to be analyzed.
  */
 class _FuzzTest {
+  /**
+   * The name of the application that is used to start the fuzz tester.
+   */
+  static const BINARY_NAME = 'fuzz';
 
   //TODO (danrubel) extract common behavior for use in multiple test scenarios
   //TODO (danrubel) cleanup test to use async/await for better readability
@@ -158,9 +162,9 @@
 
   /// Print information about how to use the server.
   void _printUsage(ArgParser parser) {
-    print('Usage: analyzer [flags] <application_directory>');
+    print('Usage: $BINARY_NAME [flags] <application_directory>');
     print('');
     print('Supported flags are:');
-    print(parser.getUsage());
+    print(parser.usage);
   }
 }
diff --git a/pkg/analysis_server/doc/api.html b/pkg/analysis_server/doc/api.html
index 12552c5..4b0c556 100644
--- a/pkg/analysis_server/doc/api.html
+++ b/pkg/analysis_server/doc/api.html
@@ -804,8 +804,9 @@
           </dd><dt class="field"><b><i>regions ( List&lt;<a href="#type_NavigationRegion">NavigationRegion</a>&gt; )</i></b></dt><dd>
             
             <p>
-              The navigation regions contained in the file. Each
-              navigation region represents a list of targets
+              The navigation regions contained in the file.
+              The regions are sorted by their offsets.
+              Each navigation region represents a list of targets
               associated with some range. The lists will usually
               contain a single target, but can contain more in the
               case of a part that is included in multiple libraries
@@ -2250,7 +2251,7 @@
           applied to files.
         </p>
         
-      <dl><dt class="value">ANNOTATION</dt><dt class="value">BUILT_IN</dt><dt class="value">CLASS</dt><dt class="value">COMMENT_BLOCK</dt><dt class="value">COMMENT_DOCUMENTATION</dt><dt class="value">COMMENT_END_OF_LINE</dt><dt class="value">CONSTRUCTOR</dt><dt class="value">DIRECTIVE</dt><dt class="value">DYNAMIC_TYPE</dt><dt class="value">FIELD</dt><dt class="value">FIELD_STATIC</dt><dt class="value">FUNCTION</dt><dt class="value">FUNCTION_DECLARATION</dt><dt class="value">FUNCTION_TYPE_ALIAS</dt><dt class="value">GETTER_DECLARATION</dt><dt class="value">IDENTIFIER_DEFAULT</dt><dt class="value">IMPORT_PREFIX</dt><dt class="value">KEYWORD</dt><dt class="value">LABEL</dt><dt class="value">LITERAL_BOOLEAN</dt><dt class="value">LITERAL_DOUBLE</dt><dt class="value">LITERAL_INTEGER</dt><dt class="value">LITERAL_LIST</dt><dt class="value">LITERAL_MAP</dt><dt class="value">LITERAL_STRING</dt><dt class="value">LOCAL_VARIABLE</dt><dt class="value">LOCAL_VARIABLE_DECLARATION</dt><dt class="value">METHOD</dt><dt class="value">METHOD_DECLARATION</dt><dt class="value">METHOD_DECLARATION_STATIC</dt><dt class="value">METHOD_STATIC</dt><dt class="value">PARAMETER</dt><dt class="value">SETTER_DECLARATION</dt><dt class="value">TOP_LEVEL_VARIABLE</dt><dt class="value">TYPE_NAME_DYNAMIC</dt><dt class="value">TYPE_PARAMETER</dt></dl></dd><dt class="typeDefinition"><a name="type_HoverInformation">HoverInformation: object</a></dt><dd>
+      <dl><dt class="value">ANNOTATION</dt><dt class="value">BUILT_IN</dt><dt class="value">CLASS</dt><dt class="value">COMMENT_BLOCK</dt><dt class="value">COMMENT_DOCUMENTATION</dt><dt class="value">COMMENT_END_OF_LINE</dt><dt class="value">CONSTRUCTOR</dt><dt class="value">DIRECTIVE</dt><dt class="value">DYNAMIC_TYPE</dt><dt class="value">ENUM</dt><dt class="value">ENUM_CONSTANT</dt><dt class="value">FIELD</dt><dt class="value">FIELD_STATIC</dt><dt class="value">FUNCTION</dt><dt class="value">FUNCTION_DECLARATION</dt><dt class="value">FUNCTION_TYPE_ALIAS</dt><dt class="value">GETTER_DECLARATION</dt><dt class="value">IDENTIFIER_DEFAULT</dt><dt class="value">IMPORT_PREFIX</dt><dt class="value">KEYWORD</dt><dt class="value">LABEL</dt><dt class="value">LITERAL_BOOLEAN</dt><dt class="value">LITERAL_DOUBLE</dt><dt class="value">LITERAL_INTEGER</dt><dt class="value">LITERAL_LIST</dt><dt class="value">LITERAL_MAP</dt><dt class="value">LITERAL_STRING</dt><dt class="value">LOCAL_VARIABLE</dt><dt class="value">LOCAL_VARIABLE_DECLARATION</dt><dt class="value">METHOD</dt><dt class="value">METHOD_DECLARATION</dt><dt class="value">METHOD_DECLARATION_STATIC</dt><dt class="value">METHOD_STATIC</dt><dt class="value">PARAMETER</dt><dt class="value">SETTER_DECLARATION</dt><dt class="value">TOP_LEVEL_VARIABLE</dt><dt class="value">TYPE_NAME_DYNAMIC</dt><dt class="value">TYPE_PARAMETER</dt></dl></dd><dt class="typeDefinition"><a name="type_HoverInformation">HoverInformation: object</a></dt><dd>
         <p>
           The hover information associated with a specific location.
         </p>
diff --git a/pkg/analysis_server/lib/driver.dart b/pkg/analysis_server/lib/driver.dart
index 284cf60..597dc19 100644
--- a/pkg/analysis_server/lib/driver.dart
+++ b/pkg/analysis_server/lib/driver.dart
@@ -4,6 +4,7 @@
 
 library driver;
 
+import 'dart:async';
 import 'dart:io';
 
 import 'package:analysis_server/http_server.dart';
@@ -125,12 +126,28 @@
     if (serve_http) {
       httpServer.serveHttp(port);
     }
-    stdioServer.serveStdio().then((_) {
-      if (serve_http) {
-        httpServer.close();
-      }
-      exit(0);
+    _capturePrints(() {
+      stdioServer.serveStdio().then((_) {
+        if (serve_http) {
+          httpServer.close();
+        }
+        exit(0);
+      });
+    }, httpServer.recordPrint);
+  }
+
+  /**
+   * Execute [callback], capturing any data it prints out and redirecting it to
+   * the function [printHandler].
+   */
+  dynamic _capturePrints(dynamic callback(), void printHandler(String line)) {
+    ZoneSpecification zoneSpecification = new ZoneSpecification(print:
+        (Zone self, ZoneDelegate parent, Zone zone, String line) {
+      printHandler(line);
+      // Note: we don't pass the line on to stdout, because that is reserved
+      // for communication to the client.
     });
+    return runZoned(callback, zoneSpecification: zoneSpecification);
   }
 
   /**
@@ -140,6 +157,6 @@
     print('Usage: $BINARY_NAME [flags]');
     print('');
     print('Supported flags are:');
-    print(parser.getUsage());
+    print(parser.usage);
   }
 }
diff --git a/pkg/analysis_server/lib/http_server.dart b/pkg/analysis_server/lib/http_server.dart
index 1fbd0af..ef22a81 100644
--- a/pkg/analysis_server/lib/http_server.dart
+++ b/pkg/analysis_server/lib/http_server.dart
@@ -18,6 +18,11 @@
  */
 class HttpAnalysisServer {
   /**
+   * Number of lines of print output to capture.
+   */
+  static const int MAX_PRINT_BUFFER_LENGTH = 1000;
+
+  /**
    * An object that can handle either a WebSocket connection or a connection
    * to the client over stdio.
    */
@@ -39,6 +44,11 @@
   Future<HttpServer> _server;
 
   /**
+   * Last PRINT_BUFFER_LENGTH lines printed.
+   */
+  List<String> _printBuffer = <String>[];
+
+  /**
    * Attach a listener to a newly created HTTP server.
    */
   void _handleServer(HttpServer httServer) {
@@ -61,7 +71,7 @@
    */
   void _handleGetRequest(HttpRequest request) {
     if (getHandler == null) {
-      getHandler = new GetHandler(socketServer);
+      getHandler = new GetHandler(socketServer, _printBuffer);
     }
     getHandler.handleGetRequest(request);
   }
@@ -99,4 +109,15 @@
       server.close();
     });
   }
+
+  /**
+   * Record that the given line was printed out by the analysis server.
+   */
+  void recordPrint(String line) {
+    _printBuffer.add(line);
+    if (_printBuffer.length > MAX_PRINT_BUFFER_LENGTH) {
+      _printBuffer.removeRange(0,
+          _printBuffer.length - MAX_PRINT_BUFFER_LENGTH);
+    }
+  }
 }
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 6daf3e1..2ad03fd 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -16,7 +16,6 @@
 import 'package:analysis_server/src/operation/operation_queue.dart';
 import 'package:analysis_server/src/protocol.dart' hide Element;
 import 'package:analyzer/source/package_map_provider.dart';
-import 'package:analyzer/source/package_map_resolver.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -42,10 +41,10 @@
       : super(resourceProvider, packageMapProvider);
 
   @override
-  void addContext(Folder folder, Map<String, List<Folder>> packageMap) {
+  void addContext(Folder folder, UriResolver packageUriResolver) {
     AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
     analysisServer.folderMap[folder] = context;
-    context.sourceFactory = _createSourceFactory(packageMap);
+    context.sourceFactory = _createSourceFactory(packageUriResolver);
     context.analysisOptions = new AnalysisOptionsImpl.con1(defaultOptions);
     analysisServer.schedulePerformAnalysisOperation(context);
   }
@@ -71,22 +70,22 @@
   }
 
   @override
-  void updateContextPackageMap(Folder contextFolder, Map<String,
-      List<Folder>> packageMap) {
+  void updateContextPackageUriResolver(Folder contextFolder,
+                                       UriResolver packageUriResolver) {
     AnalysisContext context = analysisServer.folderMap[contextFolder];
-    context.sourceFactory = _createSourceFactory(packageMap);
+    context.sourceFactory = _createSourceFactory(packageUriResolver);
     analysisServer.schedulePerformAnalysisOperation(context);
   }
 
   /**
    * Set up a [SourceFactory] that resolves packages using the given
-   * [packageMap].
+   * [packageUriResolver].
    */
-  SourceFactory _createSourceFactory(Map<String, List<Folder>> packageMap) {
+  SourceFactory _createSourceFactory(UriResolver packageUriResolver) {
     List<UriResolver> resolvers = <UriResolver>[
         new DartUriResolver(analysisServer.defaultSdk),
         new ResourceUriResolver(resourceProvider),
-        new PackageMapUriResolver(resourceProvider, packageMap)];
+        packageUriResolver];
     return new SourceFactory(resolvers);
   }
 }
@@ -181,14 +180,15 @@
 
   /**
    * A queue of the operations to perform in this server.
-   *
-   * Invariant: when this queue is non-empty, there is exactly one pending call
-   * to [performOperation] on the event queue.  When this list is empty, there are
-   * no calls to [performOperation] on the event queue.
    */
   ServerOperationQueue operationQueue;
 
   /**
+   * True if there is a pending future which will execute [performOperation].
+   */
+  bool performOperationPending = false;
+
+  /**
    * A set of the [ServerService]s to send notifications for.
    */
   Set<ServerService> serverServices = new HashSet<ServerService>();
@@ -269,9 +269,8 @@
    * Schedules execution of the given [ServerOperation].
    */
   void scheduleOperation(ServerOperation operation) {
-    bool wasEmpty = operationQueue.isEmpty;
     addOperation(operation);
-    if (wasEmpty) {
+    if (!performOperationPending) {
       _schedulePerformOperation();
     }
   }
@@ -486,6 +485,8 @@
    * Perform the next available [ServerOperation].
    */
   void performOperation() {
+    assert(performOperationPending);
+    performOperationPending = false;
     if (!running) {
       // An error has occurred, or the connection to the client has been
       // closed, since this method was scheduled on the event queue.  So
@@ -495,6 +496,12 @@
     }
     // prepare next operation
     ServerOperation operation = operationQueue.take();
+    if (operation == null) {
+      // This can happen if the operation queue is cleared while the operation
+      // loop is in progress.  No problem; we just need to exit the operation
+      // loop and wait for the next operation to be added.
+      return;
+    }
     sendStatusNotification(operation);
     // perform the operation
     try {
@@ -791,7 +798,7 @@
     List<Source> librarySources = context.getLibrariesContaining(unitSource);
     for (Source librarySource in librarySources) {
       CompilationUnit unit =
-          context.getResolvedCompilationUnit2(unitSource, librarySource);
+          context.resolveCompilationUnit2(unitSource, librarySource);
       if (unit != null) {
         units.add(unit);
       }
@@ -801,7 +808,7 @@
   }
 
   /**
-   * Returns [AstNode]s at the given [offset] of the given [file].
+   * Returns resolved [AstNode]s at the given [offset] of the given [file].
    *
    * May be empty, but not `null`.
    */
@@ -820,7 +827,7 @@
   /**
    * Returns [Element]s at the given [offset] of the given [file].
    *
-   * May be empty if not resolved, but not `null`.
+   * May be empty if cannot be resolved, but not `null`.
    */
   List<Element> getElementsAtOffset(String file, int offset) {
     List<AstNode> nodes = getNodesAtOffset(file, offset);
@@ -912,7 +919,9 @@
    * Schedules [performOperation] exection.
    */
   void _schedulePerformOperation() {
+    assert (!performOperationPending);
     new Future(performOperation);
+    performOperationPending = true;
   }
 
   /**
diff --git a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
index 2ab4441..cc0274d 100644
--- a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
+++ b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
@@ -103,7 +103,10 @@
     if (_closed.isCompleted) {
       return;
     }
-    output.writeln(JSON.encode(notification.toJson()));
+    ServerCommunicationChannel.ToJson.start();
+    String jsonEncoding = JSON.encode(notification.toJson());
+    ServerCommunicationChannel.ToJson.stop();
+    output.writeln(jsonEncoding);
   }
 
   @override
@@ -113,7 +116,10 @@
     if (_closed.isCompleted) {
       return;
     }
-    output.writeln(JSON.encode(response.toJson()));
+    ServerCommunicationChannel.ToJson.start();
+    String jsonEncoding = JSON.encode(response.toJson());
+    ServerCommunicationChannel.ToJson.stop();
+    output.writeln(jsonEncoding);
   }
 
   /**
@@ -127,7 +133,9 @@
     }
     // Parse the string as a JSON descriptor and process the resulting
     // structure as a request.
+    ServerCommunicationChannel.FromJson.start();
     Request request = new Request.fromString(data);
+    ServerCommunicationChannel.FromJson.stop();
     if (request == null) {
       sendResponse(new Response.invalidRequestFormat());
       return;
diff --git a/pkg/analysis_server/lib/src/channel/channel.dart b/pkg/analysis_server/lib/src/channel/channel.dart
index 4e4ab2a..107b8b0 100644
--- a/pkg/analysis_server/lib/src/channel/channel.dart
+++ b/pkg/analysis_server/lib/src/channel/channel.dart
@@ -8,6 +8,7 @@
 import 'dart:convert';
 
 import 'package:analysis_server/src/protocol.dart';
+import 'package:analyzer/src/util/utilities_timing.dart';
 
 /**
  * The abstract class [ClientCommunicationChannel] defines the behavior of
@@ -45,6 +46,18 @@
  */
 abstract class ServerCommunicationChannel {
   /**
+   * A stopwatch used to accumulate the amount of time spent converting
+   * incomming requests from Json to objects.
+   */
+  static final CountedStopwatch FromJson = new CountedStopwatch();
+
+  /**
+   * A stopwatch used to accumulate the amount of time spent converting outgoing
+   * responses and notifications from objects to Json.
+   */
+  static final CountedStopwatch ToJson = new CountedStopwatch();
+
+  /**
    * Listen to the channel for requests. If a request is received, invoke the
    * [onRequest] function. If an error is encountered while trying to read from
    * the socket, invoke the [onError] function. If the socket is closed by the
diff --git a/pkg/analysis_server/lib/src/channel/web_socket_channel.dart b/pkg/analysis_server/lib/src/channel/web_socket_channel.dart
index 21835da..c661bfb 100644
--- a/pkg/analysis_server/lib/src/channel/web_socket_channel.dart
+++ b/pkg/analysis_server/lib/src/channel/web_socket_channel.dart
@@ -85,12 +85,18 @@
 
   @override
   void sendNotification(Notification notification) {
-    socket.add(JSON.encode(notification.toJson()));
+    ServerCommunicationChannel.ToJson.start();
+    String jsonEncoding = JSON.encode(notification.toJson());
+    ServerCommunicationChannel.ToJson.stop();
+    socket.add(jsonEncoding);
   }
 
   @override
   void sendResponse(Response response) {
-    socket.add(JSON.encode(response.toJson()));
+    ServerCommunicationChannel.ToJson.start();
+    String jsonEncoding = JSON.encode(response.toJson());
+    ServerCommunicationChannel.ToJson.stop();
+    socket.add(jsonEncoding);
   }
 
   /**
@@ -101,7 +107,9 @@
     if (data is String) {
       // Parse the string as a JSON descriptor and process the resulting
       // structure as a request.
+      ServerCommunicationChannel.FromJson.start();
       Request request = new Request.fromString(data);
+      ServerCommunicationChannel.FromJson.stop();
       if (request == null) {
         sendResponse(new Response.invalidRequestFormat());
         return;
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index 20f618f..50c5171 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -118,7 +118,16 @@
     if (element is! ClassElement) {
       return false;
     }
-    return _addRegion_node(node, HighlightRegionType.CLASS);
+    ClassElement classElement = element;
+    // prepare type
+    HighlightRegionType type;
+    if (classElement.isEnum) {
+      type = HighlightRegionType.ENUM;
+    } else {
+      type = HighlightRegionType.CLASS;
+    }
+    // add region
+    return _addRegion_node(node, type);
   }
 
   bool _addIdentifierRegion_constructor(SimpleIdentifier node) {
@@ -156,15 +165,23 @@
     if (element is PropertyAccessorElement) {
       element = (element as PropertyAccessorElement).variable;
     }
+    // prepare type
+    HighlightRegionType type;
     if (element is FieldElement) {
-      if ((element as FieldElement).isStatic) {
-        return _addRegion_node(node, HighlightRegionType.FIELD_STATIC);
+      Element enclosingElement = element.enclosingElement;
+      if (enclosingElement is ClassElement && enclosingElement.isEnum) {
+        type = HighlightRegionType.ENUM_CONSTANT;
+      } else if ((element as FieldElement).isStatic) {
+        type = HighlightRegionType.FIELD_STATIC;
       } else {
-        return _addRegion_node(node, HighlightRegionType.FIELD);
+        type = HighlightRegionType.FIELD;
       }
+    } else if (element is TopLevelVariableElement) {
+      type = HighlightRegionType.TOP_LEVEL_VARIABLE;
     }
-    if (element is TopLevelVariableElement) {
-      return _addRegion_node(node, HighlightRegionType.TOP_LEVEL_VARIABLE);
+    // add region
+    if (type != null) {
+      return _addRegion_node(node, type);
     }
     return false;
   }
@@ -354,6 +371,18 @@
   }
 
   @override
+  Object visitAwaitExpression(AwaitExpression node) {
+    computer._addRegion_token(node.awaitKeyword, HighlightRegionType.BUILT_IN);
+    return super.visitAwaitExpression(node);
+  }
+
+  @override
+  Object visitBlockFunctionBody(BlockFunctionBody node) {
+    _addRegions_functionBody(node);
+    return super.visitBlockFunctionBody(node);
+  }
+
+  @override
   Object visitBooleanLiteral(BooleanLiteral node) {
     computer._addRegion_node(node, HighlightRegionType.KEYWORD);
     computer._addRegion_node(node, HighlightRegionType.LITERAL_BOOLEAN);
@@ -421,6 +450,12 @@
   }
 
   @override
+  Object visitEnumDeclaration(EnumDeclaration node) {
+    computer._addRegion_token(node.keyword, HighlightRegionType.KEYWORD);
+    return super.visitEnumDeclaration(node);
+  }
+
+  @override
   Object visitExportDirective(ExportDirective node) {
     computer._addRegion_node(node, HighlightRegionType.DIRECTIVE);
     computer._addRegion_token(node.keyword, HighlightRegionType.BUILT_IN);
@@ -428,6 +463,12 @@
   }
 
   @override
+  Object visitExpressionFunctionBody(ExpressionFunctionBody node) {
+    _addRegions_functionBody(node);
+    return super.visitExpressionFunctionBody(node);
+  }
+
+  @override
   Object visitFieldDeclaration(FieldDeclaration node) {
     computer._addRegion_token(node.staticKeyword, HighlightRegionType.BUILT_IN);
     return super.visitFieldDeclaration(node);
@@ -671,4 +712,24 @@
     computer._addRegion_token(node.withKeyword, HighlightRegionType.KEYWORD);
     return super.visitWithClause(node);
   }
+
+  @override
+  Object visitYieldStatement(YieldStatement node) {
+    Token keyword = node.yieldKeyword;
+    Token star = node.star;
+    int offset = keyword.offset;
+    int end = star != null ? star.end : keyword.end;
+    computer._addRegion(offset, end - offset, HighlightRegionType.BUILT_IN);
+    return super.visitYieldStatement(node);
+  }
+
+  void _addRegions_functionBody(FunctionBody node) {
+    Token keyword = node.keyword;
+    if (keyword != null) {
+      Token star = node.star;
+      int offset = keyword.offset;
+      int end = star != null ? star.end : keyword.end;
+      computer._addRegion(offset, end - offset, HighlightRegionType.BUILT_IN);
+    }
+  }
 }
diff --git a/pkg/analysis_server/lib/src/computer/computer_navigation.dart b/pkg/analysis_server/lib/src/computer/computer_navigation.dart
index 17f9af5..a21ec59 100644
--- a/pkg/analysis_server/lib/src/computer/computer_navigation.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_navigation.dart
@@ -36,10 +36,35 @@
     if (element == null || element == DynamicElementImpl.instance) {
       return;
     }
+    if (element.location == null) {
+      return;
+    }
     protocol.Element target = protocol.newElement_fromEngine(element);
     _regions.add(new protocol.NavigationRegion(offset, length, [target]));
   }
 
+  void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) {
+    int offset = a.offset;
+    int length = b.end - offset;
+    _addRegion(offset, length, element);
+  }
+
+  void _addRegion_nodeStart_nodeStart(AstNode a, AstNode b, Element element,
+      {bool excludeLastChar: false}) {
+    int offset = a.offset;
+    int length = b.offset - offset;
+    if (excludeLastChar) {
+      length--;
+    }
+    _addRegion(offset, length, element);
+  }
+
+  void _addRegion_tokenStart_nodeEnd(Token a, AstNode b, Element element) {
+    int offset = a.offset;
+    int length = b.end - offset;
+    _addRegion(offset, length, element);
+  }
+
   void _addRegionForNode(AstNode node, Element element) {
     int offset = node.offset;
     int length = node.length;
@@ -51,24 +76,6 @@
     int length = token.length;
     _addRegion(offset, length, element);
   }
-
-  void _addRegion_nodeStart_nodeEnd(AstNode a, AstNode b, Element element) {
-    int offset = a.offset;
-    int length = b.end - offset;
-    _addRegion(offset, length, element);
-  }
-
-  void _addRegion_nodeStart_nodeStart(AstNode a, AstNode b, Element element) {
-    int offset = a.offset;
-    int length = b.offset - offset;
-    _addRegion(offset, length, element);
-  }
-
-  void _addRegion_tokenStart_nodeEnd(Token a, AstNode b, Element element) {
-    int offset = a.offset;
-    int length = b.end - offset;
-    _addRegion(offset, length, element);
-  }
 }
 
 
@@ -79,14 +86,31 @@
 
   @override
   visitAssignmentExpression(AssignmentExpression node) {
+    _safelyVisit(node.leftHandSide);
     computer._addRegionForToken(node.operator, node.bestElement);
-    return super.visitAssignmentExpression(node);
+    _safelyVisit(node.rightHandSide);
   }
 
   @override
   visitBinaryExpression(BinaryExpression node) {
+    _safelyVisit(node.leftOperand);
     computer._addRegionForToken(node.operator, node.bestElement);
-    return super.visitBinaryExpression(node);
+    _safelyVisit(node.rightOperand);
+  }
+
+  @override
+  visitCompilationUnit(CompilationUnit unit) {
+    // prepare top-level nodes sorted by their offsets
+    List<AstNode> nodes = <AstNode>[];
+    nodes.addAll(unit.directives);
+    nodes.addAll(unit.declarations);
+    nodes.sort((a, b) {
+      return a.offset - b.offset;
+    });
+    // visit sorted nodes
+    for (AstNode node in nodes) {
+      node.accept(this);
+    }
   }
 
   @override
@@ -105,7 +129,7 @@
             node.element);
       }
     }
-    return super.visitConstructorDeclaration(node);
+    super.visitConstructorDeclaration(node);
   }
 
   @override
@@ -115,7 +139,7 @@
       Element element = exportElement.exportedLibrary;
       computer._addRegion_tokenStart_nodeEnd(node.keyword, node.uri, element);
     }
-    return super.visitExportDirective(node);
+    super.visitExportDirective(node);
   }
 
   @override
@@ -125,13 +149,13 @@
       Element element = importElement.importedLibrary;
       computer._addRegion_tokenStart_nodeEnd(node.keyword, node.uri, element);
     }
-    return super.visitImportDirective(node);
+    super.visitImportDirective(node);
   }
 
   @override
   visitIndexExpression(IndexExpression node) {
+    super.visitIndexExpression(node);
     computer._addRegionForToken(node.rightBracket, node.bestElement);
-    return super.visitIndexExpression(node);
   }
 
   @override
@@ -147,13 +171,14 @@
             node.argumentList,
             element);
       } else {
-        // add region for "type" first, so that it is found before "new "
-        computer._addRegionForNode(constructorName.type, classElement);
-        // "new "
+        // "new ", excluding last character
         computer._addRegion_nodeStart_nodeStart(
             node,
             constructorName.type,
-            element);
+            element,
+            excludeLastChar: true);
+        // "ClassName"
+        computer._addRegionForNode(constructorName.type, classElement);
         // optional ".name"
         if (constructorName.period != null) {
           computer._addRegion_tokenStart_nodeEnd(
@@ -163,7 +188,7 @@
         }
       }
     }
-    return super.visitInstanceCreationExpression(node);
+    _safelyVisit(node.argumentList);
   }
 
   @override
@@ -172,7 +197,7 @@
         node.keyword,
         node.uri,
         node.element);
-    return super.visitPartDirective(node);
+    super.visitPartDirective(node);
   }
 
   @override
@@ -181,27 +206,33 @@
         node.keyword,
         node.libraryName,
         node.element);
-    return super.visitPartOfDirective(node);
+    super.visitPartOfDirective(node);
   }
 
   @override
   visitPostfixExpression(PostfixExpression node) {
+    super.visitPostfixExpression(node);
     computer._addRegionForToken(node.operator, node.bestElement);
-    return super.visitPostfixExpression(node);
   }
 
   @override
   visitPrefixExpression(PrefixExpression node) {
     computer._addRegionForToken(node.operator, node.bestElement);
-    return super.visitPrefixExpression(node);
+    super.visitPrefixExpression(node);
   }
 
   @override
   visitSimpleIdentifier(SimpleIdentifier node) {
     if (node.parent is ConstructorDeclaration) {
-    } else {
-      computer._addRegionForNode(node, node.bestElement);
+      return;
     }
-    return super.visitSimpleIdentifier(node);
+    Element element = node.bestElement;
+    computer._addRegionForNode(node, element);
+  }
+
+  void _safelyVisit(AstNode node) {
+    if (node != null) {
+      node.accept(this);
+    }
   }
 }
diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart
index 7b9b4e1..2447fcd 100644
--- a/pkg/analysis_server/lib/src/context_manager.dart
+++ b/pkg/analysis_server/lib/src/context_manager.dart
@@ -9,8 +9,11 @@
 
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/source/package_map_provider.dart';
+import 'package:analyzer/source/package_map_resolver.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
+import 'package:analyzer/src/generated/java_io.dart';
 import 'package:path/path.dart' as pathos;
 import 'package:watcher/watcher.dart';
 
@@ -66,19 +69,25 @@
   Map<String, String> packageRoots = <String, String>{};
 
   /**
+   * Same as [packageRoots], except that source folders have been normalized
+   * and non-folders have been removed.
+   */
+  Map<String, String> normalizedPackageRoots = <String, String>{};
+
+  /**
    * Provider which is used to determine the mapping from package name to
    * package folder.
    */
-  final PackageMapProvider packageMapProvider;
+  final PackageMapProvider _packageMapProvider;
 
-  ContextManager(this.resourceProvider, this.packageMapProvider) {
+  ContextManager(this.resourceProvider, this._packageMapProvider) {
     pathContext = resourceProvider.pathContext;
   }
 
   /**
    * Called when a new context needs to be created.
    */
-  void addContext(Folder folder, Map<String, List<Folder>> packageMap);
+  void addContext(Folder folder, UriResolver packageUriResolver);
 
   /**
    * Called when the set of files associated with a context have changed (or
@@ -130,8 +139,18 @@
    */
   void setRoots(List<String> includedPaths, List<String> excludedPaths,
       Map<String, String> packageRoots) {
-    // TODO(paulberry): process package roots.
     this.packageRoots = packageRoots;
+
+    // Normalize all package root sources by mapping them to folders on the
+    // filesystem.  Ignore any package root sources that aren't folders.
+    normalizedPackageRoots = <String, String>{};
+    packageRoots.forEach((String sourcePath, String targetPath) {
+      Resource resource = resourceProvider.getResource(sourcePath);
+      if (resource is Folder) {
+        normalizedPackageRoots[resource.path] = targetPath;
+      }
+    });
+
     List<Folder> contextFolders = _contexts.keys.toList();
     // included
     Set<Folder> includedFolders = new HashSet<Folder>();
@@ -160,6 +179,14 @@
         _destroyContext(contextFolder);
       }
     }
+    // Update package roots for existing contexts
+    _contexts.forEach((Folder folder, _ContextInfo info) {
+      String newPackageRoot = normalizedPackageRoots[folder.path];
+      if (info.packageRoot != newPackageRoot) {
+        info.packageRoot = newPackageRoot;
+        _recomputePackageUriResolver(info);
+      }
+    });
     // create new contexts
     for (Folder includedFolder in includedFolders) {
       bool wasIncluded = contextFolders.any((folder) {
@@ -198,8 +225,8 @@
   /**
    * Called when the package map for a context has changed.
    */
-  void updateContextPackageMap(Folder contextFolder, Map<String,
-      List<Folder>> packageMap);
+  void updateContextPackageUriResolver(Folder contextFolder,
+                                       UriResolver packageUriResolver);
 
   /**
    * Resursively adds all Dart and HTML files to the [changeSet].
@@ -266,20 +293,39 @@
   }
 
   /**
+   * Compute the appropriate package URI resolver for [folder], and store
+   * dependency information in [info].
+   */
+  UriResolver _computePackageUriResolver(Folder folder, _ContextInfo info) {
+    UriResolver packageUriResolver;
+    if (info.packageRoot != null) {
+      info.packageMapDependencies = new Set<String>();
+      packageUriResolver = new PackageUriResolver(
+          [new JavaFile(info.packageRoot)]);
+    } else {
+      PackageMapInfo packageMapInfo =
+          _packageMapProvider.computePackageMap(folder);
+      info.packageMapDependencies = packageMapInfo.dependencies;
+      packageUriResolver = new PackageMapUriResolver(
+          resourceProvider, packageMapInfo.packageMap);
+      // TODO(paulberry): if any of the dependencies is outside of [folder],
+      // we'll need to watch their parent folders as well.
+    }
+    return packageUriResolver;
+  }
+
+  /**
    * Create a new empty context associated with [folder].
    */
   _ContextInfo _createContext(Folder folder, List<_ContextInfo> children) {
-    _ContextInfo info = new _ContextInfo(folder, children);
+    _ContextInfo info = new _ContextInfo(folder, children,
+        normalizedPackageRoots[folder.path]);
     _contexts[folder] = info;
     info.changeSubscription = folder.changes.listen((WatchEvent event) {
       _handleWatchEvent(folder, info, event);
     });
-    PackageMapInfo packageMapInfo =
-        packageMapProvider.computePackageMap(folder);
-    info.packageMapDependencies = packageMapInfo.dependencies;
-    // TODO(paulberry): if any of the dependencies is outside of [folder],
-    // we'll need to watch their parent folders as well.
-    addContext(folder, packageMapInfo.packageMap);
+    UriResolver packageUriResolver = _computePackageUriResolver(folder, info);
+    addContext(folder, packageUriResolver);
     return info;
   }
 
@@ -439,14 +485,7 @@
     }
 
     if (info.packageMapDependencies.contains(path)) {
-      // TODO(paulberry): when computePackageMap is changed into an
-      // asynchronous API call, we'll want to suspend analysis for this context
-      // while we're rerunning "pub list", since any analysis we complete while
-      // "pub list" is in progress is just going to get thrown away anyhow.
-      PackageMapInfo packageMapInfo =
-          packageMapProvider.computePackageMap(folder);
-      info.packageMapDependencies = packageMapInfo.dependencies;
-      updateContextPackageMap(folder, packageMapInfo.packageMap);
+      _recomputePackageUriResolver(info);
     }
   }
 
@@ -505,6 +544,20 @@
     }
   }
 
+  /**
+   * Recompute the package URI resolver for the context described by [info],
+   * and update the client appropriately.
+   */
+  void _recomputePackageUriResolver(_ContextInfo info) {
+    // TODO(paulberry): when computePackageMap is changed into an
+    // asynchronous API call, we'll want to suspend analysis for this context
+    // while we're rerunning "pub list", since any analysis we complete while
+    // "pub list" is in progress is just going to get thrown away anyhow.
+    UriResolver packageUriResolver =
+        _computePackageUriResolver(info.folder, info);
+    updateContextPackageUriResolver(info.folder, packageUriResolver);
+  }
+
   static bool _shouldFileBeAnalyzed(File file) {
     if (!(AnalysisEngine.isDartFileName(file.path) ||
         AnalysisEngine.isHtmlFileName(file.path))) {
@@ -534,6 +587,11 @@
   final List<_ContextInfo> children;
 
   /**
+   * The package root for this context, or null if there is no package root.
+   */
+  String packageRoot;
+
+  /**
    * The [_ContextInfo] that encloses this one.
    */
   _ContextInfo parent;
@@ -561,7 +619,7 @@
    */
   Set<String> packageMapDependencies;
 
-  _ContextInfo(this.folder, this.children) {
+  _ContextInfo(this.folder, this.children, this.packageRoot) {
     pubspecPath = folder.getChild(PUBSPEC_NAME).path;
     for (_ContextInfo child in children) {
       child.parent = this;
diff --git a/pkg/analysis_server/lib/src/generated_protocol.dart b/pkg/analysis_server/lib/src/generated_protocol.dart
index 11aaca3..ccc138d 100644
--- a/pkg/analysis_server/lib/src/generated_protocol.dart
+++ b/pkg/analysis_server/lib/src/generated_protocol.dart
@@ -1542,12 +1542,13 @@
   String file;
 
   /**
-   * The navigation regions contained in the file. Each navigation region
-   * represents a list of targets associated with some range. The lists will
-   * usually contain a single target, but can contain more in the case of a
-   * part that is included in multiple libraries or in Dart code that is
-   * compiled against multiple versions of a package. Note that the navigation
-   * regions that are returned do not overlap other navigation regions.
+   * The navigation regions contained in the file. The regions are sorted by
+   * their offsets. Each navigation region represents a list of targets
+   * associated with some range. The lists will usually contain a single
+   * target, but can contain more in the case of a part that is included in
+   * multiple libraries or in Dart code that is compiled against multiple
+   * versions of a package. Note that the navigation regions that are returned
+   * do not overlap other navigation regions.
    */
   List<NavigationRegion> regions;
 
@@ -6409,6 +6410,8 @@
  *   CONSTRUCTOR
  *   DIRECTIVE
  *   DYNAMIC_TYPE
+ *   ENUM
+ *   ENUM_CONSTANT
  *   FIELD
  *   FIELD_STATIC
  *   FUNCTION
@@ -6457,6 +6460,10 @@
 
   static const DYNAMIC_TYPE = const HighlightRegionType._("DYNAMIC_TYPE");
 
+  static const ENUM = const HighlightRegionType._("ENUM");
+
+  static const ENUM_CONSTANT = const HighlightRegionType._("ENUM_CONSTANT");
+
   static const FIELD = const HighlightRegionType._("FIELD");
 
   static const FIELD_STATIC = const HighlightRegionType._("FIELD_STATIC");
@@ -6535,6 +6542,10 @@
         return DIRECTIVE;
       case "DYNAMIC_TYPE":
         return DYNAMIC_TYPE;
+      case "ENUM":
+        return ENUM;
+      case "ENUM_CONSTANT":
+        return ENUM_CONSTANT;
       case "FIELD":
         return FIELD;
       case "FIELD_STATIC":
diff --git a/pkg/analysis_server/lib/src/get_handler.dart b/pkg/analysis_server/lib/src/get_handler.dart
index f0f577f..91fe13b 100644
--- a/pkg/analysis_server/lib/src/get_handler.dart
+++ b/pkg/analysis_server/lib/src/get_handler.dart
@@ -4,9 +4,13 @@
 
 library get.handler;
 
+import 'dart:convert';
 import 'dart:io';
 
 import 'package:analysis_server/src/socket_server.dart';
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/java_engine.dart';
 
 /**
  * Instances of the class [GetHandler] handle GET requests.
@@ -23,9 +27,14 @@
   SocketServer _server;
 
   /**
+   * Buffer containing strings printed by the analysis server.
+   */
+  List<String> _printBuffer;
+
+  /**
    * Initialize a newly created handler for GET requests.
    */
-  GetHandler(SocketServer this._server);
+  GetHandler(this._server, this._printBuffer);
 
   /**
    * Handle a GET request received by the HTTP server.
@@ -63,59 +72,63 @@
           response,
           ['Context', 'ERROR', 'FLUSHED', 'IN_PROCESS', 'INVALID', 'VALID'],
           true);
-      // TODO(scheglov) replace with using folder based contexts
-//      _server.analysisServer.contextMap.forEach((String key, AnalysisContext context) {
-//        AnalysisContentStatistics statistics =
-//            (context as AnalysisContextImpl).statistics;
-//        int errorCount = 0;
-//        int flushedCount = 0;
-//        int inProcessCount = 0;
-//        int invalidCount = 0;
-//        int validCount = 0;
-//        statistics.cacheRows.forEach((AnalysisContentStatistics_CacheRow row) {
-//          errorCount += row.errorCount;
-//          flushedCount += row.flushedCount;
-//          inProcessCount += row.inProcessCount;
-//          invalidCount += row.invalidCount;
-//          validCount += row.validCount;
-//        });
-//        _writeRow(response, [
-//            '<a href="#context_$key">$key</a>',
-//            errorCount,
-//            flushedCount,
-//            inProcessCount,
-//            invalidCount,
-//            validCount]);
-//      });
+      _server.analysisServer.folderMap.forEach((Folder folder, AnalysisContextImpl context) {
+        String key = folder.shortName;
+        AnalysisContextStatistics statistics = context.statistics;
+        int errorCount = 0;
+        int flushedCount = 0;
+        int inProcessCount = 0;
+        int invalidCount = 0;
+        int validCount = 0;
+        statistics.cacheRows.forEach((AnalysisContextStatistics_CacheRow row) {
+          errorCount += row.errorCount;
+          flushedCount += row.flushedCount;
+          inProcessCount += row.inProcessCount;
+          invalidCount += row.invalidCount;
+          validCount += row.validCount;
+        });
+        _writeRow(response, [
+            '<a href="#context_${HTML_ESCAPE.convert(key)}">$key</a>',
+            errorCount,
+            flushedCount,
+            inProcessCount,
+            invalidCount,
+            validCount]);
+      });
       response.write('</table>');
-//      _server.analysisServer.contextMap.forEach((String key, AnalysisContext context) {
-//        response.write('<h2><a name="context_$key">Analysis Context: $key</a></h2>');
-//        AnalysisContentStatistics statistics = (context as AnalysisContextImpl).statistics;
-//        response.write('<table>');
-//        _writeRow(
-//            response,
-//            ['Item', 'ERROR', 'FLUSHED', 'IN_PROCESS', 'INVALID', 'VALID'],
-//            true);
-//        statistics.cacheRows.forEach((AnalysisContentStatistics_CacheRow row) {
-//          _writeRow(
-//              response,
-//              [row.name,
-//               row.errorCount,
-//               row.flushedCount,
-//               row.inProcessCount,
-//               row.invalidCount,
-//               row.validCount]);
-//        });
-//        response.write('</table>');
-//        List<CaughtException> exceptions = statistics.exceptions;
-//        if (!exceptions.isEmpty) {
-//          response.write('<h2>Exceptions</h2>');
-//          exceptions.forEach((CaughtException exception) {
-//            response.write('<p>${exception.exception}</p>');
-//          });
-//        }
-//      });
+      _server.analysisServer.folderMap.forEach((Folder folder, AnalysisContextImpl context) {
+        String key = folder.shortName;
+        response.write('<h2><a name="context_${HTML_ESCAPE.convert(key)}">Analysis Context: $key</a></h2>');
+        AnalysisContextStatistics statistics = context.statistics;
+        response.write('<table>');
+        _writeRow(
+            response,
+            ['Item', 'ERROR', 'FLUSHED', 'IN_PROCESS', 'INVALID', 'VALID'],
+            true);
+        statistics.cacheRows.forEach((AnalysisContextStatistics_CacheRow row) {
+          _writeRow(
+              response,
+              [row.name,
+               row.errorCount,
+               row.flushedCount,
+               row.inProcessCount,
+               row.invalidCount,
+               row.validCount]);
+        });
+        response.write('</table>');
+        List<CaughtException> exceptions = statistics.exceptions;
+        if (!exceptions.isEmpty) {
+          response.write('<h2>Exceptions</h2>');
+          exceptions.forEach((CaughtException exception) {
+            response.write('<p>${exception.exception}</p>');
+          });
+        }
+      });
     }
+    response.write('<h1>Most recent strings printed by analysis server</h2>');
+    response.write('<pre>');
+    response.write(HTML_ESCAPE.convert(_printBuffer.join('\n')));
+    response.write('</pre>');
     response.write('</body>');
     response.write('</html>');
     response.close();
@@ -139,20 +152,20 @@
    * [header] is `true`.
    */
   void _writeRow(HttpResponse response, List<Object> columns, [bool header = false]) {
-    if (header) {
-      response.write('<th>');
-    } else {
-      response.write('<tr>');
-    }
+    response.write('<tr>');
     columns.forEach((Object value) {
-      response.write('<td>');
+      if (header) {
+        response.write('<th>');
+      } else {
+        response.write('<td>');
+      }
       response.write(value);
-      response.write('</td>');
+      if (header) {
+        response.write('</th>');
+      } else {
+        response.write('</td>');
+      }
     });
-    if (header) {
-      response.write('</th>');
-    } else {
-      response.write('</tr>');
-    }
+    response.write('</tr>');
   }
 }
\ No newline at end of file
diff --git a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart
index d16b80d..2cfbc81 100644
--- a/pkg/analysis_server/lib/src/services/completion/imported_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/imported_computer.dart
@@ -48,6 +48,11 @@
   _ImportedVisitor(this.request);
 
   @override
+  Future<bool> visitArgumentList(ArgumentList node) {
+    return _addImportedElementSuggestions(node, excludeVoidReturn: true);
+  }
+
+  @override
   Future<bool> visitBlock(Block node) {
     return _addImportedElementSuggestions(node);
   }
diff --git a/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart b/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
index 798e69d..3669bd4 100644
--- a/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/invocation_computer.dart
@@ -136,6 +136,17 @@
   _InvocationElementVisitor(this.request);
 
   @override
+  Future<bool> visitClassElement(ClassElement element) {
+    if (element != null) {
+      InterfaceType type = element.type;
+      if (type != null) {
+        ClassElementSuggestionBuilder.staticSuggestionsFor(request, type.element);
+      }
+    }
+    return new Future.value(false);
+  }
+
+  @override
   Future<bool> visitElement(Element element) {
     return new Future.value(false);
   }
@@ -162,6 +173,21 @@
   }
 
   @override
+  Future<bool> visitPropertyAccessorElement(PropertyAccessorElement element) {
+    if (element != null) {
+      PropertyInducingElement elemVar = element.variable;
+      if (elemVar != null) {
+        DartType type = elemVar.type;
+        if (type != null) {
+          ClassElementSuggestionBuilder.suggestionsFor(request, type.element);
+        }
+      }
+      return new Future.value(true);
+    }
+    return new Future.value(false);
+  }
+
+  @override
   Future<bool> visitVariableElement(VariableElement element) {
     DartType type = element.type;
     if (type != null) {
diff --git a/pkg/analysis_server/lib/src/services/completion/local_computer.dart b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
index 19e28f4..8e0ba88 100644
--- a/pkg/analysis_server/lib/src/services/completion/local_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/local_computer.dart
@@ -133,17 +133,35 @@
       } else if (declaration is TopLevelVariableDeclaration) {
         _addTopLevelVarSuggestions(declaration.variables);
       } else if (declaration is ClassTypeAlias) {
-        _addSuggestion(
+        CompletionSuggestion suggestion = _addSuggestion(
             declaration.name,
             CompletionSuggestionKind.CLASS_ALIAS,
             null,
             null);
+        if (suggestion != null) {
+          suggestion.element = _createElement(
+              protocol.ElementKind.CLASS_TYPE_ALIAS,
+              declaration.name,
+              null,
+              NO_RETURN_TYPE,
+              true,
+              _isDeprecated(declaration.metadata));
+        }
       } else if (declaration is FunctionTypeAlias) {
-        _addSuggestion(
+        CompletionSuggestion suggestion = _addSuggestion(
             declaration.name,
             CompletionSuggestionKind.FUNCTION_TYPE_ALIAS,
             declaration.returnType,
             null);
+        if (suggestion != null) {
+          suggestion.element = _createElement(
+              protocol.ElementKind.FUNCTION_TYPE_ALIAS,
+              declaration.name,
+              null, // TODO (danrubel) determine parameters
+              NO_RETURN_TYPE, // TODO (danrubel) determine return type
+              true,
+              _isDeprecated(declaration.metadata));
+        }
       }
     });
   }
diff --git a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
index 31f6a65..391ac2a 100644
--- a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
@@ -94,8 +94,12 @@
  * [ClassElementSuggestionBuilder.suggestionsFor].
  */
 class ClassElementSuggestionBuilder extends _AbstractSuggestionBuilder {
+  final bool staticOnly;
 
-  ClassElementSuggestionBuilder(DartCompletionRequest request) : super(request);
+  ClassElementSuggestionBuilder(DartCompletionRequest request, {bool staticOnly:
+      false})
+      : super(request),
+        this.staticOnly = staticOnly;
 
   @override
   visitClassElement(ClassElement element) {
@@ -112,6 +116,9 @@
 
   @override
   visitFieldElement(FieldElement element) {
+    if (staticOnly && !element.isStatic) {
+      return;
+    }
     _addElementSuggestion(
         element,
         CompletionSuggestionKind.GETTER,
@@ -121,6 +128,9 @@
 
   @override
   visitMethodElement(MethodElement element) {
+    if (staticOnly && !element.isStatic) {
+      return;
+    }
     if (element.isOperator) {
       return;
     }
@@ -133,6 +143,9 @@
 
   @override
   visitPropertyAccessorElement(PropertyAccessorElement element) {
+    if (staticOnly && !element.isStatic) {
+      return;
+    }
     if (element.isGetter) {
       _addElementSuggestion(
           element,
@@ -156,6 +169,15 @@
       return element.accept(new ClassElementSuggestionBuilder(request));
     }
   }
+
+  /**
+   * Add suggestions for the visible static members in the given class
+   */
+  static void staticSuggestionsFor(DartCompletionRequest request,
+      ClassElement element) {
+    return element.accept(
+        new ClassElementSuggestionBuilder(request, staticOnly: true));
+  }
 }
 
 /**
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 5812b10..22c25e8 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -68,6 +68,8 @@
       const FixKind('CREATE_FILE', 50, "Create file '{0}'");
   static const CREATE_FUNCTION =
       const FixKind('CREATE_FUNCTION', 49, "Create function '{0}'");
+  static const CREATE_LOCAL_VARIABLE =
+      const FixKind('CREATE_LOCAL_VARIABLE', 50, "Create local variable '{0}'");
   static const CREATE_METHOD =
       const FixKind('CREATE_METHOD', 50, "Create method '{0}'");
   static const CREATE_MISSING_OVERRIDES = const FixKind(
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 3b57b9e..84c5890 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -202,6 +202,7 @@
       _addFix_createFunction_forFunctionType();
       _addFix_importLibrary_withType();
       _addFix_importLibrary_withTopLevelVariable();
+      _addFix_createLocalVariable();
     }
     if (errorCode == StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER) {
       _addFix_useStaticAccess_method();
@@ -722,6 +723,54 @@
     }
   }
 
+  void _addFix_createLocalVariable() {
+    SimpleIdentifier nameNode = node;
+    String name = nameNode.name;
+    // if variable is assigned, convert assignment into declaration
+    if (node.parent is AssignmentExpression) {
+      AssignmentExpression assignment = node.parent;
+      if (assignment.leftHandSide == node &&
+          assignment.operator.type == TokenType.EQ &&
+          assignment.parent is ExpressionStatement) {
+        _addInsertEdit(node.offset, 'var ');
+        _addFix(FixKind.CREATE_LOCAL_VARIABLE, [name]);
+        return;
+      }
+    }
+    // prepare target Statement
+    Statement target = node.getAncestor((x) => x is Statement);
+    if (target == null) {
+      return;
+    }
+    String prefix = utils.getNodePrefix(target);
+    // build variable declaration source
+    SourceBuilder sb = new SourceBuilder(file, target.offset);
+    {
+      // append type
+      DartType fieldType = _inferUndefinedExpressionType(node);
+      if (fieldType != null) {
+        _appendType(sb, fieldType, 'TYPE');
+      } else {
+        sb.append('var ');
+      }
+      // append name
+      {
+        sb.startPosition('NAME');
+        sb.append(name);
+        sb.endPosition();
+      }
+      sb.append(';');
+      sb.append(eol);
+      sb.append(prefix);
+    }
+    // insert source
+    _insertBuilder(sb);
+    // add linked positions
+    _addLinkedPosition3('NAME', sb, rf.rangeNode(node));
+    // add proposal
+    _addFix(FixKind.CREATE_LOCAL_VARIABLE, [name]);
+  }
+
   void _addFix_createMissingOverrides(List<ExecutableElement> elements) {
     elements = elements.toList();
     int numElements = elements.length;
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index 3bf24eb..767e399 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -765,20 +765,6 @@
   }
 
   /**
-   * Returns the start index of the line which contains given index.
-   */
-  int getLineThis(int index) {
-    while (index > 0) {
-      int c = _buffer.codeUnitAt(index - 1);
-      if (c == 0xD || c == 0xA) {
-        break;
-      }
-      index--;
-    }
-    return index;
-  }
-
-  /**
    * Returns a [SourceRange] that covers [range] and extends (if possible) to
    * cover whole lines.
    */
@@ -802,6 +788,20 @@
   }
 
   /**
+   * Returns the start index of the line which contains given index.
+   */
+  int getLineThis(int index) {
+    while (index > 0) {
+      int c = _buffer.codeUnitAt(index - 1);
+      if (c == 0xD || c == 0xA) {
+        break;
+      }
+      index--;
+    }
+    return index;
+  }
+
+  /**
    * Returns the line prefix consisting of spaces and tabs on the left from the given
    *         [AstNode].
    */
diff --git a/pkg/analysis_server/lib/src/services/generated/completion.dart b/pkg/analysis_server/lib/src/services/generated/completion.dart
index bad6d0d..fad936f 100644
--- a/pkg/analysis_server/lib/src/services/generated/completion.dart
+++ b/pkg/analysis_server/lib/src/services/generated/completion.dart
@@ -8,8 +8,10 @@
 library services.completion;
 
 import 'dart:collection';
-import 'package:analysis_server/src/protocol.dart' show
-    CompletionSuggestionKind;
+import "dart:math" as math;
+
+import 'package:analysis_server/src/protocol.dart'
+    show CompletionSuggestionKind;
 import 'package:analyzer/src/generated/java_core.dart' hide StringUtils;
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/java_io.dart';
@@ -22,15 +24,16 @@
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
+
 import 'stubs.dart';
 import 'util.dart';
 
 class AstNodeClassifier_CompletionEngine_typeOf extends CompletionEngine_AstNodeClassifier {
   final CompletionEngine CompletionEngine_this;
 
-  List<DartType> result;
+  DartType result = null;
 
-  AstNodeClassifier_CompletionEngine_typeOf(this.CompletionEngine_this, this.result) : super();
+  AstNodeClassifier_CompletionEngine_typeOf(this.CompletionEngine_this);
 
   @override
   Object visitPrefixedIdentifier(PrefixedIdentifier node) => visitSimpleIdentifier(node.identifier);
@@ -42,7 +45,7 @@
       PropertyAccessorElement accessor = elem as PropertyAccessorElement;
       if (accessor.isSynthetic) {
         PropertyInducingElement var2 = accessor.variable;
-        result[0] = CompletionEngine_this._typeSearch(var2);
+        result = CompletionEngine_this._typeSearch(var2);
       }
     }
     return null;
@@ -603,7 +606,7 @@
   void _namespaceReference(NamespaceDirective node, SimpleStringLiteral literal) {
     String lit = literal.literal.lexeme;
     if (!lit.isEmpty) {
-      lit = lit.substring(1, Math.max(lit.length - 1, 0));
+      lit = lit.substring(1, math.max(lit.length - 1, 0));
     }
     _filter = _createFilter(new Ident.con2(node, lit, literal.offset + 1));
     Set<String> packageUris = new Set();
@@ -818,16 +821,13 @@
   bool _filterDisallows2(String name) => !_filter._match2(name);
 
   List<Element> _findAllNotTypes(List<Element> elements) {
-    elements = [];
-    for (JavaIterator<Element> I = new JavaIterator(elements); I.hasNext;) {
-      Element element = I.next();
+    return elements.where((Element element) {
       ElementKind kind = element.kind;
-      if (kind == ElementKind.FUNCTION || kind == ElementKind.TOP_LEVEL_VARIABLE || kind == ElementKind.GETTER || kind == ElementKind.SETTER) {
-        continue;
-      }
-      I.remove();
-    }
-    return new List.from(elements);
+      return kind == ElementKind.FUNCTION
+          || kind == ElementKind.TOP_LEVEL_VARIABLE
+          || kind == ElementKind.GETTER
+          || kind == ElementKind.SETTER;
+      }).toList();
   }
 
   List<Element> _findAllPrefixes() {
@@ -841,16 +841,11 @@
   }
 
   List<Element> _findAllTypes2(List<Element> elements) {
-    elements = [];
-    for (JavaIterator<Element> I = new JavaIterator(elements); I.hasNext;) {
-      Element element = I.next();
+    return elements.where((Element element) {
       ElementKind kind = element.kind;
-      if (kind == ElementKind.CLASS || kind == ElementKind.FUNCTION_TYPE_ALIAS) {
-        continue;
-      }
-      I.remove();
-    }
-    return new List.from(elements);
+      return kind == ElementKind.CLASS
+          || kind == ElementKind.FUNCTION_TYPE_ALIAS;
+      }).toList();
   }
 
   List<Element> _findTopLevelElements(LibraryElement library, TopLevelNamesKind topKind) {
@@ -940,7 +935,7 @@
 
   List<ImportElement> _importsWithName(SimpleIdentifier libName) {
     String name = libName.name;
-    List<ImportElement> imports = [];
+    List<ImportElement> imports = <ImportElement>[];
     for (ImportElement imp in currentLibrary.imports) {
       PrefixElement prefix = imp.prefix;
       if (prefix != null) {
@@ -950,7 +945,7 @@
         }
       }
     }
-    return new List.from(imports);
+    return imports;
   }
 
   bool _isCompletingKeyword(Token keyword) {
@@ -1328,8 +1323,8 @@
         types.add(param.type.toString());
       }
     }
-    prop.setParameterNames(new List.from(params));
-    prop.setParameterTypes(new List.from(types));
+    prop.setParameterNames(params);
+    prop.setParameterTypes(types);
     prop.setParameterStyle(posCount, named, positional);
   }
 
@@ -1412,11 +1407,12 @@
   DartType _typeOf2(Expression expr) {
     DartType type = expr.bestType;
     if (type.isDynamic) {
-      List<DartType> result = new List<DartType>(1);
-      CompletionEngine_AstNodeClassifier visitor = new AstNodeClassifier_CompletionEngine_typeOf(this, result);
+      AstNodeClassifier_CompletionEngine_typeOf visitor
+          = new AstNodeClassifier_CompletionEngine_typeOf(this);
       expr.accept(visitor);
-      if (result[0] != null) {
-        return result[0];
+      DartType result = visitor.result;
+      if (result != null) {
+        return result;
       }
     }
     return type;
@@ -1914,7 +1910,7 @@
   void _addNamesDefinedByHierarchy2(InterfaceType type, bool forSuper) {
     List<InterfaceType> superTypes = type.element.allSupertypes;
     if (!forSuper) {
-      superTypes = ArrayUtils.addAt(superTypes, 0, type);
+      superTypes.insert(0, type);
     }
     _addNamesDefinedByTypes(superTypes);
     // Collect names defined by subtypes separately so they can be identified later.
@@ -3583,10 +3579,9 @@
   }
 
   void _removeNotMatching(List<Element> elements) {
-    for (JavaIterator<Element> I = new JavaIterator(elements); I.hasNext;) {
-      Element element = I.next();
-      if (!_match(element)) {
-        I.remove();
+    for (int i = elements.length - 1; i >= 0; i--) {
+      if (!_match(elements[i])) {
+        elements.removeAt(i);
       }
     }
   }
diff --git a/pkg/analysis_server/lib/src/services/generated/util.dart b/pkg/analysis_server/lib/src/services/generated/util.dart
index c969c96..2c89137 100644
--- a/pkg/analysis_server/lib/src/services/generated/util.dart
+++ b/pkg/analysis_server/lib/src/services/generated/util.dart
@@ -8,6 +8,8 @@
 library services.util;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'package:analyzer/src/generated/java_core.dart' hide StringUtils;
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/element.dart';
@@ -16,6 +18,7 @@
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/scanner.dart';
+
 import 'stubs.dart';
 
 /**
@@ -376,7 +379,7 @@
     // find min length
     int minLength = 2147483647;
     for (List<AstNode> parentList in parents) {
-      minLength = Math.min(minLength, parentList.length);
+      minLength = math.min(minLength, parentList.length);
     }
     // find deepest parent
     int i = 0;
@@ -454,7 +457,7 @@
       parents[--index] = current;
       current = current.parent;
     }
-    return JavaArrays.asList(parents);
+    return parents;
   }
 
   /**
@@ -516,7 +519,7 @@
    */
   static String getRecommentedFileNameForClass(String className) {
     int len = className.length;
-    JavaStringBuilder sb = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     bool prevWasUpper = false;
     for (int i = 0; i < len; i++) {
       int c = className.codeUnitAt(i);
@@ -527,22 +530,22 @@
           // HTTPServer
           //     ^
           if (!nextIsUpper) {
-            sb.appendChar(0x5F);
+            buffer.writeCharCode(0x5F);
           }
         } else {
           // HttpServer
           //     ^
-          sb.appendChar(0x5F);
+          buffer.writeCharCode(0x5F);
         }
         prevWasUpper = true;
         c = Character.toLowerCase(c);
       } else {
         prevWasUpper = false;
       }
-      sb.appendChar(c);
+      buffer.writeCharCode(c);
     }
-    sb.append(".dart");
-    String fileName = sb.toString();
+    buffer.write(".dart");
+    String fileName = buffer.toString();
     return fileName;
   }
 
@@ -598,27 +601,27 @@
   static List<String> getVariableNameSuggestions(String text, Set<String> excluded) {
     // filter out everything except of letters and white spaces
     {
-      JavaStringBuilder sb = new JavaStringBuilder();
+      StringBuffer buffer = new StringBuffer();
       for (int i = 0; i < text.length; i++) {
         int c = text.codeUnitAt(i);
         if (Character.isLetter(c) || Character.isWhitespace(c)) {
-          sb.appendChar(c);
+          buffer.writeCharCode(c);
         }
       }
-      text = sb.toString();
+      text = buffer.toString();
     }
     // make single camel-case text
     {
       List<String> words = StringUtils.split(text);
-      JavaStringBuilder sb = new JavaStringBuilder();
+      StringBuffer buffer = new StringBuffer();
       for (int i = 0; i < words.length; i++) {
         String word = words[i];
         if (i > 0) {
           word = StringUtils.capitalize(word);
         }
-        sb.append(word);
+        buffer.write(word);
       }
-      text = sb.toString();
+      text = buffer.toString();
     }
     // split camel-case into separate suggested names
     Set<String> res = new LinkedHashSet();
@@ -958,7 +961,7 @@
    * @return the source with changed indentation.
    */
   String getIndentSource2(String source, bool right) {
-    JavaStringBuilder sb = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     String indent = getIndent(1);
     String eol = endOfLine;
     List<String> lines = StringUtils.splitByWholeSeparatorPreserveAllTokens(source, eol);
@@ -975,10 +978,10 @@
         line = StringUtils.removeStart(line, indent);
       }
       // append line
-      sb.append(line);
-      sb.append(eol);
+      buffer.write(line);
+      buffer.write(eol);
     }
-    return sb.toString();
+    return buffer.toString();
   }
 
   /**
@@ -994,7 +997,7 @@
       }
     }
     // re-indent lines
-    JavaStringBuilder sb = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     String eol = endOfLine;
     List<String> lines = StringUtils.splitByWholeSeparatorPreserveAllTokens(source, eol);
     int lineOffset = 0;
@@ -1007,7 +1010,9 @@
       // check if "offset" is in one of the String ranges
       bool inString = false;
       for (SourceRange lineRange in lineRanges) {
-        inString = javaBooleanOr(inString, lineOffset > lineRange.offset && lineOffset < lineRange.end);
+        if (lineOffset > lineRange.offset && lineOffset < lineRange.end) {
+          inString = true;
+        }
         if (lineOffset > lineRange.end) {
           break;
         }
@@ -1018,10 +1023,10 @@
         line = "${newIndent}${StringUtils.removeStart(line, oldIndent)}";
       }
       // append line
-      sb.append(line);
-      sb.append(eol);
+      buffer.write(line);
+      buffer.write(eol);
     }
-    return sb.toString();
+    return buffer.toString();
   }
 
   /**
@@ -1308,28 +1313,28 @@
     // function type
     if (type is FunctionType) {
       FunctionType functionType = type;
-      JavaStringBuilder sb = new JavaStringBuilder();
+      StringBuffer buffer = new StringBuffer();
       // return type
       DartType returnType = functionType.returnType;
       if (returnType != null && !returnType.isDynamic) {
-        sb.append(getTypeSource2(returnType));
-        sb.appendChar(0x20);
+        buffer.write(getTypeSource2(returnType));
+        buffer.writeCharCode(0x20);
       }
       // parameter name
-      sb.append(name);
+      buffer.write(name);
       // parameters
-      sb.appendChar(0x28);
+      buffer.writeCharCode(0x28);
       List<ParameterElement> fParameters = functionType.parameters;
       for (int i = 0; i < fParameters.length; i++) {
         ParameterElement fParameter = fParameters[i];
         if (i != 0) {
-          sb.append(", ");
+          buffer.write(", ");
         }
-        sb.append(getParameterSource(fParameter.type, fParameter.name));
+        buffer.write(getParameterSource(fParameter.type, fParameter.name));
       }
-      sb.appendChar(0x29);
+      buffer.writeCharCode(0x29);
       // done
-      return sb.toString();
+      return buffer.toString();
     }
     // simple type
     return "${getTypeSource2(type)} ${name}";
@@ -1383,7 +1388,7 @@
    * @return the source to reference the given [Type] in this [CompilationUnit].
    */
   String getTypeSource2(DartType type) {
-    JavaStringBuilder sb = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     // prepare element
     Element element = type.element;
     if (element == null) {
@@ -1396,13 +1401,13 @@
     {
       ImportElement imp = _getImportElement(element);
       if (imp != null && imp.prefix != null) {
-        sb.append(imp.prefix.displayName);
-        sb.append(".");
+        buffer.write(imp.prefix.displayName);
+        buffer.write(".");
       }
     }
     // append simple name
     String name = element.displayName;
-    sb.append(name);
+    buffer.write(name);
     // may be type arguments
     if (type is InterfaceType) {
       InterfaceType interfaceType = type;
@@ -1417,19 +1422,19 @@
       }
       // append type arguments
       if (hasArguments) {
-        sb.append("<");
+        buffer.write("<");
         for (int i = 0; i < arguments.length; i++) {
           DartType argument = arguments[i];
           if (i != 0) {
-            sb.append(", ");
+            buffer.write(", ");
           }
-          sb.append(getTypeSource2(argument));
+          buffer.write(getTypeSource2(argument));
         }
-        sb.append(">");
+        buffer.write(">");
       }
     }
     // done
-    return sb.toString();
+    return buffer.toString();
   }
 
   /**
diff --git a/pkg/analysis_server/lib/src/services/index/index_contributor.dart b/pkg/analysis_server/lib/src/services/index/index_contributor.dart
index 7d94a30..5f39378 100644
--- a/pkg/analysis_server/lib/src/services/index/index_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/index/index_contributor.dart
@@ -421,6 +421,18 @@
   }
 
   @override
+  Object visitEnumDeclaration(EnumDeclaration node) {
+    ClassElement element = node.element;
+    enterScope(element);
+    try {
+      _recordElementDefinition(element);
+      return super.visitEnumDeclaration(node);
+    } finally {
+      _exitScope();
+    }
+  }
+
+  @override
   Object visitClassTypeAlias(ClassTypeAlias node) {
     ClassElement element = node.element;
     enterScope(element);
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
index 8725031..0925b38 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
@@ -513,13 +513,13 @@
 
 
 class _HasStatementVisitor extends GeneralizingAstVisitor {
-  final List<bool> result;
+  bool result = false;
 
-  _HasStatementVisitor(this.result);
+  _HasStatementVisitor();
 
   @override
   visitStatement(Statement node) {
-    result[0] = true;
+    result = true;
   }
 }
 
@@ -579,9 +579,9 @@
   }
 
   bool _hasStatements(AstNode root) {
-    List<bool> result = [false];
-    root.accept(new _HasStatementVisitor(result));
-    return result[0];
+    _HasStatementVisitor visitor = new _HasStatementVisitor();
+    root.accept(visitor);
+    return visitor.result;
   }
 
   void _tryToFindOccurrence(Expression node) {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
index e2ee357..f093266 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -939,13 +939,10 @@
           new _Occurrence(nodeRange, ref.selectionRange.intersects(nodeRange));
       ref._occurrences.add(occurrence);
       // prepare mapping of parameter names to the occurrence variables
-      for (MapEntry<String, String> entry in getMapEntrySet(
-          nodePattern.originalToPatternNames)) {
-        String patternName = entry.getValue();
-        String originalName = entry.getKey();
+      nodePattern.originalToPatternNames.forEach((String originalName, String patternName) {
         String selectionName = patternToSelectionName[patternName];
         occurrence._parameterOldToOccurrenceName[selectionName] = originalName;
-      }
+      });
       // update static
       if (forceStatic) {
         ref._staticContext = true;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/naming_conventions.dart b/pkg/analysis_server/lib/src/services/refactoring/naming_conventions.dart
index 617ced0..51fb74c 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/naming_conventions.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/naming_conventions.dart
@@ -24,40 +24,6 @@
  *   WARNING if the name is discouraged;
  *   FATAL if the name is illegal.
  */
-RefactoringStatus validateConstantName(String name) {
-  // null
-  if (name == null) {
-    return new RefactoringStatus.fatal("Constant name must not be null.");
-  }
-  // is not identifier
-  RefactoringStatus status =
-      _validateIdentifier(name, "Constant name", 'an uppercase letter or underscore');
-  if (!status.isOK) {
-    return status;
-  }
-  // is private, OK
-  int startIndex = 0;
-  if (name.codeUnitAt(0) == CHAR_UNDERSCORE) {
-    startIndex++;
-  }
-  // does not start with lower case
-  for (int i = startIndex; i < name.length; i++) {
-    int c = name.codeUnitAt(i);
-    if (!isUpperCase(c) && !isDigit(c) && c != CHAR_UNDERSCORE) {
-      return new RefactoringStatus.warning(
-          "Constant name should be all uppercase with underscores.");
-    }
-  }
-  // OK
-  return new RefactoringStatus();
-}
-
-/**
- * Returns the [RefactoringStatus] with severity:
- *   OK if the name is valid;
- *   WARNING if the name is discouraged;
- *   FATAL if the name is illegal.
- */
 RefactoringStatus validateConstructorName(String name) {
   if (name != null && name.isEmpty) {
     return new RefactoringStatus();
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
index 88cf801..321785e 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_class_member.dart
@@ -73,12 +73,7 @@
   RefactoringStatus checkNewName() {
     RefactoringStatus result = super.checkNewName();
     if (element is FieldElement) {
-      FieldElement fieldElement = element as FieldElement;
-      if (fieldElement.isStatic && fieldElement.isConst) {
-        result.addStatus(validateConstantName(newName));
-      } else {
-        result.addStatus(validateFieldName(newName));
-      }
+      result.addStatus(validateFieldName(newName));
     }
     if (element is MethodElement) {
       result.addStatus(validateMethodName(newName));
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
index b8a2d21..7effb9d 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_local.dart
@@ -56,12 +56,7 @@
   RefactoringStatus checkNewName() {
     RefactoringStatus result = super.checkNewName();
     if (element is LocalVariableElement) {
-      LocalVariableElement variableElement = element;
-      if (variableElement.isConst) {
-        result.addStatus(validateConstantName(newName));
-      } else {
-        result.addStatus(validateVariableName(newName));
-      }
+      result.addStatus(validateVariableName(newName));
     } else if (element is ParameterElement) {
       result.addStatus(validateParameterName(newName));
     } else if (element is FunctionElement) {
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
index 81a69bd..9a9d65e 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
@@ -76,12 +76,7 @@
   RefactoringStatus checkNewName() {
     RefactoringStatus result = super.checkNewName();
     if (element is TopLevelVariableElement) {
-      TopLevelVariableElement variable = element as TopLevelVariableElement;
-      if (variable.isConst) {
-        result.addStatus(validateConstantName(newName));
-      } else {
-        result.addStatus(validateVariableName(newName));
-      }
+      result.addStatus(validateVariableName(newName));
     }
     if (element is FunctionElement) {
       result.addStatus(validateFunctionName(newName));
diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
index 99f39c9..30885e8 100644
--- a/pkg/analysis_server/test/abstract_context.dart
+++ b/pkg/analysis_server/test/abstract_context.dart
@@ -80,6 +80,13 @@
     resourceResolver = new ResourceUriResolver(provider);
     context = AnalysisEngine.instance.createAnalysisContext();
     context.sourceFactory = new SourceFactory([SDK_RESOLVER, resourceResolver]);
+    {
+      AnalysisOptionsImpl options =
+          new AnalysisOptionsImpl.con1(context.analysisOptions);
+      options.enableAsync = true;
+      options.enableEnum = true;
+      context.analysisOptions = options;
+    }
   }
 
   void tearDown() {
diff --git a/pkg/analysis_server/test/analysis/notification_highlights_test.dart b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
index 773d6f6..a12add9 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights_test.dart
@@ -161,6 +161,32 @@
     });
   }
 
+  test_BUILT_IN_async() {
+    addTestFile('''
+fa() async {}
+fb() async* {}
+main() {
+  bool async = false;
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasStringRegion(HighlightRegionType.BUILT_IN, 'async');
+      assertHasStringRegion(HighlightRegionType.BUILT_IN, 'async*');
+      assertNoRegion(HighlightRegionType.BUILT_IN, 'async = false');
+    });
+  }
+
+  test_BUILT_IN_await() {
+    addTestFile('''
+main() async {
+  await 42;
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasRegion(HighlightRegionType.BUILT_IN, 'await 42');
+    });
+  }
+
   test_BUILT_IN_deferred() {
     addTestFile('''
 import 'dart:math' deferred as math;
@@ -400,6 +426,21 @@
     });
   }
 
+  test_BUILT_IN_sync() {
+    addTestFile('''
+fa() sync {}
+fb() sync* {}
+main() {
+  bool sync = false;
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasStringRegion(HighlightRegionType.BUILT_IN, 'sync');
+      assertHasStringRegion(HighlightRegionType.BUILT_IN, 'sync*');
+      assertNoRegion(HighlightRegionType.BUILT_IN, 'sync = false');
+    });
+  }
+
   test_BUILT_IN_typedef() {
     addTestFile('''
 typedef A();
@@ -412,6 +453,28 @@
     });
   }
 
+  test_BUILT_IN_yield() {
+    addTestFile('''
+main() async* {
+  yield 42;
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasRegion(HighlightRegionType.BUILT_IN, 'yield 42');
+    });
+  }
+
+  test_BUILT_IN_yieldStar() {
+    addTestFile('''
+main() async* {
+  yield* [];
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasStringRegion(HighlightRegionType.BUILT_IN, 'yield*');
+    });
+  }
+
   test_CLASS() {
     addTestFile('''
 class AAA {}
@@ -528,6 +591,33 @@
     });
   }
 
+  test_ENUM() {
+    addTestFile('''
+enum MyEnum {A, B, C}
+MyEnum value;
+''');
+    return prepareHighlights().then((_) {
+      assertHasRegion(HighlightRegionType.ENUM, 'MyEnum {');
+      assertHasRegion(HighlightRegionType.ENUM, 'MyEnum value;');
+    });
+  }
+
+  test_ENUM_CONSTANT() {
+    addTestFile('''
+enum MyEnum {AAA, BBB}
+main() {
+  print(MyEnum.AAA);
+  print(MyEnum.BBB);
+}
+''');
+    return prepareHighlights().then((_) {
+      assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA, ');
+      assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB}');
+      assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'AAA);');
+      assertHasRegion(HighlightRegionType.ENUM_CONSTANT, 'BBB);');
+    });
+  }
+
   test_FIELD() {
     addTestFile('''
 class A {
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
index 00ce0c9..42c2d5a 100644
--- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
@@ -123,6 +123,17 @@
     findRegion(offset, length, false);
   }
 
+  void assertRegionsSorted() {
+    int lastEnd = -1;
+    for (NavigationRegion region in regions) {
+      int offset = region.offset;
+      if (offset < lastEnd) {
+        fail('$lastEnd was expected to be > $offset in\n' + regions.join('\n'));
+      }
+      lastEnd = offset + region.length;
+    }
+  }
+
   /**
    * Finds the navigation region with the given [offset] and [length].
    * If [length] is `-1`, then it is ignored.
@@ -156,7 +167,9 @@
 
   Future prepareNavigation() {
     addAnalysisSubscription(AnalysisService.NAVIGATION, testFile);
-    return waitForTasksFinished();
+    return waitForTasksFinished().then((_) {
+      assertRegionsSorted();
+    });
   }
 
   void processNotification(Notification notification) {
@@ -283,6 +296,19 @@
     });
   }
 
+  test_identifier_whenStrayImportDirective() {
+    addTestFile('''
+main() {
+  int aaa = 42;
+  print(aaa);
+}
+import 'dart:math';
+''');
+    return prepareNavigation().then((_) {
+      assertHasRegionTarget('aaa);', 'aaa = 42');
+    });
+  }
+
   test_instanceCreation_implicit() {
     addTestFile('''
 class A {
@@ -308,7 +334,7 @@
 ''');
     return prepareNavigation().then((_) {
       {
-        findRegion(findOffset('new '), 'new '.length, true);
+        findRegion(findOffset('new '), 'new'.length, true);
         assertHasTarget('named() {}');
       }
       {
@@ -333,7 +359,7 @@
 ''');
     return prepareNavigation().then((_) {
       {
-        findRegion(findOffset('new '), 'new '.length, true);
+        findRegion(findOffset('new '), 'new'.length, true);
         assertHasTarget('A() {}', 0);
       }
       {
@@ -343,6 +369,21 @@
     });
   }
 
+  test_multiplyDefinedElement() {
+    addFile('$projectPath/bin/libA.dart', 'library A; int TEST = 1;');
+    addFile('$projectPath/bin/libB.dart', 'library B; int TEST = 2;');
+    addTestFile('''
+import 'libA.dart';
+import 'libB.dart';
+main() {
+  TEST;
+}
+''');
+    return prepareNavigation().then((_) {
+      assertNoRegionAt('TEST');
+    });
+  }
+
   test_operator_arithmetic() {
     addTestFile('''
 class A {
diff --git a/pkg/analysis_server/test/analysis_abstract.dart b/pkg/analysis_server/test/analysis_abstract.dart
index 43703c4..e974dbf 100644
--- a/pkg/analysis_server/test/analysis_abstract.dart
+++ b/pkg/analysis_server/test/analysis_abstract.dart
@@ -232,6 +232,8 @@
     server = new AnalysisServer(
         serverChannel, resourceProvider, packageMapProvider, index,
         new MockSdk());
+    server.contextDirectoryManager.defaultOptions.enableAsync = true;
+    server.contextDirectoryManager.defaultOptions.enableEnum = true;
     handler = new AnalysisDomainHandler(server);
     // listen for notifications
     Stream<Notification> notificationStream = serverChannel.notificationController.stream;
diff --git a/pkg/analysis_server/test/analysis_server_test.dart b/pkg/analysis_server/test/analysis_server_test.dart
index b138eb6..d26041a 100644
--- a/pkg/analysis_server/test/analysis_server_test.dart
+++ b/pkg/analysis_server/test/analysis_server_test.dart
@@ -94,6 +94,7 @@
       MockServerOperation operation = new MockServerOperation(
           ServerOperationPriority.ANALYSIS, (_) { throw exceptionToThrow; });
       helper.server.operationQueue.add(operation);
+      helper.server.performOperationPending = true;
       try {
         helper.server.performOperation();
         fail('exception not rethrown');
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index e2ba17c..161c060 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -9,8 +9,10 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/source/package_map_provider.dart';
+import 'package:analyzer/source/package_map_resolver.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/source_io.dart';
 import 'package:path/path.dart';
 import 'package:unittest/unittest.dart';
 
@@ -190,14 +192,10 @@
     manager.assertContextFiles(subProjectA, [subProjectA_file]);
     manager.assertContextFiles(subProjectB, [subProjectB_file]);
     // verify package maps
-    expect(
-        manager.currentContextPackageMaps[root],
-        equals(packageMapProvider.packageMaps[root]));
-    expect(
-        manager.currentContextPackageMaps[subProjectA],
+    _checkPackageMap(root, equals(packageMapProvider.packageMaps[root]));
+    _checkPackageMap(subProjectA,
         equals(packageMapProvider.packageMaps[subProjectA]));
-    expect(
-        manager.currentContextPackageMaps[subProjectB],
+    _checkPackageMap(subProjectB,
         equals(packageMapProvider.packageMaps[subProjectB]));
   }
 
@@ -210,6 +208,35 @@
     expect(manager.currentContextFilePaths[projPath], hasLength(0));
   }
 
+  void test_setRoots_addPackageRoot() {
+    String packagePathFoo = '/package1/foo';
+    String packageRootPath = '/package2/foo';
+    Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
+    packageMapProvider.packageMap = {
+      'foo': [packageFolder]
+    };
+    List<String> includedPaths = <String>[projPath];
+    List<String> excludedPaths = <String>[];
+    manager.setRoots(includedPaths, excludedPaths, <String, String>{});
+    _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
+    manager.setRoots(includedPaths, excludedPaths,
+        <String, String>{ projPath: packageRootPath });
+    _checkPackageRoot(projPath, equals(packageRootPath));
+  }
+
+  void test_setRoots_changePackageRoot() {
+    String packageRootPath1 = '/package1';
+    String packageRootPath2 = '/package2';
+    List<String> includedPaths = <String>[projPath];
+    List<String> excludedPaths = <String>[];
+    manager.setRoots(includedPaths, excludedPaths,
+        <String, String>{ projPath: packageRootPath1 });
+    _checkPackageRoot(projPath, equals(packageRootPath1));
+    manager.setRoots(includedPaths, excludedPaths,
+        <String, String>{ projPath: packageRootPath2 });
+    _checkPackageRoot(projPath, equals(packageRootPath2));
+  }
+
   void test_setRoots_exclude_newRoot_withExcludedFile() {
     // prepare paths
     String project = '/project';
@@ -343,9 +370,14 @@
       'foo': [packageFolder]
     };
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
-    expect(
-        manager.currentContextPackageMaps[projPath],
-        equals(packageMapProvider.packageMap));
+    _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
+  }
+
+  void test_setRoots_newFolderWithPackageRoot() {
+    String packageRootPath = '/package';
+    manager.setRoots(<String>[projPath], <String>[],
+        <String, String>{ projPath: packageRootPath });
+    _checkPackageRoot(projPath, equals(packageRootPath));
   }
 
   void test_setRoots_removeFolderWithPubspec() {
@@ -406,6 +438,22 @@
     expect(manager.currentContextFilePaths, hasLength(0));
   }
 
+  void test_setRoots_removePackageRoot() {
+    String packagePathFoo = '/package1/foo';
+    String packageRootPath = '/package2/foo';
+    Folder packageFolder = resourceProvider.newFolder(packagePathFoo);
+    packageMapProvider.packageMap = {
+      'foo': [packageFolder]
+    };
+    List<String> includedPaths = <String>[projPath];
+    List<String> excludedPaths = <String>[];
+    manager.setRoots(includedPaths, excludedPaths,
+        <String, String>{ projPath: packageRootPath });
+    _checkPackageRoot(projPath, equals(packageRootPath));
+    manager.setRoots(includedPaths, excludedPaths, <String, String>{});
+    _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
+  }
+
   test_watch_addDummyLink() {
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
     // empty folder initially
@@ -630,7 +678,7 @@
     resourceProvider.newFile(dartFilePath, 'contents');
     // the created context has the expected empty package map
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
-    expect(manager.currentContextPackageMaps[projPath], isEmpty);
+    _checkPackageMap(projPath, isEmpty);
     // configure package map
     String packagePath = '/package/foo';
     resourceProvider.newFolder(packagePath);
@@ -641,13 +689,11 @@
     // package map to be picked up.
     resourceProvider.modifyFile(dartFilePath, 'new contents');
     return pumpEventQueue().then((_) {
-      expect(manager.currentContextPackageMaps[projPath], isEmpty);
+      _checkPackageMap(projPath, isEmpty);
       // However, changing the package map dependency should.
       resourceProvider.modifyFile(dependencyPath, 'new contents');
       return pumpEventQueue().then((_) {
-        expect(
-            manager.currentContextPackageMaps[projPath],
-            equals(packageMapProvider.packageMap));
+        _checkPackageMap(projPath, equals(packageMapProvider.packageMap));
       });
     });
   }
@@ -662,16 +708,38 @@
     resourceProvider.newFile(dartFilePath, 'contents');
     // the created context has the expected empty package map
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
-    expect(manager.currentContextPackageMaps[projPath], isEmpty);
+    _checkPackageMap(projPath, isEmpty);
     // Change the package map dependency so that the packageMapProvider is
     // re-run, and arrange for it to return null from computePackageMap().
     packageMapProvider.packageMap = null;
     resourceProvider.modifyFile(dependencyPath, 'new contents');
     return pumpEventQueue().then((_) {
       // The package map should have been changed to null.
-      expect(manager.currentContextPackageMaps[projPath], isNull);
+      _checkPackageMap(projPath, isNull);
     });
   }
+
+  /**
+   * Verify that package URI's for source files in [path] will be resolved
+   * using a package map matching [expectation].
+   */
+  void _checkPackageMap(String path, expectation) {
+    UriResolver resolver = manager.currentContextPackageUriResolvers[path];
+    expect(resolver, new isInstanceOf<PackageMapUriResolver>());
+    PackageMapUriResolver packageMapUriResolver = resolver;
+    expect(packageMapUriResolver.packageMap, expectation);
+  }
+
+  /**
+   * Verify that package URI's for source files in [path] will be resolved
+   * using a package root maching [expectation].
+   */
+  void _checkPackageRoot(String path, expectation) {
+    UriResolver resolver = manager.currentContextPackageUriResolvers[path];
+    expect(resolver, new isInstanceOf<PackageUriResolver>());
+    PackageUriResolver packageUriResolver = resolver;
+    expect(packageUriResolver.packagesDirectory_forTesting, expectation);
+  }
 }
 
 
@@ -698,22 +766,22 @@
       Map<String, int>>{};
 
   /**
-   * Map from context to package map.
+   * Map from context to package URI resolver.
    */
-  final Map<String, Map<String, List<Folder>>> currentContextPackageMaps =
-      <String, Map<String, List<Folder>>>{};
+  final Map<String, UriResolver> currentContextPackageUriResolvers =
+      <String, UriResolver>{};
 
   TestContextManager(MemoryResourceProvider resourceProvider,
       PackageMapProvider packageMapProvider)
       : super(resourceProvider, packageMapProvider);
 
   @override
-  void addContext(Folder folder, Map<String, List<Folder>> packageMap) {
+  void addContext(Folder folder, UriResolver packageUriResolver) {
     String path = folder.path;
     expect(currentContextPaths, isNot(contains(path)));
     currentContextTimestamps[path] = now;
     currentContextFilePaths[path] = <String, int>{};
-    currentContextPackageMaps[path] = packageMap;
+    currentContextPackageUriResolvers[path] = packageUriResolver;
   }
 
   @override
@@ -748,12 +816,12 @@
     expect(currentContextPaths, contains(path));
     currentContextTimestamps.remove(path);
     currentContextFilePaths.remove(path);
-    currentContextPackageMaps.remove(path);
+    currentContextPackageUriResolvers.remove(path);
   }
 
   @override
-  void updateContextPackageMap(Folder contextFolder, Map<String,
-      List<Folder>> packageMap) {
-    currentContextPackageMaps[contextFolder.path] = packageMap;
+  void updateContextPackageUriResolver(Folder contextFolder,
+                                       UriResolver packageUriResolver) {
+    currentContextPackageUriResolvers[contextFolder.path] = packageUriResolver;
   }
 }
diff --git a/pkg/analysis_server/test/integration/analysis/package_root_test.dart b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
new file mode 100644
index 0000000..df26ee9
--- /dev/null
+++ b/pkg/analysis_server/test/integration/analysis/package_root_test.dart
@@ -0,0 +1,67 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library test.integration.analysis.packageRoot;
+
+import 'package:analysis_server/src/protocol.dart';
+import 'package:path/path.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+import '../integration_tests.dart';
+
+@ReflectiveTestCase()
+class Test extends AbstractAnalysisServerIntegrationTest {
+  test_package_root() {
+    String projPath = sourcePath('project');
+    String mainPath = join(projPath, 'main.dart');
+    String packagesPath = sourcePath('packages');
+    String fooBarPath = join(packagesPath, 'foo', 'bar.dart');
+    String mainText = """
+library main;
+
+import 'package:foo/bar.dart'
+
+main() {
+  f();
+}
+""";
+    String fooBarText = """
+library foo.bar;
+
+f() {}
+""";
+    writeFile(mainPath, mainText);
+    String normalizedFooBarPath = writeFile(fooBarPath, fooBarText);
+    sendServerSetSubscriptions([ServerService.STATUS]);
+    sendAnalysisSetSubscriptions({AnalysisService.NAVIGATION: [mainPath]});
+    List<NavigationRegion> navigationRegions;
+    onAnalysisNavigation.listen((AnalysisNavigationParams params) {
+      expect(params.file, equals(mainPath));
+      navigationRegions = params.regions;
+    });
+    sendAnalysisSetAnalysisRoots([projPath], [],
+        packageRoots: {projPath: packagesPath});
+    return analysisFinished.then((_) {
+      // Verify that fooBarPath was properly resolved by checking that f()
+      // refers to it.
+      bool found = false;
+      for (NavigationRegion region in navigationRegions) {
+        String navigationSource =
+            mainText.substring(region.offset, region.offset + region.length);
+        if (navigationSource == 'f') {
+          found = true;
+          expect(region.targets, hasLength(1));
+          Location location = region.targets[0].location;
+          expect(location.file, equals(normalizedFooBarPath));
+        }
+      }
+      expect(found, isTrue);
+    });
+  }
+}
+
+main() {
+  runReflectiveTests(Test);
+}
diff --git a/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart b/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart
new file mode 100644
index 0000000..e65f60c
--- /dev/null
+++ b/pkg/analysis_server/test/integration/analysis/reanalyze_concurrent_test.dart
@@ -0,0 +1,64 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/**
+ * This test verifies that if reanalysis is performed while reanalysis is in
+ * progress, no problems occur.  See dartbug.com/21448.
+ */
+library test.integration.analysis.reanalyze_concurrent;
+
+import 'dart:async';
+
+import 'package:analysis_server/src/protocol.dart';
+import 'package:unittest/unittest.dart';
+
+import '../../reflective_tests.dart';
+import '../integration_tests.dart';
+
+@ReflectiveTestCase()
+class Test extends AbstractAnalysisServerIntegrationTest {
+  test_reanalyze_concurrent() {
+    String pathname = sourcePath('test.dart');
+    String text = '''
+// Do a bunch of imports so that analysis has some work to do.
+import 'dart:io';
+import 'dart:convert';
+import 'dart:async';
+
+main() {}''';
+    writeFile(pathname, text);
+    standardAnalysisSetup();
+    return analysisFinished.then((_) {
+      sendAnalysisReanalyze();
+      // Wait for reanalysis to start.
+      return onServerStatus.first.then((_) {
+        sendAnalysisReanalyze();
+        return analysisFinished.then((_) {
+          // Now that reanalysis has finished, no further analysis should occur.
+          onServerStatus.listen((ServerStatusParams data) {
+            if (data.analysis != null) {
+              if (data.analysis.isAnalyzing) {
+                // Most likely what happened is that the first reanalyze
+                // completed before the second reanalyze had a chance to start,
+                // and we are just now starting the second reanalyze.  If this is
+                // the case, then the test isn't testing what it's meant to test
+                // (because we are trying to test what happens when one reanalyze
+                // starts while another is in progress).  In which case we will
+                // need to give the analyzer more work to do.
+                fail('First reanalyze finished before second started.');
+              }
+            }
+          });
+          // Give the server an extra second to make sure it doesn't take any
+          // more actions.
+          return new Future.delayed(new Duration(seconds: 1));
+        });
+      });
+    });
+  }
+}
+
+main() {
+  runReflectiveTests(Test);
+}
diff --git a/pkg/analysis_server/test/integration/analysis/test_all.dart b/pkg/analysis_server/test/integration/analysis/test_all.dart
index e834ba4..e75dbe0 100644
--- a/pkg/analysis_server/test/integration/analysis/test_all.dart
+++ b/pkg/analysis_server/test/integration/analysis/test_all.dart
@@ -15,6 +15,9 @@
 import 'occurrences_test.dart' as occurrences_test;
 import 'outline_test.dart' as outline_test;
 import 'overrides_test.dart' as overrides_test;
+import 'package_root_test.dart' as package_root_test;
+import 'reanalyze_concurrent_test.dart' as reanalyze_concurrent_test;
+import 'reanalyze_test.dart' as reanalyze_test;
 import 'update_content_test.dart' as update_content_test;
 import 'update_content_list_test.dart' as update_content_list_test;
 
@@ -33,6 +36,9 @@
     occurrences_test.main();
     outline_test.main();
     overrides_test.main();
+    package_root_test.main();
+    reanalyze_concurrent_test.main();
+    reanalyze_test.main();
     update_content_test.main();
     update_content_list_test.main();
   });
diff --git a/pkg/analysis_server/test/integration/asynchrony_test.dart b/pkg/analysis_server/test/integration/asynchrony_test.dart
index 4ae0e19..79eb1b2 100644
--- a/pkg/analysis_server/test/integration/asynchrony_test.dart
+++ b/pkg/analysis_server/test/integration/asynchrony_test.dart
@@ -51,12 +51,14 @@
 
       // Begin processing responses from the server.
       server.listenToOutput((String event, params) {
-        // No notifications are expected.
-        fail('Unexpected notification: $event');
+        // The only expected notification is server.connected.
+        if (event != 'server.connected') {
+          fail('Unexpected notification: $event');
+        }
       });
 
       // Terminate the test when the response to the last message is received.
-      lastMessageResult.then((_) {
+      return lastMessageResult.then((_) {
         server.send("server.shutdown", null).then((_) {
           return server.exitCode;
         });
diff --git a/pkg/analysis_server/test/integration/integration_test_methods.dart b/pkg/analysis_server/test/integration/integration_test_methods.dart
index 8bc1a98..7e043dd 100644
--- a/pkg/analysis_server/test/integration/integration_test_methods.dart
+++ b/pkg/analysis_server/test/integration/integration_test_methods.dart
@@ -536,13 +536,13 @@
    *
    * regions ( List<NavigationRegion> )
    *
-   *   The navigation regions contained in the file. Each navigation region
-   *   represents a list of targets associated with some range. The lists will
-   *   usually contain a single target, but can contain more in the case of a
-   *   part that is included in multiple libraries or in Dart code that is
-   *   compiled against multiple versions of a package. Note that the
-   *   navigation regions that are returned do not overlap other navigation
-   *   regions.
+   *   The navigation regions contained in the file. The regions are sorted by
+   *   their offsets. Each navigation region represents a list of targets
+   *   associated with some range. The lists will usually contain a single
+   *   target, but can contain more in the case of a part that is included in
+   *   multiple libraries or in Dart code that is compiled against multiple
+   *   versions of a package. Note that the navigation regions that are
+   *   returned do not overlap other navigation regions.
    */
   Stream<AnalysisNavigationParams> onAnalysisNavigation;
 
diff --git a/pkg/analysis_server/test/integration/integration_tests.dart b/pkg/analysis_server/test/integration/integration_tests.dart
index 372293d..4436253 100644
--- a/pkg/analysis_server/test/integration/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/integration_tests.dart
@@ -67,10 +67,14 @@
    * overwritten.
    *
    * Parent directories are created as necessary.
+   *
+   * Return a normalized path to the file (with symbolic links resolved).
    */
-  void writeFile(String pathname, String contents) {
+  String writeFile(String pathname, String contents) {
     new Directory(dirname(pathname)).createSync(recursive: true);
-    new File(pathname).writeAsStringSync(contents);
+    File file = new File(pathname);
+    file.writeAsStringSync(contents);
+    return file.resolveSymbolicLinksSync();
   }
 
   /**
@@ -150,6 +154,10 @@
       expect(serverConnected.isCompleted, isFalse);
       serverConnected.complete();
     });
+    onServerError.listen((ServerErrorParams params) {
+      // A server error should never happen during an integration test.
+      fail(params.message);
+    });
     return server.start().then((_) {
       server.listenToOutput(dispatchNotification);
       server.exitCode.then((_) {
@@ -679,10 +687,12 @@
   }
 
   /**
-   * Start the server.  If [debugServer] is true, the server will be started
-   * with "--debug", allowing a debugger to be attached.
+   * Start the server.  If [debugServer] is `true`, the server will be started
+   * with "--debug", allowing a debugger to be attached. If [profileServer] is
+   * `true`, the server will be started with "--observe" and
+   * "--pause-isolates-on-exit", allowing the observatory to be used.
    */
-  Future start({bool debugServer: false}) {
+  Future start({bool debugServer: false, bool profileServer: false}) {
     if (_process != null) {
       throw new Exception('Process already started');
     }
@@ -695,6 +705,10 @@
     if (debugServer) {
       arguments.add('--debug');
     }
+    if (profileServer) {
+      arguments.add('--observe');
+      arguments.add('--pause-isolates-on-exit');
+    }
     if (Platform.packageRoot.isNotEmpty) {
       arguments.add('--package-root=${Platform.packageRoot}');
     }
diff --git a/pkg/analysis_server/test/integration/protocol_matchers.dart b/pkg/analysis_server/test/integration/protocol_matchers.dart
index adeb2af..691cc81 100644
--- a/pkg/analysis_server/test/integration/protocol_matchers.dart
+++ b/pkg/analysis_server/test/integration/protocol_matchers.dart
@@ -1274,6 +1274,8 @@
  *   CONSTRUCTOR
  *   DIRECTIVE
  *   DYNAMIC_TYPE
+ *   ENUM
+ *   ENUM_CONSTANT
  *   FIELD
  *   FIELD_STATIC
  *   FUNCTION
@@ -1313,6 +1315,8 @@
   "CONSTRUCTOR",
   "DIRECTIVE",
   "DYNAMIC_TYPE",
+  "ENUM",
+  "ENUM_CONSTANT",
   "FIELD",
   "FIELD_STATIC",
   "FUNCTION",
diff --git a/pkg/analysis_server/test/services/completion/completion_test_util.dart b/pkg/analysis_server/test/services/completion/completion_test_util.dart
index 3c830a5..54929ec 100644
--- a/pkg/analysis_server/test/services/completion/completion_test_util.dart
+++ b/pkg/analysis_server/test/services/completion/completion_test_util.dart
@@ -112,6 +112,19 @@
     return cs;
   }
 
+  CompletionSuggestion assertSuggestClassTypeAlias(String name,
+      [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+    CompletionSuggestion cs =
+        assertSuggest(CompletionSuggestionKind.CLASS_ALIAS, name, relevance);
+    protocol.Element element = cs.element;
+    expect(element, isNotNull);
+    expect(element.kind, equals(protocol.ElementKind.CLASS_TYPE_ALIAS));
+    expect(element.name, equals(name));
+    expect(element.parameters, isNull);
+    expect(element.returnType, isNull);
+    return cs;
+  }
+
   CompletionSuggestion assertSuggestFunction(String name, String returnType,
       bool isDeprecated, [CompletionRelevance relevance =
       CompletionRelevance.DEFAULT]) {
@@ -136,6 +149,32 @@
     return cs;
   }
 
+  CompletionSuggestion assertSuggestFunctionTypeAlias(String name,
+      String returnType, bool isDeprecated, [CompletionRelevance relevance =
+      CompletionRelevance.DEFAULT]) {
+    CompletionSuggestion cs = assertSuggest(
+        CompletionSuggestionKind.FUNCTION_TYPE_ALIAS,
+        name,
+        relevance,
+        isDeprecated);
+    expect(cs.returnType, equals(returnType));
+    protocol.Element element = cs.element;
+    expect(element, isNotNull);
+    expect(element.kind, equals(protocol.ElementKind.FUNCTION_TYPE_ALIAS));
+    expect(element.name, equals(name));
+    expect(element.isDeprecated, equals(isDeprecated));
+    // TODO (danrubel) Determine why params are null
+//    String param = element.parameters;
+//    expect(param, isNotNull);
+//    expect(param[0], equals('('));
+//    expect(param[param.length - 1], equals(')'));
+    // TODO (danrubel) Determine why return type is null
+//    expect(
+//        element.returnType,
+//        equals(returnType != null ? returnType : 'dynamic'));
+    return cs;
+  }
+
   CompletionSuggestion assertSuggestGetter(String name, String returnType,
       [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
     CompletionSuggestion cs =
@@ -426,6 +465,20 @@
     }
   }
 
+  CompletionSuggestion assertSuggestImportedFunctionTypeAlias(String name,
+      String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
+      CompletionRelevance.DEFAULT]) {
+    if (computer is ImportedComputer) {
+      return assertSuggestFunctionTypeAlias(
+          name,
+          returnType,
+          isDeprecated,
+          relevance);
+    } else {
+      return assertNotSuggested(name);
+    }
+  }
+
   CompletionSuggestion assertSuggestImportedGetter(String name,
       String returnType, [CompletionRelevance relevance =
       CompletionRelevance.DEFAULT]) {
@@ -513,6 +566,15 @@
     }
   }
 
+  CompletionSuggestion assertSuggestLocalClassTypeAlias(String name,
+      [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
+    if (computer is LocalComputer) {
+      return assertSuggestClassTypeAlias(name, relevance);
+    } else {
+      return assertNotSuggested(name);
+    }
+  }
+
   CompletionSuggestion assertSuggestLocalFunction(String name,
       String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
       CompletionRelevance.DEFAULT]) {
@@ -523,6 +585,20 @@
     }
   }
 
+  CompletionSuggestion assertSuggestLocalFunctionTypeAlias(String name,
+      String returnType, [bool isDeprecated = false, CompletionRelevance relevance =
+      CompletionRelevance.DEFAULT]) {
+    if (computer is LocalComputer) {
+      return assertSuggestFunctionTypeAlias(
+          name,
+          returnType,
+          isDeprecated,
+          relevance);
+    } else {
+      return assertNotSuggested(name);
+    }
+  }
+
   CompletionSuggestion assertSuggestLocalGetter(String name, String returnType,
       [CompletionRelevance relevance = CompletionRelevance.DEFAULT]) {
     if (computer is LocalComputer) {
@@ -552,6 +628,21 @@
     }
   }
 
+  test_ArgumentList() {
+    // ArgumentList  MethodInvocation  ExpressionStatement  Block
+    addSource('/libA.dart', '''
+      library A;
+      bool hasLength(int expected) { }''');
+    addTestSource('''
+      import '/libA.dart'
+      main() {expect(^)}''');
+    computeFast();
+    return computeFull(true).then((_) {
+      assertSuggestLocalFunction('main', null);
+      assertSuggestImportedFunction('hasLength', 'bool');
+    });
+  }
+
   test_AssignmentExpression_name() {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
@@ -912,6 +1003,8 @@
       part of libAB;
       var T1;
       PB F1() => new PB();
+      typedef PB2 F2(int blat);
+      class Clz = Object with Object;
       class PB { }''');
     addSource('/testCD.dart', '''
       class C { }
@@ -927,6 +1020,8 @@
       assertSuggestImportedClass('PB');
       assertSuggestImportedTopLevelVar('T1', null);
       assertSuggestImportedFunction('F1', 'PB');
+      assertSuggestImportedClass('Clz');
+      assertSuggestImportedFunctionTypeAlias('F2', null);
       assertNotSuggested('C');
       assertNotSuggested('D');
       assertNotSuggested('X');
@@ -984,6 +1079,8 @@
       class _B { }''');
     addTestSource('''
       import "/testA.dart";
+      typedef int F2(int blat);
+      class Clz = Object with Object;
       class C {foo(){O^} void bar() {}}''');
     computeFast();
     return computeFull(true).then((_) {
@@ -992,6 +1089,8 @@
       assertSuggestLocalClass('C');
       assertSuggestLocalMethod('foo', 'C', null);
       assertSuggestLocalMethod('bar', 'C', 'void');
+      assertSuggestLocalFunctionTypeAlias('F2', 'int');
+      assertSuggestLocalClassTypeAlias('Clz');
       assertSuggestLocalClass('C');
       assertNotSuggested('x');
       assertNotSuggested('_B');
@@ -1399,12 +1498,58 @@
     });
   }
 
+  test_PrefixedIdentifier_class_const() {
+    // SimpleIdentifier PrefixedIdentifier ExpressionStatement Block
+    addSource('/testB.dart', '''
+      lib B;
+      class I {
+        static const scI = 'boo';
+        X get f => new A();
+        get _g => new A();}
+      class B implements I {
+        static const int scB = 12;
+        var b; X _c;
+        X get d => new A();get _e => new A();
+        set s1(I x) {} set _s2(I x) {}
+        m(X x) {} I _n(X x) {}}
+      class X{}''');
+    addTestSource('''
+      import "/testB.dart";
+      class A extends B {
+        static const String scA = 'foo';
+        w() { }}
+      main() {A.^}''');
+    computeFast();
+    return computeFull(true).then((_) {
+      assertSuggestInvocationGetter('scA', 'String');
+      assertSuggestInvocationGetter('scB', 'int');
+      assertSuggestInvocationGetter('scI', null);
+      assertNotSuggested('b');
+      assertNotSuggested('_c');
+      assertNotSuggested('d');
+      assertNotSuggested('_e');
+      assertNotSuggested('f');
+      assertNotSuggested('_g');
+      assertNotSuggested('s1');
+      assertNotSuggested('_s2');
+      assertNotSuggested('m');
+      assertNotSuggested('_n');
+      assertNotSuggested('a');
+      assertNotSuggested('A');
+      assertNotSuggested('X');
+      assertNotSuggested('w');
+      assertNotSuggested('Object');
+      assertNotSuggested('==');
+    });
+  }
+
   test_PrefixedIdentifier_class_imported() {
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     addSource('/testB.dart', '''
       lib B;
       class I {X get f => new A();get _g => new A();}
       class A implements I {
+        static const int sc = 12;
         var b; X _c;
         X get d => new A();get _e => new A();
         set s1(I x) {} set _s2(I x) {}
@@ -1415,6 +1560,7 @@
       main() {A a; a.^}''');
     computeFast();
     return computeFull(true).then((_) {
+      assertSuggestInvocationGetter('sc', 'int');
       assertSuggestInvocationGetter('b', null);
       assertNotSuggested('_c');
       assertSuggestInvocationGetter('d', 'X');
@@ -1439,6 +1585,7 @@
       main() {A a; a.^}
       class I {X get f => new A();get _g => new A();}
       class A implements I {
+        static const int sc = 12;
         var b; X _c;
         X get d => new A();get _e => new A();
         set s1(I x) {} set _s2(I x) {}
@@ -1446,6 +1593,7 @@
       class X{}''');
     computeFast();
     return computeFull(true).then((_) {
+      assertSuggestInvocationGetter('sc', 'int');
       assertSuggestInvocationGetter('b', null);
       assertSuggestInvocationGetter('_c', 'X');
       assertSuggestInvocationGetter('d', 'X');
@@ -1525,6 +1673,16 @@
     });
   }
 
+  test_PrefixedIdentifier_propertyAccess() {
+    // PrefixedIdentifier  ExpressionStatement  Block  BlockFunctionBody
+    addTestSource('class A {String x; int get foo {x.^}');
+    computeFast();
+    return computeFull(true).then((_) {
+      assertSuggestInvocationGetter('isEmpty', 'bool');
+      assertSuggestInvocationMethod('compareTo', 'Comparable', 'int');
+    });
+  }
+
   test_PropertyAccess_expression() {
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
diff --git a/pkg/analysis_server/test/services/correction/fix_test.dart b/pkg/analysis_server/test/services/correction/fix_test.dart
index 9af602c..6060c94 100644
--- a/pkg/analysis_server/test/services/correction/fix_test.dart
+++ b/pkg/analysis_server/test/services/correction/fix_test.dart
@@ -37,6 +37,24 @@
   SourceChange change;
   String resultCode;
 
+  void assert_undefinedFunction_create_returnType_bool(String lineWithTest) {
+    _indexTestUnit('''
+main() {
+  bool b = true;
+  $lineWithTest
+}
+''');
+    assertHasFix(FixKind.CREATE_FUNCTION, '''
+main() {
+  bool b = true;
+  $lineWithTest
+}
+
+bool test() {
+}
+''');
+  }
+
   void assertHasFix(FixKind kind, String expected) {
     AnalysisError error = _findErrorToFix();
     fix = _assertHasFix(kind, error);
@@ -59,24 +77,6 @@
     }
   }
 
-  void assert_undefinedFunction_create_returnType_bool(String lineWithTest) {
-    _indexTestUnit('''
-main() {
-  bool b = true;
-  $lineWithTest
-}
-''');
-    assertHasFix(FixKind.CREATE_FUNCTION, '''
-main() {
-  bool b = true;
-  $lineWithTest
-}
-
-bool test() {
-}
-''');
-  }
-
   Position expectedPosition(String search) {
     int offset = resultCode.indexOf(search);
     int length = getLeadingIdentifierLength(search);
@@ -188,6 +188,54 @@
     _assertLinkedGroup(change.linkedEditGroups[0], ['Test v =', 'Test {']);
   }
 
+  void test_createConstructor_insteadOfSyntheticDefault() {
+    _indexTestUnit('''
+class A {
+  int field;
+
+  method() {}
+}
+main() {
+  new A(1, 2.0);
+}
+''');
+    assertHasFix(FixKind.CREATE_CONSTRUCTOR, '''
+class A {
+  int field;
+
+  A(int i, double d) {
+  }
+
+  method() {}
+}
+main() {
+  new A(1, 2.0);
+}
+''');
+  }
+
+  void test_createConstructor_named() {
+    _indexTestUnit('''
+class A {
+  method() {}
+}
+main() {
+  new A.named(1, 2.0);
+}
+''');
+    assertHasFix(FixKind.CREATE_CONSTRUCTOR, '''
+class A {
+  A.named(int i, double d) {
+  }
+
+  method() {}
+}
+main() {
+  new A.named(1, 2.0);
+}
+''');
+  }
+
   void test_createConstructorSuperExplicit() {
     _indexTestUnit('''
 class A {
@@ -347,54 +395,6 @@
     assertNoFix(FixKind.CREATE_CONSTRUCTOR_SUPER);
   }
 
-  void test_createConstructor_insteadOfSyntheticDefault() {
-    _indexTestUnit('''
-class A {
-  int field;
-
-  method() {}
-}
-main() {
-  new A(1, 2.0);
-}
-''');
-    assertHasFix(FixKind.CREATE_CONSTRUCTOR, '''
-class A {
-  int field;
-
-  A(int i, double d) {
-  }
-
-  method() {}
-}
-main() {
-  new A(1, 2.0);
-}
-''');
-  }
-
-  void test_createConstructor_named() {
-    _indexTestUnit('''
-class A {
-  method() {}
-}
-main() {
-  new A.named(1, 2.0);
-}
-''');
-    assertHasFix(FixKind.CREATE_CONSTRUCTOR, '''
-class A {
-  A.named(int i, double d) {
-  }
-
-  method() {}
-}
-main() {
-  new A.named(1, 2.0);
-}
-''');
-  }
-
   void test_createField_getter_multiLevel() {
     _indexTestUnit('''
 class A {
@@ -464,25 +464,6 @@
 ''');
   }
 
-  void test_createField_getter_unqualified_instance_asStatement() {
-    _indexTestUnit('''
-class A {
-  main() {
-    test;
-  }
-}
-''');
-    assertHasFix(FixKind.CREATE_FIELD, '''
-class A {
-  var test;
-
-  main() {
-    test;
-  }
-}
-''');
-  }
-
   void test_createField_getter_unqualified_instance_assignmentLhs() {
     _indexTestUnit('''
 class A {
@@ -502,6 +483,25 @@
 ''');
   }
 
+  void test_createField_getter_unqualified_instance_asStatement() {
+    _indexTestUnit('''
+class A {
+  main() {
+    test;
+  }
+}
+''');
+    assertHasFix(FixKind.CREATE_FIELD, '''
+class A {
+  var test;
+
+  main() {
+    test;
+  }
+}
+''');
+  }
+
   void test_createField_setter_qualified_instance_hasField() {
     _indexTestUnit('''
 class A {
@@ -623,6 +623,81 @@
     expect(fileEdit.edits[0].replacement, contains('library my.file;'));
   }
 
+  void test_createLocalVariable_read_typeAssignment() {
+    _indexTestUnit('''
+main() {
+  int a = test;
+}
+''');
+    assertHasFix(FixKind.CREATE_LOCAL_VARIABLE, '''
+main() {
+  int test;
+  int a = test;
+}
+''');
+  }
+
+  void test_createLocalVariable_read_typeCondition() {
+    _indexTestUnit('''
+main() {
+  if (!test) {
+    print(42);
+  }
+}
+''');
+    assertHasFix(FixKind.CREATE_LOCAL_VARIABLE, '''
+main() {
+  bool test;
+  if (!test) {
+    print(42);
+  }
+}
+''');
+  }
+
+  void test_createLocalVariable_read_typeInvocationArgument() {
+    _indexTestUnit('''
+main() {
+  f(test);
+}
+f(String p) {}
+''');
+    assertHasFix(FixKind.CREATE_LOCAL_VARIABLE, '''
+main() {
+  String test;
+  f(test);
+}
+f(String p) {}
+''');
+  }
+
+  void test_createLocalVariable_write_assignment() {
+    _indexTestUnit('''
+main() {
+  test = 42;
+}
+''');
+    assertHasFix(FixKind.CREATE_LOCAL_VARIABLE, '''
+main() {
+  var test = 42;
+}
+''');
+  }
+
+  void test_createLocalVariable_write_assignment_compound() {
+    _indexTestUnit('''
+main() {
+  test += 42;
+}
+''');
+    assertHasFix(FixKind.CREATE_LOCAL_VARIABLE, '''
+main() {
+  int test;
+  test += 42;
+}
+''');
+  }
+
   void test_createMissingOverrides_functionType() {
     _indexTestUnit('''
 abstract class A {
diff --git a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
index f0b2694..0f7d336 100644
--- a/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
+++ b/pkg/analysis_server/test/services/index/dart_index_contributor_test.dart
@@ -298,6 +298,16 @@
         _expectedLocation(classElement, 'A {}'));
   }
 
+  void test_definesClassEnum() {
+    _indexTestUnit('enum MyEnum {A, B, c}');
+    // prepare elements
+    ClassElement classElement = findElement("MyEnum");
+    // verify
+    _assertDefinesTopLevelElement(
+        IndexConstants.DEFINES,
+        _expectedLocation(classElement, 'MyEnum {'));
+  }
+
   void test_definesClassAlias() {
     _indexTestUnit('''
 class Mix {}
diff --git a/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart b/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart
index 0971db2..6a1b53f 100644
--- a/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart
@@ -90,71 +90,6 @@
         RefactoringProblemSeverity.FATAL,
         expectedMessage: "Class name must not start or end with a blank.");
   }
-  void test_validateConstantName_OK() {
-    assertRefactoringStatusOK(validateConstantName("NAME"));
-  }
-
-  void test_validateConstantName_OK_digit() {
-    assertRefactoringStatusOK(validateConstantName("NAME2"));
-  }
-
-  void test_validateConstantName_OK_underscoreLeading() {
-    assertRefactoringStatusOK(validateConstantName("_NAME"));
-  }
-
-  void test_validateConstantName_OK_underscoreMiddle() {
-    assertRefactoringStatusOK(validateConstantName("MY_NEW_NAME"));
-  }
-
-  void test_validateConstantName_empty() {
-    assertRefactoringStatus(
-        validateConstantName(""),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be empty.");
-  }
-
-  void test_validateConstantName_leadingBlanks() {
-    assertRefactoringStatus(
-        validateConstantName(" NewName"),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not start or end with a blank.");
-  }
-
-  void test_validateConstantName_notAllCaps() {
-    assertRefactoringStatus(
-        validateConstantName("NewName"),
-        RefactoringProblemSeverity.WARNING,
-        expectedMessage: "Constant name should be all uppercase with underscores.");
-  }
-
-  void test_validateConstantName_notIdentifierMiddle() {
-    assertRefactoringStatus(
-        validateConstantName("NA-ME"),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not contain '-'.");
-  }
-
-  void test_validateConstantName_notIdentifierStart() {
-    assertRefactoringStatus(
-        validateConstantName("99_RED_BALLOONS"),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage:
-            "Constant name must begin with an uppercase letter or underscore.");
-  }
-
-  void test_validateConstantName_null() {
-    assertRefactoringStatus(
-        validateConstantName(null),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be null.");
-  }
-
-  void test_validateConstantName_trailingBlanks() {
-    assertRefactoringStatus(
-        validateConstantName("NewName "),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not start or end with a blank.");
-  }
 
   void test_validateConstructorName_OK() {
     assertRefactoringStatusOK(validateConstructorName("newName"));
diff --git a/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart b/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
index d45a37d..d7b1626 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_class_member_test.dart
@@ -271,29 +271,6 @@
     assertRefactoringStatusOK(refactoring.checkNewName());
   }
 
-  test_checkNewName_FieldElement_const() {
-    indexTestUnit('''
-class A {
-  static const int TEST = 0;
-}
-''');
-    createRenameRefactoringAtString('TEST =');
-    // null
-    refactoring.newName = null;
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be null.");
-    // not upper case
-    refactoring.newName = 'newName';
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.WARNING);
-    // OK
-    refactoring.newName = 'NEW_NAME';
-    assertRefactoringStatusOK(refactoring.checkNewName());
-  }
-
   test_checkNewName_MethodElement() {
     indexTestUnit('''
 class A {
diff --git a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
index 3c795b1..9fad28e 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_local_test.dart
@@ -242,36 +242,6 @@
     assertRefactoringStatusOK(refactoring.checkNewName());
   }
 
-  test_checkNewName_LocalVariableElement_const() {
-    indexTestUnit('''
-main() {
-  const int TEST = 0;
-}
-''');
-    createRenameRefactoringAtString('TEST = 0;');
-    // null
-    refactoring.newName = null;
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be null.");
-    // empty
-    refactoring.newName = '';
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be empty.");
-    // same
-    refactoring.newName = 'TEST';
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "The new name must be different than the current name.");
-    // OK
-    refactoring.newName = 'NEW_NAME';
-    assertRefactoringStatusOK(refactoring.checkNewName());
-  }
-
   test_checkNewName_ParameterElement() {
     indexTestUnit('''
 main(test) {
diff --git a/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart b/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
index 7e4ec51..84a34fe 100644
--- a/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart
@@ -303,28 +303,6 @@
     assertRefactoringStatusOK(refactoring.checkNewName());
   }
 
-  test_checkNewName_TopLevelVariableElement_const() {
-    indexTestUnit('''
-const TEST = 0;
-''');
-    createRenameRefactoringAtString('TEST =');
-    // null
-    refactoring.newName = null;
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be null.");
-    // empty
-    refactoring.newName = '';
-    assertRefactoringStatus(
-        refactoring.checkNewName(),
-        RefactoringProblemSeverity.FATAL,
-        expectedMessage: "Constant name must not be empty.");
-    // OK
-    refactoring.newName = 'NEW_NAME';
-    assertRefactoringStatusOK(refactoring.checkNewName());
-  }
-
   test_createChange_ClassElement() {
     indexTestUnit('''
 class Test implements Other {
diff --git a/pkg/analysis_server/test/timing/completion/completion_simple.dart b/pkg/analysis_server/test/timing/completion/completion_simple.dart
index 4b98eb9..aa833bb 100644
--- a/pkg/analysis_server/test/timing/completion/completion_simple.dart
+++ b/pkg/analysis_server/test/timing/completion/completion_simple.dart
@@ -5,6 +5,7 @@
 library test.timing.simple;
 
 import 'dart:async';
+import 'dart:io';
 
 import 'package:analysis_server/src/protocol.dart';
 import 'package:path/path.dart';
@@ -22,6 +23,9 @@
     print('averageTime = ${result.averageTime}');
     print('maxTime = ${result.maxTime}');
     print('standardDeviation = ${result.standardDeviation}');
+    print('');
+    print('Press return to exit');
+    return stdin.first;
   });
 }
 
diff --git a/pkg/analysis_server/test/timing/timing_framework.dart b/pkg/analysis_server/test/timing/timing_framework.dart
index cf10ee4..273bef8 100644
--- a/pkg/analysis_server/test/timing/timing_framework.dart
+++ b/pkg/analysis_server/test/timing/timing_framework.dart
@@ -89,7 +89,8 @@
     onServerConnected.listen((_) {
       serverConnected.complete();
     });
-    return server.start().then((params) {
+    skipShutdown = true;
+    return server.start(profileServer: true).then((params) {
       server.listenToOutput(dispatchNotification);
       server.exitCode.then((_) {
         skipShutdown = true;
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index 16bd463..da50b3c 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -677,8 +677,9 @@
           <field name="regions">
             <list><ref>NavigationRegion</ref></list>
             <p>
-              The navigation regions contained in the file. Each
-              navigation region represents a list of targets
+              The navigation regions contained in the file.
+              The regions are sorted by their offsets.
+              Each navigation region represents a list of targets
               associated with some range. The lists will usually
               contain a single target, but can contain more in the
               case of a part that is included in multiple libraries
@@ -2116,6 +2117,8 @@
           <value><code>CONSTRUCTOR</code></value>
           <value><code>DIRECTIVE</code></value>
           <value><code>DYNAMIC_TYPE</code></value>
+          <value><code>ENUM</code></value>
+          <value><code>ENUM_CONSTANT</code></value>
           <value><code>FIELD</code></value>
           <value><code>FIELD_STATIC</code></value>
           <value><code>FUNCTION</code></value>
diff --git a/pkg/analyzer/example/parser_driver.dart b/pkg/analyzer/example/parser_driver.dart
index cae05c6..2bbd669 100644
--- a/pkg/analyzer/example/parser_driver.dart
+++ b/pkg/analyzer/example/parser_driver.dart
@@ -52,7 +52,7 @@
 
 class _ASTVisitor extends GeneralizingAstVisitor {
   visitNode(AstNode node) {
-    print('${node.runtimeType} : <"${node.toString()}">');
+    print('${node.runtimeType} : <"$node">');
     return super.visitNode(node);
   }
 }
diff --git a/pkg/analyzer/example/resolver_driver.dart b/pkg/analyzer/example/resolver_driver.dart
index 679f16a..08e4065 100644
--- a/pkg/analyzer/example/resolver_driver.dart
+++ b/pkg/analyzer/example/resolver_driver.dart
@@ -42,7 +42,7 @@
 
 class _ASTVisitor extends GeneralizingAstVisitor {
   visitNode(AstNode node) {
-    String text = '${node.runtimeType} : <"${node.toString()}">';
+    String text = '${node.runtimeType} : <"$node">';
     if (node is SimpleIdentifier) {
       Element element = node.staticElement;
       if (element != null) {
diff --git a/pkg/analyzer/lib/source/package_map_resolver.dart b/pkg/analyzer/lib/source/package_map_resolver.dart
index 1f2f101..de2c673 100644
--- a/pkg/analyzer/lib/source/package_map_resolver.dart
+++ b/pkg/analyzer/lib/source/package_map_resolver.dart
@@ -82,7 +82,7 @@
         String pkgFolderPath = pkgFolder.path;
         if (sourcePath.startsWith(pkgFolderPath)) {
           String relPath = sourcePath.substring(pkgFolderPath.length);
-          return new Uri(path: '${PACKAGE_SCHEME}:$pkgName$relPath');
+          return new Uri(path: '$PACKAGE_SCHEME:$pkgName$relPath');
         }
       }
     }
diff --git a/pkg/analyzer/lib/source/pub_package_map_provider.dart b/pkg/analyzer/lib/source/pub_package_map_provider.dart
index cb949eaf..bb49716 100644
--- a/pkg/analyzer/lib/source/pub_package_map_provider.dart
+++ b/pkg/analyzer/lib/source/pub_package_map_provider.dart
@@ -51,7 +51,7 @@
           executable, [PUB_LIST_COMMAND], workingDirectory: folder.path);
     } on io.ProcessException catch (exception, stackTrace) {
       AnalysisEngine.instance.logger.logInformation(
-          "Error running pub $PUB_LIST_COMMAND\n${exception}\n${stackTrace}");
+          "Error running pub $PUB_LIST_COMMAND\n$exception\n$stackTrace");
     }
     if (result.exitCode != 0) {
       AnalysisEngine.instance.logger.logInformation(
@@ -62,7 +62,7 @@
       return parsePackageMap(result.stdout, folder);
     } catch (exception, stackTrace) {
       AnalysisEngine.instance.logger.logError(
-          "Malformed output from pub $PUB_LIST_COMMAND\n${exception}\n${stackTrace}");
+          "Malformed output from pub $PUB_LIST_COMMAND\n$exception\n$stackTrace");
     }
 
     return _error(folder);
diff --git a/pkg/analyzer/lib/src/analyzer_impl.dart b/pkg/analyzer/lib/src/analyzer_impl.dart
index 79ef6b4..4de0a6a1 100644
--- a/pkg/analyzer/lib/src/analyzer_impl.dart
+++ b/pkg/analyzer/lib/src/analyzer_impl.dart
@@ -172,7 +172,7 @@
       }
       exitCode = status.ordinal;
     }).catchError((ex, st) {
-      AnalysisEngine.instance.logger.logError("${ex}\n${st}");
+      AnalysisEngine.instance.logger.logError("$ex\n$st");
     });
   }
 
diff --git a/pkg/analyzer/lib/src/generated/ast.dart b/pkg/analyzer/lib/src/generated/ast.dart
index fff8270..f5506fb 100644
--- a/pkg/analyzer/lib/src/generated/ast.dart
+++ b/pkg/analyzer/lib/src/generated/ast.dart
@@ -69,9 +69,9 @@
   }
 
   @override
-  void appendStringValue(JavaStringBuilder builder) {
+  void appendStringValue(StringBuffer buffer) {
     for (StringLiteral stringLiteral in strings) {
-      stringLiteral.appendStringValue(builder);
+      stringLiteral.appendStringValue(buffer);
     }
   }
 }
@@ -197,12 +197,10 @@
    *         appeared in the original source
    */
   List<AstNode> get sortedCommentAndAnnotations {
-    List<AstNode> childList = new List<AstNode>();
-    childList.add(_comment);
-    childList.addAll(_metadata);
-    List<AstNode> children = new List.from(childList);
-    children.sort(AstNode.LEXICAL_ORDER);
-    return children;
+    return <AstNode>[]
+      ..add(_comment)
+      ..addAll(_metadata)
+      ..sort(AstNode.LEXICAL_ORDER);
   }
 }
 
@@ -995,12 +993,38 @@
 }
 
 /**
- * Instances of the class `AstCloner` implement an object that will clone any AST structure
- * that it visits. The cloner will only clone the structure, it will not preserve any resolution
- * results or properties associated with the nodes.
+ * An `AstCloner` is an AST visitor that will clone any AST structure that it
+ * visits. The cloner will only clone the structure, it will not preserve any
+ * resolution results or properties associated with the nodes.
  */
 class AstCloner implements AstVisitor<AstNode> {
-  List cloneNodeList(NodeList nodes) {
+  /**
+   * A flag indicating whether tokens should be cloned while cloning an AST
+   * structure.
+   */
+  final bool cloneTokens;
+
+  /**
+   * Initialize a newly created AST cloner to optionally clone tokens while
+   * cloning AST nodes if [cloneTokens] is `true`.
+   */
+  AstCloner([this.cloneTokens = false]);
+
+  /**
+   * Return a clone of the given [node].
+   */
+  AstNode cloneNode(AstNode node) {
+    if (node == null) {
+      return null;
+    }
+    return node.accept(this) as AstNode;
+  }
+
+  /**
+   * Return a list containing cloned versions of the nodes in the given list of
+   * [nodes].
+   */
+  List<AstNode> cloneNodeList(NodeList nodes) {
     int count = nodes.length;
     List clonedNodes = new List();
     for (int i = 0; i < count; i++) {
@@ -1009,185 +1033,484 @@
     return clonedNodes;
   }
 
-  @override
-  AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStrings(cloneNodeList(node.strings));
+  /**
+   * Clone the given [token] if tokens are supposed to be cloned.
+   */
+  Token cloneToken(Token token) {
+    if (cloneTokens) {
+      return (token == null ? null : token.copy());
+    } else {
+      return token;
+    }
+  }
+
+  /**
+   * Clone the given [tokens] if tokens are supposed to be cloned.
+   */
+  List<Token> cloneTokenList(List<Token> tokens) {
+    if (cloneTokens) {
+      return tokens.map((Token token) => token.copy()).toList();
+    }
+    return tokens;
+  }
 
   @override
-  Annotation visitAnnotation(Annotation node) => new Annotation(node.atSign, cloneNode(node.name), node.period, cloneNode(node.constructorName), cloneNode(node.arguments));
+  AdjacentStrings visitAdjacentStrings(AdjacentStrings node)
+      => new AdjacentStrings(cloneNodeList(node.strings));
 
   @override
-  ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(node.leftParenthesis, cloneNodeList(node.arguments), node.rightParenthesis);
+  Annotation visitAnnotation(Annotation node)
+      => new Annotation(
+          cloneToken(node.atSign),
+          cloneNode(node.name),
+          cloneToken(node.period),
+          cloneNode(node.constructorName),
+          cloneNode(node.arguments));
 
   @override
-  AsExpression visitAsExpression(AsExpression node) => new AsExpression(cloneNode(node.expression), node.asOperator, cloneNode(node.type));
+  ArgumentList visitArgumentList(ArgumentList node)
+      => new ArgumentList(
+          cloneToken(node.leftParenthesis),
+          cloneNodeList(node.arguments),
+          cloneToken(node.rightParenthesis));
 
   @override
-  AstNode visitAssertStatement(AssertStatement node) => new AssertStatement(node.keyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis, node.semicolon);
+  AsExpression visitAsExpression(AsExpression node)
+      => new AsExpression(
+          cloneNode(node.expression),
+          cloneToken(node.asOperator),
+          cloneNode(node.type));
 
   @override
-  AssignmentExpression visitAssignmentExpression(AssignmentExpression node) => new AssignmentExpression(cloneNode(node.leftHandSide), node.operator, cloneNode(node.rightHandSide));
+  AstNode visitAssertStatement(AssertStatement node)
+      => new AssertStatement(
+          cloneToken(node.keyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.condition),
+          cloneToken(node.rightParenthesis),
+          cloneToken(node.semicolon));
 
   @override
-  AwaitExpression visitAwaitExpression(AwaitExpression node) => new AwaitExpression(node.awaitKeyword, node.expression);
+  AssignmentExpression visitAssignmentExpression(AssignmentExpression node)
+      => new AssignmentExpression(
+          cloneNode(node.leftHandSide),
+          cloneToken(node.operator),
+          cloneNode(node.rightHandSide));
 
   @override
-  BinaryExpression visitBinaryExpression(BinaryExpression node) => new BinaryExpression(cloneNode(node.leftOperand), node.operator, cloneNode(node.rightOperand));
+  AwaitExpression visitAwaitExpression(AwaitExpression node)
+      => new AwaitExpression(
+          cloneToken(node.awaitKeyword),
+          cloneNode(node.expression));
 
   @override
-  Block visitBlock(Block node) => new Block(node.leftBracket, cloneNodeList(node.statements), node.rightBracket);
+  BinaryExpression visitBinaryExpression(BinaryExpression node)
+      => new BinaryExpression(
+          cloneNode(node.leftOperand),
+          cloneToken(node.operator),
+          cloneNode(node.rightOperand));
 
   @override
-  BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node) => new BlockFunctionBody(node.keyword, node.star, cloneNode(node.block));
+  Block visitBlock(Block node)
+      => new Block(
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.statements),
+          cloneToken(node.rightBracket));
 
   @override
-  BooleanLiteral visitBooleanLiteral(BooleanLiteral node) => new BooleanLiteral(node.literal, node.value);
+  BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node)
+      => new BlockFunctionBody(
+          cloneToken(node.keyword),
+          cloneToken(node.star),
+          cloneNode(node.block));
 
   @override
-  BreakStatement visitBreakStatement(BreakStatement node) => new BreakStatement(node.keyword, cloneNode(node.label), node.semicolon);
+  BooleanLiteral visitBooleanLiteral(BooleanLiteral node)
+      => new BooleanLiteral(cloneToken(node.literal), node.value);
 
   @override
-  CascadeExpression visitCascadeExpression(CascadeExpression node) => new CascadeExpression(cloneNode(node.target), cloneNodeList(node.cascadeSections));
+  BreakStatement visitBreakStatement(BreakStatement node)
+      => new BreakStatement(
+          cloneToken(node.keyword),
+          cloneNode(node.label),
+          cloneToken(node.semicolon));
 
   @override
-  CatchClause visitCatchClause(CatchClause node) => new CatchClause(node.onKeyword, cloneNode(node.exceptionType), node.catchKeyword, node.leftParenthesis, cloneNode(node.exceptionParameter), node.comma, cloneNode(node.stackTraceParameter), node.rightParenthesis, cloneNode(node.body));
+  CascadeExpression visitCascadeExpression(CascadeExpression node)
+      => new CascadeExpression(
+          cloneNode(node.target),
+          cloneNodeList(node.cascadeSections));
+
+  @override
+  CatchClause visitCatchClause(CatchClause node)
+      => new CatchClause(
+          cloneToken(node.onKeyword),
+          cloneNode(node.exceptionType),
+          cloneToken(node.catchKeyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.exceptionParameter),
+          cloneToken(node.comma),
+          cloneNode(node.stackTraceParameter),
+          cloneToken(node.rightParenthesis),
+          cloneNode(node.body));
 
   @override
   ClassDeclaration visitClassDeclaration(ClassDeclaration node) {
-    ClassDeclaration copy = new ClassDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.abstractKeyword, node.classKeyword, cloneNode(node.name), cloneNode(node.typeParameters), cloneNode(node.extendsClause), cloneNode(node.withClause), cloneNode(node.implementsClause), node.leftBracket, cloneNodeList(node.members), node.rightBracket);
+    ClassDeclaration copy = new ClassDeclaration(
+        cloneNode(node.documentationComment),
+        cloneNodeList(node.metadata),
+        cloneToken(node.abstractKeyword),
+        cloneToken(node.classKeyword),
+        cloneNode(node.name),
+        cloneNode(node.typeParameters),
+        cloneNode(node.extendsClause),
+        cloneNode(node.withClause),
+        cloneNode(node.implementsClause),
+        cloneToken(node.leftBracket),
+        cloneNodeList(node.members),
+        cloneToken(node.rightBracket));
     copy.nativeClause = cloneNode(node.nativeClause);
     return copy;
   }
 
   @override
-  ClassTypeAlias visitClassTypeAlias(ClassTypeAlias node) => new ClassTypeAlias(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.name), cloneNode(node.typeParameters), node.equals, node.abstractKeyword, cloneNode(node.superclass), cloneNode(node.withClause), cloneNode(node.implementsClause), node.semicolon);
+  ClassTypeAlias visitClassTypeAlias(ClassTypeAlias node)
+      => new ClassTypeAlias(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.name),
+          cloneNode(node.typeParameters),
+          cloneToken(node.equals),
+          cloneToken(node.abstractKeyword),
+          cloneNode(node.superclass),
+          cloneNode(node.withClause),
+          cloneNode(node.implementsClause),
+          cloneToken(node.semicolon));
 
   @override
   Comment visitComment(Comment node) {
     if (node.isDocumentation) {
-      return Comment.createDocumentationCommentWithReferences(node.tokens, cloneNodeList(node.references));
+      return Comment.createDocumentationCommentWithReferences(
+          cloneTokenList(node.tokens),
+          cloneNodeList(node.references));
     } else if (node.isBlock) {
-      return Comment.createBlockComment(node.tokens);
+      return Comment.createBlockComment(cloneTokenList(node.tokens));
     }
-    return Comment.createEndOfLineComment(node.tokens);
+    return Comment.createEndOfLineComment(cloneTokenList(node.tokens));
   }
 
   @override
-  CommentReference visitCommentReference(CommentReference node) => new CommentReference(node.newKeyword, cloneNode(node.identifier));
+  CommentReference visitCommentReference(CommentReference node)
+      => new CommentReference(
+          cloneToken(node.newKeyword),
+          cloneNode(node.identifier));
 
   @override
   CompilationUnit visitCompilationUnit(CompilationUnit node) {
-    CompilationUnit clone = new CompilationUnit(node.beginToken, cloneNode(node.scriptTag), cloneNodeList(node.directives), cloneNodeList(node.declarations), node.endToken);
+    CompilationUnit clone = new CompilationUnit(
+        cloneToken(node.beginToken),
+        cloneNode(node.scriptTag),
+        cloneNodeList(node.directives),
+        cloneNodeList(node.declarations),
+        cloneToken(node.endToken));
     clone.lineInfo = node.lineInfo;
     return clone;
   }
 
   @override
-  ConditionalExpression visitConditionalExpression(ConditionalExpression node) => new ConditionalExpression(cloneNode(node.condition), node.question, cloneNode(node.thenExpression), node.colon, cloneNode(node.elseExpression));
+  ConditionalExpression visitConditionalExpression(ConditionalExpression node)
+      => new ConditionalExpression(
+          cloneNode(node.condition),
+          cloneToken(node.question),
+          cloneNode(node.thenExpression),
+          cloneToken(node.colon),
+          cloneNode(node.elseExpression));
 
   @override
-  ConstructorDeclaration visitConstructorDeclaration(ConstructorDeclaration node) => new ConstructorDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.externalKeyword, node.constKeyword, node.factoryKeyword, cloneNode(node.returnType), node.period, cloneNode(node.name), cloneNode(node.parameters), node.separator, cloneNodeList(node.initializers), cloneNode(node.redirectedConstructor), cloneNode(node.body));
+  ConstructorDeclaration visitConstructorDeclaration(ConstructorDeclaration node)
+      => new ConstructorDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.externalKeyword),
+          cloneToken(node.constKeyword),
+          cloneToken(node.factoryKeyword),
+          cloneNode(node.returnType),
+          cloneToken(node.period),
+          cloneNode(node.name),
+          cloneNode(node.parameters),
+          cloneToken(node.separator),
+          cloneNodeList(node.initializers),
+          cloneNode(node.redirectedConstructor),
+          cloneNode(node.body));
 
   @override
-  ConstructorFieldInitializer visitConstructorFieldInitializer(ConstructorFieldInitializer node) => new ConstructorFieldInitializer(node.keyword, node.period, cloneNode(node.fieldName), node.equals, cloneNode(node.expression));
+  ConstructorFieldInitializer visitConstructorFieldInitializer(ConstructorFieldInitializer node)
+      => new ConstructorFieldInitializer(
+          cloneToken(node.keyword),
+          cloneToken(node.period),
+          cloneNode(node.fieldName),
+          cloneToken(node.equals),
+          cloneNode(node.expression));
 
   @override
-  ConstructorName visitConstructorName(ConstructorName node) => new ConstructorName(cloneNode(node.type), node.period, cloneNode(node.name));
+  ConstructorName visitConstructorName(ConstructorName node)
+      => new ConstructorName(
+          cloneNode(node.type),
+          cloneToken(node.period),
+          cloneNode(node.name));
 
   @override
-  ContinueStatement visitContinueStatement(ContinueStatement node) => new ContinueStatement(node.keyword, cloneNode(node.label), node.semicolon);
+  ContinueStatement visitContinueStatement(ContinueStatement node)
+      => new ContinueStatement(
+          cloneToken(node.keyword),
+          cloneNode(node.label),
+          cloneToken(node.semicolon));
 
   @override
-  DeclaredIdentifier visitDeclaredIdentifier(DeclaredIdentifier node) => new DeclaredIdentifier(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.type), cloneNode(node.identifier));
+  DeclaredIdentifier visitDeclaredIdentifier(DeclaredIdentifier node)
+      => new DeclaredIdentifier(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.type),
+          cloneNode(node.identifier));
 
   @override
-  DefaultFormalParameter visitDefaultFormalParameter(DefaultFormalParameter node) => new DefaultFormalParameter(cloneNode(node.parameter), node.kind, node.separator, cloneNode(node.defaultValue));
+  DefaultFormalParameter visitDefaultFormalParameter(DefaultFormalParameter node)
+      => new DefaultFormalParameter(
+          cloneNode(node.parameter),
+          node.kind,
+          cloneToken(node.separator),
+          cloneNode(node.defaultValue));
 
   @override
-  DoStatement visitDoStatement(DoStatement node) => new DoStatement(node.doKeyword, cloneNode(node.body), node.whileKeyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis, node.semicolon);
+  DoStatement visitDoStatement(DoStatement node)
+      => new DoStatement(
+          cloneToken(node.doKeyword),
+          cloneNode(node.body),
+          cloneToken(node.whileKeyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.condition),
+          cloneToken(node.rightParenthesis),
+          cloneToken(node.semicolon));
 
   @override
-  DoubleLiteral visitDoubleLiteral(DoubleLiteral node) => new DoubleLiteral(node.literal, node.value);
+  DoubleLiteral visitDoubleLiteral(DoubleLiteral node)
+      => new DoubleLiteral(cloneToken(node.literal), node.value);
 
   @override
-  EmptyFunctionBody visitEmptyFunctionBody(EmptyFunctionBody node) => new EmptyFunctionBody(node.semicolon);
+  EmptyFunctionBody visitEmptyFunctionBody(EmptyFunctionBody node)
+      => new EmptyFunctionBody(cloneToken(node.semicolon));
 
   @override
-  EmptyStatement visitEmptyStatement(EmptyStatement node) => new EmptyStatement(node.semicolon);
+  EmptyStatement visitEmptyStatement(EmptyStatement node)
+      => new EmptyStatement(cloneToken(node.semicolon));
 
   @override
-  AstNode visitEnumConstantDeclaration(EnumConstantDeclaration node) => new EnumConstantDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), cloneNode(node.name));
+  AstNode visitEnumConstantDeclaration(EnumConstantDeclaration node)
+      => new EnumConstantDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneNode(node.name));
 
   @override
-  EnumDeclaration visitEnumDeclaration(EnumDeclaration node) => new EnumDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.name), node.leftBracket, cloneNodeList(node.constants), node.rightBracket);
+  EnumDeclaration visitEnumDeclaration(EnumDeclaration node)
+      => new EnumDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.name),
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.constants),
+          cloneToken(node.rightBracket));
 
   @override
   ExportDirective visitExportDirective(ExportDirective node) {
-    ExportDirective directive = new ExportDirective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.uri), cloneNodeList(node.combinators), node.semicolon);
+    ExportDirective directive = new ExportDirective(
+        cloneNode(node.documentationComment),
+        cloneNodeList(node.metadata),
+        cloneToken(node.keyword),
+        cloneNode(node.uri),
+        cloneNodeList(node.combinators),
+        cloneToken(node.semicolon));
     directive.source = node.source;
     directive.uriContent = node.uriContent;
     return directive;
   }
 
   @override
-  ExpressionFunctionBody visitExpressionFunctionBody(ExpressionFunctionBody node) => new ExpressionFunctionBody(node.keyword, node.functionDefinition, cloneNode(node.expression), node.semicolon);
+  ExpressionFunctionBody visitExpressionFunctionBody(ExpressionFunctionBody node)
+      => new ExpressionFunctionBody(
+          cloneToken(node.keyword),
+          cloneToken(node.functionDefinition),
+          cloneNode(node.expression),
+          cloneToken(node.semicolon));
 
   @override
-  ExpressionStatement visitExpressionStatement(ExpressionStatement node) => new ExpressionStatement(cloneNode(node.expression), node.semicolon);
+  ExpressionStatement visitExpressionStatement(ExpressionStatement node)
+      => new ExpressionStatement(
+          cloneNode(node.expression),
+          cloneToken(node.semicolon));
 
   @override
-  ExtendsClause visitExtendsClause(ExtendsClause node) => new ExtendsClause(node.keyword, cloneNode(node.superclass));
+  ExtendsClause visitExtendsClause(ExtendsClause node)
+      => new ExtendsClause(
+          cloneToken(node.keyword),
+          cloneNode(node.superclass));
 
   @override
-  FieldDeclaration visitFieldDeclaration(FieldDeclaration node) => new FieldDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.staticKeyword, cloneNode(node.fields), node.semicolon);
+  FieldDeclaration visitFieldDeclaration(FieldDeclaration node)
+      => new FieldDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.staticKeyword),
+          cloneNode(node.fields),
+          cloneToken(node.semicolon));
 
   @override
-  FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) => new FieldFormalParameter(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.type), node.thisToken, node.period, cloneNode(node.identifier), cloneNode(node.parameters));
+  FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node)
+      => new FieldFormalParameter(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.type),
+          cloneToken(node.thisToken),
+          cloneToken(node.period),
+          cloneNode(node.identifier),
+          cloneNode(node.parameters));
 
   @override
   ForEachStatement visitForEachStatement(ForEachStatement node) {
     DeclaredIdentifier loopVariable = node.loopVariable;
     if (loopVariable == null) {
-      return new ForEachStatement.con2(node.awaitKeyword, node.forKeyword, node.leftParenthesis, cloneNode(node.identifier), node.inKeyword, cloneNode(node.iterator), node.rightParenthesis, cloneNode(node.body));
+      return new ForEachStatement.con2(
+          cloneToken(node.awaitKeyword),
+          cloneToken(node.forKeyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.identifier),
+          cloneToken(node.inKeyword),
+          cloneNode(node.iterator),
+          cloneToken(node.rightParenthesis),
+          cloneNode(node.body));
     }
-    return new ForEachStatement.con1(node.awaitKeyword, node.forKeyword, node.leftParenthesis, cloneNode(loopVariable), node.inKeyword, cloneNode(node.iterator), node.rightParenthesis, cloneNode(node.body));
+    return new ForEachStatement.con1(
+        cloneToken(node.awaitKeyword),
+        cloneToken(node.forKeyword),
+        cloneToken(node.leftParenthesis),
+        cloneNode(loopVariable),
+        cloneToken(node.inKeyword),
+        cloneNode(node.iterator),
+        cloneToken(node.rightParenthesis),
+        cloneNode(node.body));
   }
 
   @override
-  FormalParameterList visitFormalParameterList(FormalParameterList node) => new FormalParameterList(node.leftParenthesis, cloneNodeList(node.parameters), node.leftDelimiter, node.rightDelimiter, node.rightParenthesis);
+  FormalParameterList visitFormalParameterList(FormalParameterList node)
+      => new FormalParameterList(
+          cloneToken(node.leftParenthesis),
+          cloneNodeList(node.parameters),
+          cloneToken(node.leftDelimiter),
+          cloneToken(node.rightDelimiter),
+          cloneToken(node.rightParenthesis));
 
   @override
-  ForStatement visitForStatement(ForStatement node) => new ForStatement(node.forKeyword, node.leftParenthesis, cloneNode(node.variables), cloneNode(node.initialization), node.leftSeparator, cloneNode(node.condition), node.rightSeparator, cloneNodeList(node.updaters), node.rightParenthesis, cloneNode(node.body));
+  ForStatement visitForStatement(ForStatement node)
+      => new ForStatement(
+          cloneToken(node.forKeyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.variables),
+          cloneNode(node.initialization),
+          cloneToken(node.leftSeparator),
+          cloneNode(node.condition),
+          cloneToken(node.rightSeparator),
+          cloneNodeList(node.updaters),
+          cloneToken(node.rightParenthesis),
+          cloneNode(node.body));
 
   @override
-  FunctionDeclaration visitFunctionDeclaration(FunctionDeclaration node) => new FunctionDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.externalKeyword, cloneNode(node.returnType), node.propertyKeyword, cloneNode(node.name), cloneNode(node.functionExpression));
+  FunctionDeclaration visitFunctionDeclaration(FunctionDeclaration node)
+      => new FunctionDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.externalKeyword),
+          cloneNode(node.returnType),
+          cloneToken(node.propertyKeyword),
+          cloneNode(node.name),
+          cloneNode(node.functionExpression));
 
   @override
-  FunctionDeclarationStatement visitFunctionDeclarationStatement(FunctionDeclarationStatement node) => new FunctionDeclarationStatement(cloneNode(node.functionDeclaration));
+  FunctionDeclarationStatement visitFunctionDeclarationStatement(FunctionDeclarationStatement node)
+      => new FunctionDeclarationStatement(cloneNode(node.functionDeclaration));
 
   @override
-  FunctionExpression visitFunctionExpression(FunctionExpression node) => new FunctionExpression(cloneNode(node.parameters), cloneNode(node.body));
+  FunctionExpression visitFunctionExpression(FunctionExpression node)
+      => new FunctionExpression(
+          cloneNode(node.parameters),
+          cloneNode(node.body));
 
   @override
-  FunctionExpressionInvocation visitFunctionExpressionInvocation(FunctionExpressionInvocation node) => new FunctionExpressionInvocation(cloneNode(node.function), cloneNode(node.argumentList));
+  FunctionExpressionInvocation visitFunctionExpressionInvocation(FunctionExpressionInvocation node)
+      => new FunctionExpressionInvocation(
+          cloneNode(node.function),
+          cloneNode(node.argumentList));
 
   @override
-  FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) => new FunctionTypeAlias(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.returnType), cloneNode(node.name), cloneNode(node.typeParameters), cloneNode(node.parameters), node.semicolon);
+  FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node)
+      => new FunctionTypeAlias(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.returnType),
+          cloneNode(node.name),
+          cloneNode(node.typeParameters),
+          cloneNode(node.parameters),
+          cloneToken(node.semicolon));
 
   @override
-  FunctionTypedFormalParameter visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) => new FunctionTypedFormalParameter(cloneNode(node.documentationComment), cloneNodeList(node.metadata), cloneNode(node.returnType), cloneNode(node.identifier), cloneNode(node.parameters));
+  FunctionTypedFormalParameter visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node)
+      => new FunctionTypedFormalParameter(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneNode(node.returnType),
+          cloneNode(node.identifier),
+          cloneNode(node.parameters));
 
   @override
-  HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator(node.keyword, cloneNodeList(node.hiddenNames));
+  HideCombinator visitHideCombinator(HideCombinator node)
+      => new HideCombinator(
+          cloneToken(node.keyword),
+          cloneNodeList(node.hiddenNames));
 
   @override
-  IfStatement visitIfStatement(IfStatement node) => new IfStatement(node.ifKeyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis, cloneNode(node.thenStatement), node.elseKeyword, cloneNode(node.elseStatement));
+  IfStatement visitIfStatement(IfStatement node)
+      => new IfStatement(
+          cloneToken(node.ifKeyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.condition),
+          cloneToken(node.rightParenthesis),
+          cloneNode(node.thenStatement),
+          cloneToken(node.elseKeyword),
+          cloneNode(node.elseStatement));
 
   @override
-  ImplementsClause visitImplementsClause(ImplementsClause node) => new ImplementsClause(node.keyword, cloneNodeList(node.interfaces));
+  ImplementsClause visitImplementsClause(ImplementsClause node)
+      => new ImplementsClause(
+          cloneToken(node.keyword),
+          cloneNodeList(node.interfaces));
 
   @override
   ImportDirective visitImportDirective(ImportDirective node) {
-    ImportDirective directive = new ImportDirective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.uri), node.deferredToken, node.asToken, cloneNode(node.prefix), cloneNodeList(node.combinators), node.semicolon);
+    ImportDirective directive = new ImportDirective(
+        cloneNode(node.documentationComment),
+        cloneNodeList(node.metadata),
+        cloneToken(node.keyword),
+        cloneNode(node.uri),
+        cloneToken(node.deferredToken),
+        cloneToken(node.asToken),
+        cloneNode(node.prefix),
+        cloneNodeList(node.combinators),
+        cloneToken(node.semicolon));
     directive.source = node.source;
     directive.uriContent = node.uriContent;
     return directive;
@@ -1197,202 +1520,404 @@
   IndexExpression visitIndexExpression(IndexExpression node) {
     Token period = node.period;
     if (period == null) {
-      return new IndexExpression.forTarget(cloneNode(node.target), node.leftBracket, cloneNode(node.index), node.rightBracket);
+      return new IndexExpression.forTarget(
+          cloneNode(node.target),
+          cloneToken(node.leftBracket),
+          cloneNode(node.index),
+          cloneToken(node.rightBracket));
     } else {
-      return new IndexExpression.forCascade(period, node.leftBracket, cloneNode(node.index), node.rightBracket);
+      return new IndexExpression.forCascade(
+          cloneToken(period),
+          cloneToken(node.leftBracket),
+          cloneNode(node.index),
+          cloneToken(node.rightBracket));
     }
   }
 
   @override
-  InstanceCreationExpression visitInstanceCreationExpression(InstanceCreationExpression node) => new InstanceCreationExpression(node.keyword, cloneNode(node.constructorName), cloneNode(node.argumentList));
+  InstanceCreationExpression visitInstanceCreationExpression(InstanceCreationExpression node)
+      => new InstanceCreationExpression(
+          cloneToken(node.keyword),
+          cloneNode(node.constructorName),
+          cloneNode(node.argumentList));
 
   @override
-  IntegerLiteral visitIntegerLiteral(IntegerLiteral node) => new IntegerLiteral(node.literal, node.value);
+  IntegerLiteral visitIntegerLiteral(IntegerLiteral node)
+      => new IntegerLiteral(cloneToken(node.literal), node.value);
 
   @override
-  InterpolationExpression visitInterpolationExpression(InterpolationExpression node) => new InterpolationExpression(node.leftBracket, cloneNode(node.expression), node.rightBracket);
+  InterpolationExpression visitInterpolationExpression(InterpolationExpression node)
+      => new InterpolationExpression(
+          cloneToken(node.leftBracket),
+          cloneNode(node.expression),
+          cloneToken(node.rightBracket));
 
   @override
-  InterpolationString visitInterpolationString(InterpolationString node) => new InterpolationString(node.contents, node.value);
+  InterpolationString visitInterpolationString(InterpolationString node)
+      => new InterpolationString(cloneToken(node.contents), node.value);
 
   @override
-  IsExpression visitIsExpression(IsExpression node) => new IsExpression(cloneNode(node.expression), node.isOperator, node.notOperator, cloneNode(node.type));
+  IsExpression visitIsExpression(IsExpression node)
+      => new IsExpression(
+          cloneNode(node.expression),
+          cloneToken(node.isOperator),
+          cloneToken(node.notOperator),
+          cloneNode(node.type));
 
   @override
-  Label visitLabel(Label node) => new Label(cloneNode(node.label), node.colon);
+  Label visitLabel(Label node)
+      => new Label(cloneNode(node.label), cloneToken(node.colon));
 
   @override
-  LabeledStatement visitLabeledStatement(LabeledStatement node) => new LabeledStatement(cloneNodeList(node.labels), cloneNode(node.statement));
+  LabeledStatement visitLabeledStatement(LabeledStatement node)
+      => new LabeledStatement(
+          cloneNodeList(node.labels),
+          cloneNode(node.statement));
 
   @override
-  LibraryDirective visitLibraryDirective(LibraryDirective node) => new LibraryDirective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.libraryToken, cloneNode(node.name), node.semicolon);
+  LibraryDirective visitLibraryDirective(LibraryDirective node)
+      => new LibraryDirective(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.libraryToken),
+          cloneNode(node.name),
+          cloneToken(node.semicolon));
 
   @override
-  LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node) => new LibraryIdentifier(cloneNodeList(node.components));
+  LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node)
+      => new LibraryIdentifier(cloneNodeList(node.components));
 
   @override
-  ListLiteral visitListLiteral(ListLiteral node) => new ListLiteral(node.constKeyword, cloneNode(node.typeArguments), node.leftBracket, cloneNodeList(node.elements), node.rightBracket);
+  ListLiteral visitListLiteral(ListLiteral node)
+      => new ListLiteral(
+          cloneToken(node.constKeyword),
+          cloneNode(node.typeArguments),
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.elements),
+          cloneToken(node.rightBracket));
 
   @override
-  MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral(node.constKeyword, cloneNode(node.typeArguments), node.leftBracket, cloneNodeList(node.entries), node.rightBracket);
+  MapLiteral visitMapLiteral(MapLiteral node)
+      => new MapLiteral(
+          cloneToken(node.constKeyword),
+          cloneNode(node.typeArguments),
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.entries),
+          cloneToken(node.rightBracket));
 
   @override
-  MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node) => new MapLiteralEntry(cloneNode(node.key), node.separator, cloneNode(node.value));
+  MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node)
+      => new MapLiteralEntry(
+          cloneNode(node.key),
+          cloneToken(node.separator),
+          cloneNode(node.value));
 
   @override
-  MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => new MethodDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.externalKeyword, node.modifierKeyword, cloneNode(node.returnType), node.propertyKeyword, node.operatorKeyword, cloneNode(node.name), cloneNode(node.parameters), cloneNode(node.body));
+  MethodDeclaration visitMethodDeclaration(MethodDeclaration node)
+      => new MethodDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.externalKeyword),
+          cloneToken(node.modifierKeyword),
+          cloneNode(node.returnType),
+          cloneToken(node.propertyKeyword),
+          cloneToken(node.operatorKeyword),
+          cloneNode(node.name),
+          cloneNode(node.parameters),
+          cloneNode(node.body));
 
   @override
-  MethodInvocation visitMethodInvocation(MethodInvocation node) => new MethodInvocation(cloneNode(node.target), node.period, cloneNode(node.methodName), cloneNode(node.argumentList));
+  MethodInvocation visitMethodInvocation(MethodInvocation node)
+      => new MethodInvocation(
+          cloneNode(node.target),
+          cloneToken(node.period),
+          cloneNode(node.methodName),
+          cloneNode(node.argumentList));
 
   @override
-  NamedExpression visitNamedExpression(NamedExpression node) => new NamedExpression(cloneNode(node.name), cloneNode(node.expression));
+  NamedExpression visitNamedExpression(NamedExpression node)
+      => new NamedExpression(cloneNode(node.name), cloneNode(node.expression));
 
   @override
-  AstNode visitNativeClause(NativeClause node) => new NativeClause(node.keyword, cloneNode(node.name));
+  AstNode visitNativeClause(NativeClause node)
+      => new NativeClause(cloneToken(node.keyword), cloneNode(node.name));
 
   @override
-  NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new NativeFunctionBody(node.nativeToken, cloneNode(node.stringLiteral), node.semicolon);
+  NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node)
+      => new NativeFunctionBody(
+          cloneToken(node.nativeToken),
+          cloneNode(node.stringLiteral),
+          cloneToken(node.semicolon));
 
   @override
-  NullLiteral visitNullLiteral(NullLiteral node) => new NullLiteral(node.literal);
+  NullLiteral visitNullLiteral(NullLiteral node)
+      => new NullLiteral(cloneToken(node.literal));
 
   @override
-  ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression node) => new ParenthesizedExpression(node.leftParenthesis, cloneNode(node.expression), node.rightParenthesis);
+  ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression node)
+      => new ParenthesizedExpression(
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.expression),
+          cloneToken(node.rightParenthesis));
 
   @override
   PartDirective visitPartDirective(PartDirective node) {
-    PartDirective directive = new PartDirective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.partToken, cloneNode(node.uri), node.semicolon);
+    PartDirective directive = new PartDirective(
+        cloneNode(node.documentationComment),
+        cloneNodeList(node.metadata),
+        cloneToken(node.partToken),
+        cloneNode(node.uri),
+        cloneToken(node.semicolon));
     directive.source = node.source;
     directive.uriContent = node.uriContent;
     return directive;
   }
 
   @override
-  PartOfDirective visitPartOfDirective(PartOfDirective node) => new PartOfDirective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.partToken, node.ofToken, cloneNode(node.libraryName), node.semicolon);
+  PartOfDirective visitPartOfDirective(PartOfDirective node)
+      => new PartOfDirective(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.partToken),
+          cloneToken(node.ofToken),
+          cloneNode(node.libraryName),
+          cloneToken(node.semicolon));
 
   @override
-  PostfixExpression visitPostfixExpression(PostfixExpression node) => new PostfixExpression(cloneNode(node.operand), node.operator);
+  PostfixExpression visitPostfixExpression(PostfixExpression node)
+      => new PostfixExpression(
+          cloneNode(node.operand),
+          cloneToken(node.operator));
 
   @override
-  PrefixedIdentifier visitPrefixedIdentifier(PrefixedIdentifier node) => new PrefixedIdentifier(cloneNode(node.prefix), node.period, cloneNode(node.identifier));
+  PrefixedIdentifier visitPrefixedIdentifier(PrefixedIdentifier node)
+      => new PrefixedIdentifier(
+          cloneNode(node.prefix),
+          cloneToken(node.period),
+          cloneNode(node.identifier));
 
   @override
-  PrefixExpression visitPrefixExpression(PrefixExpression node) => new PrefixExpression(node.operator, cloneNode(node.operand));
+  PrefixExpression visitPrefixExpression(PrefixExpression node)
+      => new PrefixExpression(
+          cloneToken(node.operator),
+          cloneNode(node.operand));
 
   @override
-  PropertyAccess visitPropertyAccess(PropertyAccess node) => new PropertyAccess(cloneNode(node.target), node.operator, cloneNode(node.propertyName));
+  PropertyAccess visitPropertyAccess(PropertyAccess node)
+      => new PropertyAccess(
+          cloneNode(node.target),
+          cloneToken(node.operator),
+          cloneNode(node.propertyName));
 
   @override
-  RedirectingConstructorInvocation visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) => new RedirectingConstructorInvocation(node.keyword, node.period, cloneNode(node.constructorName), cloneNode(node.argumentList));
+  RedirectingConstructorInvocation visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node)
+      => new RedirectingConstructorInvocation(
+          cloneToken(node.keyword),
+          cloneToken(node.period),
+          cloneNode(node.constructorName),
+          cloneNode(node.argumentList));
 
   @override
-  RethrowExpression visitRethrowExpression(RethrowExpression node) => new RethrowExpression(node.keyword);
+  RethrowExpression visitRethrowExpression(RethrowExpression node)
+      => new RethrowExpression(cloneToken(node.keyword));
 
   @override
-  ReturnStatement visitReturnStatement(ReturnStatement node) => new ReturnStatement(node.keyword, cloneNode(node.expression), node.semicolon);
+  ReturnStatement visitReturnStatement(ReturnStatement node)
+      => new ReturnStatement(
+          cloneToken(node.keyword),
+          cloneNode(node.expression),
+          cloneToken(node.semicolon));
 
   @override
-  ScriptTag visitScriptTag(ScriptTag node) => new ScriptTag(node.scriptTag);
+  ScriptTag visitScriptTag(ScriptTag node)
+      => new ScriptTag(cloneToken(node.scriptTag));
 
   @override
-  ShowCombinator visitShowCombinator(ShowCombinator node) => new ShowCombinator(node.keyword, cloneNodeList(node.shownNames));
+  ShowCombinator visitShowCombinator(ShowCombinator node)
+      => new ShowCombinator(
+          cloneToken(node.keyword),
+          cloneNodeList(node.shownNames));
 
   @override
-  SimpleFormalParameter visitSimpleFormalParameter(SimpleFormalParameter node) => new SimpleFormalParameter(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.type), cloneNode(node.identifier));
+  SimpleFormalParameter visitSimpleFormalParameter(SimpleFormalParameter node)
+      => new SimpleFormalParameter(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.type),
+          cloneNode(node.identifier));
 
   @override
-  SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node) => new SimpleIdentifier(node.token);
+  SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node)
+      => new SimpleIdentifier(cloneToken(node.token));
 
   @override
-  SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node) => new SimpleStringLiteral(node.literal, node.value);
+  SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node)
+      => new SimpleStringLiteral(cloneToken(node.literal), node.value);
 
   @override
-  StringInterpolation visitStringInterpolation(StringInterpolation node) => new StringInterpolation(cloneNodeList(node.elements));
+  StringInterpolation visitStringInterpolation(StringInterpolation node)
+      => new StringInterpolation(cloneNodeList(node.elements));
 
   @override
-  SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInvocation node) => new SuperConstructorInvocation(node.keyword, node.period, cloneNode(node.constructorName), cloneNode(node.argumentList));
+  SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInvocation node)
+      => new SuperConstructorInvocation(
+          cloneToken(node.keyword),
+          cloneToken(node.period),
+          cloneNode(node.constructorName),
+          cloneNode(node.argumentList));
 
   @override
-  SuperExpression visitSuperExpression(SuperExpression node) => new SuperExpression(node.keyword);
+  SuperExpression visitSuperExpression(SuperExpression node)
+      => new SuperExpression(cloneToken(node.keyword));
 
   @override
-  SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(cloneNodeList(node.labels), node.keyword, cloneNode(node.expression), node.colon, cloneNodeList(node.statements));
+  SwitchCase visitSwitchCase(SwitchCase node)
+      => new SwitchCase(
+          cloneNodeList(node.labels),
+          cloneToken(node.keyword),
+          cloneNode(node.expression),
+          cloneToken(node.colon),
+          cloneNodeList(node.statements));
 
   @override
-  SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(cloneNodeList(node.labels), node.keyword, node.colon, cloneNodeList(node.statements));
+  SwitchDefault visitSwitchDefault(SwitchDefault node)
+      => new SwitchDefault(
+          cloneNodeList(node.labels),
+          cloneToken(node.keyword),
+          cloneToken(node.colon),
+          cloneNodeList(node.statements));
 
   @override
-  SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatement(node.keyword, node.leftParenthesis, cloneNode(node.expression), node.rightParenthesis, node.leftBracket, cloneNodeList(node.members), node.rightBracket);
+  SwitchStatement visitSwitchStatement(SwitchStatement node)
+      => new SwitchStatement(
+          cloneToken(node.keyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.expression),
+          cloneToken(node.rightParenthesis),
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.members),
+          cloneToken(node.rightBracket));
 
   @override
-  SymbolLiteral visitSymbolLiteral(SymbolLiteral node) => new SymbolLiteral(node.poundSign, node.components);
+  SymbolLiteral visitSymbolLiteral(SymbolLiteral node)
+      => new SymbolLiteral(
+          cloneToken(node.poundSign),
+          cloneTokenList(node.components));
 
   @override
-  ThisExpression visitThisExpression(ThisExpression node) => new ThisExpression(node.keyword);
+  ThisExpression visitThisExpression(ThisExpression node)
+      => new ThisExpression(cloneToken(node.keyword));
 
   @override
-  ThrowExpression visitThrowExpression(ThrowExpression node) => new ThrowExpression(node.keyword, cloneNode(node.expression));
+  ThrowExpression visitThrowExpression(ThrowExpression node)
+      => new ThrowExpression(
+          cloneToken(node.keyword),
+          cloneNode(node.expression));
 
   @override
-  TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) => new TopLevelVariableDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), cloneNode(node.variables), node.semicolon);
+  TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node)
+      => new TopLevelVariableDeclaration(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneNode(node.variables),
+          cloneToken(node.semicolon));
 
   @override
-  TryStatement visitTryStatement(TryStatement node) => new TryStatement(node.tryKeyword, cloneNode(node.body), cloneNodeList(node.catchClauses), node.finallyKeyword, cloneNode(node.finallyBlock));
+  TryStatement visitTryStatement(TryStatement node)
+      => new TryStatement(
+          cloneToken(node.tryKeyword),
+          cloneNode(node.body),
+          cloneNodeList(node.catchClauses),
+          cloneToken(node.finallyKeyword),
+          cloneNode(node.finallyBlock));
 
   @override
-  TypeArgumentList visitTypeArgumentList(TypeArgumentList node) => new TypeArgumentList(node.leftBracket, cloneNodeList(node.arguments), node.rightBracket);
+  TypeArgumentList visitTypeArgumentList(TypeArgumentList node)
+      => new TypeArgumentList(
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.arguments),
+          cloneToken(node.rightBracket));
 
   @override
-  TypeName visitTypeName(TypeName node) => new TypeName(cloneNode(node.name), cloneNode(node.typeArguments));
+  TypeName visitTypeName(TypeName node)
+      => new TypeName(cloneNode(node.name), cloneNode(node.typeArguments));
 
   @override
-  TypeParameter visitTypeParameter(TypeParameter node) => new TypeParameter(cloneNode(node.documentationComment), cloneNodeList(node.metadata), cloneNode(node.name), node.keyword, cloneNode(node.bound));
+  TypeParameter visitTypeParameter(TypeParameter node)
+      => new TypeParameter(
+          cloneNode(node.documentationComment),
+          cloneNodeList(node.metadata),
+          cloneNode(node.name),
+          cloneToken(node.keyword),
+          cloneNode(node.bound));
 
   @override
-  TypeParameterList visitTypeParameterList(TypeParameterList node) => new TypeParameterList(node.leftBracket, cloneNodeList(node.typeParameters), node.rightBracket);
+  TypeParameterList visitTypeParameterList(TypeParameterList node)
+      => new TypeParameterList(
+          cloneToken(node.leftBracket),
+          cloneNodeList(node.typeParameters),
+          cloneToken(node.rightBracket));
 
   @override
-  VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new VariableDeclaration(null, cloneNodeList(node.metadata), cloneNode(node.name), node.equals, cloneNode(node.initializer));
+  VariableDeclaration visitVariableDeclaration(VariableDeclaration node)
+      => new VariableDeclaration(
+          null,
+          cloneNodeList(node.metadata),
+          cloneNode(node.name),
+          cloneToken(node.equals),
+          cloneNode(node.initializer));
 
   @override
-  VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList node) => new VariableDeclarationList(null, cloneNodeList(node.metadata), node.keyword, cloneNode(node.type), cloneNodeList(node.variables));
+  VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList node)
+      => new VariableDeclarationList(
+          null,
+          cloneNodeList(node.metadata),
+          cloneToken(node.keyword),
+          cloneNode(node.type),
+          cloneNodeList(node.variables));
 
   @override
-  VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclarationStatement node) => new VariableDeclarationStatement(cloneNode(node.variables), node.semicolon);
+  VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclarationStatement node)
+      => new VariableDeclarationStatement(
+          cloneNode(node.variables),
+          cloneToken(node.semicolon));
 
   @override
-  WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement(node.keyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis, cloneNode(node.body));
+  WhileStatement visitWhileStatement(WhileStatement node)
+      => new WhileStatement(
+          cloneToken(node.keyword),
+          cloneToken(node.leftParenthesis),
+          cloneNode(node.condition),
+          cloneToken(node.rightParenthesis),
+          cloneNode(node.body));
 
   @override
-  WithClause visitWithClause(WithClause node) => new WithClause(node.withKeyword, cloneNodeList(node.mixinTypes));
+  WithClause visitWithClause(WithClause node)
+      => new WithClause(
+          cloneToken(node.withKeyword),
+          cloneNodeList(node.mixinTypes));
 
   @override
-  YieldStatement visitYieldStatement(YieldStatement node) => new YieldStatement(node.yieldKeyword, node.star, node.expression, node.semicolon);
-
-  AstNode cloneNode(AstNode node) {
-    if (node == null) {
-      return null;
-    }
-    return node.accept(this) as AstNode;
-  }
+  YieldStatement visitYieldStatement(YieldStatement node)
+      => new YieldStatement(
+          cloneToken(node.yieldKeyword),
+          cloneToken(node.star),
+          cloneNode(node.expression),
+          cloneToken(node.semicolon));
 }
 
 /**
- * Instances of the class `AstComparator` compare the structure of two ASTNodes to see whether
+ * An `AstComparator` compares the structure of two AstNodes to see whether
  * they are equal.
  */
 class AstComparator implements AstVisitor<bool> {
   /**
-   * Return `true` if the two AST nodes are equal.
-   *
-   * @param first the first node being compared
-   * @param second the second node being compared
-   * @return `true` if the two AST nodes are equal
+   * Return `true` if the [first] node and the [second] node are equal.
    */
   static bool equalNodes(AstNode first, AstNode second) {
     AstComparator comparator = new AstComparator();
-    return comparator._isEqualNodes(first, second);
+    return comparator.isEqualNodes(first, second);
   }
 
   /**
@@ -1410,91 +1935,91 @@
   @override
   bool visitAnnotation(Annotation node) {
     Annotation other = this._other as Annotation;
-    return _isEqualTokens(node.atSign, other.atSign) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.constructorName, other.constructorName) && _isEqualNodes(node.arguments, other.arguments);
+    return isEqualTokens(node.atSign, other.atSign) && isEqualNodes(node.name, other.name) && isEqualTokens(node.period, other.period) && isEqualNodes(node.constructorName, other.constructorName) && isEqualNodes(node.arguments, other.arguments);
   }
 
   @override
   bool visitArgumentList(ArgumentList node) {
     ArgumentList other = this._other as ArgumentList;
-    return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodeLists(node.arguments, other.arguments) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis);
+    return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodeLists(node.arguments, other.arguments) && isEqualTokens(node.rightParenthesis, other.rightParenthesis);
   }
 
   @override
   bool visitAsExpression(AsExpression node) {
     AsExpression other = this._other as AsExpression;
-    return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.asOperator, other.asOperator) && _isEqualNodes(node.type, other.type);
+    return isEqualNodes(node.expression, other.expression) && isEqualTokens(node.asOperator, other.asOperator) && isEqualNodes(node.type, other.type);
   }
 
   @override
   bool visitAssertStatement(AssertStatement node) {
     AssertStatement other = this._other as AssertStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitAssignmentExpression(AssignmentExpression node) {
     AssignmentExpression other = this._other as AssignmentExpression;
-    return _isEqualNodes(node.leftHandSide, other.leftHandSide) && _isEqualTokens(node.operator, other.operator) && _isEqualNodes(node.rightHandSide, other.rightHandSide);
+    return isEqualNodes(node.leftHandSide, other.leftHandSide) && isEqualTokens(node.operator, other.operator) && isEqualNodes(node.rightHandSide, other.rightHandSide);
   }
 
   @override
   bool visitAwaitExpression(AwaitExpression node) {
     AwaitExpression other = this._other as AwaitExpression;
-    return _isEqualTokens(node.awaitKeyword, other.awaitKeyword) && _isEqualNodes(node.expression, other.expression);
+    return isEqualTokens(node.awaitKeyword, other.awaitKeyword) && isEqualNodes(node.expression, other.expression);
   }
 
   @override
   bool visitBinaryExpression(BinaryExpression node) {
     BinaryExpression other = this._other as BinaryExpression;
-    return _isEqualNodes(node.leftOperand, other.leftOperand) && _isEqualTokens(node.operator, other.operator) && _isEqualNodes(node.rightOperand, other.rightOperand);
+    return isEqualNodes(node.leftOperand, other.leftOperand) && isEqualTokens(node.operator, other.operator) && isEqualNodes(node.rightOperand, other.rightOperand);
   }
 
   @override
   bool visitBlock(Block node) {
     Block other = this._other as Block;
-    return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.statements, other.statements) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.statements, other.statements) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitBlockFunctionBody(BlockFunctionBody node) {
     BlockFunctionBody other = this._other as BlockFunctionBody;
-    return _isEqualNodes(node.block, other.block);
+    return isEqualNodes(node.block, other.block);
   }
 
   @override
   bool visitBooleanLiteral(BooleanLiteral node) {
     BooleanLiteral other = this._other as BooleanLiteral;
-    return _isEqualTokens(node.literal, other.literal) && node.value == other.value;
+    return isEqualTokens(node.literal, other.literal) && node.value == other.value;
   }
 
   @override
   bool visitBreakStatement(BreakStatement node) {
     BreakStatement other = this._other as BreakStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.label, other.label) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.label, other.label) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitCascadeExpression(CascadeExpression node) {
     CascadeExpression other = this._other as CascadeExpression;
-    return _isEqualNodes(node.target, other.target) && _isEqualNodeLists(node.cascadeSections, other.cascadeSections);
+    return isEqualNodes(node.target, other.target) && _isEqualNodeLists(node.cascadeSections, other.cascadeSections);
   }
 
   @override
   bool visitCatchClause(CatchClause node) {
     CatchClause other = this._other as CatchClause;
-    return _isEqualTokens(node.onKeyword, other.onKeyword) && _isEqualNodes(node.exceptionType, other.exceptionType) && _isEqualTokens(node.catchKeyword, other.catchKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.exceptionParameter, other.exceptionParameter) && _isEqualTokens(node.comma, other.comma) && _isEqualNodes(node.stackTraceParameter, other.stackTraceParameter) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body);
+    return isEqualTokens(node.onKeyword, other.onKeyword) && isEqualNodes(node.exceptionType, other.exceptionType) && isEqualTokens(node.catchKeyword, other.catchKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.exceptionParameter, other.exceptionParameter) && isEqualTokens(node.comma, other.comma) && isEqualNodes(node.stackTraceParameter, other.stackTraceParameter) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitClassDeclaration(ClassDeclaration node) {
     ClassDeclaration other = this._other as ClassDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.abstractKeyword, other.abstractKeyword) && _isEqualTokens(node.classKeyword, other.classKeyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typeParameters, other.typeParameters) && _isEqualNodes(node.extendsClause, other.extendsClause) && _isEqualNodes(node.withClause, other.withClause) && _isEqualNodes(node.implementsClause, other.implementsClause) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.members, other.members) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.abstractKeyword, other.abstractKeyword) && isEqualTokens(node.classKeyword, other.classKeyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.extendsClause, other.extendsClause) && isEqualNodes(node.withClause, other.withClause) && isEqualNodes(node.implementsClause, other.implementsClause) && isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.members, other.members) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitClassTypeAlias(ClassTypeAlias node) {
     ClassTypeAlias other = this._other as ClassTypeAlias;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typeParameters, other.typeParameters) && _isEqualTokens(node.equals, other.equals) && _isEqualTokens(node.abstractKeyword, other.abstractKeyword) && _isEqualNodes(node.superclass, other.superclass) && _isEqualNodes(node.withClause, other.withClause) && _isEqualNodes(node.implementsClause, other.implementsClause) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.typeParameters, other.typeParameters) && isEqualTokens(node.equals, other.equals) && isEqualTokens(node.abstractKeyword, other.abstractKeyword) && isEqualNodes(node.superclass, other.superclass) && isEqualNodes(node.withClause, other.withClause) && isEqualNodes(node.implementsClause, other.implementsClause) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
@@ -1506,259 +2031,259 @@
   @override
   bool visitCommentReference(CommentReference node) {
     CommentReference other = this._other as CommentReference;
-    return _isEqualTokens(node.newKeyword, other.newKeyword) && _isEqualNodes(node.identifier, other.identifier);
+    return isEqualTokens(node.newKeyword, other.newKeyword) && isEqualNodes(node.identifier, other.identifier);
   }
 
   @override
   bool visitCompilationUnit(CompilationUnit node) {
     CompilationUnit other = this._other as CompilationUnit;
-    return _isEqualTokens(node.beginToken, other.beginToken) && _isEqualNodes(node.scriptTag, other.scriptTag) && _isEqualNodeLists(node.directives, other.directives) && _isEqualNodeLists(node.declarations, other.declarations) && _isEqualTokens(node.endToken, other.endToken);
+    return isEqualTokens(node.beginToken, other.beginToken) && isEqualNodes(node.scriptTag, other.scriptTag) && _isEqualNodeLists(node.directives, other.directives) && _isEqualNodeLists(node.declarations, other.declarations) && isEqualTokens(node.endToken, other.endToken);
   }
 
   @override
   bool visitConditionalExpression(ConditionalExpression node) {
     ConditionalExpression other = this._other as ConditionalExpression;
-    return _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.question, other.question) && _isEqualNodes(node.thenExpression, other.thenExpression) && _isEqualTokens(node.colon, other.colon) && _isEqualNodes(node.elseExpression, other.elseExpression);
+    return isEqualNodes(node.condition, other.condition) && isEqualTokens(node.question, other.question) && isEqualNodes(node.thenExpression, other.thenExpression) && isEqualTokens(node.colon, other.colon) && isEqualNodes(node.elseExpression, other.elseExpression);
   }
 
   @override
   bool visitConstructorDeclaration(ConstructorDeclaration node) {
     ConstructorDeclaration other = this._other as ConstructorDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.externalKeyword, other.externalKeyword) && _isEqualTokens(node.constKeyword, other.constKeyword) && _isEqualTokens(node.factoryKeyword, other.factoryKeyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.parameters, other.parameters) && _isEqualTokens(node.separator, other.separator) && _isEqualNodeLists(node.initializers, other.initializers) && _isEqualNodes(node.redirectedConstructor, other.redirectedConstructor) && _isEqualNodes(node.body, other.body);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externalKeyword, other.externalKeyword) && isEqualTokens(node.constKeyword, other.constKeyword) && isEqualTokens(node.factoryKeyword, other.factoryKeyword) && isEqualNodes(node.returnType, other.returnType) && isEqualTokens(node.period, other.period) && isEqualNodes(node.name, other.name) && isEqualNodes(node.parameters, other.parameters) && isEqualTokens(node.separator, other.separator) && _isEqualNodeLists(node.initializers, other.initializers) && isEqualNodes(node.redirectedConstructor, other.redirectedConstructor) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
     ConstructorFieldInitializer other = this._other as ConstructorFieldInitializer;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.fieldName, other.fieldName) && _isEqualTokens(node.equals, other.equals) && _isEqualNodes(node.expression, other.expression);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.period, other.period) && isEqualNodes(node.fieldName, other.fieldName) && isEqualTokens(node.equals, other.equals) && isEqualNodes(node.expression, other.expression);
   }
 
   @override
   bool visitConstructorName(ConstructorName node) {
     ConstructorName other = this._other as ConstructorName;
-    return _isEqualNodes(node.type, other.type) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.name, other.name);
+    return isEqualNodes(node.type, other.type) && isEqualTokens(node.period, other.period) && isEqualNodes(node.name, other.name);
   }
 
   @override
   bool visitContinueStatement(ContinueStatement node) {
     ContinueStatement other = this._other as ContinueStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.label, other.label) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.label, other.label) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitDeclaredIdentifier(DeclaredIdentifier node) {
     DeclaredIdentifier other = this._other as DeclaredIdentifier;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodes(node.identifier, other.identifier);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.type, other.type) && isEqualNodes(node.identifier, other.identifier);
   }
 
   @override
   bool visitDefaultFormalParameter(DefaultFormalParameter node) {
     DefaultFormalParameter other = this._other as DefaultFormalParameter;
-    return _isEqualNodes(node.parameter, other.parameter) && node.kind == other.kind && _isEqualTokens(node.separator, other.separator) && _isEqualNodes(node.defaultValue, other.defaultValue);
+    return isEqualNodes(node.parameter, other.parameter) && node.kind == other.kind && isEqualTokens(node.separator, other.separator) && isEqualNodes(node.defaultValue, other.defaultValue);
   }
 
   @override
   bool visitDoStatement(DoStatement node) {
     DoStatement other = this._other as DoStatement;
-    return _isEqualTokens(node.doKeyword, other.doKeyword) && _isEqualNodes(node.body, other.body) && _isEqualTokens(node.whileKeyword, other.whileKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.doKeyword, other.doKeyword) && isEqualNodes(node.body, other.body) && isEqualTokens(node.whileKeyword, other.whileKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitDoubleLiteral(DoubleLiteral node) {
     DoubleLiteral other = this._other as DoubleLiteral;
-    return _isEqualTokens(node.literal, other.literal) && node.value == other.value;
+    return isEqualTokens(node.literal, other.literal) && node.value == other.value;
   }
 
   @override
   bool visitEmptyFunctionBody(EmptyFunctionBody node) {
     EmptyFunctionBody other = this._other as EmptyFunctionBody;
-    return _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitEmptyStatement(EmptyStatement node) {
     EmptyStatement other = this._other as EmptyStatement;
-    return _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitEnumConstantDeclaration(EnumConstantDeclaration node) {
     EnumConstantDeclaration other = this._other as EnumConstantDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, other.name);
   }
 
   @override
   bool visitEnumDeclaration(EnumDeclaration node) {
     EnumDeclaration other = this._other as EnumDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.constants, other.constants) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.name, other.name) && isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.constants, other.constants) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitExportDirective(ExportDirective node) {
     ExportDirective other = this._other as ExportDirective;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.uri, other.uri) && _isEqualNodeLists(node.combinators, other.combinators) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.uri, other.uri) && _isEqualNodeLists(node.combinators, other.combinators) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitExpressionFunctionBody(ExpressionFunctionBody node) {
     ExpressionFunctionBody other = this._other as ExpressionFunctionBody;
-    return _isEqualTokens(node.functionDefinition, other.functionDefinition) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.functionDefinition, other.functionDefinition) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitExpressionStatement(ExpressionStatement node) {
     ExpressionStatement other = this._other as ExpressionStatement;
-    return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.expression, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitExtendsClause(ExtendsClause node) {
     ExtendsClause other = this._other as ExtendsClause;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.superclass, other.superclass);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.superclass, other.superclass);
   }
 
   @override
   bool visitFieldDeclaration(FieldDeclaration node) {
     FieldDeclaration other = this._other as FieldDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.staticKeyword, other.staticKeyword) && _isEqualNodes(node.fields, other.fields) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.staticKeyword, other.staticKeyword) && isEqualNodes(node.fields, other.fields) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitFieldFormalParameter(FieldFormalParameter node) {
     FieldFormalParameter other = this._other as FieldFormalParameter;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualTokens(node.thisToken, other.thisToken) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.identifier, other.identifier);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.type, other.type) && isEqualTokens(node.thisToken, other.thisToken) && isEqualTokens(node.period, other.period) && isEqualNodes(node.identifier, other.identifier);
   }
 
   @override
   bool visitForEachStatement(ForEachStatement node) {
     ForEachStatement other = this._other as ForEachStatement;
-    return _isEqualTokens(node.forKeyword, other.forKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.loopVariable, other.loopVariable) && _isEqualTokens(node.inKeyword, other.inKeyword) && _isEqualNodes(node.iterator, other.iterator) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body);
+    return isEqualTokens(node.forKeyword, other.forKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.loopVariable, other.loopVariable) && isEqualTokens(node.inKeyword, other.inKeyword) && isEqualNodes(node.iterator, other.iterator) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitFormalParameterList(FormalParameterList node) {
     FormalParameterList other = this._other as FormalParameterList;
-    return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodeLists(node.parameters, other.parameters) && _isEqualTokens(node.leftDelimiter, other.leftDelimiter) && _isEqualTokens(node.rightDelimiter, other.rightDelimiter) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis);
+    return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodeLists(node.parameters, other.parameters) && isEqualTokens(node.leftDelimiter, other.leftDelimiter) && isEqualTokens(node.rightDelimiter, other.rightDelimiter) && isEqualTokens(node.rightParenthesis, other.rightParenthesis);
   }
 
   @override
   bool visitForStatement(ForStatement node) {
     ForStatement other = this._other as ForStatement;
-    return _isEqualTokens(node.forKeyword, other.forKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.variables, other.variables) && _isEqualNodes(node.initialization, other.initialization) && _isEqualTokens(node.leftSeparator, other.leftSeparator) && _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.rightSeparator, other.rightSeparator) && _isEqualNodeLists(node.updaters, other.updaters) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body);
+    return isEqualTokens(node.forKeyword, other.forKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.variables, other.variables) && isEqualNodes(node.initialization, other.initialization) && isEqualTokens(node.leftSeparator, other.leftSeparator) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightSeparator, other.rightSeparator) && _isEqualNodeLists(node.updaters, other.updaters) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitFunctionDeclaration(FunctionDeclaration node) {
     FunctionDeclaration other = this._other as FunctionDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.externalKeyword, other.externalKeyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqualTokens(node.propertyKeyword, other.propertyKeyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.functionExpression, other.functionExpression);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externalKeyword, other.externalKeyword) && isEqualNodes(node.returnType, other.returnType) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.functionExpression, other.functionExpression);
   }
 
   @override
   bool visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
     FunctionDeclarationStatement other = this._other as FunctionDeclarationStatement;
-    return _isEqualNodes(node.functionDeclaration, other.functionDeclaration);
+    return isEqualNodes(node.functionDeclaration, other.functionDeclaration);
   }
 
   @override
   bool visitFunctionExpression(FunctionExpression node) {
     FunctionExpression other = this._other as FunctionExpression;
-    return _isEqualNodes(node.parameters, other.parameters) && _isEqualNodes(node.body, other.body);
+    return isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
     FunctionExpressionInvocation other = this._other as FunctionExpressionInvocation;
-    return _isEqualNodes(node.function, other.function) && _isEqualNodes(node.argumentList, other.argumentList);
+    return isEqualNodes(node.function, other.function) && isEqualNodes(node.argumentList, other.argumentList);
   }
 
   @override
   bool visitFunctionTypeAlias(FunctionTypeAlias node) {
     FunctionTypeAlias other = this._other as FunctionTypeAlias;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typeParameters, other.typeParameters) && _isEqualNodes(node.parameters, other.parameters) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.name, other.name) && isEqualNodes(node.typeParameters, other.typeParameters) && isEqualNodes(node.parameters, other.parameters) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
     FunctionTypedFormalParameter other = this._other as FunctionTypedFormalParameter;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.returnType, other.returnType) && _isEqualNodes(node.identifier, other.identifier) && _isEqualNodes(node.parameters, other.parameters);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.returnType, other.returnType) && isEqualNodes(node.identifier, other.identifier) && isEqualNodes(node.parameters, other.parameters);
   }
 
   @override
   bool visitHideCombinator(HideCombinator node) {
     HideCombinator other = this._other as HideCombinator;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.hiddenNames, other.hiddenNames);
+    return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.hiddenNames, other.hiddenNames);
   }
 
   @override
   bool visitIfStatement(IfStatement node) {
     IfStatement other = this._other as IfStatement;
-    return _isEqualTokens(node.ifKeyword, other.ifKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.thenStatement, other.thenStatement) && _isEqualTokens(node.elseKeyword, other.elseKeyword) && _isEqualNodes(node.elseStatement, other.elseStatement);
+    return isEqualTokens(node.ifKeyword, other.ifKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualNodes(node.thenStatement, other.thenStatement) && isEqualTokens(node.elseKeyword, other.elseKeyword) && isEqualNodes(node.elseStatement, other.elseStatement);
   }
 
   @override
   bool visitImplementsClause(ImplementsClause node) {
     ImplementsClause other = this._other as ImplementsClause;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.interfaces, other.interfaces);
+    return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.interfaces, other.interfaces);
   }
 
   @override
   bool visitImportDirective(ImportDirective node) {
     ImportDirective other = this._other as ImportDirective;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.uri, other.uri) && _isEqualTokens(node.asToken, other.asToken) && _isEqualNodes(node.prefix, other.prefix) && _isEqualNodeLists(node.combinators, other.combinators) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.uri, other.uri) && isEqualTokens(node.asToken, other.asToken) && isEqualNodes(node.prefix, other.prefix) && _isEqualNodeLists(node.combinators, other.combinators) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitIndexExpression(IndexExpression node) {
     IndexExpression other = this._other as IndexExpression;
-    return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodes(node.index, other.index) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualNodes(node.target, other.target) && isEqualTokens(node.leftBracket, other.leftBracket) && isEqualNodes(node.index, other.index) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitInstanceCreationExpression(InstanceCreationExpression node) {
     InstanceCreationExpression other = this._other as InstanceCreationExpression;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.constructorName, other.constructorName) && _isEqualNodes(node.argumentList, other.argumentList);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.constructorName, other.constructorName) && isEqualNodes(node.argumentList, other.argumentList);
   }
 
   @override
   bool visitIntegerLiteral(IntegerLiteral node) {
     IntegerLiteral other = this._other as IntegerLiteral;
-    return _isEqualTokens(node.literal, other.literal) && (node.value == other.value);
+    return isEqualTokens(node.literal, other.literal) && (node.value == other.value);
   }
 
   @override
   bool visitInterpolationExpression(InterpolationExpression node) {
     InterpolationExpression other = this._other as InterpolationExpression;
-    return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.leftBracket, other.leftBracket) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitInterpolationString(InterpolationString node) {
     InterpolationString other = this._other as InterpolationString;
-    return _isEqualTokens(node.contents, other.contents) && node.value == other.value;
+    return isEqualTokens(node.contents, other.contents) && node.value == other.value;
   }
 
   @override
   bool visitIsExpression(IsExpression node) {
     IsExpression other = this._other as IsExpression;
-    return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.isOperator, other.isOperator) && _isEqualTokens(node.notOperator, other.notOperator) && _isEqualNodes(node.type, other.type);
+    return isEqualNodes(node.expression, other.expression) && isEqualTokens(node.isOperator, other.isOperator) && isEqualTokens(node.notOperator, other.notOperator) && isEqualNodes(node.type, other.type);
   }
 
   @override
   bool visitLabel(Label node) {
     Label other = this._other as Label;
-    return _isEqualNodes(node.label, other.label) && _isEqualTokens(node.colon, other.colon);
+    return isEqualNodes(node.label, other.label) && isEqualTokens(node.colon, other.colon);
   }
 
   @override
   bool visitLabeledStatement(LabeledStatement node) {
     LabeledStatement other = this._other as LabeledStatement;
-    return _isEqualNodeLists(node.labels, other.labels) && _isEqualNodes(node.statement, other.statement);
+    return _isEqualNodeLists(node.labels, other.labels) && isEqualNodes(node.statement, other.statement);
   }
 
   @override
   bool visitLibraryDirective(LibraryDirective node) {
     LibraryDirective other = this._other as LibraryDirective;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.libraryToken, other.libraryToken) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.libraryToken, other.libraryToken) && isEqualNodes(node.name, other.name) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
@@ -1770,145 +2295,145 @@
   @override
   bool visitListLiteral(ListLiteral node) {
     ListLiteral other = this._other as ListLiteral;
-    return _isEqualTokens(node.constKeyword, other.constKeyword) && _isEqualNodes(node.typeArguments, other.typeArguments) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.elements, other.elements) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.constKeyword, other.constKeyword) && isEqualNodes(node.typeArguments, other.typeArguments) && isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.elements, other.elements) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitMapLiteral(MapLiteral node) {
     MapLiteral other = this._other as MapLiteral;
-    return _isEqualTokens(node.constKeyword, other.constKeyword) && _isEqualNodes(node.typeArguments, other.typeArguments) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.entries, other.entries) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.constKeyword, other.constKeyword) && isEqualNodes(node.typeArguments, other.typeArguments) && isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.entries, other.entries) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitMapLiteralEntry(MapLiteralEntry node) {
     MapLiteralEntry other = this._other as MapLiteralEntry;
-    return _isEqualNodes(node.key, other.key) && _isEqualTokens(node.separator, other.separator) && _isEqualNodes(node.value, other.value);
+    return isEqualNodes(node.key, other.key) && isEqualTokens(node.separator, other.separator) && isEqualNodes(node.value, other.value);
   }
 
   @override
   bool visitMethodDeclaration(MethodDeclaration node) {
     MethodDeclaration other = this._other as MethodDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.externalKeyword, other.externalKeyword) && _isEqualTokens(node.modifierKeyword, other.modifierKeyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqualTokens(node.propertyKeyword, other.propertyKeyword) && _isEqualTokens(node.propertyKeyword, other.propertyKeyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.parameters, other.parameters) && _isEqualNodes(node.body, other.body);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externalKeyword, other.externalKeyword) && isEqualTokens(node.modifierKeyword, other.modifierKeyword) && isEqualNodes(node.returnType, other.returnType) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitMethodInvocation(MethodInvocation node) {
     MethodInvocation other = this._other as MethodInvocation;
-    return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.methodName, other.methodName) && _isEqualNodes(node.argumentList, other.argumentList);
+    return isEqualNodes(node.target, other.target) && isEqualTokens(node.period, other.period) && isEqualNodes(node.methodName, other.methodName) && isEqualNodes(node.argumentList, other.argumentList);
   }
 
   @override
   bool visitNamedExpression(NamedExpression node) {
     NamedExpression other = this._other as NamedExpression;
-    return _isEqualNodes(node.name, other.name) && _isEqualNodes(node.expression, other.expression);
+    return isEqualNodes(node.name, other.name) && isEqualNodes(node.expression, other.expression);
   }
 
   @override
   bool visitNativeClause(NativeClause node) {
     NativeClause other = this._other as NativeClause;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.name, other.name);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.name, other.name);
   }
 
   @override
   bool visitNativeFunctionBody(NativeFunctionBody node) {
     NativeFunctionBody other = this._other as NativeFunctionBody;
-    return _isEqualTokens(node.nativeToken, other.nativeToken) && _isEqualNodes(node.stringLiteral, other.stringLiteral) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.nativeToken, other.nativeToken) && isEqualNodes(node.stringLiteral, other.stringLiteral) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitNullLiteral(NullLiteral node) {
     NullLiteral other = this._other as NullLiteral;
-    return _isEqualTokens(node.literal, other.literal);
+    return isEqualTokens(node.literal, other.literal);
   }
 
   @override
   bool visitParenthesizedExpression(ParenthesizedExpression node) {
     ParenthesizedExpression other = this._other as ParenthesizedExpression;
-    return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis);
+    return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.rightParenthesis, other.rightParenthesis);
   }
 
   @override
   bool visitPartDirective(PartDirective node) {
     PartDirective other = this._other as PartDirective;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.partToken, other.partToken) && _isEqualNodes(node.uri, other.uri) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.partToken, other.partToken) && isEqualNodes(node.uri, other.uri) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitPartOfDirective(PartOfDirective node) {
     PartOfDirective other = this._other as PartOfDirective;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.partToken, other.partToken) && _isEqualTokens(node.ofToken, other.ofToken) && _isEqualNodes(node.libraryName, other.libraryName) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.partToken, other.partToken) && isEqualTokens(node.ofToken, other.ofToken) && isEqualNodes(node.libraryName, other.libraryName) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitPostfixExpression(PostfixExpression node) {
     PostfixExpression other = this._other as PostfixExpression;
-    return _isEqualNodes(node.operand, other.operand) && _isEqualTokens(node.operator, other.operator);
+    return isEqualNodes(node.operand, other.operand) && isEqualTokens(node.operator, other.operator);
   }
 
   @override
   bool visitPrefixedIdentifier(PrefixedIdentifier node) {
     PrefixedIdentifier other = this._other as PrefixedIdentifier;
-    return _isEqualNodes(node.prefix, other.prefix) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.identifier, other.identifier);
+    return isEqualNodes(node.prefix, other.prefix) && isEqualTokens(node.period, other.period) && isEqualNodes(node.identifier, other.identifier);
   }
 
   @override
   bool visitPrefixExpression(PrefixExpression node) {
     PrefixExpression other = this._other as PrefixExpression;
-    return _isEqualTokens(node.operator, other.operator) && _isEqualNodes(node.operand, other.operand);
+    return isEqualTokens(node.operator, other.operator) && isEqualNodes(node.operand, other.operand);
   }
 
   @override
   bool visitPropertyAccess(PropertyAccess node) {
     PropertyAccess other = this._other as PropertyAccess;
-    return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.operator, other.operator) && _isEqualNodes(node.propertyName, other.propertyName);
+    return isEqualNodes(node.target, other.target) && isEqualTokens(node.operator, other.operator) && isEqualNodes(node.propertyName, other.propertyName);
   }
 
   @override
   bool visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) {
     RedirectingConstructorInvocation other = this._other as RedirectingConstructorInvocation;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.constructorName, other.constructorName) && _isEqualNodes(node.argumentList, other.argumentList);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.period, other.period) && isEqualNodes(node.constructorName, other.constructorName) && isEqualNodes(node.argumentList, other.argumentList);
   }
 
   @override
   bool visitRethrowExpression(RethrowExpression node) {
     RethrowExpression other = this._other as RethrowExpression;
-    return _isEqualTokens(node.keyword, other.keyword);
+    return isEqualTokens(node.keyword, other.keyword);
   }
 
   @override
   bool visitReturnStatement(ReturnStatement node) {
     ReturnStatement other = this._other as ReturnStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitScriptTag(ScriptTag node) {
     ScriptTag other = this._other as ScriptTag;
-    return _isEqualTokens(node.scriptTag, other.scriptTag);
+    return isEqualTokens(node.scriptTag, other.scriptTag);
   }
 
   @override
   bool visitShowCombinator(ShowCombinator node) {
     ShowCombinator other = this._other as ShowCombinator;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.shownNames, other.shownNames);
+    return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node.shownNames, other.shownNames);
   }
 
   @override
   bool visitSimpleFormalParameter(SimpleFormalParameter node) {
     SimpleFormalParameter other = this._other as SimpleFormalParameter;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodes(node.identifier, other.identifier);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.type, other.type) && isEqualNodes(node.identifier, other.identifier);
   }
 
   @override
   bool visitSimpleIdentifier(SimpleIdentifier node) {
     SimpleIdentifier other = this._other as SimpleIdentifier;
-    return _isEqualTokens(node.token, other.token);
+    return isEqualTokens(node.token, other.token);
   }
 
   @override
   bool visitSimpleStringLiteral(SimpleStringLiteral node) {
     SimpleStringLiteral other = this._other as SimpleStringLiteral;
-    return _isEqualTokens(node.literal, other.literal) && (node.value == other.value);
+    return isEqualTokens(node.literal, other.literal) && (node.value == other.value);
   }
 
   @override
@@ -1920,121 +2445,121 @@
   @override
   bool visitSuperConstructorInvocation(SuperConstructorInvocation node) {
     SuperConstructorInvocation other = this._other as SuperConstructorInvocation;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node.constructorName, other.constructorName) && _isEqualNodes(node.argumentList, other.argumentList);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.period, other.period) && isEqualNodes(node.constructorName, other.constructorName) && isEqualNodes(node.argumentList, other.argumentList);
   }
 
   @override
   bool visitSuperExpression(SuperExpression node) {
     SuperExpression other = this._other as SuperExpression;
-    return _isEqualTokens(node.keyword, other.keyword);
+    return isEqualTokens(node.keyword, other.keyword);
   }
 
   @override
   bool visitSwitchCase(SwitchCase node) {
     SwitchCase other = this._other as SwitchCase;
-    return _isEqualNodeLists(node.labels, other.labels) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, other.statements);
+    return _isEqualNodeLists(node.labels, other.labels) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, other.statements);
   }
 
   @override
   bool visitSwitchDefault(SwitchDefault node) {
     SwitchDefault other = this._other as SwitchDefault;
-    return _isEqualNodeLists(node.labels, other.labels) && _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, other.statements);
+    return _isEqualNodeLists(node.labels, other.labels) && isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, other.statements);
   }
 
   @override
   bool visitSwitchStatement(SwitchStatement node) {
     SwitchStatement other = this._other as SwitchStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.members, other.members) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.members, other.members) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitSymbolLiteral(SymbolLiteral node) {
     SymbolLiteral other = this._other as SymbolLiteral;
-    return _isEqualTokens(node.poundSign, other.poundSign) && _isEqualTokenLists(node.components, other.components);
+    return isEqualTokens(node.poundSign, other.poundSign) && _isEqualTokenLists(node.components, other.components);
   }
 
   @override
   bool visitThisExpression(ThisExpression node) {
     ThisExpression other = this._other as ThisExpression;
-    return _isEqualTokens(node.keyword, other.keyword);
+    return isEqualTokens(node.keyword, other.keyword);
   }
 
   @override
   bool visitThrowExpression(ThrowExpression node) {
     ThrowExpression other = this._other as ThrowExpression;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.expression, other.expression);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.expression, other.expression);
   }
 
   @override
   bool visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
     TopLevelVariableDeclaration other = this._other as TopLevelVariableDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.variables, other.variables) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.variables, other.variables) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitTryStatement(TryStatement node) {
     TryStatement other = this._other as TryStatement;
-    return _isEqualTokens(node.tryKeyword, other.tryKeyword) && _isEqualNodes(node.body, other.body) && _isEqualNodeLists(node.catchClauses, other.catchClauses) && _isEqualTokens(node.finallyKeyword, other.finallyKeyword) && _isEqualNodes(node.finallyBlock, other.finallyBlock);
+    return isEqualTokens(node.tryKeyword, other.tryKeyword) && isEqualNodes(node.body, other.body) && _isEqualNodeLists(node.catchClauses, other.catchClauses) && isEqualTokens(node.finallyKeyword, other.finallyKeyword) && isEqualNodes(node.finallyBlock, other.finallyBlock);
   }
 
   @override
   bool visitTypeArgumentList(TypeArgumentList node) {
     TypeArgumentList other = this._other as TypeArgumentList;
-    return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.arguments, other.arguments) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.arguments, other.arguments) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitTypeName(TypeName node) {
     TypeName other = this._other as TypeName;
-    return _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typeArguments, other.typeArguments);
+    return isEqualNodes(node.name, other.name) && isEqualNodes(node.typeArguments, other.typeArguments);
   }
 
   @override
   bool visitTypeParameter(TypeParameter node) {
     TypeParameter other = this._other as TypeParameter;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.bound, other.bound);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, other.name) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.bound, other.bound);
   }
 
   @override
   bool visitTypeParameterList(TypeParameterList node) {
     TypeParameterList other = this._other as TypeParameterList;
-    return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.typeParameters, other.typeParameters) && _isEqualTokens(node.rightBracket, other.rightBracket);
+    return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.typeParameters, other.typeParameters) && isEqualTokens(node.rightBracket, other.rightBracket);
   }
 
   @override
   bool visitVariableDeclaration(VariableDeclaration node) {
     VariableDeclaration other = this._other as VariableDeclaration;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.equals, other.equals) && _isEqualNodes(node.initializer, other.initializer);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, other.name) && isEqualTokens(node.equals, other.equals) && isEqualNodes(node.initializer, other.initializer);
   }
 
   @override
   bool visitVariableDeclarationList(VariableDeclarationList node) {
     VariableDeclarationList other = this._other as VariableDeclarationList;
-    return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodeLists(node.variables, other.variables);
+    return isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.type, other.type) && _isEqualNodeLists(node.variables, other.variables);
   }
 
   @override
   bool visitVariableDeclarationStatement(VariableDeclarationStatement node) {
     VariableDeclarationStatement other = this._other as VariableDeclarationStatement;
-    return _isEqualNodes(node.variables, other.variables) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualNodes(node.variables, other.variables) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   @override
   bool visitWhileStatement(WhileStatement node) {
     WhileStatement other = this._other as WhileStatement;
-    return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body);
+    return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualNodes(node.body, other.body);
   }
 
   @override
   bool visitWithClause(WithClause node) {
     WithClause other = this._other as WithClause;
-    return _isEqualTokens(node.withKeyword, other.withKeyword) && _isEqualNodeLists(node.mixinTypes, other.mixinTypes);
+    return isEqualTokens(node.withKeyword, other.withKeyword) && _isEqualNodeLists(node.mixinTypes, other.mixinTypes);
   }
 
   @override
   bool visitYieldStatement(YieldStatement node) {
     YieldStatement other = this._other as YieldStatement;
-    return _isEqualTokens(node.yieldKeyword, other.yieldKeyword) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.semicolon, other.semicolon);
+    return isEqualTokens(node.yieldKeyword, other.yieldKeyword) && isEqualNodes(node.expression, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
   }
 
   /**
@@ -2057,7 +2582,7 @@
       return false;
     }
     for (int i = 0; i < size; i++) {
-      if (!_isEqualNodes(first[i], second[i])) {
+      if (!isEqualNodes(first[i], second[i])) {
         return false;
       }
     }
@@ -2065,13 +2590,13 @@
   }
 
   /**
-   * Return `true` if the given AST nodes have the same structure.
+   * Return `true` if the [first] node and the [second] node have the same
+   * structure.
    *
-   * @param first the first node being compared
-   * @param second the second node being compared
-   * @return `true` if the given AST nodes have the same structure
+   * *Note:* This method is only visible for testing purposes and should not be
+   * used by clients.
    */
-  bool _isEqualNodes(AstNode first, AstNode second) {
+  bool isEqualNodes(AstNode first, AstNode second) {
     if (first == null) {
       return second == null;
     } else if (second == null) {
@@ -2098,7 +2623,7 @@
       return false;
     }
     for (int i = 0; i < length; i++) {
-      if (!_isEqualTokens(first[i], second[i])) {
+      if (!isEqualTokens(first[i], second[i])) {
         return false;
       }
     }
@@ -2106,13 +2631,13 @@
   }
 
   /**
-   * Return `true` if the given tokens have the same structure.
+   * Return `true` if the [first] token and the [second] token have the same
+   * structure.
    *
-   * @param first the first node being compared
-   * @param second the second node being compared
-   * @return `true` if the given tokens have the same structure
+   * *Note:* This method is only visible for testing purposes and should not be
+   * used by clients.
    */
-  bool _isEqualTokens(Token first, Token second) {
+  bool isEqualTokens(Token first, Token second) {
     if (first == null) {
       return second == null;
     } else if (second == null) {
@@ -2120,7 +2645,9 @@
     } else if (identical(first, second)) {
       return true;
     }
-    return first.offset == second.offset && first.length == second.length && first.lexeme == second.lexeme;
+    return first.offset == second.offset
+        && first.length == second.length
+        && first.lexeme == second.lexeme;
   }
 }
 
@@ -4325,12 +4852,10 @@
    *         appeared in the original source
    */
   List<AstNode> get sortedDirectivesAndDeclarations {
-    List<AstNode> childList = new List<AstNode>();
-    childList.addAll(_directives);
-    childList.addAll(_declarations);
-    List<AstNode> children = new List.from(childList);
-    children.sort(AstNode.LEXICAL_ORDER);
-    return children;
+    return <AstNode>[]
+      ..addAll(_directives)
+      ..addAll(_declarations)
+      ..sort(AstNode.LEXICAL_ORDER);
   }
 }
 
@@ -4526,15 +5051,15 @@
 
   @override
   Object visitAdjacentStrings(AdjacentStrings node) {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     for (StringLiteral string in node.strings) {
       Object value = string.accept(this);
       if (identical(value, NOT_A_CONSTANT)) {
         return value;
       }
-      builder.append(value);
+      buffer.write(value);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   @override
@@ -4797,28 +5322,28 @@
 
   @override
   Object visitStringInterpolation(StringInterpolation node) {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     for (InterpolationElement element in node.elements) {
       Object value = element.accept(this);
       if (identical(value, NOT_A_CONSTANT)) {
         return value;
       }
-      builder.append(value);
+      buffer.write(value);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   @override
   Object visitSymbolLiteral(SymbolLiteral node) {
     // TODO(brianwilkerson) This isn't optimal because a Symbol is not a String.
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     for (Token component in node.components) {
-      if (builder.length > 0) {
-        builder.appendChar(0x2E);
+      if (buffer.length > 0) {
+        buffer.writeCharCode(0x2E);
       }
-      builder.append(component.lexeme);
+      buffer.write(component.lexeme);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
@@ -6217,6 +6742,12 @@
 
   @override
   Token get firstTokenAfterCommentAndMetadata => _name.beginToken;
+
+  @override
+  void visitChildren(AstVisitor visitor) {
+    super.visitChildren(visitor);
+    safelyVisitChild(_name, visitor);
+  }
 }
 
 /**
@@ -6304,6 +6835,13 @@
 
   @override
   Token get firstTokenAfterCommentAndMetadata => keyword;
+
+  @override
+  void visitChildren(AstVisitor visitor) {
+    super.visitChildren(visitor);
+    safelyVisitChild(_name, visitor);
+    _constants.accept(visitor);
+  }
 }
 
 /**
@@ -10825,17 +11363,17 @@
 
   @override
   String get name {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     bool needsPeriod = false;
     for (SimpleIdentifier identifier in _components) {
       if (needsPeriod) {
-        builder.append(".");
+        buffer.write(".");
       } else {
         needsPeriod = true;
       }
-      builder.append(identifier.name);
+      buffer.write(identifier.name);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   @override
@@ -11906,7 +12444,7 @@
     } on NodeLocator_NodeFoundException catch (exception) {
       // A node with the right source position was found.
     } catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Unable to locate element at offset (${_startOffset} - ${_endOffset})", exception);
+      AnalysisEngine.instance.logger.logInformation2("Unable to locate element at offset ($_startOffset - $_endOffset)", exception);
       return null;
     }
     return _foundNode;
@@ -13089,7 +13627,7 @@
     int count = list.length;
     for (int i = 0; i < count; i++) {
       if (identical(_oldNode, list[i])) {
-        javaListSet(list, i, _newNode);
+        list[i] = _newNode;
         return true;
       }
     }
@@ -13231,12 +13769,10 @@
    *         appeared in the original source
    */
   List<AstNode> get sortedCommentAndAnnotations {
-    List<AstNode> childList = new List<AstNode>();
-    childList.add(_comment);
-    childList.addAll(_metadata);
-    List<AstNode> children = new List.from(childList);
-    children.sort(AstNode.LEXICAL_ORDER);
-    return children;
+    return <AstNode>[]
+      ..add(_comment)
+      ..addAll(_metadata)
+      ..sort(AstNode.LEXICAL_ORDER);
   }
 }
 
@@ -15739,7 +16275,8 @@
     AstNode parent = this.parent;
     if (parent is CatchClause) {
       CatchClause clause = parent;
-      return identical(this, clause.exceptionParameter) || identical(this, clause.stackTraceParameter);
+      return identical(this, clause.exceptionParameter) ||
+          identical(this, clause.stackTraceParameter);
     } else if (parent is ClassDeclaration) {
       return identical(this, parent.name);
     } else if (parent is ClassTypeAlias) {
@@ -15748,6 +16285,10 @@
       return identical(this, parent.name);
     } else if (parent is DeclaredIdentifier) {
       return identical(this, parent.identifier);
+    } else if (parent is EnumDeclaration) {
+      return identical(this, parent.name);
+    } else if (parent is EnumConstantDeclaration) {
+      return identical(this, parent.name);
     } else if (parent is FunctionDeclaration) {
       return identical(this, parent.name);
     } else if (parent is FunctionTypeAlias) {
@@ -15911,7 +16452,7 @@
    */
   Element _returnOrReportElement(AstNode parent, bool isValid, Element element) {
     if (!isValid) {
-      AnalysisEngine.instance.logger.logInformation2("Internal error: attempting to set the name of a ${parent.runtimeType.toString()} to a ${element.runtimeType.toString()}", new JavaException());
+      AnalysisEngine.instance.logger.logInformation2("Internal error: attempting to set the name of a ${parent.runtimeType} to a ${element.runtimeType}", new JavaException());
       return null;
     }
     return element;
@@ -16104,8 +16645,8 @@
   }
 
   @override
-  void appendStringValue(JavaStringBuilder builder) {
-    builder.append(value);
+  void appendStringValue(StringBuffer buffer) {
+    buffer.write(value);
   }
 }
 
@@ -16181,7 +16722,7 @@
   }
 
   @override
-  void appendStringValue(JavaStringBuilder builder) {
+  void appendStringValue(StringBuffer buffer) {
     throw new IllegalArgumentException();
   }
 
@@ -16232,29 +16773,25 @@
  */
 abstract class StringLiteral extends Literal {
   /**
-   * Return the value of the string literal, or `null` if the string is not a constant string
-   * without any string interpolation.
-   *
-   * @return the value of the string literal
+   * Return the value of the string literal, or `null` if the string is not a
+   * constant string without any string interpolation.
    */
   String get stringValue {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     try {
-      appendStringValue(builder);
+      appendStringValue(buffer);
     } on IllegalArgumentException catch (exception) {
       return null;
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
-   * Append the value of the given string literal to the given string builder.
-   *
-   * @param builder the builder to which the string's value is to be appended
-   * @throws IllegalArgumentException if the string is not a constant string without any string
-   *           interpolation
+   * Append the value of this string literal to the given [buffer]. Throw an
+   * [IllegalArgumentException] if the string is not a constant string without
+   * any string interpolation.
    */
-  void appendStringValue(JavaStringBuilder builder);
+  void appendStringValue(StringBuffer buffer);
 }
 
 /**
@@ -19638,7 +20175,7 @@
   void insert(int index, E node) {
     int length = _elements.length;
     if (index < 0 || index > length) {
-      throw new RangeError("Index: ${index}, Size: ${_elements.length}");
+      throw new RangeError("Index: $index, Size: ${_elements.length}");
     }
     owner.becomeParentOf(node);
     if (length == 0) {
@@ -19659,7 +20196,7 @@
   }
   E operator[](int index) {
     if (index < 0 || index >= _elements.length) {
-      throw new RangeError("Index: ${index}, Size: ${_elements.length}");
+      throw new RangeError("Index: $index, Size: ${_elements.length}");
     }
     return _elements[index] as E;
   }
@@ -19689,7 +20226,7 @@
   }
   E removeAt(int index) {
     if (index < 0 || index >= _elements.length) {
-      throw new RangeError("Index: ${index}, Size: ${_elements.length}");
+      throw new RangeError("Index: $index, Size: ${_elements.length}");
     }
     E removedNode = _elements[index] as E;
     int length = _elements.length;
@@ -19702,7 +20239,7 @@
   }
   void operator[]=(int index, E node) {
     if (index < 0 || index >= _elements.length) {
-      throw new RangeError("Index: ${index}, Size: ${_elements.length}");
+      throw new RangeError("Index: $index, Size: ${_elements.length}");
     }
     owner.becomeParentOf(node);
     _elements[index] = node;
diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart
index fa82b57..ee68be8 100644
--- a/pkg/analyzer/lib/src/generated/constant.dart
+++ b/pkg/analyzer/lib/src/generated/constant.dart
@@ -306,7 +306,7 @@
   /**
    * RegExp that validates a non-empty non-private symbol. From sdk/lib/internal/symbol.dart.
    */
-  static RegExp _PUBLIC_SYMBOL_PATTERN = new RegExp("^(?:${ConstantValueComputer._OPERATOR_RE}\$|${_PUBLIC_IDENTIFIER_RE}(?:=?\$|[.](?!\$)))+?\$");
+  static RegExp _PUBLIC_SYMBOL_PATTERN = new RegExp("^(?:${ConstantValueComputer._OPERATOR_RE}\$|$_PUBLIC_IDENTIFIER_RE(?:=?\$|[.](?!\$)))+?\$");
 
   /**
    * Determine whether the given string is a valid name for a public symbol (i.e. whether it is
@@ -378,14 +378,12 @@
     _variableDeclarationMap = _constantFinder.variableMap;
     constructorDeclarationMap = _constantFinder.constructorMap;
     _constructorInvocations = _constantFinder.constructorInvocations;
-    for (MapEntry<VariableElement, VariableDeclaration> entry in getMapEntrySet(_variableDeclarationMap)) {
-      VariableDeclaration declaration = entry.getValue();
+    _variableDeclarationMap.values.forEach((VariableDeclaration declaration) {
       ReferenceFinder referenceFinder = new ReferenceFinder(declaration, referenceGraph, _variableDeclarationMap, constructorDeclarationMap);
       referenceGraph.addNode(declaration);
       declaration.initializer.accept(referenceFinder);
-    }
-    for (MapEntry<ConstructorElement, ConstructorDeclaration> entry in getMapEntrySet(constructorDeclarationMap)) {
-      ConstructorDeclaration declaration = entry.getValue();
+    });
+    constructorDeclarationMap.forEach((ConstructorElement element, ConstructorDeclaration declaration) {
       ReferenceFinder referenceFinder = new ReferenceFinder(declaration, referenceGraph, _variableDeclarationMap, constructorDeclarationMap);
       referenceGraph.addNode(declaration);
       bool superInvocationFound = false;
@@ -399,7 +397,7 @@
       if (!superInvocationFound) {
         // No explicit superconstructor invocation found, so we need to manually insert
         // a reference to the implicit superconstructor.
-        InterfaceType superclass = (entry.getKey().returnType as InterfaceType).superclass;
+        InterfaceType superclass = (element.returnType as InterfaceType).superclass;
         if (superclass != null && !superclass.isObject) {
           ConstructorElement unnamedConstructor = superclass.element.unnamedConstructor;
           ConstructorDeclaration superConstructorDeclaration = findConstructorDeclaration(unnamedConstructor);
@@ -419,7 +417,7 @@
           }
         }
       }
-    }
+    });
     for (InstanceCreationExpression expression in _constructorInvocations) {
       referenceGraph.addNode(expression);
       ConstructorElement constructor = expression.staticElement;
@@ -900,10 +898,16 @@
 }
 
 /**
- * [AstCloner] that copies the necessary information from the AST to allow const constructor
- * initializers to be evaluated.
+ * A `ConstantValueComputer_InitializerCloner` is an [AstCloner] that copies the
+ * necessary information from the AST to allow const constructor initializers to
+ * be evaluated.
  */
 class ConstantValueComputer_InitializerCloner extends AstCloner {
+  // TODO(brianwilkerson) Investigate replacing uses of this class with uses of
+  // AstCloner and ResolutionCopier.
+
+  ConstantValueComputer_InitializerCloner() : super(true);
+
   @override
   InstanceCreationExpression visitInstanceCreationExpression(InstanceCreationExpression node) {
     InstanceCreationExpression expression = super.visitInstanceCreationExpression(node);
@@ -1195,7 +1199,7 @@
       }
     }
     InterfaceType listType = _typeProvider.listType.substitute4([elementType]);
-    return new DartObjectImpl(listType, new ListState(new List.from(elements)));
+    return new DartObjectImpl(listType, new ListState(elements));
   }
 
   @override
@@ -1359,15 +1363,15 @@
 
   @override
   DartObjectImpl visitSymbolLiteral(SymbolLiteral node) {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     List<Token> components = node.components;
     for (int i = 0; i < components.length; i++) {
       if (i > 0) {
-        builder.appendChar(0x2E);
+        buffer.writeCharCode(0x2E);
       }
-      builder.append(components[i].lexeme);
+      buffer.write(components[i].lexeme);
     }
-    return new DartObjectImpl(_typeProvider.symbolType, new SymbolState(builder.toString()));
+    return new DartObjectImpl(_typeProvider.symbolType, new SymbolState(buffer.toString()));
   }
 
   /**
@@ -1926,7 +1930,7 @@
       return new DartObjectImpl(typeProvider.stringType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("add returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("add returned a ${result.runtimeType}");
   }
 
   /**
@@ -2011,7 +2015,7 @@
       return new DartObjectImpl(typeProvider.numType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("divide returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("divide returned a ${result.runtimeType}");
   }
 
   /**
@@ -2217,7 +2221,7 @@
       return new DartObjectImpl(typeProvider.numType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("minus returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("minus returned a ${result.runtimeType}");
   }
 
   /**
@@ -2237,7 +2241,7 @@
       return new DartObjectImpl(typeProvider.numType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("negated returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("negated returned a ${result.runtimeType}");
   }
 
   /**
@@ -2291,7 +2295,7 @@
       return new DartObjectImpl(typeProvider.numType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("remainder returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("remainder returned a ${result.runtimeType}");
   }
 
   /**
@@ -2341,11 +2345,11 @@
       return new DartObjectImpl(typeProvider.numType, result);
     }
     // We should never get here.
-    throw new IllegalStateException("times returned a ${result.runtimeType.toString()}");
+    throw new IllegalStateException("times returned a ${result.runtimeType}");
   }
 
   @override
-  String toString() => "${type.displayName} (${_state.toString()})";
+  String toString() => "${type.displayName} ($_state)";
 }
 
 /**
@@ -2425,7 +2429,8 @@
   DartObject getString(TypeProvider typeProvider, String variableName) {
     String value = _declaredVariables[variableName];
     if (value == null) {
-      return new DartObjectImpl(typeProvider.intType, IntState.UNKNOWN_VALUE);
+      return new DartObjectImpl(typeProvider.stringType,
+          StringState.UNKNOWN_VALUE);
     }
     return new DartObjectImpl(typeProvider.stringType, new StringState(value));
   }
@@ -4181,9 +4186,8 @@
     } else if (count == 0) {
       return true;
     }
-    for (MapEntry<DartObjectImpl, DartObjectImpl> entry in getMapEntrySet(_entries)) {
-      DartObjectImpl key = entry.getKey();
-      DartObjectImpl value = entry.getValue();
+    for (DartObjectImpl key in _entries.keys) {
+      DartObjectImpl value = _entries[key];
       DartObjectImpl otherValue = otherElements[key];
       if (value != otherValue) {
         return false;
@@ -4198,9 +4202,8 @@
   @override
   Map<Object, Object> get value {
     HashMap<Object, Object> result = new HashMap<Object, Object>();
-    for (MapEntry<DartObjectImpl, DartObjectImpl> entry in getMapEntrySet(_entries)) {
-      DartObjectImpl key = entry.getKey();
-      DartObjectImpl value = entry.getValue();
+    for (DartObjectImpl key in _entries.keys) {
+      DartObjectImpl value = _entries[key];
       if (!key.hasExactValue || !value.hasExactValue) {
         return null;
       }
@@ -4211,8 +4214,8 @@
 
   @override
   bool get hasExactValue {
-    for (MapEntry<DartObjectImpl, DartObjectImpl> entry in getMapEntrySet(_entries)) {
-      if (!entry.getKey().hasExactValue || !entry.getValue().hasExactValue) {
+    for (DartObjectImpl key in _entries.keys) {
+      if (!key.hasExactValue || !_entries[key].hasExactValue) {
         return false;
       }
     }
@@ -4523,7 +4526,7 @@
       if (rightValue == null) {
         return UNKNOWN_VALUE;
       }
-      return new StringState("${value}${rightValue}");
+      return new StringState("$value$rightValue");
     } else if (rightOperand is DynamicState) {
       return UNKNOWN_VALUE;
     }
@@ -4578,7 +4581,7 @@
   }
 
   @override
-  String toString() => value == null ? "-unknown-" : "'${value}'";
+  String toString() => value == null ? "-unknown-" : "'$value'";
 }
 
 /**
@@ -4637,7 +4640,7 @@
   int get hashCode => value == null ? 0 : value.hashCode;
 
   @override
-  String toString() => value == null ? "-unknown-" : "#${value}";
+  String toString() => value == null ? "-unknown-" : "#$value";
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart
index 51fb4d1..91d8575 100644
--- a/pkg/analyzer/lib/src/generated/element.dart
+++ b/pkg/analyzer/lib/src/generated/element.dart
@@ -167,7 +167,7 @@
   }
 
   @override
-  String get identifier => "AngularComponent@${_annotationOffset}";
+  String get identifier => "AngularComponent@$_annotationOffset";
 }
 
 /**
@@ -271,7 +271,7 @@
   }
 
   @override
-  String get identifier => "Decorator@${_offset}";
+  String get identifier => "Decorator@$_offset";
 }
 
 /**
@@ -384,9 +384,9 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(".");
-    builder.append(name);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(".");
+    buffer.write(name);
   }
 }
 
@@ -731,7 +731,7 @@
   ElementKind get kind => ElementKind.ANGULAR_VIEW;
 
   @override
-  String get identifier => "AngularView@${templateUriOffset}";
+  String get identifier => "AngularView@$templateUriOffset";
 }
 
 /**
@@ -1286,13 +1286,16 @@
   accept(ElementVisitor visitor) => visitor.visitClassElement(this);
 
   /**
-   * Set the toolkit specific information objects attached to this class.
-   *
-   * @param toolkitObjects the toolkit objects attached to this class
+   * Add the given [toolkitObject] to the list of toolkit specific information
+   * objects attached to this class.
    */
   void addToolkitObjects(ToolkitObjectElement toolkitObject) {
     (toolkitObject as ToolkitObjectElementImpl).enclosingElement = this;
-    _toolkitObjects = ArrayUtils.add(_toolkitObjects, toolkitObject);
+    if (_toolkitObjects.isEmpty) {
+      // Convert from a non-growable list to a growable list.
+      _toolkitObjects = <ToolkitObjectElement>[];
+    }
+    _toolkitObjects.add(toolkitObject);
   }
 
   @override
@@ -1302,7 +1305,7 @@
   List<InterfaceType> get allSupertypes {
     List<InterfaceType> list = new List<InterfaceType>();
     _collectAllSupertypes(list);
-    return new List.from(list);
+    return list;
   }
 
   @override
@@ -1644,23 +1647,23 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     String name = displayName;
     if (name == null) {
-      builder.append("{unnamed class}");
+      buffer.write("{unnamed class}");
     } else {
-      builder.append(name);
+      buffer.write(name);
     }
     int variableCount = _typeParameters.length;
     if (variableCount > 0) {
-      builder.append("<");
+      buffer.write("<");
       for (int i = 0; i < variableCount; i++) {
         if (i > 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
-        (_typeParameters[i] as TypeParameterElementImpl).appendTo(builder);
+        (_typeParameters[i] as TypeParameterElementImpl).appendTo(buffer);
       }
-      builder.append(">");
+      buffer.write(">");
     }
   }
 
@@ -2083,6 +2086,11 @@
         return type as ClassElementImpl;
       }
     }
+    for (ClassElement type in _enums) {
+      if ((type as ClassElementImpl).identifier == identifier) {
+        return type as ClassElementImpl;
+      }
+    }
     return null;
   }
 
@@ -2240,11 +2248,11 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     if (source == null) {
-      builder.append("{compilation unit}");
+      buffer.write("{compilation unit}");
     } else {
-      builder.append(source.fullName);
+      buffer.write(source.fullName);
     }
   }
 
@@ -2505,14 +2513,14 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(enclosingElement.displayName);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(enclosingElement.displayName);
     String name = displayName;
     if (name != null && !name.isEmpty) {
-      builder.append(".");
-      builder.append(name);
+      buffer.write(".");
+      buffer.write(name);
     }
-    super.appendTo(builder);
+    super.appendTo(buffer);
   }
 }
 
@@ -2589,27 +2597,27 @@
     ConstructorElement baseElement = this.baseElement;
     List<ParameterElement> parameters = this.parameters;
     FunctionType type = this.type;
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append(baseElement.enclosingElement.displayName);
+    StringBuffer buffer = new StringBuffer();
+    buffer.write(baseElement.enclosingElement.displayName);
     String name = displayName;
     if (name != null && !name.isEmpty) {
-      builder.append(".");
-      builder.append(name);
+      buffer.write(".");
+      buffer.write(name);
     }
-    builder.append("(");
+    buffer.write("(");
     int parameterCount = parameters.length;
     for (int i = 0; i < parameterCount; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      builder.append(parameters[i]).toString();
+      buffer.write(parameters[i]);
     }
-    builder.append(")");
+    buffer.write(")");
     if (type != null) {
-      builder.append(Element.RIGHT_ARROW);
-      builder.append(type.returnType);
+      buffer.write(Element.RIGHT_ARROW);
+      buffer.write(type.returnType);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   @override
@@ -3258,7 +3266,7 @@
   }
 
   @override
-  String toString() => "@${element.toString()}";
+  String toString() => '@$element';
 }
 
 /**
@@ -3375,7 +3383,7 @@
     }
     Source source = this.source;
     if (source != null) {
-      return "${shortName} (${source.fullName})";
+      return "$shortName (${source.fullName})";
     }
     return shortName;
   }
@@ -3482,9 +3490,9 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    appendTo(builder);
-    return builder.toString();
+    StringBuffer buffer = new StringBuffer();
+    appendTo(buffer);
+    return buffer.toString();
   }
 
   @override
@@ -3493,17 +3501,15 @@
   }
 
   /**
-   * Append a textual representation of this type to the given builder.
-   *
-   * @param builder the builder to which the text is to be appended
+   * Append a textual representation of this element to the given [buffer].
    */
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     if (_name == null) {
-      builder.append("<unnamed ");
-      builder.append(runtimeType.toString());
-      builder.append(">");
+      buffer.write("<unnamed ");
+      buffer.write(runtimeType.toString());
+      buffer.write(">");
     } else {
-      builder.append(_name);
+      buffer.write(_name);
     }
   }
 
@@ -3775,7 +3781,7 @@
       components.insert(0, (ancestor as ElementImpl).identifier);
       ancestor = ancestor.enclosingElement;
     }
-    this._components = new List.from(components);
+    this._components = components;
   }
 
   /**
@@ -3823,15 +3829,15 @@
 
   @override
   String get encoding {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     int length = _components.length;
     for (int i = 0; i < length; i++) {
       if (i > 0) {
-        builder.appendChar(_SEPARATOR_CHAR);
+        buffer.writeCharCode(_SEPARATOR_CHAR);
       }
-      _encode(builder, _components[i]);
+      _encode(buffer, _components[i]);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   @override
@@ -3855,27 +3861,27 @@
    */
   List<String> _decode(String encoding) {
     List<String> components = new List<String>();
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     int index = 0;
     int length = encoding.length;
     while (index < length) {
       int currentChar = encoding.codeUnitAt(index);
       if (currentChar == _SEPARATOR_CHAR) {
         if (index + 1 < length && encoding.codeUnitAt(index + 1) == _SEPARATOR_CHAR) {
-          builder.appendChar(_SEPARATOR_CHAR);
+          buffer.writeCharCode(_SEPARATOR_CHAR);
           index += 2;
         } else {
-          components.add(builder.toString());
-          builder.length = 0;
+          components.add(buffer.toString());
+          buffer = new StringBuffer();
           index++;
         }
       } else {
-        builder.appendChar(currentChar);
+        buffer.writeCharCode(currentChar);
         index++;
       }
     }
-    components.add(builder.toString());
-    return new List.from(components);
+    components.add(buffer.toString());
+    return components;
   }
 
   /**
@@ -3884,14 +3890,14 @@
    * @param builder the builder to which the encoded component is to be appended
    * @param component the component to be appended to the builder
    */
-  void _encode(JavaStringBuilder builder, String component) {
+  void _encode(StringBuffer buffer, String component) {
     int length = component.length;
     for (int i = 0; i < length; i++) {
       int currentChar = component.codeUnitAt(i);
       if (currentChar == _SEPARATOR_CHAR) {
-        builder.appendChar(_SEPARATOR_CHAR);
+        buffer.writeCharCode(_SEPARATOR_CHAR);
       }
-      builder.appendChar(currentChar);
+      buffer.writeCharCode(currentChar);
     }
   }
 }
@@ -4343,43 +4349,43 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     if (this.kind != ElementKind.GETTER) {
-      builder.append("(");
+      buffer.write("(");
       String closing = null;
       ParameterKind kind = ParameterKind.REQUIRED;
       int parameterCount = _parameters.length;
       for (int i = 0; i < parameterCount; i++) {
         if (i > 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
         ParameterElementImpl parameter = _parameters[i] as ParameterElementImpl;
         ParameterKind parameterKind = parameter.parameterKind;
         if (parameterKind != kind) {
           if (closing != null) {
-            builder.append(closing);
+            buffer.write(closing);
           }
           if (parameterKind == ParameterKind.POSITIONAL) {
-            builder.append("[");
+            buffer.write("[");
             closing = "]";
           } else if (parameterKind == ParameterKind.NAMED) {
-            builder.append("{");
+            buffer.write("{");
             closing = "}";
           } else {
             closing = null;
           }
         }
         kind = parameterKind;
-        parameter.appendToWithoutDelimiters(builder);
+        parameter.appendToWithoutDelimiters(buffer);
       }
       if (closing != null) {
-        builder.append(closing);
+        buffer.write(closing);
       }
-      builder.append(")");
+      buffer.write(")");
     }
     if (type != null) {
-      builder.append(Element.RIGHT_ARROW);
-      builder.append(type.returnType);
+      buffer.write(Element.RIGHT_ARROW);
+      buffer.write(type.returnType);
     }
   }
 }
@@ -4523,9 +4529,9 @@
   ElementKind get kind => ElementKind.EXPORT;
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append("export ");
-    (exportedLibrary as LibraryElementImpl).appendTo(builder);
+  void appendTo(StringBuffer buffer) {
+    buffer.write("export ");
+    (exportedLibrary as LibraryElementImpl).appendTo(buffer);
   }
 
   @override
@@ -4778,13 +4784,7 @@
   bool get isStatic => baseElement.isStatic;
 
   @override
-  String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append(type);
-    builder.append(" ");
-    builder.append(displayName);
-    return builder.toString();
-  }
+  String toString() => '$type $displayName';
 
   @override
   InterfaceType get definingType => super.definingType as InterfaceType;
@@ -4903,19 +4903,19 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     String name = displayName;
     if (name != null) {
-      builder.append(name);
+      buffer.write(name);
     }
-    super.appendTo(builder);
+    super.appendTo(buffer);
   }
 
   @override
   String get identifier {
     String identifier = super.identifier;
     if (!isStatic) {
-      identifier += "@${nameOffset}";
+      identifier += "@$nameOffset";
     }
     return identifier;
   }
@@ -5236,32 +5236,32 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append("typedef ");
-    builder.append(displayName);
+  void appendTo(StringBuffer buffer) {
+    buffer.write("typedef ");
+    buffer.write(displayName);
     int typeParameterCount = _typeParameters.length;
     if (typeParameterCount > 0) {
-      builder.append("<");
+      buffer.write("<");
       for (int i = 0; i < typeParameterCount; i++) {
         if (i > 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
-        (_typeParameters[i] as TypeParameterElementImpl).appendTo(builder);
+        (_typeParameters[i] as TypeParameterElementImpl).appendTo(buffer);
       }
-      builder.append(">");
+      buffer.write(">");
     }
-    builder.append("(");
+    buffer.write("(");
     int parameterCount = _parameters.length;
     for (int i = 0; i < parameterCount; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      (_parameters[i] as ParameterElementImpl).appendTo(builder);
+      (_parameters[i] as ParameterElementImpl).appendTo(buffer);
     }
-    builder.append(")");
+    buffer.write(")");
     if (type != null) {
-      builder.append(Element.RIGHT_ARROW);
-      builder.append(type.returnType);
+      buffer.write(Element.RIGHT_ARROW);
+      buffer.write(type.returnType);
     }
   }
 }
@@ -5286,12 +5286,15 @@
     if (secondTypes.length != firstTypes.length) {
       return false;
     }
-    JavaIterator<MapEntry<String, DartType>> firstIterator = new JavaIterator(getMapEntrySet(firstTypes));
-    JavaIterator<MapEntry<String, DartType>> secondIterator = new JavaIterator(getMapEntrySet(secondTypes));
-    while (firstIterator.hasNext) {
-      MapEntry<String, DartType> firstEntry = firstIterator.next();
-      MapEntry<String, DartType> secondEntry = secondIterator.next();
-      if (firstEntry.getKey() != secondEntry.getKey() || !(firstEntry.getValue() as TypeImpl).internalEquals(secondEntry.getValue(), visitedElementPairs)) {
+    Iterator<String> firstKeys = firstTypes.keys.iterator;
+    Iterator<String> secondKeys = secondTypes.keys.iterator;
+    while (firstKeys.moveNext() && secondKeys.moveNext()) {
+      String firstKey = firstKeys.current;
+      String secondKey = secondKeys.current;
+      TypeImpl firstType = firstTypes[firstKey];
+      TypeImpl secondType = secondTypes[secondKey];
+      if (firstKey != secondKey
+          || !firstType.internalEquals(secondType, visitedElementPairs)) {
         return false;
       }
     }
@@ -5332,63 +5335,63 @@
       List<DartType> optionalParameterTypes = this.optionalParameterTypes;
       Map<String, DartType> namedParameterTypes = this.namedParameterTypes;
       DartType returnType = this.returnType;
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append("(");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("(");
       bool needsComma = false;
       if (normalParameterTypes.length > 0) {
         for (DartType type in normalParameterTypes) {
           if (needsComma) {
-            builder.append(", ");
+            buffer.write(", ");
           } else {
             needsComma = true;
           }
-          builder.append(type.displayName);
+          buffer.write(type.displayName);
         }
       }
       if (optionalParameterTypes.length > 0) {
         if (needsComma) {
-          builder.append(", ");
+          buffer.write(", ");
           needsComma = false;
         }
-        builder.append("[");
+        buffer.write("[");
         for (DartType type in optionalParameterTypes) {
           if (needsComma) {
-            builder.append(", ");
+            buffer.write(", ");
           } else {
             needsComma = true;
           }
-          builder.append(type.displayName);
+          buffer.write(type.displayName);
         }
-        builder.append("]");
+        buffer.write("]");
         needsComma = true;
       }
       if (namedParameterTypes.length > 0) {
         if (needsComma) {
-          builder.append(", ");
+          buffer.write(", ");
           needsComma = false;
         }
-        builder.append("{");
-        for (MapEntry<String, DartType> entry in getMapEntrySet(namedParameterTypes)) {
+        buffer.write("{");
+        namedParameterTypes.forEach((String name, DartType type) {
           if (needsComma) {
-            builder.append(", ");
+            buffer.write(", ");
           } else {
             needsComma = true;
           }
-          builder.append(entry.getKey());
-          builder.append(": ");
-          builder.append(entry.getValue().displayName);
-        }
-        builder.append("}");
+          buffer.write(name);
+          buffer.write(": ");
+          buffer.write(type.displayName);
+        });
+        buffer.write("}");
         needsComma = true;
       }
-      builder.append(")");
-      builder.append(Element.RIGHT_ARROW);
+      buffer.write(")");
+      buffer.write(Element.RIGHT_ARROW);
       if (returnType == null) {
-        builder.append("null");
+        buffer.write("null");
       } else {
-        builder.append(returnType.displayName);
+        buffer.write(returnType.displayName);
       }
-      name = builder.toString();
+      name = buffer.toString();
     }
     return name;
   }
@@ -5430,7 +5433,7 @@
         types.add(type);
       }
     }
-    return new List.from(types);
+    return types;
   }
 
   @override
@@ -5450,7 +5453,7 @@
         types.add(type);
       }
     }
-    return new List.from(types);
+    return types;
   }
 
   @override
@@ -5564,16 +5567,15 @@
       if (namedTypesT.length < namedTypesS.length) {
         return false;
       }
-      // Loop through each element in S verifying that T has a matching parameter name and that the
-      // corresponding type is more specific then the type in S.
-      JavaIterator<MapEntry<String, DartType>> iteratorS = new JavaIterator(getMapEntrySet(namedTypesS));
-      while (iteratorS.hasNext) {
-        MapEntry<String, DartType> entryS = iteratorS.next();
-        DartType typeT = namedTypesT[entryS.getKey()];
+      // Loop through each element in S verifying that T has a matching
+      // parameter name and that the corresponding type is more specific then
+      // the type in S.
+      for (String keyS in namedTypesS.keys) {
+        DartType typeT = namedTypesT[keyS];
         if (typeT == null) {
           return false;
         }
-        if (!(typeT as TypeImpl).isMoreSpecificThan2(entryS.getValue(), withDynamic, visitedTypePairs)) {
+        if (!(typeT as TypeImpl).isMoreSpecificThan2(namedTypesS[keyS], withDynamic, visitedTypePairs)) {
           return false;
         }
       }
@@ -5656,65 +5658,65 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     List<DartType> normalParameterTypes = this.normalParameterTypes;
     List<DartType> optionalParameterTypes = this.optionalParameterTypes;
     Map<String, DartType> namedParameterTypes = this.namedParameterTypes;
     DartType returnType = this.returnType;
-    builder.append("(");
+    buffer.write("(");
     bool needsComma = false;
     if (normalParameterTypes.length > 0) {
       for (DartType type in normalParameterTypes) {
         if (needsComma) {
-          builder.append(", ");
+          buffer.write(", ");
         } else {
           needsComma = true;
         }
-        (type as TypeImpl).appendTo(builder);
+        (type as TypeImpl).appendTo(buffer);
       }
     }
     if (optionalParameterTypes.length > 0) {
       if (needsComma) {
-        builder.append(", ");
+        buffer.write(", ");
         needsComma = false;
       }
-      builder.append("[");
+      buffer.write("[");
       for (DartType type in optionalParameterTypes) {
         if (needsComma) {
-          builder.append(", ");
+          buffer.write(", ");
         } else {
           needsComma = true;
         }
-        (type as TypeImpl).appendTo(builder);
+        (type as TypeImpl).appendTo(buffer);
       }
-      builder.append("]");
+      buffer.write("]");
       needsComma = true;
     }
     if (namedParameterTypes.length > 0) {
       if (needsComma) {
-        builder.append(", ");
+        buffer.write(", ");
         needsComma = false;
       }
-      builder.append("{");
-      for (MapEntry<String, DartType> entry in getMapEntrySet(namedParameterTypes)) {
+      buffer.write("{");
+      namedParameterTypes.forEach((String name, DartType type) {
         if (needsComma) {
-          builder.append(", ");
+          buffer.write(", ");
         } else {
           needsComma = true;
         }
-        builder.append(entry.getKey());
-        builder.append(": ");
-        (entry.getValue() as TypeImpl).appendTo(builder);
-      }
-      builder.append("}");
+        buffer.write(name);
+        buffer.write(": ");
+        (type as TypeImpl).appendTo(buffer);
+      });
+      buffer.write("}");
       needsComma = true;
     }
-    builder.append(")");
-    builder.append(Element.RIGHT_ARROW);
+    buffer.write(")");
+    buffer.write(Element.RIGHT_ARROW);
     if (returnType == null) {
-      builder.append("null");
+      buffer.write("null");
     } else {
-      (returnType as TypeImpl).appendTo(builder);
+      (returnType as TypeImpl).appendTo(buffer);
     }
   }
 
@@ -5792,16 +5794,15 @@
       if (namedTypesT.length < namedTypesS.length) {
         return false;
       }
-      // Loop through each element in S verifying that T has a matching parameter name and that the
-      // corresponding type is assignable to the type in S.
-      JavaIterator<MapEntry<String, DartType>> iteratorS = new JavaIterator(getMapEntrySet(namedTypesS));
-      while (iteratorS.hasNext) {
-        MapEntry<String, DartType> entryS = iteratorS.next();
-        DartType typeT = namedTypesT[entryS.getKey()];
+      // Loop through each element in S verifying that T has a matching
+      // parameter name and that the corresponding type is assignable to the
+      // type in S.
+      for (String keyS in namedTypesS.keys) {
+        DartType typeT = namedTypesT[keyS];
         if (typeT == null) {
           return false;
         }
-        if (!(typeT as TypeImpl).isAssignableTo2(entryS.getValue(), visitedTypePairs)) {
+        if (!(typeT as TypeImpl).isAssignableTo2(namedTypesS[keyS], visitedTypePairs)) {
           return false;
         }
       }
@@ -6069,10 +6070,10 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append("[");
-    builder.append(name);
-    builder.append("]");
+  void appendTo(StringBuffer buffer) {
+    buffer.write("[");
+    buffer.write(name);
+    buffer.write("]");
   }
 }
 
@@ -6103,16 +6104,16 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("show ");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("show ");
     int count = hiddenNames.length;
     for (int i = 0; i < count; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      builder.append(hiddenNames[i]);
+      buffer.write(hiddenNames[i]);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 }
 
@@ -6251,11 +6252,11 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     if (source == null) {
-      builder.append("{HTML file}");
+      buffer.write("{HTML file}");
     } else {
-      builder.append(source.fullName);
+      buffer.write(source.fullName);
     }
   }
 
@@ -6399,13 +6400,13 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append("import ");
-    (importedLibrary as LibraryElementImpl).appendTo(builder);
+  void appendTo(StringBuffer buffer) {
+    buffer.write("import ");
+    (importedLibrary as LibraryElementImpl).appendTo(buffer);
   }
 
   @override
-  String get identifier => "${(importedLibrary as LibraryElementImpl).identifier}@${nameOffset}";
+  String get identifier => "${(importedLibrary as LibraryElementImpl).identifier}@$nameOffset";
 }
 
 /**
@@ -6903,18 +6904,18 @@
     }
     // If there is at least one non-dynamic type, then list them out
     if (!allDynamic) {
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append(name);
-      builder.append("<");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write(name);
+      buffer.write("<");
       for (int i = 0; i < typeArguments.length; i++) {
         if (i != 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
         DartType typeArg = typeArguments[i];
-        builder.append(typeArg.displayName);
+        buffer.write(typeArg.displayName);
       }
-      builder.append(">");
-      name = builder.toString();
+      buffer.write(">");
+      name = buffer.toString();
     }
     return name;
   }
@@ -7268,18 +7269,18 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(name);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(name);
     int argumentCount = typeArguments.length;
     if (argumentCount > 0) {
-      builder.append("<");
+      buffer.write("<");
       for (int i = 0; i < argumentCount; i++) {
         if (i > 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
-        (typeArguments[i] as TypeImpl).appendTo(builder);
+        (typeArguments[i] as TypeImpl).appendTo(buffer);
       }
-      builder.append(">");
+      buffer.write(">");
     }
   }
 
@@ -7506,7 +7507,7 @@
 
   String _attributeName;
 
-  IsTagHasAttributeSelectorElementImpl(String tagName, String attributeName) : super("${tagName}[${attributeName}]", -1) {
+  IsTagHasAttributeSelectorElementImpl(String tagName, String attributeName) : super("$tagName[$attributeName]", -1) {
     this._tagName = tagName;
     this._attributeName = attributeName;
   }
@@ -7922,7 +7923,7 @@
         importList.add(_imports[i]);
       }
     }
-    return new List.from(importList);
+    return importList;
   }
 
   @override
@@ -8342,14 +8343,14 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(type);
-    builder.append(" ");
-    builder.append(displayName);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(type);
+    buffer.write(" ");
+    buffer.write(displayName);
   }
 
   @override
-  String get identifier => "${super.identifier}@${nameOffset}";
+  String get identifier => "${super.identifier}@$nameOffset";
 }
 
 /**
@@ -8630,11 +8631,11 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(enclosingElement.displayName);
-    builder.append(".");
-    builder.append(displayName);
-    super.appendTo(builder);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(enclosingElement.displayName);
+    buffer.write(".");
+    buffer.write(displayName);
+    super.appendTo(buffer);
   }
 }
 
@@ -8698,24 +8699,24 @@
     MethodElement baseElement = this.baseElement;
     List<ParameterElement> parameters = this.parameters;
     FunctionType type = this.type;
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append(baseElement.enclosingElement.displayName);
-    builder.append(".");
-    builder.append(baseElement.displayName);
-    builder.append("(");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write(baseElement.enclosingElement.displayName);
+    buffer.write(".");
+    buffer.write(baseElement.displayName);
+    buffer.write("(");
     int parameterCount = parameters.length;
     for (int i = 0; i < parameterCount; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      builder.append(parameters[i]).toString();
+      buffer.write(parameters[i]);
     }
-    builder.append(")");
+    buffer.write(")");
     if (type != null) {
-      builder.append(Element.RIGHT_ARROW);
-      builder.append(type.returnType);
+      buffer.write(Element.RIGHT_ARROW);
+      buffer.write(type.returnType);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 }
 
@@ -9032,17 +9033,17 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("[");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("[");
     int count = conflictingElements.length;
     for (int i = 0; i < count; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      (conflictingElements[i] as ElementImpl).appendTo(builder);
+      (conflictingElements[i] as ElementImpl).appendTo(buffer);
     }
-    builder.append("]");
-    return builder.toString();
+    buffer.write("]");
+    return buffer.toString();
   }
 
   @override
@@ -9302,7 +9303,7 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     String left = "";
     String right = "";
     while (true) {
@@ -9316,9 +9317,9 @@
       }
       break;
     }
-    builder.append(left);
-    appendToWithoutDelimiters(builder);
-    builder.append(right);
+    buffer.write(left);
+    appendToWithoutDelimiters(buffer);
+    buffer.write(right);
   }
 
   /**
@@ -9326,18 +9327,18 @@
    *
    * @param builder the builder to which the type and name are to be appended
    */
-  void appendToWithoutDelimiters(JavaStringBuilder builder) {
-    builder.append(type);
-    builder.append(" ");
-    builder.append(displayName);
+  void appendToWithoutDelimiters(StringBuffer buffer) {
+    buffer.write(type);
+    buffer.write(" ");
+    buffer.write(displayName);
     if (_defaultValueCode != null) {
       if (parameterKind == ParameterKind.NAMED) {
-        builder.append(": ");
+        buffer.write(": ");
       }
       if (parameterKind == ParameterKind.POSITIONAL) {
-        builder.append(" = ");
+        buffer.write(" = ");
       }
-      builder.append(_defaultValueCode);
+      buffer.write(_defaultValueCode);
     }
   }
 }
@@ -9458,13 +9459,7 @@
       }
       break;
     }
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append(left);
-    builder.append(type);
-    builder.append(" ");
-    builder.append(baseElement.displayName);
-    builder.append(right);
-    return builder.toString();
+    return '$left$type ${baseElement.displayName}$right';
   }
 
   @override
@@ -9777,9 +9772,9 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append("as ");
-    super.appendTo(builder);
+  void appendTo(StringBuffer buffer) {
+    buffer.write("as ");
+    super.appendTo(buffer);
   }
 
   @override
@@ -9987,17 +9982,17 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(isGetter ? "get " : "set ");
-    builder.append(variable.displayName);
-    super.appendTo(builder);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(isGetter ? "get " : "set ");
+    buffer.write(variable.displayName);
+    super.appendTo(buffer);
   }
 
   @override
   String get identifier {
     String name = displayName;
     String suffix = isGetter ? "?" : "=";
-    return "${name}${suffix}";
+    return "$name$suffix";
   }
 }
 
@@ -10107,27 +10102,27 @@
     PropertyAccessorElement baseElement = this.baseElement;
     List<ParameterElement> parameters = this.parameters;
     FunctionType type = this.type;
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer builder = new StringBuffer();
     if (isGetter) {
-      builder.append("get ");
+      builder.write("get ");
     } else {
-      builder.append("set ");
+      builder.write("set ");
     }
-    builder.append(baseElement.enclosingElement.displayName);
-    builder.append(".");
-    builder.append(baseElement.displayName);
-    builder.append("(");
+    builder.write(baseElement.enclosingElement.displayName);
+    builder.write(".");
+    builder.write(baseElement.displayName);
+    builder.write("(");
     int parameterCount = parameters.length;
     for (int i = 0; i < parameterCount; i++) {
       if (i > 0) {
-        builder.append(", ");
+        builder.write(", ");
       }
-      builder.append(parameters[i]).toString();
+      builder.write(parameters[i]);
     }
-    builder.append(")");
+    builder.write(")");
     if (type != null) {
-      builder.append(Element.RIGHT_ARROW);
-      builder.append(type.returnType);
+      builder.write(Element.RIGHT_ARROW);
+      builder.write(type.returnType);
     }
     return builder.toString();
   }
@@ -10492,16 +10487,16 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("show ");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("show ");
     int count = shownNames.length;
     for (int i = 0; i < count; i++) {
       if (i > 0) {
-        builder.append(", ");
+        buffer.write(", ");
       }
-      builder.append(shownNames[i]);
+      buffer.write(shownNames[i]);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 }
 
@@ -10880,21 +10875,19 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    appendTo(builder);
-    return builder.toString();
+    StringBuffer buffer = new StringBuffer();
+    appendTo(buffer);
+    return buffer.toString();
   }
 
   /**
-   * Append a textual representation of this type to the given builder.
-   *
-   * @param builder the builder to which the text is to be appended
+   * Append a textual representation of this type to the given [buffer].
    */
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     if (name == null) {
-      builder.append("<unnamed type>");
+      buffer.write("<unnamed type>");
     } else {
-      builder.append(name);
+      buffer.write(name);
     }
   }
 
@@ -11009,11 +11002,11 @@
   ElementKind get kind => ElementKind.TYPE_PARAMETER;
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(displayName);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(displayName);
     if (bound != null) {
-      builder.append(" extends ");
-      builder.append(bound);
+      buffer.write(" extends ");
+      buffer.write(bound);
     }
   }
 }
@@ -11267,7 +11260,7 @@
       // instead of raising an exception.
       throw new IllegalArgumentException("No known use case for empty unions.");
     } else if (set.length == 1) {
-      return new JavaIterator(set).next();
+      return set.first;
     } else {
       return new UnionTypeImpl(set);
     }
@@ -11299,15 +11292,15 @@
 
   @override
   String get displayName {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     String prefix = "{";
     for (DartType t in _types) {
-      builder.append(prefix);
-      builder.append(t.displayName);
+      buffer.write(prefix);
+      buffer.write(t.displayName);
       prefix = ",";
     }
-    builder.append("}");
-    return builder.toString();
+    buffer.write("}");
+    return buffer.toString();
   }
 
   @override
@@ -11322,18 +11315,18 @@
     for (DartType t in _types) {
       out.add(t.substitute2(argumentTypes, parameterTypes));
     }
-    return union(new List.from(out));
+    return union(out);
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
+  void appendTo(StringBuffer buffer) {
     String prefix = "{";
-    for (DartType t in _types) {
-      builder.append(prefix);
-      (t as TypeImpl).appendTo(builder);
+    for (DartType type in _types) {
+      buffer.write(prefix);
+      (type as TypeImpl).appendTo(buffer);
       prefix = ",";
     }
-    builder.append("}");
+    buffer.write("}");
   }
 
   @override
@@ -11663,10 +11656,10 @@
   }
 
   @override
-  void appendTo(JavaStringBuilder builder) {
-    builder.append(type);
-    builder.append(" ");
-    builder.append(displayName);
+  void appendTo(StringBuffer buffer) {
+    buffer.write(type);
+    buffer.write(" ");
+    buffer.write(displayName);
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index ea758e7..4de74d4 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -8,6 +8,7 @@
 library engine;
 
 import 'dart:collection';
+import "dart:math" as math;
 
 import 'package:analyzer/src/task/task_dart.dart';
 
@@ -1003,14 +1004,13 @@
   @override
   void applyAnalysisDelta(AnalysisDelta delta) {
     ChangeSet changeSet = new ChangeSet();
-    for (MapEntry<Source, AnalysisLevel> entry in getMapEntrySet(delta.analysisLevels)) {
-      Source source = entry.getKey();
-      if (entry.getValue() == AnalysisLevel.NONE) {
+    delta.analysisLevels.forEach((Source source, AnalysisLevel level) {
+      if (level == AnalysisLevel.NONE) {
         changeSet.removedSource(source);
       } else {
         changeSet.addedSource(source);
       }
-    }
+    });
     applyChanges(changeSet);
   }
 
@@ -1043,13 +1043,17 @@
       }
       _sourceChanged(source);
     }
-    for (MapEntry<Source, String> entry in getMapEntrySet(changeSet.changedContents)) {
-      setContents(entry.getKey(), entry.getValue());
-    }
-    for (MapEntry<Source, ChangeSet_ContentChange> entry in getMapEntrySet(changeSet.changedRanges)) {
-      ChangeSet_ContentChange change = entry.getValue();
-      setChangedContents(entry.getKey(), change.contents, change.offset, change.oldLength, change.newLength);
-    }
+    changeSet.changedContents.forEach((Source key, String value) {
+      setContents(key, value);
+    });
+    changeSet.changedRanges.forEach((Source source, ChangeSet_ContentChange change) {
+      setChangedContents(
+          source,
+          change.contents,
+          change.offset,
+          change.oldLength,
+          change.newLength);
+    });
     for (Source source in changeSet.deletedSources) {
       _sourceDeleted(source);
     }
@@ -1107,15 +1111,15 @@
         if (comment == null) {
           return null;
         }
-        JavaStringBuilder builder = new JavaStringBuilder();
+        StringBuffer buffer = new StringBuffer();
         List<Token> tokens = comment.tokens;
         for (int i = 0; i < tokens.length; i++) {
           if (i > 0) {
-            builder.append("\n");
+            buffer.write("\n");
           }
-          builder.append(tokens[i].lexeme);
+          buffer.write(tokens[i].lexeme);
         }
-        return builder.toString();
+        return buffer.toString();
       }
       nameNode = nameNode.parent;
     }
@@ -1160,7 +1164,7 @@
       if (errors.isEmpty) {
         return AnalysisError.NO_ERRORS;
       }
-      return new List.from(errors);
+      return errors;
     } else if (sourceEntry is HtmlEntry) {
       HtmlEntry htmlEntry = sourceEntry;
       try {
@@ -1209,7 +1213,7 @@
         return _getDartScanData2(source, SourceEntry.LINE_INFO, null);
       }
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not compute ${SourceEntry.LINE_INFO.toString()}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not compute ${SourceEntry.LINE_INFO}", exception);
     }
     return null;
   }
@@ -1382,7 +1386,7 @@
     if (htmlSources.isEmpty) {
       return Source.EMPTY_ARRAY;
     }
-    return new List.from(htmlSources);
+    return htmlSources;
   }
 
   @override
@@ -1413,7 +1417,7 @@
         //          }
       }
     }
-    return new List.from(sources);
+    return sources;
   }
 
   @override
@@ -1432,7 +1436,7 @@
         //          }
       }
     }
-    return new List.from(sources);
+    return sources;
   }
 
   @override
@@ -1462,7 +1466,7 @@
     if (dependentLibraries.isEmpty) {
       return Source.EMPTY_ARRAY;
     }
-    return new List.from(dependentLibraries);
+    return dependentLibraries;
   }
 
   @override
@@ -1727,10 +1731,10 @@
     try {
       task.perform(_resultRecorder);
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not perform analysis task: ${taskDescription}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not perform analysis task: $taskDescription", exception);
     } on AnalysisException catch (exception) {
       if (exception.cause is! JavaIOException) {
-        AnalysisEngine.instance.logger.logError2("Internal error while performing the task: ${task}", exception);
+        AnalysisEngine.instance.logger.logError2("Internal error while performing the task: $task", exception);
       }
     }
     int performEnd = JavaSystem.currentTimeMillis();
@@ -1755,9 +1759,7 @@
   @override
   void recordLibraryElements(Map<Source, LibraryElement> elementMap) {
     Source htmlSource = _sourceFactory.forUri(DartSdk.DART_HTML);
-    for (MapEntry<Source, LibraryElement> entry in getMapEntrySet(elementMap)) {
-      Source librarySource = entry.getKey();
-      LibraryElement library = entry.getValue();
+    elementMap.forEach((Source librarySource, LibraryElement library) {
       //
       // Cache the element in the library's info.
       //
@@ -1784,7 +1786,7 @@
         dartEntry.setValueInLibrary(DartEntry.VERIFICATION_ERRORS, librarySource, AnalysisError.NO_ERRORS);
         dartEntry.setValueInLibrary(DartEntry.HINTS, librarySource, AnalysisError.NO_ERRORS);
       }
-    }
+    });
   }
 
   @override
@@ -1861,7 +1863,7 @@
       // result in an infinite loop in performAnalysisTask() because re-caching one AST structure
       // can cause another priority source's AST structure to be flushed.
       //
-      int count = Math.min(sources.length, _options.cacheSize - _PRIORITY_ORDER_SIZE_DELTA);
+      int count = math.min(sources.length, _options.cacheSize - _PRIORITY_ORDER_SIZE_DELTA);
       _priorityOrder = new List<Source>(count);
       for (int i = 0; i < count; i++) {
         _priorityOrder[i] = sources[i];
@@ -2836,7 +2838,7 @@
     try {
       return _getDartParseData(source, dartEntry, descriptor);
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not compute ${descriptor.toString()}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not compute $descriptor", exception);
       return defaultValue;
     }
   }
@@ -2890,7 +2892,7 @@
     try {
       return _getDartResolutionData(unitSource, librarySource, dartEntry, descriptor);
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not compute ${descriptor.toString()}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not compute $descriptor", exception);
       return defaultValue;
     }
   }
@@ -2935,7 +2937,7 @@
     try {
       return _getDartScanData(source, dartEntry, descriptor);
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not compute ${descriptor.toString()}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not compute $descriptor", exception);
       return defaultValue;
     }
   }
@@ -3009,7 +3011,7 @@
     try {
       return _getHtmlResolutionData2(source, htmlEntry, descriptor);
     } on ObsoleteSourceAnalysisException catch (exception) {
-      AnalysisEngine.instance.logger.logInformation2("Could not compute ${descriptor.toString()}", exception);
+      AnalysisEngine.instance.logger.logInformation2("Could not compute $descriptor", exception);
       return defaultValue;
     }
   }
@@ -3378,7 +3380,7 @@
         sources.add(iterator.key);
       }
     }
-    return new List.from(sources);
+    return sources;
   }
 
   /**
@@ -3603,7 +3605,7 @@
       }
     }
     // invalidate Angular applications
-    List<AngularApplication> angularApplicationsCopy = [];
+    List<AngularApplication> angularApplicationsCopy = <AngularApplication>[];
     for (AngularApplication application in angularApplicationsCopy) {
       if (application.dependsOn(librarySource)) {
         Source entryPointSource = application.entryPoint;
@@ -4230,9 +4232,7 @@
    * @param oldPartMap the table containing the parts associated with each library
    */
   void _removeFromPartsUsingMap(HashMap<Source, List<Source>> oldPartMap) {
-    for (MapEntry<Source, List<Source>> entry in getMapEntrySet(oldPartMap)) {
-      Source librarySource = entry.getKey();
-      List<Source> oldParts = entry.getValue();
+    oldPartMap.forEach((Source librarySource, List<Source> oldParts) {
       for (int i = 0; i < oldParts.length; i++) {
         Source partSource = oldParts[i];
         if (partSource != librarySource) {
@@ -4245,7 +4245,7 @@
           }
         }
       }
-    }
+    });
   }
 
   /**
@@ -4416,21 +4416,21 @@
     }
     int consistencyCheckEnd = JavaSystem.nanoTime();
     if (changedSources.length > 0 || missingSources.length > 0) {
-      PrintStringWriter writer = new PrintStringWriter();
-      writer.print("Consistency check took ");
-      writer.print((consistencyCheckEnd - consistencyCheckStart) / 1000000.0);
-      writer.println(" ms and found");
-      writer.print("  ");
-      writer.print(changedSources.length);
-      writer.println(" inconsistent entries");
-      writer.print("  ");
-      writer.print(missingSources.length);
-      writer.println(" missing sources");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("Consistency check took ");
+      buffer.write((consistencyCheckEnd - consistencyCheckStart) / 1000000.0);
+      buffer.writeln(" ms and found");
+      buffer.write("  ");
+      buffer.write(changedSources.length);
+      buffer.writeln(" inconsistent entries");
+      buffer.write("  ");
+      buffer.write(missingSources.length);
+      buffer.writeln(" missing sources");
       for (Source source in missingSources) {
-        writer.print("    ");
-        writer.println(source.fullName);
+        buffer.write("    ");
+        buffer.writeln(source.fullName);
       }
-      _logInformation(writer.toString());
+      _logInformation(buffer.toString());
     }
     return changedSources.length > 0;
   }
@@ -4707,7 +4707,7 @@
           _dependencyGraph.addEdge(library, importedLibrary);
         }
       }
-      library.importedLibraries = new List.from(importedLibraries);
+      library.importedLibraries = importedLibraries;
     } else {
       library.explicitlyImportsCore = false;
       ResolvableLibrary importedLibrary = _libraryMap[AnalysisContextImpl_this._coreLibrarySource];
@@ -4745,7 +4745,7 @@
           _dependencyGraph.addEdge(library, exportedLibrary);
         }
       }
-      library.exportedLibraries = new List.from(exportedLibraries);
+      library.exportedLibraries = exportedLibraries;
     }
   }
 
@@ -5052,7 +5052,7 @@
   @override
   String toString() {
     if (task == null) {
-      return "blocked: ${_blocked}";
+      return "blocked: $_blocked";
     }
     return task.toString();
   }
@@ -5101,10 +5101,8 @@
   }
 
   @override
-  List<AnalysisContextStatistics_CacheRow> get cacheRows {
-    Iterable<AnalysisContextStatistics_CacheRow> items = _dataMap.values;
-    return new List.from(items);
-  }
+  List<AnalysisContextStatistics_CacheRow> get cacheRows
+      => _dataMap.values.toList();
 
   @override
   List<CaughtException> get exceptions => new List.from(_exceptions);
@@ -5113,7 +5111,7 @@
   List<AnalysisContextStatistics_PartitionData> get partitionData => _partitionData;
 
   @override
-  List<Source> get sources => new List.from(_sources);
+  List<Source> get sources => _sources;
 
   void putCacheItem(SourceEntry dartEntry, DataDescriptor descriptor) {
     _internalPutCacheItem(dartEntry, descriptor, dartEntry.getState(descriptor));
@@ -5307,38 +5305,34 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    bool needsSeparator = _appendSources(builder, false, AnalysisLevel.ALL);
-    needsSeparator = _appendSources(builder, needsSeparator, AnalysisLevel.RESOLVED);
-    _appendSources(builder, needsSeparator, AnalysisLevel.NONE);
-    return builder.toString();
+    StringBuffer buffer = new StringBuffer();
+    bool needsSeparator = _appendSources(buffer, false, AnalysisLevel.ALL);
+    needsSeparator = _appendSources(buffer, needsSeparator, AnalysisLevel.RESOLVED);
+    _appendSources(buffer, needsSeparator, AnalysisLevel.NONE);
+    return buffer.toString();
   }
 
   /**
-   * Append sources with the given analysis level, prefixed with a label and possibly a separator.
-   *
-   * @param builder the builder to which the sources are to be appended
-   * @param needsSeparator `true` if a separator is needed before the label
-   * @param level the analysis level of the sources to be appended
-   * @return `true` if future lists of sources will need a separator
+   * Appendto the given [builder] all sources with the given analysis [level],
+   * prefixed with a label and a separator if [needsSeparator] is `true`.
    */
-  bool _appendSources(JavaStringBuilder builder, bool needsSeparator, AnalysisLevel level) {
+  bool _appendSources(StringBuffer buffer, bool needsSeparator, AnalysisLevel level) {
     bool first = true;
-    for (MapEntry<Source, AnalysisLevel> entry in getMapEntrySet(_analysisMap)) {
-      if (entry.getValue() == level) {
+    _analysisMap.forEach((Source source, AnalysisLevel sourceLevel) {
+      if (sourceLevel == level) {
         if (first) {
           first = false;
           if (needsSeparator) {
-            builder.append("; ");
+            buffer.write("; ");
           }
-          builder.append(level);
-          builder.append(" ");
+          buffer.write(level);
+          buffer.write(" ");
         } else {
-          builder.append(", ");
+          buffer.write(", ");
         }
-        builder.append(entry.getKey().fullName);
+        buffer.write(source.fullName);
       }
-    }
+    });
     return needsSeparator || !first;
   }
 }
@@ -5942,7 +5936,7 @@
       _safelyPerform();
     } on AnalysisException catch (exception, stackTrace) {
       _thrownException = new CaughtException(exception, stackTrace);
-      AnalysisEngine.instance.logger.logInformation2("Task failed: ${taskDescription}", new CaughtException(exception, stackTrace));
+      AnalysisEngine.instance.logger.logInformation2("Task failed: $taskDescription", new CaughtException(exception, stackTrace));
     }
     return accept(visitor);
   }
@@ -6122,7 +6116,7 @@
    * Return Dart [Expression]s this Angular expression consists of.
    */
   List<Expression> get expressions {
-    List<Expression> expressions = [];
+    List<Expression> expressions = <Expression>[];
     expressions.add(expression);
     for (AngularFormatterNode formatter in formatters) {
       expressions.add(formatter.name);
@@ -6321,7 +6315,7 @@
 
   List<AngularElement> _angularElements;
 
-  List<NgProcessor> _processors = [];
+  List<NgProcessor> _processors = <NgProcessor>[];
 
   LibraryElementImpl _libraryElement;
 
@@ -6333,7 +6327,7 @@
 
   bool _isAngular = false;
 
-  List<LocalVariableElementImpl> _definedVariables = [];
+  List<LocalVariableElementImpl> _definedVariables = <LocalVariableElementImpl>[];
 
   Set<LibraryElement> _injectedLibraries = new Set();
 
@@ -6378,7 +6372,7 @@
         try {
           Source templateSource = _context.sourceFactory.forUri2(_source.resolveRelativeUri(parseUriWithException(templateUri)));
           if (!_context.exists(templateSource)) {
-            templateSource = _context.sourceFactory.resolveUri(_source, "package:${templateUri}");
+            templateSource = _context.sourceFactory.resolveUri(_source, "package:$templateUri");
             if (!_context.exists(templateSource)) {
               _errorListener.onError(new AnalysisError.con2(angularElement.source, hasTemplate.templateUriOffset, templateUri.length, AngularCode.URI_DOES_NOT_EXIST, [templateUri]));
               continue;
@@ -6541,7 +6535,7 @@
     List<Token> tokens = _splitAtBar(token);
     Expression mainExpression = _parseDartExpressionInToken(tokens[0]);
     // parse formatters
-    List<AngularFormatterNode> formatters = [];
+    List<AngularFormatterNode> formatters = <AngularFormatterNode>[];
     for (int i = 1; i < tokens.length; i++) {
       Token formatterToken = tokens[i];
       Token barToken = formatterToken;
@@ -6555,7 +6549,7 @@
       SimpleIdentifier name = nameExpression as SimpleIdentifier;
       formatterToken = name.endToken.next;
       // parse arguments
-      List<AngularFormatterArgument> arguments = [];
+      List<AngularFormatterArgument> arguments = <AngularFormatterArgument>[];
       while (formatterToken.type != TokenType.EOF) {
         // skip ":"
         Token colonToken = formatterToken;
@@ -6740,15 +6734,15 @@
   }
 
   void _parseEmbeddedExpressionsInAttribute(ht.XmlAttributeNode node) {
-    List<AngularMoustacheXmlExpression> expressions = [];
+    List<AngularMoustacheXmlExpression> expressions = <AngularMoustacheXmlExpression>[];
     _parseEmbeddedExpressions(expressions, node.valueToken);
     if (!expressions.isEmpty) {
-      node.expressions = new List.from(expressions);
+      node.expressions = expressions;
     }
   }
 
   void _parseEmbeddedExpressionsInTag(ht.XmlTagNode node) {
-    List<AngularMoustacheXmlExpression> expressions = [];
+    List<AngularMoustacheXmlExpression> expressions = <AngularMoustacheXmlExpression>[];
     ht.Token token = node.attributeEnd;
     ht.Token endToken = node.endToken;
     bool inChild = false;
@@ -6768,7 +6762,7 @@
       }
       token = token.next;
     }
-    node.expressions = new List.from(expressions);
+    node.expressions = expressions;
   }
 
   void _recordDefinedVariable(LocalVariableElementImpl variable) {
@@ -6839,13 +6833,13 @@
     _unit.accept(this);
     // simulate imports for injects
     {
-      List<ImportElement> imports = [];
+      List<ImportElement> imports = <ImportElement>[];
       for (LibraryElement injectedLibrary in _injectedLibraries) {
         ImportElementImpl importElement = new ImportElementImpl(-1);
         importElement.importedLibrary = injectedLibrary;
         imports.add(importElement);
       }
-      _libraryElement.imports = new List.from(imports);
+      _libraryElement.imports = imports;
     }
   }
 
@@ -6855,7 +6849,7 @@
   }
 
   List<Token> _splitAtBar(Token token) {
-    List<Token> tokens = [];
+    List<Token> tokens = <Token>[];
     tokens.add(token);
     while (token.type != TokenType.EOF) {
       if (token.type == TokenType.BAR) {
@@ -7431,7 +7425,7 @@
     this._errors = errors;
     this._lineInfo = lineInfo;
     if (lineInfo == null) {
-      AnalysisEngine.instance.logger.logInformation2("No line info: ${source}", new JavaException());
+      AnalysisEngine.instance.logger.logInformation2("No line info: $source", new JavaException());
     }
   }
 
@@ -7581,29 +7575,29 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    bool needsSeparator = _appendSources(builder, addedSources, false, "addedSources");
-    needsSeparator = _appendSources(builder, changedSources, needsSeparator, "changedSources");
-    needsSeparator = _appendSources2(builder, _changedContent, needsSeparator, "changedContent");
-    needsSeparator = _appendSources2(builder, changedRanges, needsSeparator, "changedRanges");
-    needsSeparator = _appendSources(builder, deletedSources, needsSeparator, "deletedSources");
-    needsSeparator = _appendSources(builder, removedSources, needsSeparator, "removedSources");
+    StringBuffer buffer = new StringBuffer();
+    bool needsSeparator = _appendSources(buffer, addedSources, false, "addedSources");
+    needsSeparator = _appendSources(buffer, changedSources, needsSeparator, "changedSources");
+    needsSeparator = _appendSources2(buffer, _changedContent, needsSeparator, "changedContent");
+    needsSeparator = _appendSources2(buffer, changedRanges, needsSeparator, "changedRanges");
+    needsSeparator = _appendSources(buffer, deletedSources, needsSeparator, "deletedSources");
+    needsSeparator = _appendSources(buffer, removedSources, needsSeparator, "removedSources");
     int count = removedContainers.length;
     if (count > 0) {
       if (removedSources.isEmpty) {
         if (needsSeparator) {
-          builder.append("; ");
+          buffer.write("; ");
         }
-        builder.append("removed: from ");
-        builder.append(count);
-        builder.append(" containers");
+        buffer.write("removed: from ");
+        buffer.write(count);
+        buffer.write(" containers");
       } else {
-        builder.append(", and more from ");
-        builder.append(count);
-        builder.append(" containers");
+        buffer.write(", and more from ");
+        buffer.write(count);
+        buffer.write(" containers");
       }
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
@@ -7616,18 +7610,18 @@
    * @param label the label used to prefix the sources
    * @return `true` if future lists of sources will need a separator
    */
-  bool _appendSources(JavaStringBuilder builder, List<Source> sources, bool needsSeparator, String label) {
+  bool _appendSources(StringBuffer buffer, List<Source> sources, bool needsSeparator, String label) {
     if (sources.isEmpty) {
       return needsSeparator;
     }
     if (needsSeparator) {
-      builder.append("; ");
+      buffer.write("; ");
     }
-    builder.append(label);
+    buffer.write(label);
     String prefix = " ";
     for (Source source in sources) {
-      builder.append(prefix);
-      builder.append(source.fullName);
+      buffer.write(prefix);
+      buffer.write(source.fullName);
       prefix = ", ";
     }
     return true;
@@ -7643,18 +7637,18 @@
    * @param label the label used to prefix the sources
    * @return `true` if future lists of sources will need a separator
    */
-  bool _appendSources2(JavaStringBuilder builder, HashMap<Source, dynamic> sources, bool needsSeparator, String label) {
+  bool _appendSources2(StringBuffer buffer, HashMap<Source, dynamic> sources, bool needsSeparator, String label) {
     if (sources.isEmpty) {
       return needsSeparator;
     }
     if (needsSeparator) {
-      builder.append("; ");
+      buffer.write("; ");
     }
-    builder.append(label);
+    buffer.write(label);
     String prefix = " ";
     for (Source source in sources.keys.toSet()) {
-      builder.append(prefix);
-      builder.append(source.fullName);
+      buffer.write(prefix);
+      buffer.write(source.fullName);
       prefix = ", ";
     }
     return true;
@@ -7952,7 +7946,7 @@
     if (errors.length == 0) {
       return AnalysisError.NO_ERRORS;
     }
-    return new List.from(errors);
+    return errors;
   }
 
   /**
@@ -8010,7 +8004,7 @@
       }
       state = state._nextState;
     }
-    return new List.from(result);
+    return result;
   }
 
   /**
@@ -8930,7 +8924,7 @@
       _content = data.data;
       _modificationTime = data.modificationTime;
     } catch (exception, stackTrace) {
-      throw new AnalysisException("Could not get contents of ${source}", new CaughtException(exception, stackTrace));
+      throw new AnalysisException("Could not get contents of $source", new CaughtException(exception, stackTrace));
     }
   }
 }
@@ -9411,7 +9405,7 @@
   Source get source => cache != null ? cache.source : null;
 
   @override
-  String get taskDescription => "incremental analysis ${(cache != null ? cache.source : "null")}";
+  String get taskDescription => "incremental analysis ${cache != null ? cache.source : "null"}";
 
   @override
   void internalPerform() {
@@ -10688,7 +10682,7 @@
       errorListener.onError(new AnalysisError.con2(librarySource, uriLiteral.offset, uriLiteral.length, CompileTimeErrorCode.INVALID_URI, [uriContent]));
       return null;
     }
-    throw new RuntimeException(message: "Failed to handle validation code: ${code}");
+    throw new RuntimeException(message: "Failed to handle validation code: $code");
   }
 
   /**
@@ -10852,7 +10846,7 @@
                   _includedSources.add(referencedSource);
                 }
               } else {
-                throw new AnalysisException("${runtimeType.toString()} failed to handle a ${directive.runtimeType.toString()}");
+                throw new AnalysisException("$runtimeType failed to handle a ${directive.runtimeType}");
               }
             }
           }
@@ -11258,7 +11252,7 @@
 
   final ht.HtmlUnit _unit;
 
-  List<PolymerTagHtmlElement> _tagHtmlElements = [];
+  List<PolymerTagHtmlElement> _tagHtmlElements = <PolymerTagHtmlElement>[];
 
   ht.XmlTagNode _elementNode;
 
@@ -11309,18 +11303,18 @@
       return;
     }
     // prepare attribute name tokens
-    List<PolymerHtmlUnitBuilder_NameToken> nameTokens = [];
+    List<PolymerHtmlUnitBuilder_NameToken> nameTokens = <PolymerHtmlUnitBuilder_NameToken>[];
     {
       int index = 0;
       int textOffset = attributesAttribute.textOffset;
       int nameOffset = -1;
-      JavaStringBuilder nameBuilder = new JavaStringBuilder();
+      StringBuffer nameBuffer = new StringBuffer();
       while (index < attributesText.length) {
         int c = attributesText.codeUnitAt(index++);
         if (Character.isWhitespace(c)) {
           if (nameOffset != -1) {
-            nameTokens.add(new PolymerHtmlUnitBuilder_NameToken(nameOffset, nameBuilder.toString()));
-            nameBuilder = new JavaStringBuilder();
+            nameTokens.add(new PolymerHtmlUnitBuilder_NameToken(nameOffset, nameBuffer.toString()));
+            nameBuffer = new StringBuffer();
             nameOffset = -1;
           }
           continue;
@@ -11328,15 +11322,15 @@
         if (nameOffset == -1) {
           nameOffset = textOffset + index - 1;
         }
-        nameBuilder.appendChar(c);
+        nameBuffer.writeCharCode(c);
       }
       if (nameOffset != -1) {
-        nameTokens.add(new PolymerHtmlUnitBuilder_NameToken(nameOffset, nameBuilder.toString()));
-        nameBuilder = new JavaStringBuilder();
+        nameTokens.add(new PolymerHtmlUnitBuilder_NameToken(nameOffset, nameBuffer.toString()));
+        nameBuffer = new StringBuffer();
       }
     }
     // create attributes for name tokens
-    List<PolymerAttributeElement> attributes = [];
+    List<PolymerAttributeElement> attributes = <PolymerAttributeElement>[];
     Set<String> definedNames = new Set();
     ClassElement classElement = _dartElement.classElement;
     for (PolymerHtmlUnitBuilder_NameToken nameToken in nameTokens) {
@@ -11365,7 +11359,7 @@
       }
       attribute.field = field;
     }
-    _htmlElement.attributes = new List.from(attributes);
+    _htmlElement.attributes = attributes;
   }
 
   void _createTagHtmlElement(ht.XmlTagNode node) {
@@ -11634,16 +11628,15 @@
    * @return an array of errors (not `null`, contains no `null`s)
    */
   List<AnalysisError> get errors {
-    Iterable<MapEntry<Source, HashSet<AnalysisError>>> entrySet = getMapEntrySet(_errors);
-    int numEntries = entrySet.length;
+    int numEntries = _errors.length;
     if (numEntries == 0) {
       return AnalysisError.NO_ERRORS;
     }
     List<AnalysisError> resultList = new List<AnalysisError>();
-    for (MapEntry<Source, HashSet<AnalysisError>> entry in entrySet) {
-      resultList.addAll(entry.getValue());
+    for (HashSet<AnalysisError> errors in _errors.values) {
+      resultList.addAll(errors);
     }
-    return new List.from(resultList);
+    return resultList;
   }
 
   /**
@@ -12223,7 +12216,7 @@
   ht.HtmlUnit get resolvedUnit => _resolvedUnit;
 
   @override
-  String get taskDescription => "resolve as Angular template ${source}";
+  String get taskDescription => "resolve as Angular template $source";
 
   @override
   void internalPerform() {
@@ -13178,7 +13171,7 @@
     }
     CachedResult result = resultMap[CONTENT];
     if (result != null && result.state == CacheState.ERROR) {
-      String message = "contentState changing from ${result.state} to ${newState}";
+      String message = "contentState changing from ${result.state} to $newState";
       InstrumentationBuilder builder = Instrumentation.builder2("SourceEntry-validateStateChange");
       builder.data3("message", message);
       //builder.data("source", source.getFullName());
@@ -13399,7 +13392,7 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     List<SourcePriority> priorities = SourcePriority.values;
     bool needsSeparator = false;
     int queueCount = _workQueues.length;
@@ -13407,21 +13400,21 @@
       List<Source> queue = _workQueues[i];
       if (!queue.isEmpty) {
         if (needsSeparator) {
-          builder.append("; ");
+          buffer.write("; ");
         }
-        builder.append(priorities[i]);
-        builder.append(": ");
+        buffer.write(priorities[i]);
+        buffer.write(": ");
         int queueSize = queue.length;
         for (int j = 0; j < queueSize; j++) {
           if (j > 0) {
-            builder.append(", ");
+            buffer.write(", ");
           }
-          builder.append(queue[j].fullName);
+          buffer.write(queue[j].fullName);
         }
         needsSeparator = true;
       }
     }
-    return builder.toString();
+    return buffer.toString();
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/error.dart b/pkg/analyzer/lib/src/generated/error.dart
index ba84adf..a197646 100644
--- a/pkg/analyzer/lib/src/generated/error.dart
+++ b/pkg/analyzer/lib/src/generated/error.dart
@@ -201,16 +201,16 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append((source != null) ? source.fullName : "<unknown source>");
-    builder.append("(");
-    builder.append(_offset);
-    builder.append("..");
-    builder.append(_offset + _length - 1);
-    builder.append("): ");
-    //builder.append("(" + lineNumber + ":" + columnNumber + "): ");
-    builder.append(_message);
-    return builder.toString();
+    StringBuffer buffer = new StringBuffer();
+    buffer.write((source != null) ? source.fullName : "<unknown source>");
+    buffer.write("(");
+    buffer.write(_offset);
+    buffer.write("..");
+    buffer.write(_offset + _length - 1);
+    buffer.write("): ");
+    //buffer.write("(" + lineNumber + ":" + columnNumber + "): ");
+    buffer.write(_message);
+    return buffer.toString();
   }
 }
 
@@ -357,7 +357,7 @@
   ErrorType get type => ErrorType.ANGULAR;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -525,7 +525,7 @@
   ErrorType get type => ErrorType.CHECKED_MODE_COMPILE_TIME_ERROR;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -2089,7 +2089,7 @@
   ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -2769,7 +2769,7 @@
   ErrorType get type => ErrorType.HINT;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -2830,7 +2830,7 @@
   ErrorType get type => ErrorType.STATIC_WARNING;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -2882,7 +2882,7 @@
   ErrorType get type => ErrorType.POLYMER;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -3243,7 +3243,7 @@
   ErrorType get type => ErrorType.STATIC_TYPE_WARNING;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -4173,7 +4173,7 @@
   ErrorType get type => ErrorType.STATIC_WARNING;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -4217,5 +4217,5 @@
   ErrorType get type => ErrorType.TODO;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
\ No newline at end of file
diff --git a/pkg/analyzer/lib/src/generated/html.dart b/pkg/analyzer/lib/src/generated/html.dart
index 1c2a2d8..41ae5ea 100644
--- a/pkg/analyzer/lib/src/generated/html.dart
+++ b/pkg/analyzer/lib/src/generated/html.dart
@@ -248,7 +248,7 @@
             String tag = _tail.lexeme;
             for (String str in _passThroughElements) {
               if (str == tag) {
-                endPassThrough = "</${str}>";
+                endPassThrough = "</$str>";
                 break;
               }
             }
@@ -341,17 +341,17 @@
 }
 
 class ExpressionVisitor_HtmlUnitUtils_getExpression extends ExpressionVisitor {
-  int offset = 0;
+  final int offset;
 
-  List<Expression> result;
+  Expression result;
 
-  ExpressionVisitor_HtmlUnitUtils_getExpression(this.offset, this.result) : super();
+  ExpressionVisitor_HtmlUnitUtils_getExpression(this.offset);
 
   @override
   void visitExpression(Expression expression) {
     Expression at = HtmlUnitUtils._getExpressionAt(expression, offset);
     if (at != null) {
-      result[0] = at;
+      result = at;
       throw new HtmlUnitUtils_FoundExpressionError();
     }
   }
@@ -383,7 +383,7 @@
   /**
    * A set containing the names of tags that do not have a closing tag.
    */
-  static Set<String> SELF_CLOSING = new HashSet<String>.from(JavaArrays.asList(<String> [
+  static Set<String> SELF_CLOSING = new HashSet<String>.from(<String>[
       "area",
       "base",
       "basefont",
@@ -396,7 +396,7 @@
       "link",
       "meta",
       "param",
-      "!"]));
+      "!"]);
 
   /**
    * Given the contents of an embedded expression that occurs at the given offset, parse it as a
@@ -628,11 +628,12 @@
     if (htmlUnit == null) {
       return null;
     }
-    List<XmlAttributeNode> result = [null];
+    RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode visitor
+        = new RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode(offset);
     try {
-      htmlUnit.accept(new RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode(offset, result));
+      htmlUnit.accept(visitor);
     } on HtmlUnitUtils_FoundAttributeNodeError catch (e) {
-      return result[0];
+      return visitor.result;
     }
     return null;
   }
@@ -678,11 +679,12 @@
     if (htmlUnit == null) {
       return null;
     }
-    List<XmlTagNode> result = [null];
+    RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode visitor
+        = new RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode(offset);
     try {
-      htmlUnit.accept(new RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode(offset, result));
+      htmlUnit.accept(visitor);
     } on HtmlUnitUtils_FoundTagNodeError catch (e) {
-      return result[0];
+      return visitor.result;
     }
     return null;
   }
@@ -695,12 +697,13 @@
     if (htmlUnit == null) {
       return null;
     }
-    List<Expression> result = [null];
+    ExpressionVisitor_HtmlUnitUtils_getExpression visitor
+        = new ExpressionVisitor_HtmlUnitUtils_getExpression(offset);
     try {
       // TODO(scheglov) this code is very Angular specific
-      htmlUnit.accept(new ExpressionVisitor_HtmlUnitUtils_getExpression(offset, result));
+      htmlUnit.accept(visitor);
     } on HtmlUnitUtils_FoundExpressionError catch (e) {
-      return result[0];
+      return visitor.result;
     }
     return null;
   }
@@ -819,17 +822,17 @@
 }
 
 class RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode extends RecursiveXmlVisitor<Object> {
-  int offset = 0;
+  final int offset;
 
-  List<XmlAttributeNode> result;
+  XmlAttributeNode result;
 
-  RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode(this.offset, this.result) : super();
+  RecursiveXmlVisitor_HtmlUnitUtils_getAttributeNode(this.offset);
 
   @override
   Object visitXmlAttributeNode(XmlAttributeNode node) {
     Token nameToken = node.nameToken;
     if (nameToken.offset <= offset && offset <= nameToken.end) {
-      result[0] = node;
+      result = node;
       throw new HtmlUnitUtils_FoundAttributeNodeError();
     }
     return super.visitXmlAttributeNode(node);
@@ -837,16 +840,16 @@
 }
 
 class RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode extends RecursiveXmlVisitor<Object> {
-  int offset = 0;
+  final int offset;
 
-  List<XmlTagNode> result;
+  XmlTagNode result;
 
-  RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode(this.offset, this.result) : super();
+  RecursiveXmlVisitor_HtmlUnitUtils_getEnclosingTagNode(this.offset);
 
   @override
   Object visitXmlTagNode(XmlTagNode node) {
     if (node.offset <= offset && offset < node.end) {
-      result[0] = node;
+      result = node;
       super.visitXmlTagNode(node);
       throw new HtmlUnitUtils_FoundTagNodeError();
     }
@@ -1488,12 +1491,9 @@
       }
     }
     if (children != null) {
-      for (JavaIterator iter = new JavaIterator(children); iter.hasNext;) {
-        XmlNode node = iter.next();
+      children.forEach((XmlNode node) {
         node.parent = this;
-      }
-      // This will create ArrayList for exactly given number of elements.
-      return new List.from(children);
+      });
     }
     return children;
   }
@@ -1501,13 +1501,13 @@
   /**
    * This method exists for debugging purposes only.
    */
-  void _appendIdentifier(JavaStringBuilder builder, XmlNode node) {
+  void _appendIdentifier(StringBuffer buffer, XmlNode node) {
     if (node is XmlTagNode) {
-      builder.append(node.tag);
+      buffer.write(node.tag);
     } else if (node is XmlAttributeNode) {
-      builder.append(node.name);
+      buffer.write(node.name);
     } else {
-      builder.append("htmlUnit");
+      buffer.write("htmlUnit");
     }
   }
 
@@ -1515,23 +1515,23 @@
    * This method exists for debugging purposes only.
    */
   String _buildRecursiveStructureMessage(XmlNode newParent) {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("Attempt to create recursive structure: ");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("Attempt to create recursive structure: ");
     XmlNode current = newParent;
     while (current != null) {
       if (!identical(current, newParent)) {
-        builder.append(" -> ");
+        buffer.write(" -> ");
       }
       if (identical(current, this)) {
-        builder.appendChar(0x2A);
-        _appendIdentifier(builder, current);
-        builder.appendChar(0x2A);
+        buffer.writeCharCode(0x2A);
+        _appendIdentifier(buffer, current);
+        buffer.writeCharCode(0x2A);
       } else {
-        _appendIdentifier(builder, current);
+        _appendIdentifier(buffer, current);
       }
       current = current.parent;
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
@@ -1952,27 +1952,27 @@
   Token get beginToken => nodeStart;
 
   /**
-   * Answer a string representing the content contained in the receiver. This includes the textual
-   * representation of any child tag nodes ([getTagNodes]). Whitespace between '&lt;',
-   * '&lt;/', and '>', '/>' is discarded, but all other whitespace is preserved.
-   *
-   * @return the content (not `null`)
+   * Return a string representing the content contained in the receiver. This
+   * includes the textual representation of any child tag nodes ([getTagNodes]).
+   * Whitespace between '&lt;', '&lt;/', and '>', '/>' is discarded, but all
+   * other whitespace is preserved.
    */
   String get content {
     Token token = attributeEnd.next;
     if (identical(token, contentEnd)) {
       return "";
     }
-    //TODO (danrubel): handle CDATA and replace HTML character encodings with the actual characters
+    // TODO(danrubel) Handle CDATA and replace HTML character encodings with
+    // the actual characters.
     String content = token.lexeme;
     token = token.next;
     if (identical(token, contentEnd)) {
       return content;
     }
-    JavaStringBuilder buffer = new JavaStringBuilder();
-    buffer.append(content);
+    StringBuffer buffer = new StringBuffer();
+    buffer.write(content);
     while (!identical(token, contentEnd)) {
-      buffer.append(token.lexeme);
+      buffer.write(token.lexeme);
       token = token.next;
     }
     return buffer.toString();
diff --git a/pkg/analyzer/lib/src/generated/java_core.dart b/pkg/analyzer/lib/src/generated/java_core.dart
index 16cfe12..a816069 100644
--- a/pkg/analyzer/lib/src/generated/java_core.dart
+++ b/pkg/analyzer/lib/src/generated/java_core.dart
@@ -1,7 +1,5 @@
 library java.core;
 
-import "dart:math" as math;
-
 final Stopwatch nanoTimeStopwatch = new Stopwatch();
 
 const int LONG_MAX_VALUE = 0x7fffffffffffffff;
@@ -51,7 +49,6 @@
     }
     return result;
   }
-  static List asList(List list) => list;
 }
 
 class Character {
@@ -119,20 +116,6 @@
   }
 }
 
-class CharSequence {
-  final String _content;
-  CharSequence(this._content);
-  static CharSequence wrap(String content) => new CharBuffer(content);
-  int charAt(int index) => _content.codeUnitAt(index);
-  int length() => _content.length;
-  String subSequence(int start, int end) => _content.substring(start, end);
-}
-
-class CharBuffer extends CharSequence {
-  CharBuffer(String content) : super(content);
-  static CharBuffer wrap(String content) => new CharBuffer(content);
-}
-
 class JavaString {
   static int indexOf(String target, String str, int fromIndex) {
     if (fromIndex > target.length) return -1;
@@ -248,6 +231,10 @@
     return iter.join(separator);
   }
 
+  static void printf(StringBuffer buffer, String fmt, List args) {
+    buffer.write(_printf(fmt, args));
+  }
+
   static String remove(String str, String remove) {
     if (isEmpty(str) || isEmpty(remove)) {
       return str;
@@ -283,11 +270,6 @@
   }
 }
 
-class Math {
-  static num max(num a, num b) => math.max(a, b);
-  static num min(num a, num b) => math.min(a, b);
-}
-
 class RuntimeException extends JavaException {
   RuntimeException({String message: "", Exception cause: null}) :
     super(message, cause);
@@ -298,7 +280,7 @@
   final Exception cause;
   JavaException([this.message = "", this.cause = null]);
   JavaException.withCause(this.cause) : message = null;
-  String toString() => "${runtimeType}: $message $cause";
+  String toString() => "$runtimeType: $message $cause";
 }
 
 class JavaIOException extends JavaException {
@@ -361,65 +343,6 @@
   MissingFormatArgumentException(this.s);
 }
 
-class JavaIterator<E> {
-  Iterable<E> _iterable;
-  List<E> _elements = new List<E>();
-  int _coPos = 0;
-  int _elPos = 0;
-  E _current = null;
-  JavaIterator(this._iterable) {
-    Iterator iterator = _iterable.iterator;
-    while (iterator.moveNext()) {
-      _elements.add(iterator.current);
-    }
-  }
-
-  bool get hasNext {
-    return _elPos < _elements.length;
-  }
-
-  E next() {
-    _current = _elements[_elPos];
-    _coPos++;
-    _elPos++;
-    return _current;
-  }
-
-  void remove() {
-    if (_iterable is List) {
-      _coPos--;
-      (_iterable as List).remove(_coPos);
-    } else if (_iterable is Set) {
-      (_iterable as Set).remove(_current);
-    } else {
-      throw new StateError("Unsupported iterable ${_iterable.runtimeType}");
-    }
-  }
-}
-
-class MapEntry<K, V> {
-  final Map<K, V> _map;
-  final K _key;
-  V _value;
-  MapEntry(this._map, this._key, this._value);
-  K getKey() => _key;
-  V getValue() => _value;
-  V setValue(V v) {
-    V prevValue = _value;
-    _value = v;
-    _map[_key] = v;
-    return prevValue;
-  }
-}
-
-Iterable<MapEntry> getMapEntrySet(Map m) {
-  List<MapEntry> result = [];
-  m.forEach((k, v) {
-    result.add(new MapEntry(m, k, v));
-  });
-  return result;
-}
-
 javaListSet(List list, int index, newValue) {
   var oldValue = list[index];
   list[index] = newValue;
@@ -434,12 +357,6 @@
   return a.containsAll(b) && b.containsAll(a);
 }
 
-javaMapPut(Map target, key, value) {
-  var oldValue = target[key];
-  target[key] = value;
-  return oldValue;
-}
-
 bool javaStringEqualsIgnoreCase(String a, String b) {
   return a.toLowerCase() == b.toLowerCase();
 }
@@ -454,48 +371,6 @@
   return t.substring(toffset, tend) == o.substring(ooffset, oend);
 }
 
-bool javaBooleanOr(bool a, bool b) {
-  return a || b;
-}
-
-bool javaBooleanAnd(bool a, bool b) {
-  return a && b;
-}
-
-int javaByte(Object o) {
-  return (o as int) & 0xFF;
-}
-
-class JavaStringBuilder {
-  StringBuffer sb = new StringBuffer();
-  String toString() => sb.toString();
-  JavaStringBuilder append(x) {
-    sb.write(x);
-    return this;
-  }
-  JavaStringBuilder appendChar(int c) {
-    sb.writeCharCode(c);
-    return this;
-  }
-  int get length => sb.length;
-  void set length(int newLength) {
-    if (newLength < 0) {
-      throw new StringIndexOutOfBoundsException(newLength);
-    }
-    if (sb.length < newLength) {
-      while (sb.length < newLength) {
-        sb.writeCharCode(0);
-      }
-    } else if (sb.length > newLength) {
-      var s = sb.toString().substring(0, newLength);
-      sb = new StringBuffer(s);
-    }
-  }
-  void clear() {
-    sb = new StringBuffer();
-  }
-}
-
 abstract class Enum<E extends Enum> implements Comparable<E> {
   /// The name of this enum constant, as declared in the enum declaration.
   final String name;
diff --git a/pkg/analyzer/lib/src/generated/java_engine.dart b/pkg/analyzer/lib/src/generated/java_engine.dart
index 374586f..0f787cb 100644
--- a/pkg/analyzer/lib/src/generated/java_engine.dart
+++ b/pkg/analyzer/lib/src/generated/java_engine.dart
@@ -40,6 +40,9 @@
     if (str == null || str.isEmpty) {
       return str;
     }
+    if (separator == null) {
+      return str;
+    }
     int pos = str.indexOf(separator);
     if (pos < 0) {
       return str;
@@ -207,24 +210,6 @@
   }
 }
 
-class ArrayUtils {
-  static List add(List target, Object value) {
-    target = new List.from(target);
-    target.add(value);
-    return target;
-  }
-  static List addAt(List target, int index, Object value) {
-    target = new List.from(target);
-    target.insert(index, value);
-    return target;
-  }
-  static List addAll(List target, List source) {
-    List result = new List.from(target);
-    result.addAll(source);
-    return result;
-  }
-}
-
 class ObjectUtilities {
   static int combineHashCodes(int first, int second) => first * 31 + second;
 }
diff --git a/pkg/analyzer/lib/src/generated/java_io.dart b/pkg/analyzer/lib/src/generated/java_io.dart
index b2c95e1..66e38d7 100644
--- a/pkg/analyzer/lib/src/generated/java_io.dart
+++ b/pkg/analyzer/lib/src/generated/java_io.dart
@@ -1,7 +1,7 @@
 library java.io;
 
 import "dart:io";
-import 'java_core.dart' show JavaIOException, CharSequence;
+import 'java_core.dart' show JavaIOException;
 import 'package:path/path.dart' as pathos;
 
 class JavaSystemIO {
diff --git a/pkg/analyzer/lib/src/generated/java_junit.dart b/pkg/analyzer/lib/src/generated/java_junit.dart
deleted file mode 100644
index 6f2c7da..0000000
--- a/pkg/analyzer/lib/src/generated/java_junit.dart
+++ /dev/null
@@ -1,144 +0,0 @@
-library java.junit;
-
-import 'package:unittest/unittest.dart' hide fail;
-import 'package:unittest/unittest.dart' as _ut show fail;
-
-
-class JUnitTestCase {
-  void setUp() {}
-  void tearDown() {}
-  static void fail(String msg) {
-    _ut.fail(msg);
-  }
-  static void assertTrue(bool x) {
-    expect(x, isTrue);
-  }
-  static void assertTrueMsg(String msg, bool x) {
-    expect(x, isTrueMsg(msg));
-  }
-  static void assertFalse(bool x) {
-    expect(x, isFalse);
-  }
-  static void assertFalseMsg(String msg, bool x) {
-    expect(x, isFalseMsg(msg));
-  }
-  static void assertNull(x) {
-    expect(x, isNull);
-  }
-  static void assertNullMsg(String msg, x) {
-    expect(x, isNullMsg(msg));
-  }
-  static void assertNotNull(x) {
-    expect(x, isNotNull);
-  }
-  static void assertNotNullMsg(String msg, x) {
-    expect(x, isNotNullMsg(msg));
-  }
-  static void assertEquals(expected, actual) {
-    expect(actual, equals(expected));
-  }
-  static void assertEqualsMsg(String msg, expected, actual) {
-    expect(actual, equalsMsg(msg, expected));
-  }
-  static void assertSame(expected, actual) {
-    expect(actual, same(expected));
-  }
-  static void assertSameMsg(String msg, expected, actual) {
-    expect(actual, sameMsg(msg, expected));
-  }
-  static void assertNotSame(expected, actual) {
-    expect(actual, notSame(expected));
-  }
-}
-
-runJUnitTest(testInstance, Function testFunction) {
-  testInstance.setUp();
-  try {
-    testFunction();
-  } finally {
-    testInstance.tearDown();
-  }
-}
-
-/**
- * Returns a matches that matches if the value is not the same instance as "object" (`!==`).
- */
-Matcher notSame(expected) => new _IsNotSameAs(expected);
-
-class _IsNotSameAs extends Matcher {
-  final _expected;
-  const _IsNotSameAs(this._expected);
-  bool matches(item, Map matchState) => !identical(item, _expected);
-  Description describe(Description description) =>
-      description.add('not same instance as ').addDescriptionOf(_expected);
-}
-
-Matcher equalsMsg(String msg, expected) => new _EqualsWithMessage(msg, expected);
-class _EqualsWithMessage extends Matcher {
-  final String msg;
-  final expectedValue;
-  const _EqualsWithMessage(this.msg, this.expectedValue);
-  bool matches(item, Map matchState) {
-    return item == expectedValue;
-  }
-  Description describe(Description mismatchDescription) {
-    return mismatchDescription.replace(msg);
-  }
-}
-
-Matcher sameMsg(String msg, expected) => new _IsSameAsWithMessage(msg, expected);
-class _IsSameAsWithMessage extends Matcher {
-  final String msg;
-  final _expected;
-  const _IsSameAsWithMessage(this.msg, this._expected);
-  bool matches(item, Map matchState) => identical(item, _expected);
-  Description describe(Description description) => description.add(msg).addDescriptionOf(_expected);
-}
-
-Matcher isTrueMsg(String msg) => new _IsTrueWithMessage(msg);
-class _IsTrueWithMessage extends Matcher {
-  final String msg;
-  const _IsTrueWithMessage(this.msg);
-  bool matches(item, Map matchState) {
-    return item == true;
-  }
-  Description describe(Description mismatchDescription) {
-    return mismatchDescription.replace(msg);
-  }
-}
-
-Matcher isFalseMsg(String msg) => new _IsFalseWithMessage(msg);
-class _IsFalseWithMessage extends Matcher {
-  final String msg;
-  const _IsFalseWithMessage(this.msg);
-  bool matches(item, Map matchState) {
-    return item == false;
-  }
-  Description describe(Description mismatchDescription) {
-    return mismatchDescription.replace(msg);
-  }
-}
-
-Matcher isNullMsg(String msg) => new _IsNullWithMessage(msg);
-class _IsNullWithMessage extends Matcher {
-  final String msg;
-  const _IsNullWithMessage(this.msg);
-  bool matches(item, Map matchState) {
-    return item == null;
-  }
-  Description describe(Description mismatchDescription) {
-    return mismatchDescription.replace(msg);
-  }
-}
-
-Matcher isNotNullMsg(String msg) => new _IsNotNullWithMessage(msg);
-class _IsNotNullWithMessage extends Matcher {
-  final String msg;
-  const _IsNotNullWithMessage(this.msg);
-  bool matches(item, Map matchState) {
-    return item != null;
-  }
-  Description describe(Description mismatchDescription) {
-    return mismatchDescription.replace(msg);
-  }
-}
diff --git a/pkg/analyzer/lib/src/generated/parser.dart b/pkg/analyzer/lib/src/generated/parser.dart
index c776fb3..a609a4a 100644
--- a/pkg/analyzer/lib/src/generated/parser.dart
+++ b/pkg/analyzer/lib/src/generated/parser.dart
@@ -8,6 +8,8 @@
 library engine.parser;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'java_core.dart';
 import 'java_engine.dart';
 import 'instrumentation.dart';
@@ -1171,7 +1173,7 @@
    * @param visitedNode the visited node that should have been the parent of the node to be replaced
    */
   AstNode _notAChild(AstNode visitedNode) {
-    throw new IncrementalParseException.con1("Internal error: the visited node (a ${visitedNode.runtimeType.toString()}) was not the parent of the node to be replaced (a ${_oldNode.runtimeType.toString()})");
+    throw new IncrementalParseException.con1("Internal error: the visited node (a ${visitedNode.runtimeType}) was not the parent of the node to be replaced (a ${_oldNode.runtimeType})");
   }
 }
 
@@ -1429,15 +1431,15 @@
 
   @override
   String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    bool needsSpace = _appendKeyword(builder, false, abstractKeyword);
-    needsSpace = _appendKeyword(builder, needsSpace, constKeyword);
-    needsSpace = _appendKeyword(builder, needsSpace, externalKeyword);
-    needsSpace = _appendKeyword(builder, needsSpace, factoryKeyword);
-    needsSpace = _appendKeyword(builder, needsSpace, finalKeyword);
-    needsSpace = _appendKeyword(builder, needsSpace, staticKeyword);
-    _appendKeyword(builder, needsSpace, varKeyword);
-    return builder.toString();
+    StringBuffer buffer = new StringBuffer();
+    bool needsSpace = _appendKeyword(buffer, false, abstractKeyword);
+    needsSpace = _appendKeyword(buffer, needsSpace, constKeyword);
+    needsSpace = _appendKeyword(buffer, needsSpace, externalKeyword);
+    needsSpace = _appendKeyword(buffer, needsSpace, factoryKeyword);
+    needsSpace = _appendKeyword(buffer, needsSpace, finalKeyword);
+    needsSpace = _appendKeyword(buffer, needsSpace, staticKeyword);
+    _appendKeyword(buffer, needsSpace, varKeyword);
+    return buffer.toString();
   }
 
   /**
@@ -1449,12 +1451,12 @@
    * @param keyword the keyword to be appended
    * @return `true` if subsequent keywords need to be prefixed with a space
    */
-  bool _appendKeyword(JavaStringBuilder builder, bool needsSpace, Token keyword) {
+  bool _appendKeyword(StringBuffer buffer, bool needsSpace, Token keyword) {
     if (keyword != null) {
       if (needsSpace) {
-        builder.appendChar(0x20);
+        buffer.writeCharCode(0x20);
       }
-      builder.append(keyword.lexeme);
+      buffer.write(keyword.lexeme);
       return true;
     }
     return needsSpace;
@@ -2827,15 +2829,15 @@
    * @param startIndex the index of the first character representing the scalar value
    * @param endIndex the index of the last character representing the scalar value
    */
-  void _appendScalarValue(JavaStringBuilder builder, String escapeSequence, int scalarValue, int startIndex, int endIndex) {
+  void _appendScalarValue(StringBuffer buffer, String escapeSequence, int scalarValue, int startIndex, int endIndex) {
     if (scalarValue < 0 || scalarValue > Character.MAX_CODE_POINT || (scalarValue >= 0xD800 && scalarValue <= 0xDFFF)) {
       _reportErrorForCurrentToken(ParserErrorCode.INVALID_CODE_POINT, [escapeSequence]);
       return;
     }
     if (scalarValue < Character.MAX_VALUE) {
-      builder.appendChar(scalarValue);
+      buffer.writeCharCode(scalarValue);
     } else {
-      builder.append(Character.toChars(scalarValue));
+      buffer.write(Character.toChars(scalarValue));
     }
   }
 
@@ -2872,18 +2874,18 @@
       }
     }
     if (end - start + 1 < 0) {
-      AnalysisEngine.instance.logger.logError("Internal error: computeStringValue(${lexeme}, ${first}, ${last})");
+      AnalysisEngine.instance.logger.logError("Internal error: computeStringValue($lexeme, $first, $last)");
       return "";
     }
     if (isRaw) {
       return lexeme.substring(start, end);
     }
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     int index = start;
     while (index < end) {
-      index = _translateCharacter(builder, lexeme, index);
+      index = _translateCharacter(buffer, lexeme, index);
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
@@ -4526,7 +4528,7 @@
     } else {
       // Internal error: this method should not have been invoked if the current token was something
       // other than one of the above.
-      throw new IllegalStateException("parseDirective invoked in an invalid state; currentToken = ${_currentToken}");
+      throw new IllegalStateException("parseDirective invoked in an invalid state; currentToken = $_currentToken");
     }
   }
 
@@ -4598,9 +4600,8 @@
     if (commentTokens.isEmpty) {
       return null;
     }
-    List<Token> tokens = new List.from(commentTokens);
-    List<CommentReference> references = _parseCommentReferences(tokens);
-    return Comment.createDocumentationCommentWithReferences(tokens, references);
+    List<CommentReference> references = _parseCommentReferences(commentTokens);
+    return Comment.createDocumentationCommentWithReferences(commentTokens, references);
   }
 
   /**
@@ -6442,7 +6443,7 @@
       _reportErrorForCurrentToken(ParserErrorCode.MISSING_IDENTIFIER, []);
       components.add(_createSyntheticToken(TokenType.IDENTIFIER));
     }
-    return new SymbolLiteral(poundSign, new List.from(components));
+    return new SymbolLiteral(poundSign, components);
   }
 
   /**
@@ -6885,7 +6886,7 @@
     if (token.type == TokenType.EOF) {
       token = token.previous;
     }
-    _reportError(new AnalysisError.con2(_source, token.offset, Math.max(token.length, 1), errorCode, arguments));
+    _reportError(new AnalysisError.con2(_source, token.offset, math.max(token.length, 1), errorCode, arguments));
   }
 
   /**
@@ -7366,52 +7367,48 @@
   bool _tokenMatchesString(Token token, String identifier) => token.type == TokenType.IDENTIFIER && token.lexeme == identifier;
 
   /**
-   * Translate the characters at the given index in the given string, appending the translated
-   * character to the given builder. The index is assumed to be valid.
-   *
-   * @param builder the builder to which the translated character is to be appended
-   * @param lexeme the string containing the character(s) to be translated
-   * @param index the index of the character to be translated
-   * @return the index of the next character to be translated
+   * Translate the characters at the given [index] in the given [lexeme],
+   * appending the translated character to the given [buffer]. The index is
+   * assumed to be valid.
    */
-  int _translateCharacter(JavaStringBuilder builder, String lexeme, int index) {
+  int _translateCharacter(StringBuffer buffer, String lexeme, int index) {
     int currentChar = lexeme.codeUnitAt(index);
     if (currentChar != 0x5C) {
-      builder.appendChar(currentChar);
+      buffer.writeCharCode(currentChar);
       return index + 1;
     }
     //
-    // We have found an escape sequence, so we parse the string to determine what kind of escape
-    // sequence and what character to add to the builder.
+    // We have found an escape sequence, so we parse the string to determine
+    // what kind of escape sequence and what character to add to the builder.
     //
     int length = lexeme.length;
     int currentIndex = index + 1;
     if (currentIndex >= length) {
-      // Illegal escape sequence: no char after escape
-      // This cannot actually happen because it would require the escape character to be the last
-      // character in the string, but if it were it would escape the closing quote, leaving the
-      // string unclosed.
+      // Illegal escape sequence: no char after escape.
+      // This cannot actually happen because it would require the escape
+      // character to be the last character in the string, but if it were it
+      // would escape the closing quote, leaving the string unclosed.
       // reportError(ParserErrorCode.MISSING_CHAR_IN_ESCAPE_SEQUENCE);
       return length;
     }
     currentChar = lexeme.codeUnitAt(currentIndex);
     if (currentChar == 0x6E) {
-      builder.appendChar(0xA);
+      buffer.writeCharCode(0xA);
       // newline
     } else if (currentChar == 0x72) {
-      builder.appendChar(0xD);
+      buffer.writeCharCode(0xD);
       // carriage return
     } else if (currentChar == 0x66) {
-      builder.appendChar(0xC);
+      buffer.writeCharCode(0xC);
       // form feed
     } else if (currentChar == 0x62) {
-      builder.appendChar(0x8);
+      buffer.writeCharCode(0x8);
       // backspace
     } else if (currentChar == 0x74) {
-      builder.appendChar(0x9);
+      buffer.writeCharCode(0x9);
       // tab
     } else if (currentChar == 0x76) {
-      builder.appendChar(0xB);
+      buffer.writeCharCode(0xB);
       // vertical tab
     } else if (currentChar == 0x78) {
       if (currentIndex + 2 >= length) {
@@ -7425,7 +7422,9 @@
         // Illegal escape sequence: invalid hex digit
         _reportErrorForCurrentToken(ParserErrorCode.INVALID_HEX_ESCAPE, []);
       } else {
-        builder.appendChar(((Character.digit(firstDigit, 16) << 4) + Character.digit(secondDigit, 16)));
+        int charCode = (Character.digit(firstDigit, 16) << 4)
+            + Character.digit(secondDigit, 16);
+        buffer.writeCharCode(charCode);
       }
       return currentIndex + 3;
     } else if (currentChar == 0x75) {
@@ -7440,7 +7439,9 @@
         currentIndex++;
         if (currentIndex >= length) {
           // Illegal escape sequence: incomplete escape
-          _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
+          _reportErrorForCurrentToken(
+              ParserErrorCode.INVALID_UNICODE_ESCAPE,
+              []);
           return length;
         }
         currentChar = lexeme.codeUnitAt(currentIndex);
@@ -7449,9 +7450,12 @@
         while (currentChar != 0x7D) {
           if (!_isHexDigit(currentChar)) {
             // Illegal escape sequence: invalid hex digit
-            _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
+            _reportErrorForCurrentToken(
+                ParserErrorCode.INVALID_UNICODE_ESCAPE,
+                []);
             currentIndex++;
-            while (currentIndex < length && lexeme.codeUnitAt(currentIndex) != 0x7D) {
+            while (currentIndex < length
+                && lexeme.codeUnitAt(currentIndex) != 0x7D) {
               currentIndex++;
             }
             return currentIndex + 1;
@@ -7461,37 +7465,59 @@
           currentIndex++;
           if (currentIndex >= length) {
             // Illegal escape sequence: incomplete escape
-            _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
+            _reportErrorForCurrentToken(
+                ParserErrorCode.INVALID_UNICODE_ESCAPE,
+                []);
             return length;
           }
           currentChar = lexeme.codeUnitAt(currentIndex);
         }
         if (digitCount < 1 || digitCount > 6) {
           // Illegal escape sequence: not enough or too many hex digits
-          _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
+          _reportErrorForCurrentToken(
+              ParserErrorCode.INVALID_UNICODE_ESCAPE,
+              []);
         }
-        _appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), value, index, currentIndex);
+        _appendScalarValue(
+            buffer,
+            lexeme.substring(index, currentIndex + 1),
+            value,
+            index,
+            currentIndex);
         return currentIndex + 1;
       } else {
         if (currentIndex + 3 >= length) {
           // Illegal escape sequence: not enough hex digits
-          _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
+          _reportErrorForCurrentToken(
+              ParserErrorCode.INVALID_UNICODE_ESCAPE,
+              []);
           return length;
         }
         int firstDigit = currentChar;
         int secondDigit = lexeme.codeUnitAt(currentIndex + 1);
         int thirdDigit = lexeme.codeUnitAt(currentIndex + 2);
         int fourthDigit = lexeme.codeUnitAt(currentIndex + 3);
-        if (!_isHexDigit(firstDigit) || !_isHexDigit(secondDigit) || !_isHexDigit(thirdDigit) || !_isHexDigit(fourthDigit)) {
+        if (!_isHexDigit(firstDigit)
+            || !_isHexDigit(secondDigit)
+            || !_isHexDigit(thirdDigit)
+            || !_isHexDigit(fourthDigit)) {
           // Illegal escape sequence: invalid hex digits
           _reportErrorForCurrentToken(ParserErrorCode.INVALID_UNICODE_ESCAPE, []);
         } else {
-          _appendScalarValue(builder, lexeme.substring(index, currentIndex + 1), (((((Character.digit(firstDigit, 16) << 4) + Character.digit(secondDigit, 16)) << 4) + Character.digit(thirdDigit, 16)) << 4) + Character.digit(fourthDigit, 16), index, currentIndex + 3);
+          _appendScalarValue(
+              buffer,
+              lexeme.substring(index, currentIndex + 1),
+              (((((Character.digit(firstDigit, 16) << 4)
+                  + Character.digit(secondDigit, 16)) << 4)
+                  + Character.digit(thirdDigit, 16)) << 4)
+                  + Character.digit(fourthDigit, 16),
+              index,
+              currentIndex + 3);
         }
         return currentIndex + 4;
       }
     } else {
-      builder.appendChar(currentChar);
+      buffer.writeCharCode(currentChar);
     }
     return currentIndex + 1;
   }
@@ -8299,7 +8325,7 @@
   ErrorType get type => ErrorType.SYNTACTIC_ERROR;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -8353,7 +8379,12 @@
   @override
   bool visitAnnotation(Annotation node) {
     Annotation toNode = this._toNode as Annotation;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.atSign, toNode.atSign), _isEqualNodes(node.name, toNode.name)), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.constructorName, toNode.constructorName)), _isEqualNodes(node.arguments, toNode.arguments))) {
+    if (_and(
+        _isEqualTokens(node.atSign, toNode.atSign),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.constructorName, toNode.constructorName),
+        _isEqualNodes(node.arguments, toNode.arguments))) {
       toNode.element = node.element;
       return true;
     }
@@ -8363,13 +8394,19 @@
   @override
   bool visitArgumentList(ArgumentList node) {
     ArgumentList toNode = this._toNode as ArgumentList;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), _isEqualNodeLists(node.arguments, toNode.arguments)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis));
+    return _and(
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodeLists(node.arguments, toNode.arguments),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis));
   }
 
   @override
   bool visitAsExpression(AsExpression node) {
     AsExpression toNode = this._toNode as AsExpression;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.expression, toNode.expression), _isEqualTokens(node.asOperator, toNode.asOperator)), _isEqualNodes(node.type, toNode.type))) {
+    if (_and(
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.asOperator, toNode.asOperator),
+        _isEqualNodes(node.type, toNode.type))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8380,13 +8417,21 @@
   @override
   bool visitAssertStatement(AssertStatement node) {
     AssertStatement toNode = this._toNode as AssertStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.condition, toNode.condition)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitAssignmentExpression(AssignmentExpression node) {
     AssignmentExpression toNode = this._toNode as AssignmentExpression;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.leftHandSide, toNode.leftHandSide), _isEqualTokens(node.operator, toNode.operator)), _isEqualNodes(node.rightHandSide, toNode.rightHandSide))) {
+    if (_and(
+        _isEqualNodes(node.leftHandSide, toNode.leftHandSide),
+        _isEqualTokens(node.operator, toNode.operator),
+        _isEqualNodes(node.rightHandSide, toNode.rightHandSide))) {
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
@@ -8399,13 +8444,18 @@
   @override
   bool visitAwaitExpression(AwaitExpression node) {
     AwaitExpression toNode = this._toNode as AwaitExpression;
-    return javaBooleanAnd(_isEqualTokens(node.awaitKeyword, toNode.awaitKeyword), _isEqualNodes(node.expression, toNode.expression));
+    return _and(
+        _isEqualTokens(node.awaitKeyword, toNode.awaitKeyword),
+        _isEqualNodes(node.expression, toNode.expression));
   }
 
   @override
   bool visitBinaryExpression(BinaryExpression node) {
     BinaryExpression toNode = this._toNode as BinaryExpression;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.leftOperand, toNode.leftOperand), _isEqualTokens(node.operator, toNode.operator)), _isEqualNodes(node.rightOperand, toNode.rightOperand))) {
+    if (_and(
+        _isEqualNodes(node.leftOperand, toNode.leftOperand),
+        _isEqualTokens(node.operator, toNode.operator),
+        _isEqualNodes(node.rightOperand, toNode.rightOperand))) {
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
@@ -8418,7 +8468,10 @@
   @override
   bool visitBlock(Block node) {
     Block toNode = this._toNode as Block;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftBracket, toNode.leftBracket), _isEqualNodeLists(node.statements, toNode.statements)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.statements, toNode.statements),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
@@ -8430,7 +8483,9 @@
   @override
   bool visitBooleanLiteral(BooleanLiteral node) {
     BooleanLiteral toNode = this._toNode as BooleanLiteral;
-    if (javaBooleanAnd(_isEqualTokens(node.literal, toNode.literal), node.value == toNode.value)) {
+    if (_and(
+        _isEqualTokens(node.literal, toNode.literal),
+        node.value == toNode.value)) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8441,13 +8496,18 @@
   @override
   bool visitBreakStatement(BreakStatement node) {
     BreakStatement toNode = this._toNode as BreakStatement;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.label, toNode.label)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.label, toNode.label),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitCascadeExpression(CascadeExpression node) {
     CascadeExpression toNode = this._toNode as CascadeExpression;
-    if (javaBooleanAnd(_isEqualNodes(node.target, toNode.target), _isEqualNodeLists(node.cascadeSections, toNode.cascadeSections))) {
+    if (_and(
+        _isEqualNodes(node.target, toNode.target),
+        _isEqualNodeLists(node.cascadeSections, toNode.cascadeSections))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8458,19 +8518,51 @@
   @override
   bool visitCatchClause(CatchClause node) {
     CatchClause toNode = this._toNode as CatchClause;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.onKeyword, toNode.onKeyword), _isEqualNodes(node.exceptionType, toNode.exceptionType)), _isEqualTokens(node.catchKeyword, toNode.catchKeyword)), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.exceptionParameter, toNode.exceptionParameter)), _isEqualTokens(node.comma, toNode.comma)), _isEqualNodes(node.stackTraceParameter, toNode.stackTraceParameter)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualNodes(node.body, toNode.body));
+    return _and(
+        _isEqualTokens(node.onKeyword, toNode.onKeyword),
+        _isEqualNodes(node.exceptionType, toNode.exceptionType),
+        _isEqualTokens(node.catchKeyword, toNode.catchKeyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.exceptionParameter, toNode.exceptionParameter),
+        _isEqualTokens(node.comma, toNode.comma),
+        _isEqualNodes(node.stackTraceParameter, toNode.stackTraceParameter),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualNodes(node.body, toNode.body));
   }
 
   @override
   bool visitClassDeclaration(ClassDeclaration node) {
     ClassDeclaration toNode = this._toNode as ClassDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword)), _isEqualTokens(node.classKeyword, toNode.classKeyword)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.typeParameters, toNode.typeParameters)), _isEqualNodes(node.extendsClause, toNode.extendsClause)), _isEqualNodes(node.withClause, toNode.withClause)), _isEqualNodes(node.implementsClause, toNode.implementsClause)), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodeLists(node.members, toNode.members)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword),
+        _isEqualTokens(node.classKeyword, toNode.classKeyword),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.typeParameters, toNode.typeParameters),
+        _isEqualNodes(node.extendsClause, toNode.extendsClause),
+        _isEqualNodes(node.withClause, toNode.withClause),
+        _isEqualNodes(node.implementsClause, toNode.implementsClause),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.members, toNode.members),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitClassTypeAlias(ClassTypeAlias node) {
     ClassTypeAlias toNode = this._toNode as ClassTypeAlias;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.typeParameters, toNode.typeParameters)), _isEqualTokens(node.equals, toNode.equals)), _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword)), _isEqualNodes(node.superclass, toNode.superclass)), _isEqualNodes(node.withClause, toNode.withClause)), _isEqualNodes(node.implementsClause, toNode.implementsClause)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.typeParameters, toNode.typeParameters),
+        _isEqualTokens(node.equals, toNode.equals),
+        _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword),
+        _isEqualNodes(node.superclass, toNode.superclass),
+        _isEqualNodes(node.withClause, toNode.withClause),
+        _isEqualNodes(node.implementsClause, toNode.implementsClause),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
@@ -8482,13 +8574,20 @@
   @override
   bool visitCommentReference(CommentReference node) {
     CommentReference toNode = this._toNode as CommentReference;
-    return javaBooleanAnd(_isEqualTokens(node.newKeyword, toNode.newKeyword), _isEqualNodes(node.identifier, toNode.identifier));
+    return _and(
+        _isEqualTokens(node.newKeyword, toNode.newKeyword),
+        _isEqualNodes(node.identifier, toNode.identifier));
   }
 
   @override
   bool visitCompilationUnit(CompilationUnit node) {
     CompilationUnit toNode = this._toNode as CompilationUnit;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.beginToken, toNode.beginToken), _isEqualNodes(node.scriptTag, toNode.scriptTag)), _isEqualNodeLists(node.directives, toNode.directives)), _isEqualNodeLists(node.declarations, toNode.declarations)), _isEqualTokens(node.endToken, toNode.endToken))) {
+    if (_and(
+        _isEqualTokens(node.beginToken, toNode.beginToken),
+        _isEqualNodes(node.scriptTag, toNode.scriptTag),
+        _isEqualNodeLists(node.directives, toNode.directives),
+        _isEqualNodeLists(node.declarations, toNode.declarations),
+        _isEqualTokens(node.endToken, toNode.endToken))) {
       toNode.element = node.element;
       return true;
     }
@@ -8498,7 +8597,12 @@
   @override
   bool visitConditionalExpression(ConditionalExpression node) {
     ConditionalExpression toNode = this._toNode as ConditionalExpression;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.condition, toNode.condition), _isEqualTokens(node.question, toNode.question)), _isEqualNodes(node.thenExpression, toNode.thenExpression)), _isEqualTokens(node.colon, toNode.colon)), _isEqualNodes(node.elseExpression, toNode.elseExpression))) {
+    if (_and(
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.question, toNode.question),
+        _isEqualNodes(node.thenExpression, toNode.thenExpression),
+        _isEqualTokens(node.colon, toNode.colon),
+        _isEqualNodes(node.elseExpression, toNode.elseExpression))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8509,7 +8613,20 @@
   @override
   bool visitConstructorDeclaration(ConstructorDeclaration node) {
     ConstructorDeclaration toNode = this._toNode as ConstructorDeclaration;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.externalKeyword, toNode.externalKeyword)), _isEqualTokens(node.constKeyword, toNode.constKeyword)), _isEqualTokens(node.factoryKeyword, toNode.factoryKeyword)), _isEqualNodes(node.returnType, toNode.returnType)), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.parameters, toNode.parameters)), _isEqualTokens(node.separator, toNode.separator)), _isEqualNodeLists(node.initializers, toNode.initializers)), _isEqualNodes(node.redirectedConstructor, toNode.redirectedConstructor)), _isEqualNodes(node.body, toNode.body))) {
+    if (_and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.externalKeyword, toNode.externalKeyword),
+        _isEqualTokens(node.constKeyword, toNode.constKeyword),
+        _isEqualTokens(node.factoryKeyword, toNode.factoryKeyword),
+        _isEqualNodes(node.returnType, toNode.returnType),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.parameters, toNode.parameters),
+        _isEqualTokens(node.separator, toNode.separator),
+        _isEqualNodeLists(node.initializers, toNode.initializers),
+        _isEqualNodes(node.redirectedConstructor, toNode.redirectedConstructor),
+        _isEqualNodes(node.body, toNode.body))) {
       toNode.element = node.element;
       return true;
     }
@@ -8519,13 +8636,21 @@
   @override
   bool visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
     ConstructorFieldInitializer toNode = this._toNode as ConstructorFieldInitializer;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.fieldName, toNode.fieldName)), _isEqualTokens(node.equals, toNode.equals)), _isEqualNodes(node.expression, toNode.expression));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.fieldName, toNode.fieldName),
+        _isEqualTokens(node.equals, toNode.equals),
+        _isEqualNodes(node.expression, toNode.expression));
   }
 
   @override
   bool visitConstructorName(ConstructorName node) {
     ConstructorName toNode = this._toNode as ConstructorName;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.type, toNode.type), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.name, toNode.name))) {
+    if (_and(
+        _isEqualNodes(node.type, toNode.type),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.name, toNode.name))) {
       toNode.staticElement = node.staticElement;
       return true;
     }
@@ -8535,31 +8660,52 @@
   @override
   bool visitContinueStatement(ContinueStatement node) {
     ContinueStatement toNode = this._toNode as ContinueStatement;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.label, toNode.label)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.label, toNode.label),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitDeclaredIdentifier(DeclaredIdentifier node) {
     DeclaredIdentifier toNode = this._toNode as DeclaredIdentifier;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.type, toNode.type)), _isEqualNodes(node.identifier, toNode.identifier));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.type, toNode.type),
+        _isEqualNodes(node.identifier, toNode.identifier));
   }
 
   @override
   bool visitDefaultFormalParameter(DefaultFormalParameter node) {
     DefaultFormalParameter toNode = this._toNode as DefaultFormalParameter;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.parameter, toNode.parameter), node.kind == toNode.kind), _isEqualTokens(node.separator, toNode.separator)), _isEqualNodes(node.defaultValue, toNode.defaultValue));
+    return _and(
+        _isEqualNodes(node.parameter, toNode.parameter),
+        node.kind == toNode.kind,
+        _isEqualTokens(node.separator, toNode.separator),
+        _isEqualNodes(node.defaultValue, toNode.defaultValue));
   }
 
   @override
   bool visitDoStatement(DoStatement node) {
     DoStatement toNode = this._toNode as DoStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.doKeyword, toNode.doKeyword), _isEqualNodes(node.body, toNode.body)), _isEqualTokens(node.whileKeyword, toNode.whileKeyword)), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.condition, toNode.condition)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.doKeyword, toNode.doKeyword),
+        _isEqualNodes(node.body, toNode.body),
+        _isEqualTokens(node.whileKeyword, toNode.whileKeyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitDoubleLiteral(DoubleLiteral node) {
     DoubleLiteral toNode = this._toNode as DoubleLiteral;
-    if (javaBooleanAnd(_isEqualTokens(node.literal, toNode.literal), node.value == toNode.value)) {
+    if (_and(
+        _isEqualTokens(node.literal, toNode.literal),
+            node.value == toNode.value)) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8582,19 +8728,35 @@
   @override
   bool visitEnumConstantDeclaration(EnumConstantDeclaration node) {
     EnumConstantDeclaration toNode = this._toNode as EnumConstantDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualNodes(node.name, toNode.name));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualNodes(node.name, toNode.name));
   }
 
   @override
   bool visitEnumDeclaration(EnumDeclaration node) {
     EnumDeclaration toNode = this._toNode as EnumDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.name, toNode.name)), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodeLists(node.constants, toNode.constants)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.constants, toNode.constants),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitExportDirective(ExportDirective node) {
     ExportDirective toNode = this._toNode as ExportDirective;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.uri, toNode.uri)), _isEqualNodeLists(node.combinators, toNode.combinators)), _isEqualTokens(node.semicolon, toNode.semicolon))) {
+    if (_and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.uri, toNode.uri),
+        _isEqualNodeLists(node.combinators, toNode.combinators),
+        _isEqualTokens(node.semicolon, toNode.semicolon))) {
       toNode.element = node.element;
       return true;
     }
@@ -8604,55 +8766,102 @@
   @override
   bool visitExpressionFunctionBody(ExpressionFunctionBody node) {
     ExpressionFunctionBody toNode = this._toNode as ExpressionFunctionBody;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.functionDefinition, toNode.functionDefinition), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.functionDefinition, toNode.functionDefinition),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitExpressionStatement(ExpressionStatement node) {
     ExpressionStatement toNode = this._toNode as ExpressionStatement;
-    return javaBooleanAnd(_isEqualNodes(node.expression, toNode.expression), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitExtendsClause(ExtendsClause node) {
     ExtendsClause toNode = this._toNode as ExtendsClause;
-    return javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.superclass, toNode.superclass));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.superclass, toNode.superclass));
   }
 
   @override
   bool visitFieldDeclaration(FieldDeclaration node) {
     FieldDeclaration toNode = this._toNode as FieldDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.staticKeyword, toNode.staticKeyword)), _isEqualNodes(node.fields, toNode.fields)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.staticKeyword, toNode.staticKeyword),
+        _isEqualNodes(node.fields, toNode.fields),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitFieldFormalParameter(FieldFormalParameter node) {
     FieldFormalParameter toNode = this._toNode as FieldFormalParameter;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.type, toNode.type)), _isEqualTokens(node.thisToken, toNode.thisToken)), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.identifier, toNode.identifier));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.type, toNode.type),
+        _isEqualTokens(node.thisToken, toNode.thisToken),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.identifier, toNode.identifier));
   }
 
   @override
   bool visitForEachStatement(ForEachStatement node) {
     ForEachStatement toNode = this._toNode as ForEachStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.forKeyword, toNode.forKeyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.loopVariable, toNode.loopVariable)), _isEqualTokens(node.inKeyword, toNode.inKeyword)), _isEqualNodes(node.iterator, toNode.iterator)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualNodes(node.body, toNode.body));
+    return _and(
+        _isEqualTokens(node.forKeyword, toNode.forKeyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.loopVariable, toNode.loopVariable),
+        _isEqualTokens(node.inKeyword, toNode.inKeyword),
+        _isEqualNodes(node.iterator, toNode.iterator),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualNodes(node.body, toNode.body));
   }
 
   @override
   bool visitFormalParameterList(FormalParameterList node) {
     FormalParameterList toNode = this._toNode as FormalParameterList;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), _isEqualNodeLists(node.parameters, toNode.parameters)), _isEqualTokens(node.leftDelimiter, toNode.leftDelimiter)), _isEqualTokens(node.rightDelimiter, toNode.rightDelimiter)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis));
+    return _and(
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodeLists(node.parameters, toNode.parameters),
+        _isEqualTokens(node.leftDelimiter, toNode.leftDelimiter),
+        _isEqualTokens(node.rightDelimiter, toNode.rightDelimiter),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis));
   }
 
   @override
   bool visitForStatement(ForStatement node) {
     ForStatement toNode = this._toNode as ForStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.forKeyword, toNode.forKeyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.variables, toNode.variables)), _isEqualNodes(node.initialization, toNode.initialization)), _isEqualTokens(node.leftSeparator, toNode.leftSeparator)), _isEqualNodes(node.condition, toNode.condition)), _isEqualTokens(node.rightSeparator, toNode.rightSeparator)), _isEqualNodeLists(node.updaters, toNode.updaters)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualNodes(node.body, toNode.body));
+    return _and(_isEqualTokens(node.forKeyword, toNode.forKeyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.variables, toNode.variables),
+        _isEqualNodes(node.initialization, toNode.initialization),
+        _isEqualTokens(node.leftSeparator, toNode.leftSeparator),
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.rightSeparator, toNode.rightSeparator),
+        _isEqualNodeLists(node.updaters, toNode.updaters),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualNodes(node.body, toNode.body));
   }
 
   @override
   bool visitFunctionDeclaration(FunctionDeclaration node) {
     FunctionDeclaration toNode = this._toNode as FunctionDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.externalKeyword, toNode.externalKeyword)), _isEqualNodes(node.returnType, toNode.returnType)), _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.functionExpression, toNode.functionExpression));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.externalKeyword, toNode.externalKeyword),
+        _isEqualNodes(node.returnType, toNode.returnType),
+        _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.functionExpression, toNode.functionExpression));
   }
 
   @override
@@ -8664,7 +8873,9 @@
   @override
   bool visitFunctionExpression(FunctionExpression node) {
     FunctionExpression toNode = this._toNode as FunctionExpression;
-    if (javaBooleanAnd(_isEqualNodes(node.parameters, toNode.parameters), _isEqualNodes(node.body, toNode.body))) {
+    if (_and(
+        _isEqualNodes(node.parameters, toNode.parameters),
+        _isEqualNodes(node.body, toNode.body))) {
       toNode.element = node.element;
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
@@ -8676,7 +8887,9 @@
   @override
   bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
     FunctionExpressionInvocation toNode = this._toNode as FunctionExpressionInvocation;
-    if (javaBooleanAnd(_isEqualNodes(node.function, toNode.function), _isEqualNodes(node.argumentList, toNode.argumentList))) {
+    if (_and(
+        _isEqualNodes(node.function, toNode.function),
+        _isEqualNodes(node.argumentList, toNode.argumentList))) {
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
@@ -8689,37 +8902,69 @@
   @override
   bool visitFunctionTypeAlias(FunctionTypeAlias node) {
     FunctionTypeAlias toNode = this._toNode as FunctionTypeAlias;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.returnType, toNode.returnType)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.typeParameters, toNode.typeParameters)), _isEqualNodes(node.parameters, toNode.parameters)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.returnType, toNode.returnType),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.typeParameters, toNode.typeParameters),
+        _isEqualNodes(node.parameters, toNode.parameters),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
     FunctionTypedFormalParameter toNode = this._toNode as FunctionTypedFormalParameter;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualNodes(node.returnType, toNode.returnType)), _isEqualNodes(node.identifier, toNode.identifier)), _isEqualNodes(node.parameters, toNode.parameters));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualNodes(node.returnType, toNode.returnType),
+        _isEqualNodes(node.identifier, toNode.identifier),
+        _isEqualNodes(node.parameters, toNode.parameters));
   }
 
   @override
   bool visitHideCombinator(HideCombinator node) {
     HideCombinator toNode = this._toNode as HideCombinator;
-    return javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodeLists(node.hiddenNames, toNode.hiddenNames));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodeLists(node.hiddenNames, toNode.hiddenNames));
   }
 
   @override
   bool visitIfStatement(IfStatement node) {
     IfStatement toNode = this._toNode as IfStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.ifKeyword, toNode.ifKeyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.condition, toNode.condition)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualNodes(node.thenStatement, toNode.thenStatement)), _isEqualTokens(node.elseKeyword, toNode.elseKeyword)), _isEqualNodes(node.elseStatement, toNode.elseStatement));
+    return _and(
+        _isEqualTokens(node.ifKeyword, toNode.ifKeyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualNodes(node.thenStatement, toNode.thenStatement),
+        _isEqualTokens(node.elseKeyword, toNode.elseKeyword),
+        _isEqualNodes(node.elseStatement, toNode.elseStatement));
   }
 
   @override
   bool visitImplementsClause(ImplementsClause node) {
     ImplementsClause toNode = this._toNode as ImplementsClause;
-    return javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodeLists(node.interfaces, toNode.interfaces));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodeLists(node.interfaces, toNode.interfaces));
   }
 
   @override
   bool visitImportDirective(ImportDirective node) {
     ImportDirective toNode = this._toNode as ImportDirective;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.uri, toNode.uri)), _isEqualTokens(node.asToken, toNode.asToken)), _isEqualNodes(node.prefix, toNode.prefix)), _isEqualNodeLists(node.combinators, toNode.combinators)), _isEqualTokens(node.semicolon, toNode.semicolon))) {
+    if (_and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.uri, toNode.uri),
+        _isEqualTokens(node.asToken, toNode.asToken),
+        _isEqualNodes(node.prefix, toNode.prefix),
+        _isEqualNodeLists(node.combinators, toNode.combinators),
+        _isEqualTokens(node.semicolon, toNode.semicolon))) {
       toNode.element = node.element;
       return true;
     }
@@ -8729,7 +8974,11 @@
   @override
   bool visitIndexExpression(IndexExpression node) {
     IndexExpression toNode = this._toNode as IndexExpression;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.target, toNode.target), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodes(node.index, toNode.index)), _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
+    if (_and(
+        _isEqualNodes(node.target, toNode.target),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodes(node.index, toNode.index),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
       toNode.auxiliaryElements = node.auxiliaryElements;
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
@@ -8743,7 +8992,10 @@
   @override
   bool visitInstanceCreationExpression(InstanceCreationExpression node) {
     InstanceCreationExpression toNode = this._toNode as InstanceCreationExpression;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.constructorName, toNode.constructorName)), _isEqualNodes(node.argumentList, toNode.argumentList))) {
+    if (_and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.constructorName, toNode.constructorName),
+        _isEqualNodes(node.argumentList, toNode.argumentList))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
       toNode.staticType = node.staticType;
@@ -8755,7 +9007,9 @@
   @override
   bool visitIntegerLiteral(IntegerLiteral node) {
     IntegerLiteral toNode = this._toNode as IntegerLiteral;
-    if (javaBooleanAnd(_isEqualTokens(node.literal, toNode.literal), identical(node.value, toNode.value))) {
+    if (_and(
+        _isEqualTokens(node.literal, toNode.literal),
+        node.value == toNode.value)) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8766,19 +9020,28 @@
   @override
   bool visitInterpolationExpression(InterpolationExpression node) {
     InterpolationExpression toNode = this._toNode as InterpolationExpression;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftBracket, toNode.leftBracket), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitInterpolationString(InterpolationString node) {
     InterpolationString toNode = this._toNode as InterpolationString;
-    return javaBooleanAnd(_isEqualTokens(node.contents, toNode.contents), node.value == toNode.value);
+    return _and(
+        _isEqualTokens(node.contents, toNode.contents),
+            node.value == toNode.value);
   }
 
   @override
   bool visitIsExpression(IsExpression node) {
     IsExpression toNode = this._toNode as IsExpression;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.expression, toNode.expression), _isEqualTokens(node.isOperator, toNode.isOperator)), _isEqualTokens(node.notOperator, toNode.notOperator)), _isEqualNodes(node.type, toNode.type))) {
+    if (_and(
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.isOperator, toNode.isOperator),
+        _isEqualTokens(node.notOperator, toNode.notOperator),
+        _isEqualNodes(node.type, toNode.type))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8789,19 +9052,28 @@
   @override
   bool visitLabel(Label node) {
     Label toNode = this._toNode as Label;
-    return javaBooleanAnd(_isEqualNodes(node.label, toNode.label), _isEqualTokens(node.colon, toNode.colon));
+    return _and(
+        _isEqualNodes(node.label, toNode.label),
+        _isEqualTokens(node.colon, toNode.colon));
   }
 
   @override
   bool visitLabeledStatement(LabeledStatement node) {
     LabeledStatement toNode = this._toNode as LabeledStatement;
-    return javaBooleanAnd(_isEqualNodeLists(node.labels, toNode.labels), _isEqualNodes(node.statement, toNode.statement));
+    return _and(
+        _isEqualNodeLists(node.labels, toNode.labels),
+        _isEqualNodes(node.statement, toNode.statement));
   }
 
   @override
   bool visitLibraryDirective(LibraryDirective node) {
     LibraryDirective toNode = this._toNode as LibraryDirective;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.libraryToken, toNode.libraryToken)), _isEqualNodes(node.name, toNode.name)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.libraryToken, toNode.libraryToken),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
@@ -8818,7 +9090,12 @@
   @override
   bool visitListLiteral(ListLiteral node) {
     ListLiteral toNode = this._toNode as ListLiteral;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.constKeyword, toNode.constKeyword), _isEqualNodes(node.typeArguments, toNode.typeArguments)), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodeLists(node.elements, toNode.elements)), _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
+    if (_and(
+        _isEqualTokens(node.constKeyword, toNode.constKeyword),
+        _isEqualNodes(node.typeArguments, toNode.typeArguments),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.elements, toNode.elements),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8829,7 +9106,12 @@
   @override
   bool visitMapLiteral(MapLiteral node) {
     MapLiteral toNode = this._toNode as MapLiteral;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.constKeyword, toNode.constKeyword), _isEqualNodes(node.typeArguments, toNode.typeArguments)), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodeLists(node.entries, toNode.entries)), _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
+    if (_and(
+        _isEqualTokens(node.constKeyword, toNode.constKeyword),
+        _isEqualNodes(node.typeArguments, toNode.typeArguments),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.entries, toNode.entries),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8840,19 +9122,36 @@
   @override
   bool visitMapLiteralEntry(MapLiteralEntry node) {
     MapLiteralEntry toNode = this._toNode as MapLiteralEntry;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.key, toNode.key), _isEqualTokens(node.separator, toNode.separator)), _isEqualNodes(node.value, toNode.value));
+    return _and(
+        _isEqualNodes(node.key, toNode.key),
+        _isEqualTokens(node.separator, toNode.separator),
+        _isEqualNodes(node.value, toNode.value));
   }
 
   @override
   bool visitMethodDeclaration(MethodDeclaration node) {
     MethodDeclaration toNode = this._toNode as MethodDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.externalKeyword, toNode.externalKeyword)), _isEqualTokens(node.modifierKeyword, toNode.modifierKeyword)), _isEqualNodes(node.returnType, toNode.returnType)), _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword)), _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword)), _isEqualNodes(node.name, toNode.name)), _isEqualNodes(node.parameters, toNode.parameters)), _isEqualNodes(node.body, toNode.body));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.externalKeyword, toNode.externalKeyword),
+        _isEqualTokens(node.modifierKeyword, toNode.modifierKeyword),
+        _isEqualNodes(node.returnType, toNode.returnType),
+        _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword),
+        _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.parameters, toNode.parameters),
+        _isEqualNodes(node.body, toNode.body));
   }
 
   @override
   bool visitMethodInvocation(MethodInvocation node) {
     MethodInvocation toNode = this._toNode as MethodInvocation;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.target, toNode.target), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.methodName, toNode.methodName)), _isEqualNodes(node.argumentList, toNode.argumentList))) {
+    if (_and(
+        _isEqualNodes(node.target, toNode.target),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.methodName, toNode.methodName),
+        _isEqualNodes(node.argumentList, toNode.argumentList))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8863,7 +9162,9 @@
   @override
   bool visitNamedExpression(NamedExpression node) {
     NamedExpression toNode = this._toNode as NamedExpression;
-    if (javaBooleanAnd(_isEqualNodes(node.name, toNode.name), _isEqualNodes(node.expression, toNode.expression))) {
+    if (_and(
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.expression, toNode.expression))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8874,13 +9175,18 @@
   @override
   bool visitNativeClause(NativeClause node) {
     NativeClause toNode = this._toNode as NativeClause;
-    return javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.name, toNode.name));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.name, toNode.name));
   }
 
   @override
   bool visitNativeFunctionBody(NativeFunctionBody node) {
     NativeFunctionBody toNode = this._toNode as NativeFunctionBody;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.nativeToken, toNode.nativeToken), _isEqualNodes(node.stringLiteral, toNode.stringLiteral)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.nativeToken, toNode.nativeToken),
+        _isEqualNodes(node.stringLiteral, toNode.stringLiteral),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
@@ -8897,7 +9203,10 @@
   @override
   bool visitParenthesizedExpression(ParenthesizedExpression node) {
     ParenthesizedExpression toNode = this._toNode as ParenthesizedExpression;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis))) {
+    if (_and(
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8908,7 +9217,12 @@
   @override
   bool visitPartDirective(PartDirective node) {
     PartDirective toNode = this._toNode as PartDirective;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.partToken, toNode.partToken)), _isEqualNodes(node.uri, toNode.uri)), _isEqualTokens(node.semicolon, toNode.semicolon))) {
+    if (_and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.partToken, toNode.partToken),
+        _isEqualNodes(node.uri, toNode.uri),
+        _isEqualTokens(node.semicolon, toNode.semicolon))) {
       toNode.element = node.element;
       return true;
     }
@@ -8918,7 +9232,13 @@
   @override
   bool visitPartOfDirective(PartOfDirective node) {
     PartOfDirective toNode = this._toNode as PartOfDirective;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.partToken, toNode.partToken)), _isEqualTokens(node.ofToken, toNode.ofToken)), _isEqualNodes(node.libraryName, toNode.libraryName)), _isEqualTokens(node.semicolon, toNode.semicolon))) {
+    if (_and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.partToken, toNode.partToken),
+        _isEqualTokens(node.ofToken, toNode.ofToken),
+        _isEqualNodes(node.libraryName, toNode.libraryName),
+        _isEqualTokens(node.semicolon, toNode.semicolon))) {
       toNode.element = node.element;
       return true;
     }
@@ -8928,7 +9248,9 @@
   @override
   bool visitPostfixExpression(PostfixExpression node) {
     PostfixExpression toNode = this._toNode as PostfixExpression;
-    if (javaBooleanAnd(_isEqualNodes(node.operand, toNode.operand), _isEqualTokens(node.operator, toNode.operator))) {
+    if (_and(
+        _isEqualNodes(node.operand, toNode.operand),
+        _isEqualTokens(node.operator, toNode.operator))) {
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
@@ -8941,7 +9263,10 @@
   @override
   bool visitPrefixedIdentifier(PrefixedIdentifier node) {
     PrefixedIdentifier toNode = this._toNode as PrefixedIdentifier;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.prefix, toNode.prefix), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.identifier, toNode.identifier))) {
+    if (_and(
+        _isEqualNodes(node.prefix, toNode.prefix),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.identifier, toNode.identifier))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8952,7 +9277,9 @@
   @override
   bool visitPrefixExpression(PrefixExpression node) {
     PrefixExpression toNode = this._toNode as PrefixExpression;
-    if (javaBooleanAnd(_isEqualTokens(node.operator, toNode.operator), _isEqualNodes(node.operand, toNode.operand))) {
+    if (_and(
+        _isEqualTokens(node.operator, toNode.operator),
+        _isEqualNodes(node.operand, toNode.operand))) {
       toNode.propagatedElement = node.propagatedElement;
       toNode.propagatedType = node.propagatedType;
       toNode.staticElement = node.staticElement;
@@ -8965,7 +9292,10 @@
   @override
   bool visitPropertyAccess(PropertyAccess node) {
     PropertyAccess toNode = this._toNode as PropertyAccess;
-    if (javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.target, toNode.target), _isEqualTokens(node.operator, toNode.operator)), _isEqualNodes(node.propertyName, toNode.propertyName))) {
+    if (_and(
+        _isEqualNodes(node.target, toNode.target),
+        _isEqualTokens(node.operator, toNode.operator),
+        _isEqualNodes(node.propertyName, toNode.propertyName))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -8976,7 +9306,11 @@
   @override
   bool visitRedirectingConstructorInvocation(RedirectingConstructorInvocation node) {
     RedirectingConstructorInvocation toNode = this._toNode as RedirectingConstructorInvocation;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.constructorName, toNode.constructorName)), _isEqualNodes(node.argumentList, toNode.argumentList))) {
+    if (_and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.constructorName, toNode.constructorName),
+        _isEqualNodes(node.argumentList, toNode.argumentList))) {
       toNode.staticElement = node.staticElement;
       return true;
     }
@@ -8997,7 +9331,10 @@
   @override
   bool visitReturnStatement(ReturnStatement node) {
     ReturnStatement toNode = this._toNode as ReturnStatement;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
@@ -9009,13 +9346,20 @@
   @override
   bool visitShowCombinator(ShowCombinator node) {
     ShowCombinator toNode = this._toNode as ShowCombinator;
-    return javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodeLists(node.shownNames, toNode.shownNames));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodeLists(node.shownNames, toNode.shownNames));
   }
 
   @override
   bool visitSimpleFormalParameter(SimpleFormalParameter node) {
     SimpleFormalParameter toNode = this._toNode as SimpleFormalParameter;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.type, toNode.type)), _isEqualNodes(node.identifier, toNode.identifier));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.type, toNode.type),
+        _isEqualNodes(node.identifier, toNode.identifier));
   }
 
   @override
@@ -9035,7 +9379,9 @@
   @override
   bool visitSimpleStringLiteral(SimpleStringLiteral node) {
     SimpleStringLiteral toNode = this._toNode as SimpleStringLiteral;
-    if (javaBooleanAnd(_isEqualTokens(node.literal, toNode.literal), identical(node.value, toNode.value))) {
+    if (_and(
+        _isEqualTokens(node.literal, toNode.literal),
+        node.value == toNode.value)) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -9057,7 +9403,11 @@
   @override
   bool visitSuperConstructorInvocation(SuperConstructorInvocation node) {
     SuperConstructorInvocation toNode = this._toNode as SuperConstructorInvocation;
-    if (javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.period, toNode.period)), _isEqualNodes(node.constructorName, toNode.constructorName)), _isEqualNodes(node.argumentList, toNode.argumentList))) {
+    if (_and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.period, toNode.period),
+        _isEqualNodes(node.constructorName, toNode.constructorName),
+        _isEqualNodes(node.argumentList, toNode.argumentList))) {
       toNode.staticElement = node.staticElement;
       return true;
     }
@@ -9078,25 +9428,43 @@
   @override
   bool visitSwitchCase(SwitchCase node) {
     SwitchCase toNode = this._toNode as SwitchCase;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodeLists(node.labels, toNode.labels), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.colon, toNode.colon)), _isEqualNodeLists(node.statements, toNode.statements));
+    return _and(
+        _isEqualNodeLists(node.labels, toNode.labels),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.colon, toNode.colon),
+        _isEqualNodeLists(node.statements, toNode.statements));
   }
 
   @override
   bool visitSwitchDefault(SwitchDefault node) {
     SwitchDefault toNode = this._toNode as SwitchDefault;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodeLists(node.labels, toNode.labels), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualTokens(node.colon, toNode.colon)), _isEqualNodeLists(node.statements, toNode.statements));
+    return _and(
+        _isEqualNodeLists(node.labels, toNode.labels),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.colon, toNode.colon),
+        _isEqualNodeLists(node.statements, toNode.statements));
   }
 
   @override
   bool visitSwitchStatement(SwitchStatement node) {
     SwitchStatement toNode = this._toNode as SwitchStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualTokens(node.leftBracket, toNode.leftBracket)), _isEqualNodeLists(node.members, toNode.members)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.members, toNode.members),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitSymbolLiteral(SymbolLiteral node) {
     SymbolLiteral toNode = this._toNode as SymbolLiteral;
-    if (javaBooleanAnd(_isEqualTokens(node.poundSign, toNode.poundSign), _isEqualTokenLists(node.components, toNode.components))) {
+    if (_and(
+        _isEqualTokens(node.poundSign, toNode.poundSign),
+        _isEqualTokenLists(node.components, toNode.components))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -9118,7 +9486,9 @@
   @override
   bool visitThrowExpression(ThrowExpression node) {
     ThrowExpression toNode = this._toNode as ThrowExpression;
-    if (javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualNodes(node.expression, toNode.expression))) {
+    if (_and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.expression, toNode.expression))) {
       toNode.propagatedType = node.propagatedType;
       toNode.staticType = node.staticType;
       return true;
@@ -9129,25 +9499,39 @@
   @override
   bool visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
     TopLevelVariableDeclaration toNode = this._toNode as TopLevelVariableDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualNodes(node.variables, toNode.variables)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualNodes(node.variables, toNode.variables),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitTryStatement(TryStatement node) {
     TryStatement toNode = this._toNode as TryStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.tryKeyword, toNode.tryKeyword), _isEqualNodes(node.body, toNode.body)), _isEqualNodeLists(node.catchClauses, toNode.catchClauses)), _isEqualTokens(node.finallyKeyword, toNode.finallyKeyword)), _isEqualNodes(node.finallyBlock, toNode.finallyBlock));
+    return _and(
+        _isEqualTokens(node.tryKeyword, toNode.tryKeyword),
+        _isEqualNodes(node.body, toNode.body),
+        _isEqualNodeLists(node.catchClauses, toNode.catchClauses),
+        _isEqualTokens(node.finallyKeyword, toNode.finallyKeyword),
+        _isEqualNodes(node.finallyBlock, toNode.finallyBlock));
   }
 
   @override
   bool visitTypeArgumentList(TypeArgumentList node) {
     TypeArgumentList toNode = this._toNode as TypeArgumentList;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftBracket, toNode.leftBracket), _isEqualNodeLists(node.arguments, toNode.arguments)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.arguments, toNode.arguments),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitTypeName(TypeName node) {
     TypeName toNode = this._toNode as TypeName;
-    if (javaBooleanAnd(_isEqualNodes(node.name, toNode.name), _isEqualNodes(node.typeArguments, toNode.typeArguments))) {
+    if (_and(
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualNodes(node.typeArguments, toNode.typeArguments))) {
       toNode.type = node.type;
       return true;
     }
@@ -9157,49 +9541,89 @@
   @override
   bool visitTypeParameter(TypeParameter node) {
     TypeParameter toNode = this._toNode as TypeParameter;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualNodes(node.name, toNode.name)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.bound, toNode.bound));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.bound, toNode.bound));
   }
 
   @override
   bool visitTypeParameterList(TypeParameterList node) {
     TypeParameterList toNode = this._toNode as TypeParameterList;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.leftBracket, toNode.leftBracket), _isEqualNodeLists(node.typeParameters, toNode.typeParameters)), _isEqualTokens(node.rightBracket, toNode.rightBracket));
+    return _and(
+        _isEqualTokens(node.leftBracket, toNode.leftBracket),
+        _isEqualNodeLists(node.typeParameters, toNode.typeParameters),
+        _isEqualTokens(node.rightBracket, toNode.rightBracket));
   }
 
   @override
   bool visitVariableDeclaration(VariableDeclaration node) {
     VariableDeclaration toNode = this._toNode as VariableDeclaration;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualNodes(node.name, toNode.name)), _isEqualTokens(node.equals, toNode.equals)), _isEqualNodes(node.initializer, toNode.initializer));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualNodes(node.name, toNode.name),
+        _isEqualTokens(node.equals, toNode.equals),
+        _isEqualNodes(node.initializer, toNode.initializer));
   }
 
   @override
   bool visitVariableDeclarationList(VariableDeclarationList node) {
     VariableDeclarationList toNode = this._toNode as VariableDeclarationList;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualNodes(node.documentationComment, toNode.documentationComment), _isEqualNodeLists(node.metadata, toNode.metadata)), _isEqualTokens(node.keyword, toNode.keyword)), _isEqualNodes(node.type, toNode.type)), _isEqualNodeLists(node.variables, toNode.variables));
+    return _and(
+        _isEqualNodes(node.documentationComment, toNode.documentationComment),
+        _isEqualNodeLists(node.metadata, toNode.metadata),
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualNodes(node.type, toNode.type),
+        _isEqualNodeLists(node.variables, toNode.variables));
   }
 
   @override
   bool visitVariableDeclarationStatement(VariableDeclarationStatement node) {
     VariableDeclarationStatement toNode = this._toNode as VariableDeclarationStatement;
-    return javaBooleanAnd(_isEqualNodes(node.variables, toNode.variables), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualNodes(node.variables, toNode.variables),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
   }
 
   @override
   bool visitWhileStatement(WhileStatement node) {
     WhileStatement toNode = this._toNode as WhileStatement;
-    return javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.keyword, toNode.keyword), _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis)), _isEqualNodes(node.condition, toNode.condition)), _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)), _isEqualNodes(node.body, toNode.body));
+    return _and(
+        _isEqualTokens(node.keyword, toNode.keyword),
+        _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis),
+        _isEqualNodes(node.condition, toNode.condition),
+        _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis),
+        _isEqualNodes(node.body, toNode.body));
   }
 
   @override
   bool visitWithClause(WithClause node) {
     WithClause toNode = this._toNode as WithClause;
-    return javaBooleanAnd(_isEqualTokens(node.withKeyword, toNode.withKeyword), _isEqualNodeLists(node.mixinTypes, toNode.mixinTypes));
+    return _and(
+        _isEqualTokens(node.withKeyword, toNode.withKeyword),
+        _isEqualNodeLists(node.mixinTypes, toNode.mixinTypes));
   }
 
   @override
   bool visitYieldStatement(YieldStatement node) {
     YieldStatement toNode = this._toNode as YieldStatement;
-    return javaBooleanAnd(javaBooleanAnd(_isEqualTokens(node.yieldKeyword, toNode.yieldKeyword), _isEqualNodes(node.expression, toNode.expression)), _isEqualTokens(node.semicolon, toNode.semicolon));
+    return _and(
+        _isEqualTokens(node.yieldKeyword, toNode.yieldKeyword),
+        _isEqualNodes(node.expression, toNode.expression),
+        _isEqualTokens(node.semicolon, toNode.semicolon));
+  }
+
+  /**
+   * Return `true` if all of the parameters are `true`.
+   */
+  bool _and(bool b1, bool b2, [bool b3 = true, bool b4 = true, bool b5 = true,
+      bool b6 = true, bool b7 = true, bool b8 = true, bool b9 = true,
+      bool b10 = true, bool b11 = true, bool b12 = true, bool b13 = true]) {
+    return b1 && b2 && b3 && b4 && b5 && b6 && b7 && b8 && b9 && b10 && b11
+        && b12 && b13;
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 1717d76..c1c4bed 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -8,6 +8,8 @@
 library engine.resolver;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'java_core.dart';
 import 'java_engine.dart';
 import 'instrumentation.dart';
@@ -422,10 +424,10 @@
    * Parses [AngularPropertyElement]s from [annotation] and [classDeclaration].
    */
   List<AngularPropertyElement> _parseComponentProperties() {
-    List<AngularPropertyElement> properties = [];
+    List<AngularPropertyElement> properties = <AngularPropertyElement>[];
     _parseComponentProperties_fromMap(properties);
     _parseComponentProperties_fromFields(properties);
-    return new List.from(properties);
+    return properties;
   }
 
   /**
@@ -611,9 +613,9 @@
   }
 
   List<AngularScopePropertyElement> _parseScopeProperties() {
-    List<AngularScopePropertyElement> properties = [];
+    List<AngularScopePropertyElement> properties = <AngularScopePropertyElement>[];
     _classDeclaration.accept(new RecursiveAstVisitor_AngularCompilationUnitBuilder_parseScopeProperties(properties));
-    return new List.from(properties);
+    return properties;
   }
 
   /**
@@ -621,10 +623,10 @@
    * where <code>view</code> is <code>ViewFactory</code>.
    */
   void _parseViews() {
-    List<AngularViewElement> views = [];
+    List<AngularViewElement> views = <AngularViewElement>[];
     _unit.accept(new RecursiveAstVisitor_AngularCompilationUnitBuilder_parseViews(views));
     if (!views.isEmpty) {
-      List<AngularViewElement> viewArray = new List.from(views);
+      List<AngularViewElement> viewArray = views;
       (_unit.element as CompilationUnitElementImpl).angularViews = viewArray;
     }
   }
@@ -976,7 +978,9 @@
     }
     bool problemReported = false;
     for (Expression argument in argumentList.arguments) {
-      problemReported = javaBooleanOr(problemReported, _checkForArgumentTypeNotAssignableForArgument(argument));
+      if (_checkForArgumentTypeNotAssignableForArgument(argument)) {
+        problemReported = true;
+      }
     }
     return problemReported;
   }
@@ -999,7 +1003,7 @@
         ConstructorElement constructorElement = element;
         displayName = constructorElement.enclosingElement.displayName;
         if (!constructorElement.displayName.isEmpty) {
-          displayName = "${displayName}.${constructorElement.displayName}";
+          displayName = "$displayName.${constructorElement.displayName}";
         }
       }
       _errorReporter.reportErrorForNode(HintCode.DEPRECATED_MEMBER_USE, node, [displayName]);
@@ -3371,17 +3375,17 @@
     }
     ParameterElement element = parameters == null ? null : _findIdentifier(parameters, parameterName);
     if (element == null) {
-      PrintStringWriter writer = new PrintStringWriter();
-      writer.println("Invalid state found in the Analysis Engine:");
-      writer.println("DeclarationResolver.getElementForParameter() is visiting a parameter that does not appear to be in a method or function.");
-      writer.println("Ancestors:");
+      StringBuffer buffer = new StringBuffer();
+      buffer.writeln("Invalid state found in the Analysis Engine:");
+      buffer.writeln("DeclarationResolver.getElementForParameter() is visiting a parameter that does not appear to be in a method or function.");
+      buffer.writeln("Ancestors:");
       AstNode parent = node.parent;
       while (parent != null) {
-        writer.println(parent.runtimeType.toString());
-        writer.println("---------");
+        buffer.writeln(parent.runtimeType.toString());
+        buffer.writeln("---------");
         parent = parent.parent;
       }
-      AnalysisEngine.instance.logger.logError2(writer.toString(), new CaughtException(new AnalysisException(), null));
+      AnalysisEngine.instance.logger.logError2(buffer.toString(), new CaughtException(new AnalysisException(), null));
     }
     return element;
   }
@@ -3985,13 +3989,13 @@
     } catch (ex) {
       if (node.name.staticElement == null) {
         ClassDeclaration classNode = node.getAncestor((node) => node is ClassDeclaration);
-        JavaStringBuilder builder = new JavaStringBuilder();
-        builder.append("The element for the method ");
-        builder.append(node.name);
-        builder.append(" in ");
-        builder.append(classNode.name);
-        builder.append(" was not set while trying to build the element model.");
-        AnalysisEngine.instance.logger.logError2(builder.toString(), new AnalysisException(builder.toString(), new CaughtException(ex, null)));
+        StringBuffer buffer = new StringBuffer();
+        buffer.write("The element for the method ");
+        buffer.write(node.name);
+        buffer.write(" in ");
+        buffer.write(classNode.name);
+        buffer.write(" was not set while trying to build the element model.");
+        AnalysisEngine.instance.logger.logError2(buffer.toString(), new AnalysisException(buffer.toString(), new CaughtException(ex, null)));
       } else {
         String message = "Exception caught in ElementBuilder.visitMethodDeclaration()";
         AnalysisEngine.instance.logger.logError2(message, new AnalysisException(message, new CaughtException(ex, null)));
@@ -3999,13 +4003,13 @@
     } finally {
       if (node.name.staticElement == null) {
         ClassDeclaration classNode = node.getAncestor((node) => node is ClassDeclaration);
-        JavaStringBuilder builder = new JavaStringBuilder();
-        builder.append("The element for the method ");
-        builder.append(node.name);
-        builder.append(" in ");
-        builder.append(classNode.name);
-        builder.append(" was not set while trying to resolve types.");
-        AnalysisEngine.instance.logger.logError2(builder.toString(), new CaughtException(new AnalysisException(builder.toString()), null));
+        StringBuffer buffer = new StringBuffer();
+        buffer.write("The element for the method ");
+        buffer.write(node.name);
+        buffer.write(" in ");
+        buffer.write(classNode.name);
+        buffer.write(" was not set while trying to resolve types.");
+        AnalysisEngine.instance.logger.logError2(buffer.toString(), new CaughtException(new AnalysisException(buffer.toString()), null));
       }
     }
     return null;
@@ -4298,7 +4302,7 @@
 
   List<LabelElement> _labels;
 
-  List<VariableElement> _localVariables;
+  List<LocalVariableElement> _localVariables;
 
   List<MethodElement> _methods;
 
@@ -4356,7 +4360,7 @@
 
   void addLocalVariable(LocalVariableElement element) {
     if (_localVariables == null) {
-      _localVariables = new List<VariableElement>();
+      _localVariables = new List<LocalVariableElement>();
     }
     _localVariables.add(element);
   }
@@ -4407,7 +4411,7 @@
     if (_accessors == null) {
       return PropertyAccessorElementImpl.EMPTY_ARRAY;
     }
-    List<PropertyAccessorElement> result = new List.from(_accessors);
+    List<PropertyAccessorElement> result = _accessors;
     _accessors = null;
     return result;
   }
@@ -4416,7 +4420,7 @@
     if (_constructors == null) {
       return ConstructorElementImpl.EMPTY_ARRAY;
     }
-    List<ConstructorElement> result = new List.from(_constructors);
+    List<ConstructorElement> result = _constructors;
     _constructors = null;
     return result;
   }
@@ -4425,7 +4429,7 @@
     if (_enums == null) {
       return ClassElementImpl.EMPTY_ARRAY;
     }
-    List<ClassElement> result = new List.from(_enums);
+    List<ClassElement> result = _enums;
     _enums = null;
     return result;
   }
@@ -4446,7 +4450,7 @@
     if (_fields == null) {
       return FieldElementImpl.EMPTY_ARRAY;
     }
-    List<FieldElement> result = new List.from(_fields);
+    List<FieldElement> result = _fields;
     _fields = null;
     return result;
   }
@@ -4455,7 +4459,7 @@
     if (_fields == null) {
       return FieldElementImpl.EMPTY_ARRAY;
     }
-    List<FieldElement> result = new List.from(_fields);
+    List<FieldElement> result = _fields;
     return result;
   }
 
@@ -4463,7 +4467,7 @@
     if (_functions == null) {
       return FunctionElementImpl.EMPTY_ARRAY;
     }
-    List<FunctionElement> result = new List.from(_functions);
+    List<FunctionElement> result = _functions;
     _functions = null;
     return result;
   }
@@ -4472,7 +4476,7 @@
     if (_labels == null) {
       return LabelElementImpl.EMPTY_ARRAY;
     }
-    List<LabelElement> result = new List.from(_labels);
+    List<LabelElement> result = _labels;
     _labels = null;
     return result;
   }
@@ -4481,7 +4485,7 @@
     if (_localVariables == null) {
       return LocalVariableElementImpl.EMPTY_ARRAY;
     }
-    List<LocalVariableElement> result = new List.from(_localVariables);
+    List<LocalVariableElement> result = _localVariables;
     _localVariables = null;
     return result;
   }
@@ -4490,7 +4494,7 @@
     if (_methods == null) {
       return MethodElementImpl.EMPTY_ARRAY;
     }
-    List<MethodElement> result = new List.from(_methods);
+    List<MethodElement> result = _methods;
     _methods = null;
     return result;
   }
@@ -4499,7 +4503,7 @@
     if (_parameters == null) {
       return ParameterElementImpl.EMPTY_ARRAY;
     }
-    List<ParameterElement> result = new List.from(_parameters);
+    List<ParameterElement> result = _parameters;
     _parameters = null;
     return result;
   }
@@ -4520,7 +4524,7 @@
     if (_topLevelVariables == null) {
       return TopLevelVariableElementImpl.EMPTY_ARRAY;
     }
-    List<TopLevelVariableElement> result = new List.from(_topLevelVariables);
+    List<TopLevelVariableElement> result = _topLevelVariables;
     _topLevelVariables = null;
     return result;
   }
@@ -4529,7 +4533,7 @@
     if (_typeAliases == null) {
       return FunctionTypeAliasElementImpl.EMPTY_ARRAY;
     }
-    List<FunctionTypeAliasElement> result = new List.from(_typeAliases);
+    List<FunctionTypeAliasElement> result = _typeAliases;
     _typeAliases = null;
     return result;
   }
@@ -4538,7 +4542,7 @@
     if (_typeParameters == null) {
       return TypeParameterElementImpl.EMPTY_ARRAY;
     }
-    List<TypeParameterElement> result = new List.from(_typeParameters);
+    List<TypeParameterElement> result = _typeParameters;
     _typeParameters = null;
     return result;
   }
@@ -4547,96 +4551,96 @@
     if (_types == null) {
       return ClassElementImpl.EMPTY_ARRAY;
     }
-    List<ClassElement> result = new List.from(_types);
+    List<ClassElement> result = _types;
     _types = null;
     return result;
   }
 
   void validate() {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     if (_accessors != null) {
-      builder.append(_accessors.length);
-      builder.append(" accessors");
+      buffer.write(_accessors.length);
+      buffer.write(" accessors");
     }
     if (_constructors != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_constructors.length);
-      builder.append(" constructors");
+      buffer.write(_constructors.length);
+      buffer.write(" constructors");
     }
     if (_fields != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_fields.length);
-      builder.append(" fields");
+      buffer.write(_fields.length);
+      buffer.write(" fields");
     }
     if (_functions != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_functions.length);
-      builder.append(" functions");
+      buffer.write(_functions.length);
+      buffer.write(" functions");
     }
     if (_labels != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_labels.length);
-      builder.append(" labels");
+      buffer.write(_labels.length);
+      buffer.write(" labels");
     }
     if (_localVariables != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_localVariables.length);
-      builder.append(" local variables");
+      buffer.write(_localVariables.length);
+      buffer.write(" local variables");
     }
     if (_methods != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_methods.length);
-      builder.append(" methods");
+      buffer.write(_methods.length);
+      buffer.write(" methods");
     }
     if (_parameters != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_parameters.length);
-      builder.append(" parameters");
+      buffer.write(_parameters.length);
+      buffer.write(" parameters");
     }
     if (_topLevelVariables != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_topLevelVariables.length);
-      builder.append(" top-level variables");
+      buffer.write(_topLevelVariables.length);
+      buffer.write(" top-level variables");
     }
     if (_types != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_types.length);
-      builder.append(" types");
+      buffer.write(_types.length);
+      buffer.write(" types");
     }
     if (_typeAliases != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_typeAliases.length);
-      builder.append(" type aliases");
+      buffer.write(_typeAliases.length);
+      buffer.write(" type aliases");
     }
     if (_typeParameters != null) {
-      if (builder.length > 0) {
-        builder.append("; ");
+      if (buffer.length > 0) {
+        buffer.write("; ");
       }
-      builder.append(_typeParameters.length);
-      builder.append(" type parameters");
+      buffer.write(_typeParameters.length);
+      buffer.write(" type parameters");
     }
-    if (builder.length > 0) {
-      AnalysisEngine.instance.logger.logError("Failed to capture elements: ${builder.toString()}");
+    if (buffer.length > 0) {
+      AnalysisEngine.instance.logger.logError("Failed to capture elements: $buffer");
     }
   }
 }
@@ -6881,7 +6885,7 @@
         String nameStr = name.name;
         Element element = namespace.get(nameStr);
         if (element == null) {
-          element = namespace.get("${nameStr}=");
+          element = namespace.get("$nameStr=");
         }
         if (element != null) {
           // Ensure that the name always resolves to a top-level variable
@@ -6981,7 +6985,7 @@
         // Look to see whether the name of the method is really part of a prefixed identifier for an
         // imported top-level function or top-level getter that returns a function.
         //
-        String name = "${target.name}.${methodName}";
+        String name = "${target.name}.$methodName";
         Identifier functionName = new ElementResolver_SyntheticIdentifier(name);
         Element element = _resolver.nameScope.lookup(functionName, _definingLibrary);
         if (element != null) {
@@ -7178,7 +7182,7 @@
       }
     }
     if (!annotationList.isEmpty) {
-      (element as ElementImpl).metadata = new List.from(annotationList);
+      (element as ElementImpl).metadata = annotationList;
     }
   }
 
@@ -7197,7 +7201,7 @@
     List<ElementAnnotationImpl> annotationList = new List<ElementAnnotationImpl>();
     _addAnnotations(annotationList, node.metadata);
     if (!annotationList.isEmpty) {
-      (element as ElementImpl).metadata = new List.from(annotationList);
+      (element as ElementImpl).metadata = annotationList;
     }
   }
 
@@ -7401,8 +7405,8 @@
     //
     // Finish building the enum.
     //
-    enumElement.fields = new List.from(fields);
-    enumElement.accessors = new List.from(getters);
+    enumElement.fields = fields;
+    enumElement.accessors = getters;
     // Client code isn't allowed to invoke the constructor, so we do not model it.
     return super.visitEnumDeclaration(node);
   }
@@ -7417,6 +7421,7 @@
     PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.forVariable(field);
     getter.getter = true;
     getter.returnType = field.type;
+    getter.type = new FunctionTypeImpl.con1(getter);
     field.getter = getter;
     return getter;
   }
@@ -8558,19 +8563,25 @@
         }
       }
     }
-    // Visit all of the states in the map to ensure that none were never initialized.
-    for (MapEntry<FieldElement, INIT_STATE> entry in getMapEntrySet(fieldElementsMap)) {
-      if (entry.getValue() == INIT_STATE.NOT_INIT) {
-        FieldElement fieldElement = entry.getKey();
+    // Visit all of the states in the map to ensure that none were never
+    // initialized.
+    fieldElementsMap.forEach((FieldElement fieldElement, INIT_STATE state) {
+      if (state == INIT_STATE.NOT_INIT) {
         if (fieldElement.isConst) {
-          _errorReporter.reportErrorForNode(CompileTimeErrorCode.CONST_NOT_INITIALIZED, node.returnType, [fieldElement.name]);
+          _errorReporter.reportErrorForNode(
+              CompileTimeErrorCode.CONST_NOT_INITIALIZED,
+                  node.returnType,
+                  [fieldElement.name]);
           foundError = true;
         } else if (fieldElement.isFinal) {
-          _errorReporter.reportErrorForNode(StaticWarningCode.FINAL_NOT_INITIALIZED, node.returnType, [fieldElement.name]);
+          _errorReporter.reportErrorForNode(
+              StaticWarningCode.FINAL_NOT_INITIALIZED,
+                  node.returnType,
+                  [fieldElement.name]);
           foundError = true;
         }
       }
-    }
+    });
     return foundError;
   }
 
@@ -8631,17 +8642,16 @@
           overriddenExecutable.enclosingElement.displayName]);
       return true;
     }
-    // For each named parameter in the overridden method, verify that there is the same name in
-    // the overriding method, and in the same order.
-    Set<String> overridingParameterNameSet = overridingNamedPT.keys.toSet();
-    JavaIterator<String> overriddenParameterNameIterator = new JavaIterator(overriddenNamedPT.keys.toSet());
-    while (overriddenParameterNameIterator.hasNext) {
-      String overriddenParamName = overriddenParameterNameIterator.next();
-      if (!overridingParameterNameSet.contains(overriddenParamName)) {
-        // The overridden method expected the overriding method to have overridingParamName,
-        // but it does not.
-        _errorReporter.reportErrorForNode(StaticWarningCode.INVALID_OVERRIDE_NAMED, errorNameTarget, [
-            overriddenParamName,
+    // For each named parameter in the overridden method, verify that there is
+    // the same name in the overriding method.
+    for (String overriddenParamName in overriddenNamedPT.keys) {
+      if (!overridingNamedPT.containsKey(overriddenParamName)) {
+        // The overridden method expected the overriding method to have
+        // overridingParamName, but it does not.
+        _errorReporter.reportErrorForNode(
+            StaticWarningCode.INVALID_OVERRIDE_NAMED,
+            errorNameTarget,
+            [overriddenParamName,
             overriddenExecutable.enclosingElement.displayName]);
         return true;
       }
@@ -8681,31 +8691,33 @@
       parameterIndex++;
     }
     // SWC.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE & SWC.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES
-    JavaIterator<MapEntry<String, DartType>> overriddenNamedPTIterator = new JavaIterator(getMapEntrySet(overriddenNamedPT));
-    while (overriddenNamedPTIterator.hasNext) {
-      MapEntry<String, DartType> overriddenNamedPTEntry = overriddenNamedPTIterator.next();
-      DartType overridingType = overridingNamedPT[overriddenNamedPTEntry.getKey()];
+    for (String overriddenName in overriddenNamedPT.keys) {
+      DartType overridingType = overridingNamedPT[overriddenName];
       if (overridingType == null) {
-        // Error, this is never reached- INVALID_OVERRIDE_NAMED would have been created above if
-        // this could be reached.
+        // Error, this is never reached- INVALID_OVERRIDE_NAMED would have been
+        // created above if this could be reached.
         continue;
       }
-      if (!overriddenNamedPTEntry.getValue().isAssignableTo(overridingType)) {
+      DartType overriddenType = overriddenNamedPT[overriddenName];
+      if (!overriddenType.isAssignableTo(overridingType)) {
         // lookup the parameter for the error to select
         ParameterElement parameterToSelect = null;
         AstNode parameterLocationToSelect = null;
         for (int i = 0; i < parameters.length; i++) {
           ParameterElement parameter = parameters[i];
-          if (parameter.parameterKind == ParameterKind.NAMED && overriddenNamedPTEntry.getKey() == parameter.name) {
+          if (parameter.parameterKind == ParameterKind.NAMED
+              && overriddenName == parameter.name) {
             parameterToSelect = parameter;
             parameterLocationToSelect = parameterLocations[i];
             break;
           }
         }
         if (parameterToSelect != null) {
-          _errorReporter.reportTypeErrorForNode(StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE, parameterLocationToSelect, [
-              overridingType,
-              overriddenNamedPTEntry.getValue(),
+          _errorReporter.reportTypeErrorForNode(
+              StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE,
+              parameterLocationToSelect,
+              [overridingType,
+              overriddenType,
               overriddenExecutable.enclosingElement.displayName]);
           return true;
         }
@@ -8849,10 +8861,22 @@
       PropertyAccessorElement setter = element.setter;
       SimpleIdentifier fieldName = field.name;
       if (getter != null) {
-        hasProblems = javaBooleanOr(hasProblems, _checkForAllInvalidOverrideErrorCodesForExecutable(getter, ParameterElementImpl.EMPTY_ARRAY, AstNode.EMPTY_ARRAY, fieldName));
+        if (_checkForAllInvalidOverrideErrorCodesForExecutable(
+            getter,
+            ParameterElementImpl.EMPTY_ARRAY,
+            AstNode.EMPTY_ARRAY,
+            fieldName)) {
+          hasProblems = true;
+        }
       }
       if (setter != null) {
-        hasProblems = javaBooleanOr(hasProblems, _checkForAllInvalidOverrideErrorCodesForExecutable(setter, setter.parameters, <AstNode> [fieldName], fieldName));
+        if (_checkForAllInvalidOverrideErrorCodesForExecutable(
+            setter,
+            setter.parameters,
+            <AstNode> [fieldName],
+            fieldName)) {
+          hasProblems = true;
+        }
       }
     }
     return hasProblems;
@@ -8902,14 +8926,26 @@
       if (mixinType is! InterfaceType) {
         continue;
       }
-      if (_checkForExtendsOrImplementsDisallowedClass(mixinName, CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS)) {
+      if (_checkForExtendsOrImplementsDisallowedClass(
+          mixinName,
+          CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS)) {
         problemReported = true;
       } else {
         ClassElement mixinElement = (mixinType as InterfaceType).element;
-        problemReported = javaBooleanOr(problemReported, _checkForExtendsOrImplementsDeferredClass(mixinName, CompileTimeErrorCode.MIXIN_DEFERRED_CLASS));
-        problemReported = javaBooleanOr(problemReported, _checkForMixinDeclaresConstructor(mixinName, mixinElement));
-        problemReported = javaBooleanOr(problemReported, _checkForMixinInheritsNotFromObject(mixinName, mixinElement));
-        problemReported = javaBooleanOr(problemReported, _checkForMixinReferencesSuper(mixinName, mixinElement));
+        if (_checkForExtendsOrImplementsDeferredClass(
+            mixinName,
+            CompileTimeErrorCode.MIXIN_DEFERRED_CLASS)) {
+          problemReported = true;
+        }
+        if (_checkForMixinDeclaresConstructor(mixinName, mixinElement)) {
+          problemReported = true;
+        }
+        if (_checkForMixinInheritsNotFromObject(mixinName, mixinElement)) {
+          problemReported = true;
+        }
+        if (_checkForMixinReferencesSuper(mixinName, mixinElement)) {
+          problemReported = true;
+        }
       }
     }
     return problemReported;
@@ -9041,9 +9077,8 @@
     // check exported names
     Namespace namespace = new NamespaceBuilder().createExportNamespaceForDirective(exportElement);
     Map<String, Element> definedNames = namespace.definedNames;
-    for (MapEntry<String, Element> definedEntry in getMapEntrySet(definedNames)) {
-      String name = definedEntry.getKey();
-      Element element = definedEntry.getValue();
+    for (String name in definedNames.keys) {
+      Element element = definedNames[name];
       Element prevElement = _exportedElements[name];
       if (element != null && prevElement != null && prevElement != element) {
         _errorReporter.reportErrorForNode(CompileTimeErrorCode.AMBIGUOUS_EXPORT, node, [
@@ -9144,7 +9179,9 @@
     }
     bool problemReported = false;
     for (Expression argument in argumentList.arguments) {
-      problemReported = javaBooleanOr(problemReported, _checkForArgumentTypeNotAssignableForArgument(argument));
+      if (_checkForArgumentTypeNotAssignableForArgument(argument)) {
+        problemReported = true;
+      }
     }
     return problemReported;
   }
@@ -9308,8 +9345,8 @@
     int lastMember = members.length - 1;
     for (int i = 0; i < lastMember; i++) {
       SwitchMember member = members[i];
-      if (member is SwitchCase) {
-        foundError = javaBooleanOr(foundError, _checkForCaseBlockNotTerminated(member));
+      if (member is SwitchCase && _checkForCaseBlockNotTerminated(member)) {
+        foundError = true;
       }
     }
     return foundError;
@@ -9559,7 +9596,7 @@
                 _enclosingClass.displayName,
                 name.name,
                 enclosingElementOfSetter.displayName]);
-            foundError = javaBooleanOr(foundError, true);
+            foundError = true;
             addThisMemberToTheMap = false;
           }
         } else if (isSetter) {
@@ -9568,7 +9605,7 @@
           if (conflictingMethod != null && conflictingMethod is MethodDeclaration && !conflictingMethod.isGetter) {
             // report problem
             _errorReporter.reportErrorForNode(StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2, name, [_enclosingClass.displayName, name.name]);
-            foundError = javaBooleanOr(foundError, true);
+            foundError = true;
             addThisMemberToTheMap = false;
           }
         }
@@ -9912,7 +9949,9 @@
     if (typeArguments != null) {
       bool hasError = false;
       for (TypeName argument in typeArguments.arguments) {
-        hasError = javaBooleanOr(hasError, _checkForConstWithTypeParameters(argument));
+        if (_checkForConstWithTypeParameters(argument)) {
+          hasError = true;
+        }
       }
       return hasError;
     }
@@ -10056,16 +10095,14 @@
     }
     bool hasProblem = false;
     for (ExecutableElement member in _enclosingClass.methods) {
-      if (!member.isStatic) {
-        continue;
+      if (member.isStatic && _checkForDuplicateDefinitionOfMember(member)) {
+        hasProblem = true;
       }
-      hasProblem = javaBooleanOr(hasProblem, _checkForDuplicateDefinitionOfMember(member));
     }
     for (ExecutableElement member in _enclosingClass.accessors) {
-      if (!member.isStatic) {
-        continue;
+      if (member.isStatic && _checkForDuplicateDefinitionOfMember(member)) {
+        hasProblem = true;
       }
-      hasProblem = javaBooleanOr(hasProblem, _checkForDuplicateDefinitionOfMember(member));
     }
     return hasProblem;
   }
@@ -10457,9 +10494,9 @@
     }
     bool foundError = false;
     for (ClassMember classMember in classMembers) {
-      if (classMember is FieldDeclaration) {
-        FieldDeclaration field = classMember;
-        foundError = javaBooleanOr(foundError, _checkForFinalNotInitialized(field.fields));
+      if (classMember is FieldDeclaration
+          && _checkForFinalNotInitialized(classMember.fields)) {
+        foundError = true;
       }
     }
     return foundError;
@@ -10478,7 +10515,11 @@
     }
     bool foundError = false;
     for (TypeName type in node.interfaces) {
-      foundError = javaBooleanOr(foundError, _checkForExtendsOrImplementsDeferredClass(type, CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS));
+      if (_checkForExtendsOrImplementsDeferredClass(
+          type,
+          CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS)) {
+        foundError = true;
+      }
     }
     return foundError;
   }
@@ -10497,7 +10538,11 @@
     }
     bool foundError = false;
     for (TypeName type in node.interfaces) {
-      foundError = javaBooleanOr(foundError, _checkForExtendsOrImplementsDisallowedClass(type, CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS));
+      if (_checkForExtendsOrImplementsDisallowedClass(
+          type,
+          CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS)) {
+        foundError = true;
+      }
     }
     return foundError;
   }
@@ -10936,11 +10981,21 @@
     bool hasProblems = false;
     for (Expression element in node.elements) {
       if (node.constKeyword != null) {
-        // TODO(paulberry): this error should be based on the actual type of the list element, not
-        // the static type.  See dartbug.com/21119.
-        hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(element, listElementType, CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE));
+        // TODO(paulberry): this error should be based on the actual type of the
+        // list element, not the static type.  See dartbug.com/21119.
+        if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+            element,
+            listElementType,
+            CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE)) {
+          hasProblems = true;
+        }
       }
-      hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(element, listElementType, StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE));
+      if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+          element,
+          listElementType,
+          StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE)) {
+        hasProblems = true;
+      }
     }
     return hasProblems;
   }
@@ -10972,13 +11027,33 @@
       Expression key = entry.key;
       Expression value = entry.value;
       if (node.constKeyword != null) {
-        // TODO(paulberry): this error should be based on the actual type of the list element, not
-        // the static type.  See dartbug.com/21119.
-        hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(key, keyType, CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE));
-        hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(value, valueType, CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE));
+        // TODO(paulberry): this error should be based on the actual type of the
+        // list element, not the static type.  See dartbug.com/21119.
+        if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+            key,
+            keyType,
+            CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE)) {
+          hasProblems = true;
+        }
+        if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+            value,
+            valueType,
+            CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE)) {
+          hasProblems = true;
+        }
       }
-      hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(key, keyType, StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE));
-      hasProblems = javaBooleanOr(hasProblems, _checkForArgumentTypeNotAssignableWithExpectedTypes(value, valueType, StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE));
+      if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+          key,
+          keyType,
+          StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE)) {
+        hasProblems = true;
+      }
+      if (_checkForArgumentTypeNotAssignableWithExpectedTypes(
+          value,
+          valueType,
+          StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE)) {
+        hasProblems = true;
+      }
     }
     return hasProblems;
   }
@@ -11434,9 +11509,9 @@
         }
       }
       if (enclosingElement != null) {
-        newStrMember = "${prefix}'${enclosingElement.displayName}.${missingOverridesArray[i].displayName}'";
+        newStrMember = "$prefix'${enclosingElement.displayName}.${missingOverridesArray[i].displayName}'";
       } else {
-        newStrMember = "${prefix}'${missingOverridesArray[i].displayName}'";
+        newStrMember = "$prefix'${missingOverridesArray[i].displayName}'";
       }
       stringMembersArrayListSet.add(newStrMember);
     }
@@ -12058,7 +12133,7 @@
     // iterate over each bounded type parameter and corresponding argument
     NodeList<TypeName> typeNameArgList = node.typeArguments.arguments;
     List<DartType> typeArguments = (type as InterfaceType).typeArguments;
-    int loopThroughIndex = Math.min(typeNameArgList.length, boundingElts.length);
+    int loopThroughIndex = math.min(typeNameArgList.length, boundingElts.length);
     bool foundError = false;
     for (int i = 0; i < loopThroughIndex; i++) {
       TypeName argTypeName = typeNameArgList[i];
@@ -12709,13 +12784,13 @@
       if (size > 1) {
         // Construct a string showing the cyclic implements path: "A, B, C, D, A"
         String separator = ", ";
-        JavaStringBuilder builder = new JavaStringBuilder();
+        StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < size; i++) {
-          builder.append(path[i].displayName);
-          builder.append(separator);
+          buffer.write(path[i].displayName);
+          buffer.write(separator);
         }
-        builder.append(classElt.displayName);
-        _errorReporter.reportErrorForOffset(CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, _enclosingClass.nameOffset, enclosingClassName.length, [enclosingClassName, builder.toString()]);
+        buffer.write(classElt.displayName);
+        _errorReporter.reportErrorForOffset(CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, _enclosingClass.nameOffset, enclosingClassName.length, [enclosingClassName, buffer.toString()]);
         return true;
       } else {
         // RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS or
@@ -13035,8 +13110,7 @@
     _enclosingBlockContainsBreak = false;
     try {
       bool hasDefault = false;
-      NodeList<SwitchMember> memberList = node.members;
-      List<SwitchMember> members = new List.from(memberList);
+      List<SwitchMember> members = node.members;
       for (int i = 0; i < members.length; i++) {
         SwitchMember switchMember = members[i];
         if (switchMember is SwitchDefault) {
@@ -13259,9 +13333,9 @@
 }
 
 class GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction extends GeneralizingAstVisitor<Object> {
-  List<DartType> result;
+  DartType result = null;
 
-  GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction(this.result) : super();
+  GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction();
 
   @override
   Object visitExpression(Expression node) => null;
@@ -13277,10 +13351,10 @@
       type = BottomTypeImpl.instance;
     }
     // merge types
-    if (result[0] == null) {
-      result[0] = type;
+    if (result == null) {
+      result = type;
     } else {
-      result[0] = result[0].getLeastUpperBound(type);
+      result = result.getLeastUpperBound(type);
     }
     return null;
   }
@@ -13634,25 +13708,25 @@
     // least once. This code will guard against infinite recursion and might help us identify the
     // cause of the issue.
     //
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("Found circularity in XML nodes: ");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("Found circularity in XML nodes: ");
     bool first = true;
     for (ht.XmlTagNode pathNode in _parentNodes) {
       if (first) {
         first = false;
       } else {
-        builder.append(", ");
+        buffer.write(", ");
       }
       String tagName = pathNode.tag;
       if (identical(pathNode, node)) {
-        builder.append("*");
-        builder.append(tagName);
-        builder.append("*");
+        buffer.write("*");
+        buffer.write(tagName);
+        buffer.write("*");
       } else {
-        builder.append(tagName);
+        buffer.write(tagName);
       }
     }
-    AnalysisEngine.instance.logger.logError(builder.toString());
+    AnalysisEngine.instance.logger.logError(buffer.toString());
     return null;
   }
 
@@ -13765,7 +13839,7 @@
               implicitConstructors.add(_createImplicitContructor(classType, explicitConstructor, parameterTypes, argumentTypes));
             }
           }
-          classElement.constructors = new List.from(implicitConstructors);
+          classElement.constructors = implicitConstructors;
         }
       }
     }
@@ -13837,7 +13911,7 @@
       }
     } else {
       NodeList<TypeName> arguments = typeArguments.arguments;
-      int argumentCount = Math.min(arguments.length, parameterCount);
+      int argumentCount = math.min(arguments.length, parameterCount);
       for (int i = 0; i < argumentCount; i++) {
         types[i] = arguments[i].type;
       }
@@ -14289,7 +14363,7 @@
   bool _elementModelChanged(AstNode node) {
     Element element = _getElement(node);
     if (element == null) {
-      throw new AnalysisException("Cannot resolve node: a ${node.runtimeType.toString()} does not define an element");
+      throw new AnalysisException("Cannot resolve node: a ${node.runtimeType} does not define an element");
     }
     DeclarationMatcher matcher = new DeclarationMatcher();
     return !matcher.matches(node, element);
@@ -15082,9 +15156,7 @@
    */
   MemberMap _resolveInheritanceLookup(ClassElement classElt, HashMap<String, List<ExecutableElement>> unionMap) {
     MemberMap resultMap = new MemberMap();
-    for (MapEntry<String, List<ExecutableElement>> entry in getMapEntrySet(unionMap)) {
-      String key = entry.getKey();
-      List<ExecutableElement> list = entry.getValue();
+    unionMap.forEach((String key, List<ExecutableElement> list) {
       int numOfEltsWithMatchingNames = list.length;
       if (numOfEltsWithMatchingNames == 1) {
         //
@@ -15181,7 +15253,7 @@
               // of the other, we create a warning, and have this class inherit nothing.
               //
               if (!classHasMember) {
-                String firstTwoFuntionTypesStr = "${executableElementTypes[0].toString()}, ${executableElementTypes[1].toString()}";
+                String firstTwoFuntionTypesStr = "${executableElementTypes[0]}, ${executableElementTypes[1]}";
                 _reportError(classElt, classElt.nameOffset, classElt.displayName.length, StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE, [key, firstTwoFuntionTypesStr]);
               }
             } else {
@@ -15204,7 +15276,7 @@
           _reportError(classElt, classElt.nameOffset, classElt.displayName.length, StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD, [key]);
         }
       }
-    }
+    });
     return resultMap;
   }
 
@@ -15465,7 +15537,7 @@
         unitArrayList.add(getAST(source));
       }
     }
-    return new List.from(unitArrayList);
+    return unitArrayList;
   }
 
   /**
@@ -15740,7 +15812,7 @@
       libraryElement.entryPoint = entryPoint;
     }
     int sourcedUnitCount = sourcedCompilationUnits.length;
-    libraryElement.parts = new List.from(sourcedCompilationUnits);
+    libraryElement.parts = sourcedCompilationUnits;
     for (Directive directive in directivesToResolve) {
       directive.element = libraryElement;
     }
@@ -15828,7 +15900,7 @@
       libraryElement.entryPoint = entryPoint;
     }
     int sourcedUnitCount = sourcedCompilationUnits.length;
-    libraryElement.parts = new List.from(sourcedCompilationUnits);
+    libraryElement.parts = sourcedCompilationUnits;
     for (Directive directive in directivesToResolve) {
       directive.element = libraryElement;
     }
@@ -16054,20 +16126,19 @@
       }
     }
     int indirectCount = indirectSources.length;
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append(library.definingCompilationUnit.displayName);
+    StringBuffer buffer = new StringBuffer();
+    buffer.write(library.definingCompilationUnit.displayName);
     if (indirectCount > 0) {
-      builder.append(" (via ");
+      buffer.write(" (via ");
       if (indirectCount > 1) {
-        List<String> indirectNames = new List.from(indirectSources);
-        indirectNames.sort();
-        builder.append(StringUtilities.printListOfQuotedNames(indirectNames));
+        indirectSources.sort();
+        buffer.write(StringUtilities.printListOfQuotedNames(indirectSources));
       } else {
-        builder.append(indirectSources[0]);
+        buffer.write(indirectSources[0]);
       }
-      builder.append(")");
+      buffer.write(")");
     }
-    return builder.toString();
+    return buffer.toString();
   }
 
   /**
@@ -16105,7 +16176,7 @@
       return conflictingMembers[0];
     } else if (to == 0) {
       // All members were removed
-      AnalysisEngine.instance.logger.logInformation("Multiply defined SDK element: ${foundElement}");
+      AnalysisEngine.instance.logger.logInformation("Multiply defined SDK element: $foundElement");
       return foundElement;
     }
     List<Element> remaining = new List<Element>(to);
@@ -16449,7 +16520,7 @@
         combinators.add(show);
       }
     }
-    return new List.from(combinators);
+    return combinators;
   }
 
   /**
@@ -16541,8 +16612,8 @@
         imports.add(importElement);
       }
       LibraryElementImpl libraryElement = library.libraryElement;
-      libraryElement.imports = new List.from(imports);
-      libraryElement.exports = new List.from(exports);
+      libraryElement.imports = imports;
+      libraryElement.exports = exports;
       if (libraryElement.entryPoint == null) {
         Namespace namespace = new NamespaceBuilder().createExportNamespaceForLibrary(libraryElement);
         Element element = namespace.get(LibraryElementBuilder.ENTRY_POINT_NAME);
@@ -16756,7 +16827,7 @@
         importedLibraries.add(importedLibrary);
       }
     }
-    library.importedLibraries = new List.from(importedLibraries);
+    library.importedLibraries = importedLibraries;
     List<Library> exportedLibraries = new List<Library>();
     for (Source exportedSource in exportedSources) {
       Library exportedLibrary = _libraryMap[exportedSource];
@@ -16770,7 +16841,7 @@
         exportedLibraries.add(exportedLibrary);
       }
     }
-    library.exportedLibraries = new List.from(exportedLibraries);
+    library.exportedLibraries = exportedLibraries;
     library.explicitlyImportsCore = explicitlyImportsCore;
     if (!explicitlyImportsCore && _coreLibrarySource != library.librarySource) {
       Library importedLibrary = _libraryMap[_coreLibrarySource];
@@ -17111,7 +17182,7 @@
         combinators.add(show);
       }
     }
-    return new List.from(combinators);
+    return combinators;
   }
 
   /**
@@ -17207,8 +17278,8 @@
         imports.add(importElement);
       }
       LibraryElementImpl libraryElement = library.libraryElement;
-      libraryElement.imports = new List.from(imports);
-      libraryElement.exports = new List.from(exports);
+      libraryElement.imports = imports;
+      libraryElement.exports = exports;
       if (libraryElement.entryPoint == null) {
         Namespace namespace = new NamespaceBuilder().createExportNamespaceForLibrary(libraryElement);
         Element element = namespace.get(LibraryElementBuilder.ENTRY_POINT_NAME);
@@ -17828,9 +17899,9 @@
    * @param namespace the namespace containing the names to be added to this namespace
    */
   void _addAllFromMap(Map<String, Element> definedNames, Map<String, Element> newNames) {
-    for (MapEntry<String, Element> entry in getMapEntrySet(newNames)) {
-      definedNames[entry.getKey()] = entry.getValue();
-    }
+    newNames.forEach((String name, Element element) {
+      definedNames[name] = element;
+    });
   }
 
   /**
@@ -17895,7 +17966,7 @@
         definedNames = _show(definedNames, combinator.shownNames);
       } else {
         // Internal error.
-        AnalysisEngine.instance.logger.logError("Unknown type of combinator: ${combinator.runtimeType.toString()}");
+        AnalysisEngine.instance.logger.logError("Unknown type of combinator: ${combinator.runtimeType}");
       }
     }
     return definedNames;
@@ -17911,9 +17982,9 @@
     if (prefixElement != null) {
       String prefix = prefixElement.name;
       HashMap<String, Element> newNames = new HashMap<String, Element>();
-      for (MapEntry<String, Element> entry in getMapEntrySet(definedNames)) {
-        newNames["${prefix}.${entry.getKey()}"] = entry.getValue();
-      }
+      definedNames.forEach((String name, Element element) {
+        newNames["$prefix.$name"] = element;
+      });
       return newNames;
     } else {
       return definedNames;
@@ -17960,7 +18031,7 @@
   void _hide(HashMap<String, Element> definedNames, List<String> hiddenNames) {
     for (String name in hiddenNames) {
       definedNames.remove(name);
-      definedNames.remove("${name}=");
+      definedNames.remove("$name=");
     }
   }
 
@@ -17978,7 +18049,7 @@
       if (element != null) {
         newNames[name] = element;
       }
-      String setterName = "${name}=";
+      String setterName = "$name=";
       element = definedNames[setterName];
       if (element != null) {
         newNames[setterName] = element;
@@ -18449,11 +18520,11 @@
 }
 
 class RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure extends RecursiveAstVisitor<Object> {
-  List<bool> result;
+  final Element variable;
 
-  Element variable;
+  bool result = false;
 
-  RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure(this.result, this.variable) : super();
+  RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure(this.variable);
 
   bool _inClosure = false;
 
@@ -18470,31 +18541,31 @@
 
   @override
   Object visitSimpleIdentifier(SimpleIdentifier node) {
-    if (result[0]) {
+    if (result) {
       return null;
     }
     if (_inClosure && identical(node.staticElement, variable)) {
-      result[0] = javaBooleanOr(result[0], true);
+      result = true;
     }
     return null;
   }
 }
 
 class RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn extends RecursiveAstVisitor<Object> {
-  List<bool> result;
+  final Element variable;
 
-  Element variable;
+  bool result = false;
 
-  RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn(this.result, this.variable) : super();
+  RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn(this.variable);
 
   @override
   Object visitSimpleIdentifier(SimpleIdentifier node) {
-    if (result[0]) {
+    if (result) {
       return null;
     }
     if (identical(node.staticElement, variable)) {
       if (node.inSetterContext()) {
-        result[0] = javaBooleanOr(result[0], true);
+        result = true;
       }
     }
     return null;
@@ -18815,7 +18886,7 @@
   ErrorSeverity get errorSeverity => type.severity;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
@@ -19977,9 +20048,10 @@
    * @return `true` if this variable is potentially mutated somewhere in the given ASTNode
    */
   bool _isVariableAccessedInClosure(Element variable, AstNode target) {
-    List<bool> result = [false];
-    target.accept(new RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure(result, variable));
-    return result[0];
+    RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure visitor
+        = new RecursiveAstVisitor_ResolverVisitor_isVariableAccessedInClosure(variable);
+    target.accept(visitor);
+    return visitor.result;
   }
 
   /**
@@ -19991,9 +20063,10 @@
    * @return `true` if this variable is potentially mutated somewhere in the given ASTNode
    */
   bool _isVariablePotentiallyMutatedIn(Element variable, AstNode target) {
-    List<bool> result = [false];
-    target.accept(new RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn(result, variable));
-    return result[0];
+    RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn visitor
+        = new RecursiveAstVisitor_ResolverVisitor_isVariablePotentiallyMutatedIn(variable);
+    target.accept(visitor);
+    return visitor.result;
   }
 
   /**
@@ -20667,16 +20740,16 @@
     Scope outerScope = _nameScope;
     try {
       if (constructorElement == null) {
-        JavaStringBuilder builder = new JavaStringBuilder();
-        builder.append("Missing element for constructor ");
-        builder.append(node.returnType.name);
+        StringBuffer buffer = new StringBuffer();
+        buffer.write("Missing element for constructor ");
+        buffer.write(node.returnType.name);
         if (node.name != null) {
-          builder.append(".");
-          builder.append(node.name.name);
+          buffer.write(".");
+          buffer.write(node.name.name);
         }
-        builder.append(" in ");
-        builder.append(definingLibrary.source.fullName);
-        AnalysisEngine.instance.logger.logInformation2(builder.toString(), new JavaException());
+        buffer.write(" in ");
+        buffer.write(definingLibrary.source.fullName);
+        AnalysisEngine.instance.logger.logInformation2(buffer.toString(), new JavaException());
       } else {
         _nameScope = new FunctionScope(_nameScope, constructorElement);
       }
@@ -20783,19 +20856,19 @@
       try {
         ExecutableElement functionElement = node.element;
         if (functionElement == null) {
-          JavaStringBuilder builder = new JavaStringBuilder();
-          builder.append("Missing element for function ");
+          StringBuffer buffer = new StringBuffer();
+          buffer.write("Missing element for function ");
           AstNode parent = node.parent;
           while (parent != null) {
             if (parent is Declaration) {
               Element parentElement = (parent as Declaration).element;
-              builder.append(parentElement == null ? "<unknown> " : ("${parentElement.name} "));
+              buffer.write(parentElement == null ? "<unknown> " : "${parentElement.name} ");
             }
             parent = parent.parent;
           }
-          builder.append("in ");
-          builder.append(definingLibrary.source.fullName);
-          AnalysisEngine.instance.logger.logInformation2(builder.toString(), new JavaException());
+          buffer.write("in ");
+          buffer.write(definingLibrary.source.fullName);
+          AnalysisEngine.instance.logger.logInformation2(buffer.toString(), new JavaException());
         } else {
           _nameScope = new FunctionScope(_nameScope, functionElement);
         }
@@ -22366,9 +22439,10 @@
       return expressionBody.expression.bestType;
     }
     if (body is BlockFunctionBody) {
-      List<DartType> result = [null];
-      body.accept(new GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction(result));
-      return result[0];
+      GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction visitor
+          = new GeneralizingAstVisitor_StaticTypeAnalyzer_computePropagatedReturnTypeOfFunction();
+      body.accept(visitor);
+      return visitor.result;
     }
     return null;
   }
@@ -23193,9 +23267,9 @@
    * @param overrides the overrides to be applied
    */
   void applyOverrides(Map<VariableElement, DartType> overrides) {
-    for (MapEntry<VariableElement, DartType> entry in getMapEntrySet(overrides)) {
-      _overridenTypes[entry.getKey()] = entry.getValue();
-    }
+    overrides.forEach((VariableElement element, DartType type) {
+      _overridenTypes[element] = type;
+    });
   }
 
   /**
@@ -23705,7 +23779,7 @@
   InterfaceType _getType(Namespace namespace, String typeName) {
     Element element = namespace.get(typeName);
     if (element == null) {
-      AnalysisEngine.instance.logger.logInformation("No definition of type ${typeName}");
+      AnalysisEngine.instance.logger.logInformation("No definition of type $typeName");
       return null;
     }
     return (element as ClassElement).type;
@@ -23947,19 +24021,19 @@
     ExecutableElementImpl element = node.element as ExecutableElementImpl;
     if (element == null) {
       ClassDeclaration classNode = node.getAncestor((node) => node is ClassDeclaration);
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append("The element for the constructor ");
-      builder.append(node.name == null ? "<unnamed>" : node.name.name);
-      builder.append(" in ");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("The element for the constructor ");
+      buffer.write(node.name == null ? "<unnamed>" : node.name.name);
+      buffer.write(" in ");
       if (classNode == null) {
-        builder.append("<unknown class>");
+        buffer.write("<unknown class>");
       } else {
-        builder.append(classNode.name.name);
+        buffer.write(classNode.name.name);
       }
-      builder.append(" in ");
-      builder.append(source.fullName);
-      builder.append(" was not set while trying to resolve types.");
-      AnalysisEngine.instance.logger.logError2(builder.toString(), new CaughtException(new AnalysisException(), null));
+      buffer.write(" in ");
+      buffer.write(source.fullName);
+      buffer.write(" was not set while trying to resolve types.");
+      AnalysisEngine.instance.logger.logError2(buffer.toString(), new CaughtException(new AnalysisException(), null));
     } else {
       ClassElement definingClass = element.enclosingElement as ClassElement;
       element.returnType = definingClass.type;
@@ -24021,13 +24095,13 @@
     super.visitFunctionDeclaration(node);
     ExecutableElementImpl element = node.element as ExecutableElementImpl;
     if (element == null) {
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append("The element for the top-level function ");
-      builder.append(node.name);
-      builder.append(" in ");
-      builder.append(source.fullName);
-      builder.append(" was not set while trying to resolve types.");
-      AnalysisEngine.instance.logger.logError2(builder.toString(), new CaughtException(new AnalysisException(), null));
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("The element for the top-level function ");
+      buffer.write(node.name);
+      buffer.write(" in ");
+      buffer.write(source.fullName);
+      buffer.write(" was not set while trying to resolve types.");
+      AnalysisEngine.instance.logger.logError2(buffer.toString(), new CaughtException(new AnalysisException(), null));
     }
     element.returnType = _computeReturnType(node.returnType);
     FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
@@ -24068,19 +24142,19 @@
     ExecutableElementImpl element = node.element as ExecutableElementImpl;
     if (element == null) {
       ClassDeclaration classNode = node.getAncestor((node) => node is ClassDeclaration);
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append("The element for the method ");
-      builder.append(node.name.name);
-      builder.append(" in ");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("The element for the method ");
+      buffer.write(node.name.name);
+      buffer.write(" in ");
       if (classNode == null) {
-        builder.append("<unknown class>");
+        buffer.write("<unknown class>");
       } else {
-        builder.append(classNode.name.name);
+        buffer.write(classNode.name.name);
       }
-      builder.append(" in ");
-      builder.append(source.fullName);
-      builder.append(" was not set while trying to resolve types.");
-      AnalysisEngine.instance.logger.logError2(builder.toString(), new CaughtException(new AnalysisException(), null));
+      buffer.write(" in ");
+      buffer.write(source.fullName);
+      buffer.write(" was not set while trying to resolve types.");
+      AnalysisEngine.instance.logger.logError2(buffer.toString(), new CaughtException(new AnalysisException(), null));
     }
     element.returnType = _computeReturnType(node.returnType);
     FunctionTypeImpl type = new FunctionTypeImpl.con1(element);
@@ -24478,7 +24552,7 @@
         elements.add(element);
       }
     }
-    return new List.from(elements);
+    return elements;
   }
 
   /**
@@ -24700,17 +24774,17 @@
         classElement.interfaces = interfaceTypes;
       }
       // TODO(brianwilkerson) Move the following checks to ErrorVerifier.
-      List<TypeName> typeNames = new List.from(interfaces);
-      List<bool> detectedRepeatOnIndex = new List<bool>.filled(typeNames.length, false);
+      int count = interfaces.length;
+      List<bool> detectedRepeatOnIndex = new List<bool>.filled(count, false);
       for (int i = 0; i < detectedRepeatOnIndex.length; i++) {
         detectedRepeatOnIndex[i] = false;
       }
-      for (int i = 0; i < typeNames.length; i++) {
-        TypeName typeName = typeNames[i];
+      for (int i = 0; i < count; i++) {
+        TypeName typeName = interfaces[i];
         if (!detectedRepeatOnIndex[i]) {
           Element element = typeName.name.staticElement;
-          for (int j = i + 1; j < typeNames.length; j++) {
-            TypeName typeName2 = typeNames[j];
+          for (int j = i + 1; j < count; j++) {
+            TypeName typeName2 = interfaces[j];
             Identifier identifier2 = typeName2.name;
             String name2 = identifier2.name;
             Element element2 = identifier2.staticElement;
@@ -24772,7 +24846,7 @@
         types.add(type);
       }
     }
-    return new List.from(types);
+    return types;
   }
 
   void _setElement(Identifier typeName, Element element) {
diff --git a/pkg/analyzer/lib/src/generated/scanner.dart b/pkg/analyzer/lib/src/generated/scanner.dart
index f4a9712..26457d7 100644
--- a/pkg/analyzer/lib/src/generated/scanner.dart
+++ b/pkg/analyzer/lib/src/generated/scanner.dart
@@ -8,6 +8,8 @@
 library engine.scanner;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'java_core.dart';
 import 'java_engine.dart';
 import 'source.dart';
@@ -313,10 +315,10 @@
     // Compute the range of characters that are known to need to be rescanned. If the index is
     // within an existing token, then we need to start at the beginning of the token.
     //
-    int scanStart = Math.min(oldFirst.offset, index);
+    int scanStart = math.min(oldFirst.offset, index);
     int oldEnd = oldLast.end + delta - 1;
     int newEnd = index + insertedLength - 1;
-    int scanEnd = Math.max(newEnd, oldEnd);
+    int scanEnd = math.max(newEnd, oldEnd);
     //
     // Starting at the start of the scan region, scan tokens from the modifiedSource until the end
     // of the just scanned token is greater than or equal to end of the scan region in the modified
@@ -1925,7 +1927,7 @@
   ErrorType get type => ErrorType.SYNTACTIC_ERROR;
 
   @override
-  String get uniqueName => "${runtimeType.toString()}.${name}";
+  String get uniqueName => "$runtimeType.$name";
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index 046ac5e..494021c 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -216,7 +216,7 @@
     String libraryName = null;
     Expression key = node.key;
     if (key is SimpleStringLiteral) {
-      libraryName = "${_LIBRARY_PREFIX}${key.value}";
+      libraryName = "$_LIBRARY_PREFIX${key.value}";
     }
     Expression value = node.value;
     if (value is InstanceCreationExpression) {
diff --git a/pkg/analyzer/lib/src/generated/sdk_io.dart b/pkg/analyzer/lib/src/generated/sdk_io.dart
index 974c393..920dccc 100644
--- a/pkg/analyzer/lib/src/generated/sdk_io.dart
+++ b/pkg/analyzer/lib/src/generated/sdk_io.dart
@@ -243,7 +243,7 @@
     JavaFile file = new JavaFile.fromUri(uri);
     String filePath = file.getAbsolutePath();
     String libPath = libraryDirectory.getAbsolutePath();
-    if (!filePath.startsWith("${libPath}${JavaFile.separator}")) {
+    if (!filePath.startsWith("$libPath${JavaFile.separator}")) {
       return null;
     }
     filePath = filePath.substring(libPath.length + 1);
@@ -254,17 +254,17 @@
         try {
           return new FileBasedSource.con2(parseUriWithException(path), file);
         } on URISyntaxException catch (exception) {
-          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: ${path}", exception);
+          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: $path", exception);
           return null;
         }
       }
       libraryPath = new JavaFile(libraryPath).getParent();
-      if (filePath.startsWith("${libraryPath}${JavaFile.separator}")) {
+      if (filePath.startsWith("$libraryPath${JavaFile.separator}")) {
         String path = "${library.shortName}/${filePath.substring(libraryPath.length + 1)}";
         try {
           return new FileBasedSource.con2(parseUriWithException(path), file);
         } on URISyntaxException catch (exception) {
-          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: ${path}", exception);
+          AnalysisEngine.instance.logger.logInformation2("Failed to create URI: $path", exception);
           return null;
         }
       }
@@ -369,7 +369,7 @@
       return null;
     }
     JavaFile libDir = new JavaFile.relative(dir, libraryName);
-    JavaFile docFile = new JavaFile.relative(libDir, "${libraryName}${_DOC_FILE_SUFFIX}");
+    JavaFile docFile = new JavaFile.relative(libDir, "$libraryName$_DOC_FILE_SUFFIX");
     if (docFile.exists()) {
       return docFile;
     }
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index b4974ae..3b3d79b 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -8,6 +8,8 @@
 library engine.source;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'java_core.dart';
 import 'sdk.dart' show DartSdk;
 import 'engine.dart';
@@ -69,13 +71,17 @@
       return _contentMap.remove(source);
     } else {
       int newStamp = JavaSystem.currentTimeMillis();
-      int oldStamp = javaMapPut(_stampMap, source, newStamp);
-      // Occasionally, if this method is called in rapid succession, the timestamps are equal.
-      // Guard against this by artificially incrementing the new timestamp
+      int oldStamp = _stampMap[source];
+      _stampMap[source] = newStamp;
+      // Occasionally, if this method is called in rapid succession, the
+      // timestamps are equal. Guard against this by artificially incrementing
+      // the new timestamp.
       if (newStamp == oldStamp) {
         _stampMap[source] = newStamp + 1;
       }
-      return javaMapPut(_contentMap, source, contents);
+      String oldContent =_contentMap[source];
+      _contentMap[source] = contents;
+      return oldContent;
     }
   }
 }
@@ -516,7 +522,7 @@
         return _internalResolveUri(null, uri);
       }
     } catch (exception) {
-      AnalysisEngine.instance.logger.logError2("Could not resolve URI: ${absoluteUri}", exception);
+      AnalysisEngine.instance.logger.logError2("Could not resolve URI: $absoluteUri", exception);
     }
     return null;
   }
@@ -533,7 +539,7 @@
       try {
         return _internalResolveUri(null, absoluteUri);
       } on AnalysisException catch (exception, stackTrace) {
-        AnalysisEngine.instance.logger.logError2("Could not resolve URI: ${absoluteUri}", new CaughtException(exception, stackTrace));
+        AnalysisEngine.instance.logger.logError2("Could not resolve URI: $absoluteUri", new CaughtException(exception, stackTrace));
       }
     }
     return null;
@@ -550,7 +556,7 @@
   Source fromEncoding(String encoding) {
     Source source = forUri(encoding);
     if (source == null) {
-      throw new IllegalArgumentException("Invalid source encoding: ${encoding}");
+      throw new IllegalArgumentException("Invalid source encoding: $encoding");
     }
     return source;
   }
@@ -598,7 +604,7 @@
       // Force the creation of an escaped URI to deal with spaces, etc.
       return _internalResolveUri(containingSource, parseUriWithException(containedUri));
     } catch (exception) {
-      AnalysisEngine.instance.logger.logError2("Could not resolve URI (${containedUri}) relative to source (${containingSource.fullName})", exception);
+      AnalysisEngine.instance.logger.logError2("Could not resolve URI ($containedUri) relative to source (${containingSource.fullName})", exception);
       return null;
     }
   }
@@ -643,7 +649,7 @@
   Source _internalResolveUri(Source containingSource, Uri containedUri) {
     if (!containedUri.isAbsolute) {
       if (containingSource == null) {
-        throw new AnalysisException("Cannot resolve a relative URI without a containing source: ${containedUri}");
+        throw new AnalysisException("Cannot resolve a relative URI without a containing source: $containedUri");
       }
       containedUri = containingSource.resolveRelativeUri(containedUri);
     }
@@ -781,8 +787,8 @@
    * @return the minimal [SourceRange] that cover this and the given [SourceRange]s.
    */
   SourceRange getUnion(SourceRange other) {
-    int newOffset = Math.min(offset, other.offset);
-    int newEnd = Math.max(offset + length, other.offset + other.length);
+    int newOffset = math.min(offset, other.offset);
+    int newEnd = math.max(offset + length, other.offset + other.length);
     return new SourceRange(newOffset, newEnd - newOffset);
   }
 
@@ -806,20 +812,12 @@
   }
 
   /**
-   * @return `true` if this [SourceRange] starts in <code>otherRange</code>.
+   * Return `true` if this [SourceRange] starts in the [otherRange].
    */
   bool startsIn(SourceRange otherRange) => otherRange.contains(offset);
 
   @override
-  String toString() {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    builder.append("[offset=");
-    builder.append(offset);
-    builder.append(", length=");
-    builder.append(length);
-    builder.append("]");
-    return builder.toString();
-  }
+  String toString() => '[offset=$offset, length=$length]';
 }
 
 /**
diff --git a/pkg/analyzer/lib/src/generated/source_io.dart b/pkg/analyzer/lib/src/generated/source_io.dart
index a5b4347..60740c1 100644
--- a/pkg/analyzer/lib/src/generated/source_io.dart
+++ b/pkg/analyzer/lib/src/generated/source_io.dart
@@ -32,7 +32,7 @@
     if (path == null || path.length <= 0 || path.codeUnitAt(path.length - 1) == JavaFile.separatorChar) {
       return path;
     }
-    return "${path}${JavaFile.separator}";
+    return "$path${JavaFile.separator}";
   }
 
   /**
@@ -77,7 +77,7 @@
   int get hashCode => _path.hashCode;
 
   @override
-  String toString() => "SourceContainer[${_path}]";
+  String toString() => "SourceContainer[$_path]";
 }
 
 /**
@@ -175,9 +175,9 @@
         String scheme = uri.scheme;
         String part = uri.path;
         if (scheme == DartUriResolver.DART_SCHEME && part.indexOf('/') < 0) {
-          part = "${part}/${part}.dart";
+          part = "$part/$part.dart";
         }
-        baseUri = parseUriWithException("${scheme}:/${part}");
+        baseUri = parseUriWithException("$scheme:/$part");
       }
       Uri result = baseUri.resolveUri(containedUri);
       if (isOpaque) {
@@ -185,7 +185,7 @@
       }
       return result;
     } catch (exception, stackTrace) {
-      throw new AnalysisException("Could not resolve URI (${containedUri}) relative to source (${uri})", new CaughtException(exception, stackTrace));
+      throw new AnalysisException("Could not resolve URI ($containedUri) relative to source ($uri)", new CaughtException(exception, stackTrace));
     }
   }
 
@@ -345,6 +345,18 @@
     }
   }
 
+  /**
+   * If the list of package directories contains one element, return it.
+   * Otherwise raise an exception.  Intended for testing.
+   */
+  String get packagesDirectory_forTesting {
+    int length = _packagesDirectories.length;
+    if (length != 1) {
+      throw new Exception('Expected 1 package directory, found $length');
+    }
+    return _packagesDirectories[0].getPath();
+  }
+
   @override
   Source resolveAbsolute(Uri uri) {
     if (!isPackageUri(uri)) {
@@ -397,7 +409,7 @@
               String pkgCanonicalPath = pkgFolder.getCanonicalPath();
               if (sourcePath.startsWith(pkgCanonicalPath)) {
                 String relPath = sourcePath.substring(pkgCanonicalPath.length);
-                return parseUriWithException("${PACKAGE_SCHEME}:${pkgFolder.getName()}${relPath}");
+                return parseUriWithException("$PACKAGE_SCHEME:${pkgFolder.getName()}$relPath");
               }
             } catch (e) {
             }
@@ -423,10 +435,10 @@
       pkgDir = pkgDir.getCanonicalFile();
     } on JavaIOException catch (e) {
       if (!e.toString().contains("Required key not available")) {
-        AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}", e);
+        AnalysisEngine.instance.logger.logError2("Canonical failed: $pkgDir", e);
       } else if (_CanLogRequiredKeyIoException) {
         _CanLogRequiredKeyIoException = false;
-        AnalysisEngine.instance.logger.logError2("Canonical failed: ${pkgDir}", e);
+        AnalysisEngine.instance.logger.logError2("Canonical failed: $pkgDir", e);
       }
     }
     return new JavaFile.relative(pkgDir, relPath.replaceAll('/', new String.fromCharCode(JavaFile.separatorChar)));
@@ -443,7 +455,7 @@
     }
     String rootPath = rootDir.getAbsolutePath();
     String filePath = file.getAbsolutePath();
-    return filePath.startsWith("${rootPath}/lib");
+    return filePath.startsWith("$rootPath/lib");
   }
 }
 
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
index 18490e3..d4328ca 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_factory.dart
@@ -340,7 +340,7 @@
 
   static StringInterpolation string(List<InterpolationElement> elements) => new StringInterpolation(list(elements));
 
-  static SimpleStringLiteral string2(String content) => new SimpleStringLiteral(TokenFactory.tokenFromString("'${content}'"), content);
+  static SimpleStringLiteral string2(String content) => new SimpleStringLiteral(TokenFactory.tokenFromString("'$content'"), content);
 
   static SuperConstructorInvocation superConstructorInvocation(List<Expression> arguments) => superConstructorInvocation2(null, arguments);
 
@@ -363,7 +363,7 @@
     for (String component in components) {
       identifierList.add(TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, component));
     }
-    return new SymbolLiteral(TokenFactory.tokenFromType(TokenType.HASH), new List.from(identifierList));
+    return new SymbolLiteral(TokenFactory.tokenFromType(TokenType.HASH), identifierList);
   }
 
   static BlockFunctionBody syncBlockFunctionBody(List<Statement> statements) => new BlockFunctionBody(TokenFactory.tokenFromTypeAndString(TokenType.IDENTIFIER, "sync"), null, block(statements));
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index 60f0fff..44e90c2 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -65,7 +65,7 @@
     int count = argumentTypes.length;
     List<ParameterElement> parameters = new List<ParameterElement>(count);
     for (int i = 0; i < count; i++) {
-      ParameterElementImpl parameter = new ParameterElementImpl("a${i}", i);
+      ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
       parameter.type = argumentTypes[i];
       parameter.parameterKind = ParameterKind.REQUIRED;
       parameters[i] = parameter;
@@ -128,7 +128,7 @@
     //
     // Finish building the enum.
     //
-    enumElement.fields = new List.from(fields);
+    enumElement.fields = fields;
     // Client code isn't allowed to invoke the constructor, so we do not model it.
     return enumElement;
   }
@@ -159,7 +159,7 @@
       setter.setter = true;
       setter.synthetic = true;
       setter.variable = field;
-      setter.parameters = <ParameterElement> [requiredParameter2("_${name}", type)];
+      setter.parameters = <ParameterElement> [requiredParameter2("_$name", type)];
       setter.returnType = VoidTypeImpl.instance;
       setter.type = new FunctionTypeImpl.con1(setter);
       field.setter = setter;
@@ -190,7 +190,7 @@
     int totalCount = normalCount + optionalCount;
     List<ParameterElement> parameters = new List<ParameterElement>(totalCount);
     for (int i = 0; i < totalCount; i++) {
-      ParameterElementImpl parameter = new ParameterElementImpl("a${i}", i);
+      ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
       if (i < normalCount) {
         parameter.type = normalParameters[i].type;
         parameter.parameterKind = ParameterKind.REQUIRED;
@@ -220,7 +220,7 @@
     List<ParameterElement> parameters = new List<ParameterElement>(totalCount);
     for (int i = 0; i < totalCount; i++) {
       if (i < normalCount) {
-        ParameterElementImpl parameter = new ParameterElementImpl("a${i}", i);
+        ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
         parameter.type = normalParameters[i].type;
         parameter.parameterKind = ParameterKind.REQUIRED;
         parameters[i] = parameter;
@@ -296,7 +296,7 @@
   }
 
   static LibraryElementImpl library(AnalysisContext context, String libraryName) {
-    String fileName = "/${libraryName}.dart";
+    String fileName = "/$libraryName.dart";
     CompilationUnitElementImpl unit = compilationUnit(fileName);
     LibraryElementImpl library = new LibraryElementImpl(context, libraryName, 0);
     library.definingCompilationUnit = unit;
@@ -312,7 +312,7 @@
     int count = argumentTypes.length;
     List<ParameterElement> parameters = new List<ParameterElement>(count);
     for (int i = 0; i < count; i++) {
-      ParameterElementImpl parameter = new ParameterElementImpl("a${i}", i);
+      ParameterElementImpl parameter = new ParameterElementImpl("a$i", i);
       parameter.type = argumentTypes[i];
       parameter.parameterKind = ParameterKind.REQUIRED;
       parameters[i] = parameter;
@@ -422,7 +422,7 @@
       setter.static = true;
       setter.synthetic = true;
       setter.variable = variable;
-      setter.parameters = <ParameterElement> [requiredParameter2("_${name}", type)];
+      setter.parameters = <ParameterElement> [requiredParameter2("_$name", type)];
       setter.returnType = VoidTypeImpl.instance;
       setter.type = new FunctionTypeImpl.con1(setter);
       variable.setter = setter;
diff --git a/pkg/analyzer/lib/src/generated/utilities_collection.dart b/pkg/analyzer/lib/src/generated/utilities_collection.dart
index f89d69f..04d6177 100644
--- a/pkg/analyzer/lib/src/generated/utilities_collection.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_collection.dart
@@ -8,6 +8,8 @@
 library engine.utilities.collection;
 
 import 'dart:collection';
+import "dart:math" as math;
+
 import 'java_core.dart';
 import 'scanner.dart' show Token;
 
@@ -76,7 +78,7 @@
    */
   static void _checkIndex(int index) {
     if (index < 0 || index > 30) {
-      throw new RangeError("Index not between 0 and 30: ${index}");
+      throw new RangeError("Index not between 0 and 30: $index");
     }
   }
 }
@@ -440,10 +442,10 @@
         if (wInfo == null) {
           // Successor w has not yet been visited; recurse on it
           wInfo = _strongConnect(w);
-          vInfo.lowlink = Math.min(vInfo.lowlink, wInfo.lowlink);
+          vInfo.lowlink = math.min(vInfo.lowlink, wInfo.lowlink);
         } else if (wInfo.onStack) {
           // Successor w is in stack S and hence in the current SCC
-          vInfo.lowlink = Math.min(vInfo.lowlink, wInfo.index);
+          vInfo.lowlink = math.min(vInfo.lowlink, wInfo.index);
         }
       }
     }
diff --git a/pkg/analyzer/lib/src/services/formatter_impl.dart b/pkg/analyzer/lib/src/services/formatter_impl.dart
index 0c272f1..d35bd2b 100644
--- a/pkg/analyzer/lib/src/services/formatter_impl.dart
+++ b/pkg/analyzer/lib/src/services/formatter_impl.dart
@@ -51,7 +51,7 @@
     //TODO(pquitslund): consider a verbosity flag to add/suppress details
     var errorCode = errors[0].errorCode;
     var phase = errorCode is ParserErrorCode ? 'parsing' : 'scanning';
-    return 'An error occured while ${phase} (${errorCode.name}).';
+    return 'An error occured while $phase (${errorCode.name}).';
   }
 
   String toString() => '$message';
@@ -206,7 +206,7 @@
     if (!isEOF(token2) &&
         !(isCLOSE_CURLY_BRACKET(token2) && isEOF(token2.next))) {
       throw new FormatterException(
-          'Expected "EOF" but got "${token2}".');
+          'Expected "EOF" but got "$token2".');
     }
   }
 
@@ -216,7 +216,7 @@
     while (comment1 != null) {
       if (comment2 == null) {
         throw new FormatterException(
-            'Expected comment, "${comment1}", at ${describeLocation(token1)}, '
+            'Expected comment, "$comment1", at ${describeLocation(token1)}, '
             'but got none.');
       }
       if (!equivalentComments(comment1, comment2)) {
@@ -227,7 +227,7 @@
     }
     if (comment2 != null) {
       throw new FormatterException(
-          'Unexpected comment, "${comment2}", at ${describeLocation(token2)}.');
+          'Unexpected comment, "$comment2", at ${describeLocation(token2)}.');
     }
   }
 
@@ -236,7 +236,7 @@
 
   throwNotEqualException(t1, t2) {
     throw new FormatterException(
-        'Expected "${t1}" but got "${t2}", at ${describeLocation(t1)}.');
+        'Expected "$t1" but got "$t2", at ${describeLocation(t1)}.');
   }
 
   String describeLocation(Token token) => lineInfo == null ? '<unknown>' :
diff --git a/pkg/analyzer/lib/src/services/runtime/coverage/models.dart b/pkg/analyzer/lib/src/services/runtime/coverage/models.dart
index 74fc7aa..bf247f3 100644
--- a/pkg/analyzer/lib/src/services/runtime/coverage/models.dart
+++ b/pkg/analyzer/lib/src/services/runtime/coverage/models.dart
@@ -89,7 +89,7 @@
     }
     // Print source and line ranges.
     if (children.isEmpty) {
-      sink.write('${prefix}  "ranges": [');
+      sink.write('$prefix  "ranges": [');
       var rangePrinter = new RangePrinter(unit, sink, executedIds);
       idToRange.forEach(rangePrinter.handle);
       rangePrinter.printRange();
diff --git a/pkg/analyzer/lib/src/services/runtime/log.dart b/pkg/analyzer/lib/src/services/runtime/log.dart
index 48d66d7..6d3c9a6 100644
--- a/pkg/analyzer/lib/src/services/runtime/log.dart
+++ b/pkg/analyzer/lib/src/services/runtime/log.dart
@@ -41,7 +41,7 @@
   _logger.onRecord.listen((LogRecord record) {
     String levelString = record.level.toString();
     while (levelString.length < 6) levelString += ' ';
-    print('${record.time}: ${levelString} ${record.message}');
+    print('${record.time}: $levelString ${record.message}');
   });
 }
 
diff --git a/pkg/analyzer/lib/src/util/utilities_timing.dart b/pkg/analyzer/lib/src/util/utilities_timing.dart
new file mode 100644
index 0000000..4d07fcd
--- /dev/null
+++ b/pkg/analyzer/lib/src/util/utilities_timing.dart
@@ -0,0 +1,39 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library engine.utilities.timing;
+
+/**
+ * A `CountedStopwatch` is a [Stopwatch] that counts the number of times the
+ * stop method has been invoked.
+ */
+class CountedStopwatch extends Stopwatch {
+  /**
+   * The number of times the [stop] method has been invoked.
+   */
+  int stopCount = 0;
+
+  /**
+   * Initialize a newly created stopwatch.
+   */
+  CountedStopwatch();
+
+  /**
+   * The average number of millisecond that were recorded each time the [start]
+   * and [stop] methods were invoked.
+   */
+  int get averageMilliseconds => elapsedMilliseconds ~/ stopCount;
+
+  @override
+  void stop() {
+    super.stop();
+    stopCount++;
+  }
+
+  @override
+  void reset() {
+    super.reset();
+    stopCount = 0;
+  }
+}
\ No newline at end of file
diff --git a/pkg/analyzer/test/generated/all_the_rest.dart b/pkg/analyzer/test/generated/all_the_rest.dart
index c194f19..7aa42b0 100644
--- a/pkg/analyzer/test/generated/all_the_rest.dart
+++ b/pkg/analyzer/test/generated/all_the_rest.dart
@@ -19,7 +19,6 @@
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/java_engine_io.dart';
 import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/scanner.dart';
 import 'package:analyzer/src/generated/sdk.dart';
@@ -31,7 +30,7 @@
 import 'package:analyzer/src/generated/testing/html_factory.dart';
 import 'package:analyzer/src/generated/utilities_collection.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 
 import '../reflective_tests.dart';
 import 'parser_test.dart';
@@ -40,7 +39,7 @@
 
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(AngularCompilationUnitBuilderTest);
   runReflectiveTests(AngularHtmlUnitResolverTest);
   runReflectiveTests(AngularHtmlUnitUtilsTest);
@@ -74,7 +73,7 @@
   runReflectiveTests(StringScannerTest);
 }
 
-abstract class AbstractScannerTest extends JUnitTestCase {
+abstract class AbstractScannerTest {
   ht.AbstractScanner newScanner(String input);
 
   void test_tokenize_attribute() {
@@ -250,11 +249,11 @@
             " "],
         <int>[0, 9, 21, 25, 28, 38, 49]);
     token = token.next;
-    JUnitTestCase.assertEquals(1, token.offset);
+    expect(token.offset, 1);
     token = token.next;
-    JUnitTestCase.assertEquals(3, token.offset);
+    expect(token.offset, 3);
     token = token.next;
-    JUnitTestCase.assertEquals(10, token.offset);
+    expect(token.offset, 10);
   }
 
   void test_tokenize_string() {
@@ -309,7 +308,7 @@
     ht.Token token =
         _tokenize("<html>", <Object>[ht.TokenType.LT, "html", ht.TokenType.GT]);
     token = token.next;
-    JUnitTestCase.assertEquals(1, token.offset);
+    expect(token.offset, 1);
   }
 
   void test_tokenize_tag_incomplete_with_special_characters() {
@@ -369,8 +368,7 @@
       }
       return ht.TokenType.TEXT;
     }
-    JUnitTestCase.fail(
-        "Unknown expected token ${count}: ${(expected != null ? expected.runtimeType : "null")}");
+    fail("Unknown expected token $count: ${expected != null ? expected.runtimeType : "null"}");
     return null;
   }
 
@@ -397,38 +395,32 @@
     ht.Token firstToken = scanner.tokenize();
     ht.Token token = firstToken;
     ht.Token previousToken = token.previous;
-    JUnitTestCase.assertTrue(previousToken.type == ht.TokenType.EOF);
-    JUnitTestCase.assertSame(previousToken, previousToken.previous);
-    JUnitTestCase.assertEquals(-1, previousToken.offset);
-    JUnitTestCase.assertSame(token, previousToken.next);
-    JUnitTestCase.assertEquals(0, token.offset);
+    expect(previousToken.type == ht.TokenType.EOF, isTrue);
+    expect(previousToken.previous, same(previousToken));
+    expect(previousToken.offset, -1);
+    expect(previousToken.next, same(token));
+    expect(token.offset, 0);
     while (token.type != ht.TokenType.EOF) {
       if (count == expectedTokens.length) {
-        JUnitTestCase.fail("too many parsed tokens");
+        fail("too many parsed tokens");
       }
       Object expected = expectedTokens[count];
       ht.TokenType expectedTokenType = _getExpectedTokenType(count, expected);
-      JUnitTestCase.assertSameMsg(
-          "token ${count}",
-          expectedTokenType,
-          token.type);
+      expect(token.type, same(expectedTokenType), reason: "token $count");
       if (expectedTokenType.lexeme != null) {
-        JUnitTestCase.assertEqualsMsg(
-            "token ${count}",
-            expectedTokenType.lexeme,
-            token.lexeme);
+        expect(token.lexeme, expectedTokenType.lexeme, reason: "token $count");
       } else {
-        JUnitTestCase.assertEqualsMsg("token ${count}", expected, token.lexeme);
+        expect(token.lexeme, expected, reason: "token $count");
       }
       count++;
       previousToken = token;
       token = token.next;
-      JUnitTestCase.assertSame(previousToken, token.previous);
+      expect(token.previous, same(previousToken));
     }
-    JUnitTestCase.assertSame(token, token.next);
-    JUnitTestCase.assertEquals(input.length, token.offset);
+    expect(token.next, same(token));
+    expect(token.offset, input.length);
     if (count != expectedTokens.length) {
-      JUnitTestCase.assertTrueMsg("not enough parsed tokens", false);
+      expect(false, isTrue, reason: "not enough parsed tokens");
     }
     List<int> lineStarts = scanner.lineStarts;
     bool success = expectedLineStarts.length == lineStarts.length;
@@ -441,18 +433,18 @@
       }
     }
     if (!success) {
-      JavaStringBuilder msg = new JavaStringBuilder();
-      msg.append("Expected line starts ");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("Expected line starts ");
       for (int start in expectedLineStarts) {
-        msg.append(start);
-        msg.append(", ");
+        buffer.write(start);
+        buffer.write(", ");
       }
-      msg.append(" but found ");
+      buffer.write(" but found ");
       for (int start in lineStarts) {
-        msg.append(start);
-        msg.append(", ");
+        buffer.write(start);
+        buffer.write(", ");
       }
-      JUnitTestCase.fail(msg.toString());
+      fail(buffer.toString());
     }
     return firstToken;
   }
@@ -461,32 +453,31 @@
 
 class AngularCompilationUnitBuilderTest extends AngularTest {
   void test_Decorator() {
-    String mainContent = _createAngularSource(
-        [
-            "@Decorator(selector: '[my-dir]',",
-            "             map: const {",
-            "               'my-dir' : '=>myPropA',",
-            "               '.' : '&myPropB',",
-            "             })",
-            "class MyDirective {",
-            "  set myPropA(value) {}",
-            "  set myPropB(value) {}",
-            "  @NgTwoWay('my-prop-c')",
-            "  String myPropC;",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Decorator(selector: '[my-dir]',
+             map: const {
+               'my-dir' : '=>myPropA',
+               '.' : '&myPropB',
+             })
+class MyDirective {
+  set myPropA(value) {}
+  set myPropB(value) {}
+  @NgTwoWay('my-prop-c')
+  String myPropC;
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularDirectiveElement
     ClassElement classElement = mainUnitElement.getType("MyDirective");
     AngularDecoratorElement directive =
         getAngularElement(classElement, (e) => e is AngularDecoratorElement);
-    JUnitTestCase.assertNotNull(directive);
+    expect(directive, isNotNull);
     // verify
-    JUnitTestCase.assertEquals(null, directive.name);
-    JUnitTestCase.assertEquals(-1, directive.nameOffset);
+    expect(directive.name, null);
+    expect(directive.nameOffset, -1);
     _assertHasAttributeSelector(directive.selector, "my-dir");
     // verify properties
     List<AngularPropertyElement> properties = directive.properties;
-    EngineTestCase.assertLength(3, properties);
+    expect(properties, hasLength(3));
     _assertProperty(
         properties[0],
         "my-dir",
@@ -511,58 +502,60 @@
   }
 
   void test_Decorator_bad_cannotParseSelector() {
-    String mainContent = _createAngularSource(
-        [
-            "@Decorator(selector: '~bad-selector',",
-            "             map: const {",
-            "               'my-dir' : '=>myPropA',",
-            "               '.' : '&myPropB',",
-            "             })",
-            "class MyDirective {",
-            "  set myPropA(value) {}",
-            "  set myPropB(value) {}",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Decorator(selector: '~bad-selector',
+             map: const {
+               'my-dir' : '=>myPropA',
+               '.' : '&myPropB',
+             })
+class MyDirective {
+  set myPropA(value) {}
+  set myPropB(value) {}
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
   }
 
   void test_Decorator_bad_missingSelector() {
-    String mainContent = _createAngularSource(
-        [
-            "@Decorator(/*selector: '[my-dir]',*/",
-            "             map: const {",
-            "               'my-dir' : '=>myPropA',",
-            "               '.' : '&myPropB',",
-            "             })",
-            "class MyDirective {",
-            "  set myPropA(value) {}",
-            "  set myPropB(value) {}",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Decorator(/*selector: '[my-dir]',*/
+             map: const {
+               'my-dir' : '=>myPropA',
+               '.' : '&myPropB',
+             })
+class MyDirective {
+  set myPropA(value) {}
+  set myPropB(value) {}
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.MISSING_SELECTOR]);
   }
 
   void test_Formatter() {
-    String mainContent = _createAngularSource(
-        ["@Formatter(name: 'myFilter')", "class MyFilter {", "  call(p1, p2) {}", "}"]);
+    String mainContent = _createAngularSource(r'''
+@Formatter(name: 'myFilter')
+class MyFilter {
+  call(p1, p2) {}
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularFilterElement
     ClassElement classElement = mainUnitElement.getType("MyFilter");
     AngularFormatterElement filter =
         getAngularElement(classElement, (e) => e is AngularFormatterElement);
-    JUnitTestCase.assertNotNull(filter);
+    expect(filter, isNotNull);
     // verify
-    JUnitTestCase.assertEquals("myFilter", filter.name);
-    JUnitTestCase.assertEquals(
-        AngularTest.findOffset(mainContent, "myFilter'"),
-        filter.nameOffset);
+    expect(filter.name, "myFilter");
+    expect(filter.nameOffset, AngularTest.findOffset(mainContent, "myFilter'"));
   }
 
   void test_Formatter_missingName() {
-    String mainContent = _createAngularSource(
-        ["@Formatter()", "class MyFilter {", "  call(p1, p2) {}", "}"]);
+    String mainContent = _createAngularSource(r'''
+@Formatter()
+class MyFilter {
+  call(p1, p2) {}
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.MISSING_NAME]);
@@ -570,18 +563,17 @@
     ClassElement classElement = mainUnitElement.getType("MyFilter");
     AngularFormatterElement filter =
         getAngularElement(classElement, (e) => e is AngularFormatterElement);
-    JUnitTestCase.assertNull(filter);
+    expect(filter, isNull);
   }
 
   void test_NgComponent_bad_cannotParseSelector() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: '~myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: '~myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
@@ -590,12 +582,11 @@
   void test_NgComponent_bad_missingSelector() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', /*selector: 'myComp',*/",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', /*selector: 'myComp',*/
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.MISSING_SELECTOR]);
@@ -609,25 +600,23 @@
     contextHelper.addSource("/my_template", "");
     contextHelper.addSource("/my_styles.css", "");
     addMainSource(
-        _createAngularSource(
-            [
-                "@NgComponent(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template', cssUrl: 'my_styles.css')",
-                "class MyComponent {",
-                "}"]));
+        _createAngularSource(r'''
+@NgComponent(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template', cssUrl: 'my_styles.css')
+class MyComponent {
+}'''));
     contextHelper.runTasks();
   }
 
   void test_NgComponent_bad_properties_invalidBinding() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-            "             map: const {'name' : '?field'})",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {'name' : '?field'})
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.INVALID_PROPERTY_KIND]);
@@ -636,13 +625,12 @@
   void test_NgComponent_bad_properties_nameNotStringLiteral() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-            "             map: const {null : 'field'})",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {null : 'field'})
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.INVALID_PROPERTY_NAME]);
@@ -651,13 +639,12 @@
   void test_NgComponent_bad_properties_noSuchField() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-            "             map: const {'name' : '=>field'})",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {'name' : '=>field'})
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.INVALID_PROPERTY_FIELD]);
@@ -666,13 +653,12 @@
   void test_NgComponent_bad_properties_notMapLiteral() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-            "             map: null)",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: null)
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.INVALID_PROPERTY_MAP]);
@@ -681,13 +667,12 @@
   void test_NgComponent_bad_properties_specNotStringLiteral() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-            "             map: const {'name' : null})",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {'name' : null})
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.INVALID_PROPERTY_SPEC]);
@@ -696,62 +681,59 @@
   void test_NgComponent_no_cssUrl() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html'/*, cssUrl: 'my_styles.css'*/)",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html'/*, cssUrl: 'my_styles.css'*/)
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // no CSS
-    JUnitTestCase.assertEquals(null, component.styleUri);
-    JUnitTestCase.assertEquals(-1, component.styleUriOffset);
+    expect(component.styleUri, null);
+    expect(component.styleUriOffset, -1);
   }
 
   void test_NgComponent_no_publishAs() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(/*publishAs: 'ctrl',*/ selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(/*publishAs: 'ctrl',*/ selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // no name
-    JUnitTestCase.assertEquals(null, component.name);
-    JUnitTestCase.assertEquals(-1, component.nameOffset);
+    expect(component.name, null);
+    expect(component.nameOffset, -1);
   }
 
   void test_NgComponent_no_templateUrl() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             /*templateUrl: 'my_template.html',*/ cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             /*templateUrl: 'my_template.html',*/ cssUrl: 'my_styles.css')
+class MyComponent {
+}''');
     resolveMainSource(mainContent);
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // no template
-    JUnitTestCase.assertEquals(null, component.templateUri);
-    JUnitTestCase.assertEquals(null, component.templateSource);
-    JUnitTestCase.assertEquals(-1, component.templateUriOffset);
+    expect(component.templateUri, null);
+    expect(component.templateSource, null);
+    expect(component.templateUriOffset, -1);
   }
 
   /**
@@ -760,15 +742,14 @@
   void test_NgComponent_notAngular() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = EngineTestCase.createSource(
-        [
-            "class Component {",
-            "  const Component(a, b);",
-            "}",
-            "",
-            "@Component('foo', 42)",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = r'''
+class Component {
+  const Component(a, b);
+}
+
+@Component('foo', 42)
+class MyComponent {
+}''';
     resolveMainSource(mainContent);
     assertNoMainErrors();
   }
@@ -777,29 +758,28 @@
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
     resolveMainSourceNoErrors(
-        _createAngularSource(
-            [
-                "class MySuper {",
-                "  var myPropA;",
-                "}",
-                "",
-                "",
-                "",
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "             map: const {",
-                "               'prop-a' : '@myPropA'",
-                "             })",
-                "class MyComponent extends MySuper {",
-                "}"]));
+        _createAngularSource(r'''
+class MySuper {
+  var myPropA;
+}
+
+
+
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {
+               'prop-a' : '@myPropA'
+             })
+class MyComponent extends MySuper {
+}'''));
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // verify
     List<AngularPropertyElement> properties = component.properties;
-    EngineTestCase.assertLength(1, properties);
+    expect(properties, hasLength(1));
     _assertProperty(
         properties[0],
         "prop-a",
@@ -813,30 +793,29 @@
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
     resolveMainSourceNoErrors(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-                "class MyComponent {",
-                "  @NgAttr('prop-a')",
-                "  var myPropA;",
-                "  @NgCallback('prop-b')",
-                "  var myPropB;",
-                "  @NgOneWay('prop-c')",
-                "  var myPropC;",
-                "  @NgOneWayOneTime('prop-d')",
-                "  var myPropD;",
-                "  @NgTwoWay('prop-e')",
-                "  var myPropE;",
-                "}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+  @NgAttr('prop-a')
+  var myPropA;
+  @NgCallback('prop-b')
+  var myPropB;
+  @NgOneWay('prop-c')
+  var myPropC;
+  @NgOneWayOneTime('prop-d')
+  var myPropD;
+  @NgTwoWay('prop-e')
+  var myPropE;
+}'''));
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // verify
     List<AngularPropertyElement> properties = component.properties;
-    EngineTestCase.assertLength(5, properties);
+    expect(properties, hasLength(5));
     _assertProperty(
         properties[0],
         "prop-a",
@@ -878,32 +857,31 @@
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
     resolveMainSourceNoErrors(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "             map: const {",
-                "               'prop-a' : '@myPropA',",
-                "               'prop-b' : '&myPropB',",
-                "               'prop-c' : '=>myPropC',",
-                "               'prop-d' : '=>!myPropD',",
-                "               'prop-e' : '<=>myPropE'",
-                "             })",
-                "class MyComponent {",
-                "  var myPropA;",
-                "  var myPropB;",
-                "  var myPropC;",
-                "  var myPropD;",
-                "  var myPropE;",
-                "}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {
+               'prop-a' : '@myPropA',
+               'prop-b' : '&myPropB',
+               'prop-c' : '=>myPropC',
+               'prop-d' : '=>!myPropD',
+               'prop-e' : '<=>myPropE'
+             })
+class MyComponent {
+  var myPropA;
+  var myPropB;
+  var myPropC;
+  var myPropD;
+  var myPropE;
+}'''));
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // verify
     List<AngularPropertyElement> properties = component.properties;
-    EngineTestCase.assertLength(5, properties);
+    expect(properties, hasLength(5));
     _assertProperty(
         properties[0],
         "prop-a",
@@ -944,138 +922,124 @@
   void test_NgComponent_properties_no() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // verify
-    JUnitTestCase.assertEquals("ctrl", component.name);
-    JUnitTestCase.assertEquals(
-        AngularTest.findOffset(mainContent, "ctrl'"),
-        component.nameOffset);
+    expect(component.name, "ctrl");
+    expect(component.nameOffset, AngularTest.findOffset(mainContent, "ctrl'"));
     _assertIsTagSelector(component.selector, "myComp");
-    JUnitTestCase.assertEquals("my_template.html", component.templateUri);
-    JUnitTestCase.assertEquals(
-        AngularTest.findOffset(mainContent, "my_template.html'"),
-        component.templateUriOffset);
-    JUnitTestCase.assertEquals("my_styles.css", component.styleUri);
-    JUnitTestCase.assertEquals(
-        AngularTest.findOffset(mainContent, "my_styles.css'"),
-        component.styleUriOffset);
-    EngineTestCase.assertLength(0, component.properties);
+    expect(component.templateUri, "my_template.html");
+    expect(component.templateUriOffset, AngularTest.findOffset(mainContent, "my_template.html'"));
+    expect(component.styleUri, "my_styles.css");
+    expect(component.styleUriOffset, AngularTest.findOffset(mainContent, "my_styles.css'"));
+    expect(component.properties, hasLength(0));
   }
 
   void test_NgComponent_scopeProperties() {
     contextHelper.addSource("/my_template.html", "");
     contextHelper.addSource("/my_styles.css", "");
-    String mainContent = _createAngularSource(
-        [
-            "@Component(publishAs: 'ctrl', selector: 'myComp',",
-            "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-            "class MyComponent {",
-            "  MyComponent(Scope scope) {",
-            "    scope.context['boolProp'] = true;",
-            "    scope.context['intProp'] = 42;",
-            "    scope.context['stringProp'] = 'foo';",
-            "    // duplicate is ignored",
-            "    scope.context['boolProp'] = true;",
-            "    // LHS is not an IndexExpression",
-            "    var v1;",
-            "    v1 = 1;",
-            "    // LHS is not a Scope access",
-            "    var v2;",
-            "    v2['name'] = 2;",
-            "  }",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+  MyComponent(Scope scope) {
+    scope.context['boolProp'] = true;
+    scope.context['intProp'] = 42;
+    scope.context['stringProp'] = 'foo';
+    // duplicate is ignored
+    scope.context['boolProp'] = true;
+    // LHS is not an IndexExpression
+    var v1;
+    v1 = 1;
+    // LHS is not a Scope access
+    var v2;
+    v2['name'] = 2;
+  }
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularComponentElement
     ClassElement classElement = mainUnitElement.getType("MyComponent");
     AngularComponentElement component =
         getAngularElement(classElement, (e) => e is AngularComponentElement);
-    JUnitTestCase.assertNotNull(component);
+    expect(component, isNotNull);
     // verify
     List<AngularScopePropertyElement> scopeProperties =
         component.scopeProperties;
-    EngineTestCase.assertLength(3, scopeProperties);
+    expect(scopeProperties, hasLength(3));
     {
       AngularScopePropertyElement property = scopeProperties[0];
-      JUnitTestCase.assertSame(property, findMainElement2("boolProp"));
-      JUnitTestCase.assertEquals("boolProp", property.name);
-      JUnitTestCase.assertEquals(
-          AngularTest.findOffset(mainContent, "boolProp'"),
-          property.nameOffset);
-      JUnitTestCase.assertEquals("bool", property.type.name);
+      expect(findMainElement2("boolProp"), same(property));
+      expect(property.name, "boolProp");
+      expect(property.nameOffset, AngularTest.findOffset(mainContent, "boolProp'"));
+      expect(property.type.name, "bool");
     }
     {
       AngularScopePropertyElement property = scopeProperties[1];
-      JUnitTestCase.assertSame(property, findMainElement2("intProp"));
-      JUnitTestCase.assertEquals("intProp", property.name);
-      JUnitTestCase.assertEquals(
-          AngularTest.findOffset(mainContent, "intProp'"),
-          property.nameOffset);
-      JUnitTestCase.assertEquals("int", property.type.name);
+      expect(findMainElement2("intProp"), same(property));
+      expect(property.name, "intProp");
+      expect(property.nameOffset, AngularTest.findOffset(mainContent, "intProp'"));
+      expect(property.type.name, "int");
     }
     {
       AngularScopePropertyElement property = scopeProperties[2];
-      JUnitTestCase.assertSame(property, findMainElement2("stringProp"));
-      JUnitTestCase.assertEquals("stringProp", property.name);
-      JUnitTestCase.assertEquals(
-          AngularTest.findOffset(mainContent, "stringProp'"),
-          property.nameOffset);
-      JUnitTestCase.assertEquals("String", property.type.name);
+      expect(findMainElement2("stringProp"), same(property));
+      expect(property.name, "stringProp");
+      expect(property.nameOffset, AngularTest.findOffset(mainContent, "stringProp'"));
+      expect(property.type.name, "String");
     }
   }
 
   void test_NgController() {
-    String mainContent = _createAngularSource(
-        [
-            "@Controller(publishAs: 'ctrl', selector: '[myApp]')",
-            "class MyController {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Controller(publishAs: 'ctrl', selector: '[myApp]')
+class MyController {
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularControllerElement
     ClassElement classElement = mainUnitElement.getType("MyController");
     AngularControllerElement controller =
         getAngularElement(classElement, (e) => e is AngularControllerElement);
-    JUnitTestCase.assertNotNull(controller);
+    expect(controller, isNotNull);
     // verify
-    JUnitTestCase.assertEquals("ctrl", controller.name);
-    JUnitTestCase.assertEquals(
-        AngularTest.findOffset(mainContent, "ctrl'"),
-        controller.nameOffset);
+    expect(controller.name, "ctrl");
+    expect(controller.nameOffset, AngularTest.findOffset(mainContent, "ctrl'"));
     _assertHasAttributeSelector(controller.selector, "myApp");
   }
 
   void test_NgController_cannotParseSelector() {
-    String mainContent = _createAngularSource(
-        [
-            "@Controller(publishAs: 'ctrl', selector: '~unknown')",
-            "class MyController {",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+@Controller(publishAs: 'ctrl', selector: '~unknown')
+class MyController {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.CANNOT_PARSE_SELECTOR]);
   }
 
   void test_NgController_missingPublishAs() {
-    String mainContent = _createAngularSource(
-        ["@Controller(selector: '[myApp]')", "class MyController {", "}"]);
+    String mainContent = _createAngularSource(r'''
+@Controller(selector: '[myApp]')
+class MyController {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.MISSING_PUBLISH_AS]);
   }
 
   void test_NgController_missingSelector() {
-    String mainContent = _createAngularSource(
-        ["@Controller(publishAs: 'ctrl')", "class MyController {", "}"]);
+    String mainContent = _createAngularSource(r'''
+@Controller(publishAs: 'ctrl')
+class MyController {
+}''');
     resolveMainSource(mainContent);
     // has error
     assertMainErrors([AngularCode.MISSING_SELECTOR]);
@@ -1083,37 +1047,40 @@
 
   void test_NgController_noAnnotationArguments() {
     String mainContent =
-        _createAngularSource(["@NgController", "class MyController {", "}"]);
+        _createAngularSource(r'''
+@NgController
+class MyController {
+}''');
     resolveMainSource(mainContent);
   }
 
   void test_bad_notConstructorAnnotation() {
-    String mainContent = EngineTestCase.createSource(
-        ["const MY_ANNOTATION = null;", "@MY_ANNOTATION()", "class MyFilter {", "}"]);
+    String mainContent = r'''
+const MY_ANNOTATION = null;
+@MY_ANNOTATION()
+class MyFilter {
+}''';
     resolveMainSource(mainContent);
     // prepare AngularFilterElement
     ClassElement classElement = mainUnitElement.getType("MyFilter");
     AngularFormatterElement filter =
         getAngularElement(classElement, (e) => e is AngularFormatterElement);
-    JUnitTestCase.assertNull(filter);
+    expect(filter, isNull);
   }
 
   void test_getElement_SimpleStringLiteral_withToolkitElement() {
     SimpleStringLiteral literal = AstFactory.string2("foo");
     Element element = new AngularScopePropertyElementImpl("foo", 0, null);
     literal.toolkitElement = element;
-    JUnitTestCase.assertSame(
-        element,
-        AngularCompilationUnitBuilder.getElement(literal, -1));
+    expect(AngularCompilationUnitBuilder.getElement(literal, -1), same(element));
   }
 
   void test_getElement_component_name() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-                "class MyComponent {}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {}'''));
     SimpleStringLiteral node =
         _findMainNode("ctrl'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
@@ -1127,38 +1094,36 @@
 
   void test_getElement_component_property_fromFieldAnnotation() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-                "class MyComponent {",
-                "  @NgOneWay('prop')",
-                "  var field;",
-                "}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {
+  @NgOneWay('prop')
+  var field;
+}'''));
     // prepare node
     SimpleStringLiteral node =
         _findMainNode("prop'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
     // prepare Element
     Element element = AngularCompilationUnitBuilder.getElement(node, offset);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     // check AngularPropertyElement
     AngularPropertyElement property = element as AngularPropertyElement;
-    JUnitTestCase.assertEquals("prop", property.name);
+    expect(property.name, "prop");
   }
 
   void test_getElement_component_property_fromMap() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "             map: const {",
-                "               'prop' : '@field',",
-                "             })",
-                "class MyComponent {",
-                "  var field;",
-                "}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+             map: const {
+               'prop' : '@field',
+             })
+class MyComponent {
+  var field;
+}'''));
     // AngularPropertyElement
     {
       SimpleStringLiteral node =
@@ -1166,10 +1131,10 @@
       int offset = node.offset;
       // prepare Element
       Element element = AngularCompilationUnitBuilder.getElement(node, offset);
-      JUnitTestCase.assertNotNull(element);
+      expect(element, isNotNull);
       // check AngularPropertyElement
       AngularPropertyElement property = element as AngularPropertyElement;
-      JUnitTestCase.assertEquals("prop", property.name);
+      expect(property.name, "prop");
     }
     // FieldElement
     {
@@ -1178,20 +1143,19 @@
       int offset = node.offset;
       // prepare Element
       Element element = AngularCompilationUnitBuilder.getElement(node, offset);
-      JUnitTestCase.assertNotNull(element);
+      expect(element, isNotNull);
       // check FieldElement
       FieldElement field = element as FieldElement;
-      JUnitTestCase.assertEquals("field", field.name);
+      expect(field.name, "field");
     }
   }
 
   void test_getElement_component_selector() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Component(publishAs: 'ctrl', selector: 'myComp',",
-                "             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')",
-                "class MyComponent {}"]));
+        _createAngularSource(r'''
+@Component(publishAs: 'ctrl', selector: 'myComp',
+             templateUrl: 'my_template.html', cssUrl: 'my_styles.css')
+class MyComponent {}'''));
     SimpleStringLiteral node =
         _findMainNode("myComp'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
@@ -1205,11 +1169,10 @@
 
   void test_getElement_controller_name() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Controller(publishAs: 'ctrl', selector: '[myApp]')",
-                "class MyController {",
-                "}"]));
+        _createAngularSource(r'''
+@Controller(publishAs: 'ctrl', selector: '[myApp]')
+class MyController {
+}'''));
     SimpleStringLiteral node =
         _findMainNode("ctrl'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
@@ -1223,31 +1186,31 @@
 
   void test_getElement_directive_property() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Decorator(selector: '[my-dir]',",
-                "             map: const {",
-                "               'my-dir' : '=>field'",
-                "             })",
-                "class MyDirective {",
-                "  set field(value) {}",
-                "}"]));
+        _createAngularSource(r'''
+@Decorator(selector: '[my-dir]',
+             map: const {
+               'my-dir' : '=>field'
+             })
+class MyDirective {
+  set field(value) {}
+}'''));
     // prepare node
     SimpleStringLiteral node =
         _findMainNode("my-dir'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
     // prepare Element
     Element element = AngularCompilationUnitBuilder.getElement(node, offset);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     // check AngularPropertyElement
     AngularPropertyElement property = element as AngularPropertyElement;
-    JUnitTestCase.assertEquals("my-dir", property.name);
+    expect(property.name, "my-dir");
   }
 
   void test_getElement_directive_selector() {
     resolveMainSource(
-        _createAngularSource(
-            ["@Decorator(selector: '[my-dir]')", "class MyDirective {}"]));
+        _createAngularSource(r'''
+@Decorator(selector: '[my-dir]')
+class MyDirective {}'''));
     SimpleStringLiteral node =
         _findMainNode("my-dir]'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
@@ -1261,12 +1224,11 @@
 
   void test_getElement_filter_name() {
     resolveMainSource(
-        _createAngularSource(
-            [
-                "@Formatter(name: 'myFilter')",
-                "class MyFilter {",
-                "  call(p1, p2) {}",
-                "}"]));
+        _createAngularSource(r'''
+@Formatter(name: 'myFilter')
+class MyFilter {
+  call(p1, p2) {}
+}'''));
     SimpleStringLiteral node =
         _findMainNode("myFilter'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
@@ -1283,13 +1245,17 @@
     SimpleStringLiteral node =
         _findMainNode("bar'", (n) => n is SimpleStringLiteral);
     Element element = AngularCompilationUnitBuilder.getElement(node, 0);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_getElement_noClassElement() {
-    resolveMainSource(
-        EngineTestCase.createSource(
-            ["class A {", "  const A(p);", "}", "", "@A('bar')", "class B {}"]));
+    resolveMainSource(r'''
+class A {
+  const A(p);
+}
+
+@A('bar')
+class B {}''');
     SimpleStringLiteral node =
         _findMainNode("bar'", (n) => n is SimpleStringLiteral);
     // reset B element
@@ -1298,32 +1264,33 @@
     classDeclaration.name.staticElement = null;
     // class is not resolved - no element
     Element element = AngularCompilationUnitBuilder.getElement(node, 0);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_getElement_noNode() {
     Element element = AngularCompilationUnitBuilder.getElement(null, 0);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_getElement_notFound() {
-    resolveMainSource(
-        EngineTestCase.createSource(
-            ["class MyComponent {", "  var str = 'some string';", "}"]));
+    resolveMainSource(r'''
+class MyComponent {
+  var str = 'some string';
+}''');
     // prepare node
     SimpleStringLiteral node =
         _findMainNode("some string'", (n) => n is SimpleStringLiteral);
     int offset = node.offset;
     // no Element
     Element element = AngularCompilationUnitBuilder.getElement(node, offset);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_parseSelector_hasAttribute() {
     AngularSelectorElement selector =
         AngularCompilationUnitBuilder.parseSelector(42, "[name]");
     _assertHasAttributeSelector(selector, "name");
-    JUnitTestCase.assertEquals(42 + 1, selector.nameOffset);
+    expect(selector.nameOffset, 42 + 1);
   }
 
   void test_parseSelector_hasClass() {
@@ -1331,20 +1298,20 @@
         AngularCompilationUnitBuilder.parseSelector(42, ".my-class");
     AngularHasClassSelectorElementImpl classSelector =
         selector as AngularHasClassSelectorElementImpl;
-    JUnitTestCase.assertEquals("my-class", classSelector.name);
-    JUnitTestCase.assertEquals(".my-class", classSelector.toString());
-    JUnitTestCase.assertEquals(42 + 1, selector.nameOffset);
+    expect(classSelector.name, "my-class");
+    expect(classSelector.toString(), ".my-class");
+    expect(selector.nameOffset, 42 + 1);
     // test apply()
     {
       ht.XmlTagNode node =
           HtmlFactory.tagNode("div", [HtmlFactory.attribute("class", "one two")]);
-      JUnitTestCase.assertFalse(classSelector.apply(node));
+      expect(classSelector.apply(node), isFalse);
     }
     {
       ht.XmlTagNode node = HtmlFactory.tagNode(
           "div",
           [HtmlFactory.attribute("class", "one my-class two")]);
-      JUnitTestCase.assertTrue(classSelector.apply(node));
+      expect(classSelector.apply(node), isTrue);
     }
   }
 
@@ -1352,7 +1319,7 @@
     AngularSelectorElement selector =
         AngularCompilationUnitBuilder.parseSelector(42, "name");
     _assertIsTagSelector(selector, "name");
-    JUnitTestCase.assertEquals(42, selector.nameOffset);
+    expect(selector.nameOffset, 42);
   }
 
   void test_parseSelector_isTag_hasAttribute() {
@@ -1362,71 +1329,62 @@
         (obj) => obj is IsTagHasAttributeSelectorElementImpl,
         IsTagHasAttributeSelectorElementImpl,
         selector);
-    JUnitTestCase.assertEquals("tag[attr]", selector.name);
-    JUnitTestCase.assertEquals(-1, selector.nameOffset);
-    JUnitTestCase.assertEquals(
-        "tag",
-        (selector as IsTagHasAttributeSelectorElementImpl).tagName);
-    JUnitTestCase.assertEquals(
-        "attr",
-        (selector as IsTagHasAttributeSelectorElementImpl).attributeName);
+    expect(selector.name, "tag[attr]");
+    expect(selector.nameOffset, -1);
+    expect((selector as IsTagHasAttributeSelectorElementImpl).tagName, "tag");
+    expect((selector as IsTagHasAttributeSelectorElementImpl).attributeName, "attr");
   }
 
   void test_parseSelector_unknown() {
     AngularSelectorElement selector =
         AngularCompilationUnitBuilder.parseSelector(0, "~unknown");
-    JUnitTestCase.assertNull(selector);
+    expect(selector, isNull);
   }
 
   void test_view() {
     contextHelper.addSource("/wrong.html", "");
     contextHelper.addSource("/my_templateA.html", "");
     contextHelper.addSource("/my_templateB.html", "");
-    String mainContent = _createAngularSource(
-        [
-            "class MyRouteInitializer {",
-            "  init(ViewFactory view, foo) {",
-            "    foo.view('wrong.html');   // has target",
-            "    foo();                    // less than one argument",
-            "    foo('wrong.html', 'bar'); // more than one argument",
-            "    foo('wrong' + '.html');   // not literal",
-            "    foo('wrong.html');        // not ViewFactory",
-            "    view('my_templateA.html');",
-            "    view('my_templateB.html');",
-            "  }",
-            "}"]);
+    String mainContent = _createAngularSource(r'''
+class MyRouteInitializer {
+  init(ViewFactory view, foo) {
+    foo.view('wrong.html');   // has target
+    foo();                    // less than one argument
+    foo('wrong.html', 'bar'); // more than one argument
+    foo('wrong' + '.html');   // not literal
+    foo('wrong.html');        // not ViewFactory
+    view('my_templateA.html');
+    view('my_templateB.html');
+  }
+}''');
     resolveMainSourceNoErrors(mainContent);
     // prepare AngularViewElement(s)
     List<AngularViewElement> views = mainUnitElement.angularViews;
-    EngineTestCase.assertLength(2, views);
+    expect(views, hasLength(2));
     {
       AngularViewElement view = views[0];
-      JUnitTestCase.assertEquals("my_templateA.html", view.templateUri);
-      JUnitTestCase.assertEquals(null, view.name);
-      JUnitTestCase.assertEquals(-1, view.nameOffset);
-      JUnitTestCase.assertEquals(
-          AngularTest.findOffset(mainContent, "my_templateA.html'"),
-          view.templateUriOffset);
+      expect(view.templateUri, "my_templateA.html");
+      expect(view.name, null);
+      expect(view.nameOffset, -1);
+      expect(view.templateUriOffset, AngularTest.findOffset(mainContent, "my_templateA.html'"));
     }
     {
       AngularViewElement view = views[1];
-      JUnitTestCase.assertEquals("my_templateB.html", view.templateUri);
-      JUnitTestCase.assertEquals(null, view.name);
-      JUnitTestCase.assertEquals(-1, view.nameOffset);
-      JUnitTestCase.assertEquals(
-          AngularTest.findOffset(mainContent, "my_templateB.html'"),
-          view.templateUriOffset);
+      expect(view.templateUri, "my_templateB.html");
+      expect(view.name, null);
+      expect(view.nameOffset, -1);
+      expect(view.templateUriOffset, AngularTest.findOffset(mainContent, "my_templateB.html'"));
     }
   }
 
   void _assertProperty(AngularPropertyElement property, String expectedName,
       int expectedNameOffset, AngularPropertyKind expectedKind,
       String expectedFieldName, int expectedFieldOffset) {
-    JUnitTestCase.assertEquals(expectedName, property.name);
-    JUnitTestCase.assertEquals(expectedNameOffset, property.nameOffset);
-    JUnitTestCase.assertSame(expectedKind, property.propertyKind);
-    JUnitTestCase.assertEquals(expectedFieldName, property.field.name);
-    JUnitTestCase.assertEquals(expectedFieldOffset, property.fieldNameOffset);
+    expect(property.name, expectedName);
+    expect(property.nameOffset, expectedNameOffset);
+    expect(property.propertyKind, same(expectedKind));
+    expect(property.field.name, expectedFieldName);
+    expect(property.fieldNameOffset, expectedFieldOffset);
   }
 
   /**
@@ -1463,9 +1421,7 @@
         (obj) => obj is HasAttributeSelectorElementImpl,
         HasAttributeSelectorElementImpl,
         selector);
-    JUnitTestCase.assertEquals(
-        name,
-        (selector as HasAttributeSelectorElementImpl).name);
+    expect((selector as HasAttributeSelectorElementImpl).name, name);
   }
 
   static void _assertIsTagSelector(AngularSelectorElement selector,
@@ -1474,41 +1430,36 @@
         (obj) => obj is AngularTagSelectorElementImpl,
         AngularTagSelectorElementImpl,
         selector);
-    JUnitTestCase.assertEquals(
-        name,
-        (selector as AngularTagSelectorElementImpl).name);
+    expect((selector as AngularTagSelectorElementImpl).name, name);
   }
 
-  static String _createAngularSource(List<String> lines) {
-    String source = "import 'angular.dart';\n";
-    source += EngineTestCase.createSource(lines);
-    return source;
+  static String _createAngularSource(String code) {
+    return "import 'angular.dart';\n" + code;
   }
 }
 
 
 class AngularHtmlUnitResolverTest extends AngularTest {
   void test_NgComponent_resolveTemplateFile() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "  String field;",
-                "}"]));
+    addMainSource(r'''
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+  String field;
+}''');
     contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div>", "      {{ctrl.field}}", "    </div>"]));
+        r'''
+<div>
+  {{ctrl.field}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     resolveIndex();
@@ -1520,29 +1471,30 @@
   void test_NgComponent_updateDartFile() {
     Source componentSource = contextHelper.addSource(
         "/my_component.dart",
-        EngineTestCase.createSource(
-            [
-                "library my.component;",
-                "import 'angular.dart';",
-                "@Component(selector: 'myComponent')",
-                "class MyComponent {",
-                "}"]));
+        r'''
+library my.component;
+import 'angular.dart';
+@Component(selector: 'myComponent')
+class MyComponent {
+}''');
     contextHelper.addSource(
         "/my_module.dart",
-        EngineTestCase.createSource(
-            ["library my.module;", "import 'my_component.dart';"]));
-    addMainSource(
-        EngineTestCase.createSource(["library main;", "import 'my_module.dart';"]));
+        r'''
+library my.module;
+import 'my_component.dart';''');
+    addMainSource(r'''
+library main;
+import 'my_module.dart';''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(["<myComponent/>"]));
+        AngularTest.createHtmlWithMyController("<myComponent/>"));
     // "myComponent" tag was resolved
     {
       ht.XmlTagNode tagNode =
           ht.HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent"));
       AngularSelectorElement tagElement =
           tagNode.element as AngularSelectorElement;
-      JUnitTestCase.assertNotNull(tagElement);
-      JUnitTestCase.assertEquals("myComponent", tagElement.name);
+      expect(tagElement, isNotNull);
+      expect(tagElement.name, "myComponent");
     }
     // replace "myComponent" with "myComponent2"
     // in my_component.dart and index.html
@@ -1562,116 +1514,110 @@
           ht.HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent2"));
       AngularSelectorElement tagElement =
           tagNode.element as AngularSelectorElement;
-      JUnitTestCase.assertNotNull(tagElement);
-      JUnitTestCase.assertEquals("myComponent2", tagElement.name);
+      expect(tagElement, isNotNull);
+      expect(tagElement.name, "myComponent2");
     }
   }
 
   void test_NgComponent_use_resolveAttributes() {
     contextHelper.addSource(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div>", "      {{ctrl.field}}", "    </div>"]));
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent', // selector",
-                "    map: const {'attrA' : '=>setA', 'attrB' : '@setB'})",
-                "class MyComponent {",
-                "  set setA(value) {}",
-                "  set setB(value) {}",
-                "}"]));
+        r'''
+    <div>
+      {{ctrl.field}}
+    </div>''');
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent', // selector
+    map: const {'attrA' : '=>setA', 'attrB' : '@setB'})
+class MyComponent {
+  set setA(value) {}
+  set setB(value) {}
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<input type='text' ng-model='someModel'/>",
-                "<myComponent attrA='someModel' attrB='bbb'/>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<input type='text' ng-model='someModel'/>
+<myComponent attrA='someModel' attrB='bbb'/>'''));
     // "attrA" attribute expression was resolved
-    JUnitTestCase.assertNotNull(findIdentifier("someModel"));
+    expect(findIdentifier("someModel"), isNotNull);
     // "myComponent" tag was resolved
     ht.XmlTagNode tagNode =
         ht.HtmlUnitUtils.getTagNode(indexUnit, findOffset2("myComponent"));
     AngularSelectorElement tagElement =
         tagNode.element as AngularSelectorElement;
-    JUnitTestCase.assertNotNull(tagElement);
-    JUnitTestCase.assertEquals("myComponent", tagElement.name);
-    JUnitTestCase.assertEquals(
-        findMainOffset("myComponent', // selector"),
-        tagElement.nameOffset);
+    expect(tagElement, isNotNull);
+    expect(tagElement.name, "myComponent");
+    expect(tagElement.nameOffset, findMainOffset("myComponent', // selector"));
     // "attrA" attribute was resolved
     {
       ht.XmlAttributeNode node =
           ht.HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("attrA='"));
       AngularPropertyElement element = node.element as AngularPropertyElement;
-      JUnitTestCase.assertNotNull(element);
-      JUnitTestCase.assertEquals("attrA", element.name);
-      JUnitTestCase.assertEquals("setA", element.field.name);
+      expect(element, isNotNull);
+      expect(element.name, "attrA");
+      expect(element.field.name, "setA");
     }
     // "attrB" attribute was resolved, even if it @binding
     {
       ht.XmlAttributeNode node =
           ht.HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("attrB='"));
       AngularPropertyElement element = node.element as AngularPropertyElement;
-      JUnitTestCase.assertNotNull(element);
-      JUnitTestCase.assertEquals("attrB", element.name);
-      JUnitTestCase.assertEquals("setB", element.field.name);
+      expect(element, isNotNull);
+      expect(element.name, "attrB");
+      expect(element.field.name, "setB");
     }
   }
 
   void test_NgDirective_noAttribute() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@NgDirective(selector: '[my-directive]', map: const {'foo': '=>input'})",
-                "class MyDirective {",
-                "  set input(value) {}",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@NgDirective(selector: '[my-directive]', map: const {'foo': '=>input'})
+class MyDirective {
+  set input(value) {}
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(["<div my-directive>", "</div>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<div my-directive>
+</div>'''));
   }
 
   void test_NgDirective_noExpression() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@NgDirective(selector: '[my-directive]', map: const {'.': '=>input'})",
-                "class MyDirective {",
-                "  set input(value) {}",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@NgDirective(selector: '[my-directive]', map: const {'.': '=>input'})
+class MyDirective {
+  set input(value) {}
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(["<div my-directive>", "</div>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<div my-directive>
+</div>'''));
   }
 
   void test_NgDirective_resolvedExpression() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Decorator(selector: '[my-directive]')",
-                "class MyDirective {",
-                "  @NgOneWay('my-property')",
-                "  String condition;",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Decorator(selector: '[my-directive]')
+class MyDirective {
+  @NgOneWay('my-property')
+  String condition;
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<input type='text' ng-model='name'>",
-                "<div my-directive my-property='name != null'>",
-                "</div>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<input type='text' ng-model='name'>
+<div my-directive my-property='name != null'>
+</div>'''));
     resolveMainNoErrors();
     // "my-directive" attribute was resolved
     {
@@ -1679,8 +1625,8 @@
           findMainElement(ElementKind.ANGULAR_SELECTOR, "my-directive");
       ht.XmlAttributeNode attrNodeSelector =
           ht.HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("my-directive"));
-      JUnitTestCase.assertNotNull(attrNodeSelector);
-      JUnitTestCase.assertSame(selector, attrNodeSelector.element);
+      expect(attrNodeSelector, isNotNull);
+      expect(attrNodeSelector.element, same(selector));
     }
     // "my-property" attribute was resolved
     {
@@ -1688,189 +1634,177 @@
           ht.HtmlUnitUtils.getAttributeNode(indexUnit, findOffset2("my-property='"));
       AngularPropertyElement propertyElement =
           attrNodeProperty.element as AngularPropertyElement;
-      JUnitTestCase.assertNotNull(propertyElement);
-      JUnitTestCase.assertSame(
-          AngularPropertyKind.ONE_WAY,
-          propertyElement.propertyKind);
-      JUnitTestCase.assertEquals("condition", propertyElement.field.name);
+      expect(propertyElement, isNotNull);
+      expect(propertyElement.propertyKind, same(AngularPropertyKind.ONE_WAY));
+      expect(propertyElement.field.name, "condition");
     }
     // "name" expression was resolved
-    JUnitTestCase.assertNotNull(findIdentifier("name != null"));
+    expect(findIdentifier("name != null"), isNotNull);
   }
 
   void test_NgDirective_resolvedExpression_attrString() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@NgDirective(selector: '[my-directive])",
-                "class MyDirective {",
-                "  @NgAttr('my-property')",
-                "  String property;",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@NgDirective(selector: '[my-directive])
+class MyDirective {
+  @NgAttr('my-property')
+  String property;
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<input type='text' ng-model='name'>",
-                "<div my-directive my-property='name != null'>",
-                "</div>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<input type='text' ng-model='name'>
+<div my-directive my-property='name != null'>
+</div>'''));
     resolveMain();
     // @NgAttr means "string attribute", which we don't parse
-    JUnitTestCase.assertNull(findIdentifierMaybe("name != null"));
+    expect(findIdentifierMaybe("name != null"), isNull);
   }
 
   void test_NgDirective_resolvedExpression_dotAsName() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Decorator(",
-                "    selector: '[my-directive]',",
-                "    map: const {'.' : '=>condition'})",
-                "class MyDirective {",
-                "  set condition(value) {}",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Decorator(
+    selector: '[my-directive]',
+    map: const {'.' : '=>condition'})
+class MyDirective {
+  set condition(value) {}
+}''');
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<input type='text' ng-model='name'>",
-                "<div my-directive='name != null'>",
-                "</div>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<input type='text' ng-model='name'>
+<div my-directive='name != null'>
+</div>'''));
     // "name" attribute was resolved
-    JUnitTestCase.assertNotNull(findIdentifier("name != null"));
+    expect(findIdentifier("name != null"), isNotNull);
   }
 
   void fail_analysisContext_changeDart_invalidateApplication() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+}''');
     contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div>", "      {{ctrl.noMethod()}}", "    </div>"]));
+        r'''
+<div>
+  {{ctrl.noMethod()}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     // there are some errors in my_template.html
     {
       List<AnalysisError> errors = context.getErrors(indexSource).errors;
-      JUnitTestCase.assertTrue(errors.length != 0);
+      expect(errors.length != 0, isTrue);
     }
     // change main.dart, there are no MyComponent anymore
     context.setContents(mainSource, "");
     // ...errors in my_template.html should be removed
     {
       List<AnalysisError> errors = context.getErrors(indexSource).errors;
-      _ut.expect(errors, _ut.isEmpty);
-      JUnitTestCase.assertTrue(errors.length == 0);
+      expect(errors, isEmpty);
+      expect(errors.length == 0, isTrue);
     }
   }
 
   void test_analysisContext_changeEntryPoint_clearAngularErrors_inDart() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+}''');
     Source entrySource = contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     // there are some errors in MyComponent
     {
       List<AnalysisError> errors = context.getErrors(mainSource).errors;
-      JUnitTestCase.assertTrue(errors.length != 0);
+      expect(errors.length != 0, isTrue);
     }
     // make entry-point.html non-Angular
     context.setContents(entrySource, "<html/>");
     // ...errors in MyComponent should be removed
     {
       List<AnalysisError> errors = context.getErrors(mainSource).errors;
-      JUnitTestCase.assertTrue(errors.length == 0);
+      expect(errors.length == 0, isTrue);
     }
   }
 
   void test_analysisContext_changeEntryPoint_clearAngularErrors_inTemplate() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+}''');
     Source entrySource = contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div>", "      {{ctrl.noMethod()}}", "    </div>"]));
+        r'''
+<div>
+  {{ctrl.noMethod()}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     // there are some errors in my_template.html
     {
       List<AnalysisError> errors = context.getErrors(indexSource).errors;
-      JUnitTestCase.assertTrue(errors.length != 0);
+      expect(errors.length != 0, isTrue);
     }
     // make entry-point.html non-Angular
     context.setContents(entrySource, "<html/>");
     // ...errors in my_template.html should be removed
     {
       List<AnalysisError> errors = context.getErrors(indexSource).errors;
-      JUnitTestCase.assertTrue(errors.length == 0);
+      expect(errors.length == 0, isTrue);
     }
   }
 
   void test_analysisContext_removeEntryPoint_clearAngularErrors_inDart() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'no-such-template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+}''');
     Source entrySource = contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     // there are some errors in MyComponent
     {
       List<AnalysisError> errors = context.getErrors(mainSource).errors;
-      JUnitTestCase.assertTrue(errors.length != 0);
+      expect(errors.length != 0, isTrue);
     }
     // remove entry-point.html
     {
@@ -1881,15 +1815,19 @@
     // ...errors in MyComponent should be removed
     {
       List<AnalysisError> errors = context.getErrors(mainSource).errors;
-      JUnitTestCase.assertTrue(errors.length == 0);
+      expect(errors.length == 0, isTrue);
     }
   }
 
   void test_contextProperties() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithAngular(
-            ["<div>", "  {{\$id}}", "  {{\$parent}}", "  {{\$root}}", "</div>"]));
+        AngularTest.createHtmlWithAngular(r'''
+<div>
+  {{$id}}
+  {{$parent}}
+  {{$root}}
+</div>'''));
     assertResolvedIdentifier("\$id");
     assertResolvedIdentifier("\$parent");
     assertResolvedIdentifier("\$root");
@@ -1907,21 +1845,17 @@
     // set AngularElement
     AngularElement angularElement = new AngularControllerElementImpl("ctrl", 0);
     local.toolkitObjects = <AngularElement>[angularElement];
-    JUnitTestCase.assertSame(
-        angularElement,
-        AngularHtmlUnitResolver.getAngularElement(local));
+    expect(AngularHtmlUnitResolver.getAngularElement(local), same(angularElement));
   }
 
   void test_getAngularElement_notAngular() {
     Element element = ElementFactory.localVariableElement2("name");
-    JUnitTestCase.assertNull(
-        AngularHtmlUnitResolver.getAngularElement(element));
+    expect(AngularHtmlUnitResolver.getAngularElement(element), isNull);
   }
 
   void test_getAngularElement_notLocal() {
     Element element = ElementFactory.classElement2("Test", []);
-    JUnitTestCase.assertNull(
-        AngularHtmlUnitResolver.getAngularElement(element));
+    expect(AngularHtmlUnitResolver.getAngularElement(element), isNull);
   }
 
   /**
@@ -1930,8 +1864,7 @@
   void test_ngClick() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<button ng-click='ctrl.doSomething(\$event)'/>"]));
+        AngularTest.createHtmlWithMyController(r"<button ng-click='ctrl.doSomething($event)'/>"));
     assertResolvedIdentifier("doSomething");
   }
 
@@ -1941,15 +1874,16 @@
   void test_ngIf() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(["<div ng-if='ctrl.field != null'/>"]));
+        AngularTest.createHtmlWithMyController("<div ng-if='ctrl.field != null'/>"));
     assertResolvedIdentifier("field");
   }
 
   void test_ngModel_modelAfterUsage() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<h3>Hello {{name}}!</h3>", "<input type='text' ng-model='name'>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<h3>Hello {{name}}!</h3>
+<input type='text' ng-model='name'>'''));
     assertResolvedIdentifier2("name}}!", "String");
     assertResolvedIdentifier2("name'>", "String");
   }
@@ -1957,19 +1891,19 @@
   void test_ngModel_modelBeforeUsage() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<input type='text' ng-model='name'>", "<h3>Hello {{name}}!</h3>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<input type='text' ng-model='name'>
+<h3>Hello {{name}}!</h3>'''));
     assertResolvedIdentifier2("name}}!", "String");
     Element element = assertResolvedIdentifier2("name'>", "String");
-    JUnitTestCase.assertEquals("name", element.name);
-    JUnitTestCase.assertEquals(findOffset2("name'>"), element.nameOffset);
+    expect(element.name, "name");
+    expect(element.nameOffset, findOffset2("name'>"));
   }
 
   void test_ngModel_notIdentifier() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<input type='text' ng-model='ctrl.field'>"]));
+        AngularTest.createHtmlWithMyController("<input type='text' ng-model='ctrl.field'>"));
     assertResolvedIdentifier2("field'>", "String");
   }
 
@@ -1979,19 +1913,17 @@
   void test_ngMouseOut() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<button ng-mouseout='ctrl.doSomething(\$event)'/>"]));
+        AngularTest.createHtmlWithMyController(r"<button ng-mouseout='ctrl.doSomething($event)'/>"));
     assertResolvedIdentifier("doSomething");
   }
 
   void fail_ngRepeat_additionalVariables() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<li ng-repeat='name in ctrl.names'>",
-                "  {{\$index}} {{\$first}} {{\$middle}} {{\$last}} {{\$even}} {{\$odd}}",
-                "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='name in ctrl.names'>
+  {{$index}} {{$first}} {{$middle}} {{$last}} {{$even}} {{$odd}}
+</li>'''));
     assertResolvedIdentifier2("\$index", "int");
     assertResolvedIdentifier2("\$first", "bool");
     assertResolvedIdentifier2("\$middle", "bool");
@@ -2003,24 +1935,27 @@
   void fail_ngRepeat_bad_expectedIdentifier() {
     addMyController();
     resolveIndex2(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat='name + 42 in ctrl.names'>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='name + 42 in ctrl.names'>
+</li>'''));
     assertErrors(indexSource, [AngularCode.INVALID_REPEAT_ITEM_SYNTAX]);
   }
 
   void fail_ngRepeat_bad_expectedIn() {
     addMyController();
     resolveIndex2(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat='name : ctrl.names'>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='name : ctrl.names'>
+</li>'''));
     assertErrors(indexSource, [AngularCode.INVALID_REPEAT_SYNTAX]);
   }
 
   void fail_ngRepeat_filters_filter_literal() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat='item in ctrl.items | filter:42:null'/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='item in ctrl.items | filter:42:null'/>
+</li>'''));
     // filter "filter" is resolved
     Element filterElement = assertResolvedIdentifier("filter");
     EngineTestCase.assertInstanceOf(
@@ -2032,10 +1967,9 @@
   void fail_ngRepeat_filters_filter_propertyMap() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<li ng-repeat='item in ctrl.items | filter:{name:null, done:false}'/>",
-                "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='item in ctrl.items | filter:{name:null, done:false}'/>
+</li>'''));
     assertResolvedIdentifier2("name:", "String");
     assertResolvedIdentifier2("done:", "bool");
   }
@@ -2043,16 +1977,18 @@
   void fail_ngRepeat_filters_missingColon() {
     addMyController();
     resolveIndex2(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy:'' true\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'' true"/>
+</li>'''));
     assertErrors(indexSource, [AngularCode.MISSING_FORMATTER_COLON]);
   }
 
   void fail_ngRepeat_filters_noArgs() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy"/>
+</li>'''));
     // filter "orderBy" is resolved
     Element filterElement = assertResolvedIdentifier("orderBy");
     EngineTestCase.assertInstanceOf(
@@ -2064,8 +2000,9 @@
   void fail_ngRepeat_filters_orderBy_emptyString() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy:'':true\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'':true"/>
+</li>'''));
     // filter "orderBy" is resolved
     Element filterElement = assertResolvedIdentifier("orderBy");
     EngineTestCase.assertInstanceOf(
@@ -2077,10 +2014,9 @@
   void fail_ngRepeat_filters_orderBy_propertyList() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<li ng-repeat=\"item in ctrl.items | orderBy:['name', 'done']\"/>",
-                "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:['name', 'done']"/>
+</li>'''));
     assertResolvedIdentifier2("name'", "String");
     assertResolvedIdentifier2("done'", "bool");
   }
@@ -2088,42 +2024,45 @@
   void fail_ngRepeat_filters_orderBy_propertyName() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy:'name'\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'name'"/>
+</li>'''));
     assertResolvedIdentifier2("name'", "String");
   }
 
   void fail_ngRepeat_filters_orderBy_propertyName_minus() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy:'-name'\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'-name'"/>
+</li>'''));
     assertResolvedIdentifier2("name'", "String");
   }
 
   void fail_ngRepeat_filters_orderBy_propertyName_plus() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.items | orderBy:'+name'\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'+name'"/>
+</li>'''));
     assertResolvedIdentifier2("name'", "String");
   }
 
   void fail_ngRepeat_filters_orderBy_propertyName_untypedItems() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat=\"item in ctrl.untypedItems | orderBy:'name'\"/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.untypedItems | orderBy:'name'"/>
+</li>'''));
     assertResolvedIdentifier2("name'", "dynamic");
   }
 
   void fail_ngRepeat_filters_two() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            [
-                "<li ng-repeat=\"item in ctrl.items | orderBy:'+' | orderBy:'-'\"/>",
-                "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat="item in ctrl.items | orderBy:'+' | orderBy:'-'"/>
+</li>'''));
     EngineTestCase.assertInstanceOf(
         (obj) => obj is AngularFormatterElement,
         AngularFormatterElement,
@@ -2137,8 +2076,10 @@
   void fail_ngRepeat_resolvedExpressions() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat='name in ctrl.names'>", "  {{name}}", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='name in ctrl.names'>
+  {{name}}
+</li>'''));
     assertResolvedIdentifier2("name in", "String");
     assertResolvedIdentifier2("ctrl.", "MyController");
     assertResolvedIdentifier2("names'", "List<String>");
@@ -2148,8 +2089,9 @@
   void fail_ngRepeat_trackBy() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<li ng-repeat='name in ctrl.names track by name.length'/>", "</li>"]));
+        AngularTest.createHtmlWithMyController(r'''
+<li ng-repeat='name in ctrl.names track by name.length'/>
+</li>'''));
     assertResolvedIdentifier2("length'", "int");
   }
 
@@ -2159,123 +2101,108 @@
   void test_ngShow() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<div ng-show='ctrl.field != null'/>"]));
+        AngularTest.createHtmlWithMyController("<div ng-show='ctrl.field != null'/>"));
     assertResolvedIdentifier("field");
   }
 
   void test_notResolved_noDartScript() {
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html ng-app>",
-                "  <body>",
-                "    <div my-marker>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "  </body>",
-                "</html>"]));
+    resolveIndex2(r'''
+<html ng-app>
+  <body>
+    <div my-marker>
+      {{ctrl.field}}
+    </div>
+  </body>
+</html>''');
     assertNoErrors();
     // Angular is not initialized, so "ctrl" is not parsed
     Expression expression =
         ht.HtmlUnitUtils.getExpression(indexUnit, findOffset2("ctrl"));
-    JUnitTestCase.assertNull(expression);
+    expect(expression, isNull);
   }
 
   void test_notResolved_notAngular() {
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html no-ng-app>",
-                "  <body>",
-                "    <div my-marker>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "  </body>",
-                "</html>"]));
+    resolveIndex2(r'''
+<html no-ng-app>
+  <body>
+    <div my-marker>
+      {{ctrl.field}}
+    </div>
+  </body>
+</html>''');
     assertNoErrors();
     // Angular is not initialized, so "ctrl" is not parsed
     Expression expression =
         ht.HtmlUnitUtils.getExpression(indexUnit, findOffset2("ctrl"));
-    JUnitTestCase.assertNull(expression);
+    expect(expression, isNull);
   }
 
   void test_notResolved_wrongControllerMarker() {
     addMyController();
-    addIndexSource(
-        EngineTestCase.createSource(
-            [
-                "<html ng-app>",
-                "  <body>",
-                "    <div not-my-marker>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "    <script type='application/dart' src='main.dart'></script>",
-                "  </body>",
-                "</html>"]));
+    addIndexSource(r'''
+<html ng-app>
+  <body>
+    <div not-my-marker>
+      {{ctrl.field}}
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''');
     contextHelper.runTasks();
     resolveIndex();
     // no errors, because we decided to ignore them at the moment
     assertNoErrors();
     // "ctrl" is not resolved
     SimpleIdentifier identifier = findIdentifier("ctrl");
-    JUnitTestCase.assertNull(identifier.bestElement);
+    expect(identifier.bestElement, isNull);
   }
 
   void test_resolveExpression_evenWithout_ngBootstrap() {
-    resolveMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Controller(",
-                "    selector: '[my-controller]',",
-                "    publishAs: 'ctrl')",
-                "class MyController {",
-                "  String field;",
-                "}"]));
-    _resolveIndexNoErrors(
-        EngineTestCase.createSource(
-            [
-                "<html ng-app>",
-                "  <body>",
-                "    <div my-controller>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "    <script type='application/dart' src='main.dart'></script>",
-                "  </body>",
-                "</html>"]));
+    resolveMainSource(r'''
+
+import 'angular.dart';
+
+@Controller(
+    selector: '[my-controller]',
+    publishAs: 'ctrl')
+class MyController {
+  String field;
+}''');
+    _resolveIndexNoErrors(r'''
+<html ng-app>
+  <body>
+    <div my-controller>
+      {{ctrl.field}}
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''');
     assertResolvedIdentifier2("ctrl.", "MyController");
   }
 
   void test_resolveExpression_ignoreUnresolved() {
-    resolveMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Controller(",
-                "    selector: '[my-controller]',",
-                "    publishAs: 'ctrl')",
-                "class MyController {",
-                "  Map map;",
-                "  Object obj;",
-                "}"]));
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html ng-app>",
-                "  <body>",
-                "    <div my-controller>",
-                "      {{ctrl.map.property}}",
-                "      {{ctrl.obj.property}}",
-                "      {{invisibleScopeProperty}}",
-                "    </div>",
-                "    <script type='application/dart' src='main.dart'></script>",
-                "  </body>",
-                "</html>"]));
+    resolveMainSource(r'''
+
+import 'angular.dart';
+
+@Controller(
+    selector: '[my-controller]',
+    publishAs: 'ctrl')
+class MyController {
+  Map map;
+  Object obj;
+}''');
+    resolveIndex2(r'''
+<html ng-app>
+  <body>
+    <div my-controller>
+      {{ctrl.map.property}}
+      {{ctrl.obj.property}}
+      {{invisibleScopeProperty}}
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''');
     assertNoErrors();
     // "ctrl.map" and "ctrl.obj" are resolved
     assertResolvedIdentifier2("map", "Map<dynamic, dynamic>");
@@ -2283,38 +2210,35 @@
     // ...but not "invisibleScopeProperty"
     {
       SimpleIdentifier identifier = findIdentifier("invisibleScopeProperty");
-      JUnitTestCase.assertNull(identifier.bestElement);
+      expect(identifier.bestElement, isNull);
     }
   }
 
   void test_resolveExpression_inAttribute() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(
-            ["<button title='{{ctrl.field}}'></button>"]));
+        AngularTest.createHtmlWithMyController("<button title='{{ctrl.field}}'></button>"));
     assertResolvedIdentifier2("ctrl", "MyController");
   }
 
   void test_resolveExpression_ngApp_onBody() {
     addMyController();
-    _resolveIndexNoErrors(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "  <body ng-app>",
-                "    <div my-controller>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "    <script type='application/dart' src='main.dart'></script>",
-                "  </body>",
-                "</html>"]));
+    _resolveIndexNoErrors(r'''
+<html>
+  <body ng-app>
+    <div my-controller>
+      {{ctrl.field}}
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''');
     assertResolvedIdentifier2("ctrl", "MyController");
   }
 
   void test_resolveExpression_withFilter() {
     addMyController();
     _resolveIndexNoErrors(
-        AngularTest.createHtmlWithMyController(["{{ctrl.field | uppercase}}"]));
+        AngularTest.createHtmlWithMyController("{{ctrl.field | uppercase}}"));
     assertResolvedIdentifier2("ctrl", "MyController");
     assertResolvedIdentifier("uppercase");
   }
@@ -2322,35 +2246,35 @@
   void test_resolveExpression_withFilter_notSimpleIdentifier() {
     addMyController();
     resolveIndex2(
-        AngularTest.createHtmlWithMyController(["{{ctrl.field | not.supported}}"]));
+        AngularTest.createHtmlWithMyController("{{ctrl.field | not.supported}}"));
     assertErrors(indexSource, [AngularCode.INVALID_FORMATTER_NAME]);
   }
 
   void test_scopeProperties() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "  String field;",
-                "  MyComponent(Scope scope) {",
-                "    scope.context['scopeProperty'] = 'abc';",
-                "  }",
-                "}",
-                ""]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+  String field;
+  MyComponent(Scope scope) {
+    scope.context['scopeProperty'] = 'abc';
+  }
+}
+''');
     contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div>", "      {{scopeProperty}}", "    </div>"]));
+        r'''
+<div>
+  {{scopeProperty}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     resolveIndex();
@@ -2364,29 +2288,30 @@
   }
 
   void test_scopeProperties_hideWithComponent() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Component(",
-                "    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',",
-                "    publishAs: 'ctrl',",
-                "    selector: 'myComponent')",
-                "class MyComponent {",
-                "}",
-                "",
-                "void setScopeProperties(Scope scope) {",
-                "  scope.context['ctrl'] = 1;",
-                "}",
-                ""]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Component(
+    templateUrl: 'my_template.html', cssUrl: 'my_styles.css',
+    publishAs: 'ctrl',
+    selector: 'myComponent')
+class MyComponent {
+}
+
+void setScopeProperties(Scope scope) {
+  scope.context['ctrl'] = 1;
+}
+''');
     contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(["    <div>", "      {{ctrl}}", "    </div>"]));
+        r'''
+<div>
+  {{ctrl}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     resolveIndex();
@@ -2402,31 +2327,31 @@
   }
 
   void test_view_resolveTemplateFile() {
-    addMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "@Controller(",
-                "    selector: '[my-controller]',",
-                "    publishAs: 'ctrl')",
-                "class MyController {",
-                "  String field;",
-                "}",
-                "",
-                "class MyRouteInitializer {",
-                "  init(ViewFactory view) {",
-                "    view('my_template.html');",
-                "  }",
-                "}"]));
+    addMainSource(r'''
+
+import 'angular.dart';
+
+@Controller(
+    selector: '[my-controller]',
+    publishAs: 'ctrl')
+class MyController {
+  String field;
+}
+
+class MyRouteInitializer {
+  init(ViewFactory view) {
+    view('my_template.html');
+  }
+}''');
     contextHelper.addSource(
         "/entry-point.html",
-        AngularTest.createHtmlWithAngular([]));
+        AngularTest.createHtmlWithAngular(''));
     addIndexSource2(
         "/my_template.html",
-        EngineTestCase.createSource(
-            ["    <div my-controller>", "      {{ctrl.field}}", "    </div>"]));
+        r'''
+<div my-controller>
+  {{ctrl.field}}
+</div>''');
     contextHelper.addSource("/my_styles.css", "");
     contextHelper.runTasks();
     resolveIndex();
@@ -2463,7 +2388,7 @@
         (obj) => obj is AngularControllerElement,
         AngularControllerElement,
         element);
-    JUnitTestCase.assertEquals("ctrl", element.name);
+    expect(element.name, "ctrl");
   }
 
   void test_getElementToOpen_field() {
@@ -2478,7 +2403,7 @@
         (obj) => obj is PropertyAccessorElement,
         PropertyAccessorElement,
         element);
-    JUnitTestCase.assertEquals("field", element.name);
+    expect(element.name, "field");
   }
 
   void test_getElement_forExpression() {
@@ -2493,12 +2418,12 @@
         (obj) => obj is VariableElement,
         VariableElement,
         element);
-    JUnitTestCase.assertEquals("ctrl", element.name);
+    expect(element.name, "ctrl");
   }
 
   void test_getElement_forExpression_null() {
     Element element = ht.HtmlUnitUtils.getElement(null);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_getElement_forOffset() {
@@ -2507,7 +2432,7 @@
     // no expression
     {
       Element element = ht.HtmlUnitUtils.getElementAtOffset(indexUnit, 0);
-      JUnitTestCase.assertNull(element);
+      expect(element, isNull);
     }
     // has expression at offset
     {
@@ -2517,79 +2442,70 @@
           (obj) => obj is PropertyAccessorElement,
           PropertyAccessorElement,
           element);
-      JUnitTestCase.assertEquals("field", element.name);
+      expect(element.name, "field");
     }
   }
 
   void test_getEnclosingTagNode() {
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "  <body ng-app>",
-                "    <badge name='abc'> 123 </badge>",
-                "  </body>",
-                "</html>"]));
+    resolveIndex2(r'''
+<html>
+  <body ng-app>
+    <badge name='abc'> 123 </badge>
+  </body>
+</html>''');
     // no unit
-    JUnitTestCase.assertNull(ht.HtmlUnitUtils.getEnclosingTagNode(null, 0));
+    expect(ht.HtmlUnitUtils.getEnclosingTagNode(null, 0), isNull);
     // wrong offset
-    JUnitTestCase.assertNull(
-        ht.HtmlUnitUtils.getEnclosingTagNode(indexUnit, -1));
+    expect(ht.HtmlUnitUtils.getEnclosingTagNode(indexUnit, -1), isNull);
     // valid offset
     ht.XmlTagNode expected = _getEnclosingTagNode("<badge");
-    JUnitTestCase.assertNotNull(expected);
-    JUnitTestCase.assertEquals("badge", expected.tag);
-    JUnitTestCase.assertSame(expected, _getEnclosingTagNode("badge"));
-    JUnitTestCase.assertSame(expected, _getEnclosingTagNode("name="));
-    JUnitTestCase.assertSame(expected, _getEnclosingTagNode("123"));
-    JUnitTestCase.assertSame(expected, _getEnclosingTagNode("/badge"));
+    expect(expected, isNotNull);
+    expect(expected.tag, "badge");
+    expect(_getEnclosingTagNode("badge"), same(expected));
+    expect(_getEnclosingTagNode("name="), same(expected));
+    expect(_getEnclosingTagNode("123"), same(expected));
+    expect(_getEnclosingTagNode("/badge"), same(expected));
   }
 
   void test_getExpression() {
     addMyController();
     _resolveSimpleCtrlFieldHtml();
     // try offset without expression
-    JUnitTestCase.assertNull(ht.HtmlUnitUtils.getExpression(indexUnit, 0));
+    expect(ht.HtmlUnitUtils.getExpression(indexUnit, 0), isNull);
     // try offset with expression
     int offset = indexContent.indexOf("ctrl");
-    JUnitTestCase.assertNotNull(
-        ht.HtmlUnitUtils.getExpression(indexUnit, offset));
-    JUnitTestCase.assertNotNull(
-        ht.HtmlUnitUtils.getExpression(indexUnit, offset + 1));
-    JUnitTestCase.assertNotNull(
-        ht.HtmlUnitUtils.getExpression(indexUnit, offset + 2));
-    JUnitTestCase.assertNotNull(
-        ht.HtmlUnitUtils.getExpression(indexUnit, offset + "ctrl.field".length));
+    expect(ht.HtmlUnitUtils.getExpression(indexUnit, offset), isNotNull);
+    expect(ht.HtmlUnitUtils.getExpression(indexUnit, offset + 1), isNotNull);
+    expect(ht.HtmlUnitUtils.getExpression(indexUnit, offset + 2), isNotNull);
+    expect(ht.HtmlUnitUtils.getExpression(indexUnit, offset + "ctrl.field".length), isNotNull);
     // try without unit
-    JUnitTestCase.assertNull(ht.HtmlUnitUtils.getExpression(null, offset));
+    expect(ht.HtmlUnitUtils.getExpression(null, offset), isNull);
   }
 
   void test_getTagNode() {
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "  <body ng-app>",
-                "    <badge name='abc'> 123 </badge> done",
-                "  </body>",
-                "</html>"]));
+    resolveIndex2(r'''
+<html>
+  <body ng-app>
+    <badge name='abc'> 123 </badge> done
+  </body>
+</html>''');
     // no unit
-    JUnitTestCase.assertNull(ht.HtmlUnitUtils.getTagNode(null, 0));
+    expect(ht.HtmlUnitUtils.getTagNode(null, 0), isNull);
     // wrong offset
-    JUnitTestCase.assertNull(ht.HtmlUnitUtils.getTagNode(indexUnit, -1));
+    expect(ht.HtmlUnitUtils.getTagNode(indexUnit, -1), isNull);
     // on tag name
     ht.XmlTagNode expected = _getTagNode("badge name=");
-    JUnitTestCase.assertNotNull(expected);
-    JUnitTestCase.assertEquals("badge", expected.tag);
-    JUnitTestCase.assertSame(expected, _getTagNode("badge"));
-    JUnitTestCase.assertSame(expected, _getTagNode(" name="));
-    JUnitTestCase.assertSame(expected, _getTagNode("adge name="));
-    JUnitTestCase.assertSame(expected, _getTagNode("badge>"));
-    JUnitTestCase.assertSame(expected, _getTagNode("adge>"));
-    JUnitTestCase.assertSame(expected, _getTagNode("> done"));
+    expect(expected, isNotNull);
+    expect(expected.tag, "badge");
+    expect(_getTagNode("badge"), same(expected));
+    expect(_getTagNode(" name="), same(expected));
+    expect(_getTagNode("adge name="), same(expected));
+    expect(_getTagNode("badge>"), same(expected));
+    expect(_getTagNode("adge>"), same(expected));
+    expect(_getTagNode("> done"), same(expected));
     // in tag node, but not on the name token
-    JUnitTestCase.assertNull(_getTagNode("name="));
-    JUnitTestCase.assertNull(_getTagNode("123"));
+    expect(_getTagNode("name="), isNull);
+    expect(_getTagNode("123"), isNull);
   }
 
   ht.XmlTagNode _getEnclosingTagNode(String search) {
@@ -2603,17 +2519,15 @@
   }
 
   void _resolveSimpleCtrlFieldHtml() {
-    resolveIndex2(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "  <body ng-app>",
-                "    <div my-controller>",
-                "      {{ctrl.field}}",
-                "    </div>",
-                "    <script type='application/dart' src='main.dart'></script>",
-                "  </body>",
-                "</html>"]));
+    resolveIndex2(r'''
+<html>
+  <body ng-app>
+    <div my-controller>
+      {{ctrl.field}}
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''');
   }
 }
 
@@ -2656,27 +2570,25 @@
     mainSource = contextHelper.addSource("/main.dart", content);
   }
   void addMyController() {
-    resolveMainSource(
-        EngineTestCase.createSource(
-            [
-                "",
-                "import 'angular.dart';",
-                "",
-                "class Item {",
-                "  String name;",
-                "  bool done;",
-                "}",
-                "",
-                "@Controller(",
-                "    selector: '[my-controller]',",
-                "    publishAs: 'ctrl')",
-                "class MyController {",
-                "  String field;",
-                "  List<String> names;",
-                "  List<Item> items;",
-                "  var untypedItems;",
-                "  doSomething(event) {}",
-                "}"]));
+    resolveMainSource(r'''
+
+import 'angular.dart';
+
+class Item {
+  String name;
+  bool done;
+}
+
+@Controller(
+    selector: '[my-controller]',
+    publishAs: 'ctrl')
+class MyController {
+  String field;
+  List<String> names;
+  List<Item> items;
+  var untypedItems;
+  doSomething(event) {}
+}''');
   }
   /**
    * Assert that the number of errors reported against the given source matches the number of errors
@@ -2728,7 +2640,7 @@
     SimpleIdentifier identifier = findIdentifier(name);
     // check Element
     Element element = identifier.bestElement;
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     // return Element for further analysis
     return element;
   }
@@ -2737,11 +2649,11 @@
     SimpleIdentifier identifier = findIdentifier(name);
     // check Element
     Element element = identifier.bestElement;
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     // check Type
     DartType type = identifier.bestType;
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals(expectedTypeName, type.toString());
+    expect(type, isNotNull);
+    expect(type.toString(), expectedTypeName);
     // return Element for further analysis
     return element;
   }
@@ -2759,13 +2671,13 @@
    */
   SimpleIdentifier findIdentifier(String search) {
     SimpleIdentifier identifier = findIdentifierMaybe(search);
-    JUnitTestCase.assertNotNullMsg("${search} in ${indexContent}", identifier);
+    expect(identifier, isNotNull, reason: "$search in $indexContent");
     // check that offset/length of the identifier is valid
     {
       int offset = identifier.offset;
       int end = identifier.end;
       String contentStr = indexContent.substring(offset, end);
-      JUnitTestCase.assertEquals(identifier.name, contentStr);
+      expect(contentStr, identifier.name);
     }
     // done
     return identifier;
@@ -2897,152 +2809,152 @@
   void _configureForAngular(AnalysisContextHelper contextHelper) {
     contextHelper.addSource(
         "/angular.dart",
-        EngineTestCase.createSource(
-            [
-                "library angular;",
-                "",
-                "class Scope {",
-                "  Map context;",
-                "}",
-                "",
-                "class Formatter {",
-                "  final String name;",
-                "  const Formatter({this.name});",
-                "}",
-                "",
-                "class Directive {",
-                "  const Directive({",
-                "    selector,",
-                "    children,",
-                "    visibility,",
-                "    module,",
-                "    map,",
-                "    exportedExpressions,",
-                "    exportedExpressionAttrs",
-                "  });",
-                "}",
-                "",
-                "class Decorator {",
-                "  const Decorator({",
-                "    children/*: Directive.COMPILE_CHILDREN*/,",
-                "    map,",
-                "    selector,",
-                "    module,",
-                "    visibility,",
-                "    exportedExpressions,",
-                "    exportedExpressionAttrs",
-                "  });",
-                "}",
-                "",
-                "class Controller {",
-                "  const Controller({",
-                "    children,",
-                "    publishAs,",
-                "    map,",
-                "    selector,",
-                "    visibility,",
-                "    publishTypes,",
-                "    exportedExpressions,",
-                "    exportedExpressionAttrs",
-                "  });",
-                "}",
-                "",
-                "class NgAttr {",
-                "  const NgAttr(String name);",
-                "}",
-                "class NgCallback {",
-                "  const NgCallback(String name);",
-                "}",
-                "class NgOneWay {",
-                "  const NgOneWay(String name);",
-                "}",
-                "class NgOneWayOneTime {",
-                "  const NgOneWayOneTime(String name);",
-                "}",
-                "class NgTwoWay {",
-                "  const NgTwoWay(String name);",
-                "}",
-                "",
-                "class Component extends Directive {",
-                "  const Component({",
-                "    this.template,",
-                "    this.templateUrl,",
-                "    this.cssUrl,",
-                "    this.applyAuthorStyles,",
-                "    this.resetStyleInheritance,",
-                "    publishAs,",
-                "    module,",
-                "    map,",
-                "    selector,",
-                "    visibility,",
-                "    exportExpressions,",
-                "    exportExpressionAttrs",
-                "  }) : super(selector: selector,",
-                "             children: null/*NgAnnotation.COMPILE_CHILDREN*/,",
-                "             visibility: visibility,",
-                "             map: map,",
-                "             module: module,",
-                "             exportExpressions: exportExpressions,",
-                "             exportExpressionAttrs: exportExpressionAttrs);",
-                "}",
-                "",
-                "@Decorator(selector: '[ng-click]', map: const {'ng-click': '&onEvent'})",
-                "@Decorator(selector: '[ng-mouseout]', map: const {'ng-mouseout': '&onEvent'})",
-                "class NgEventDirective {",
-                "  set onEvent(value) {}",
-                "}",
-                "",
-                "@Decorator(selector: '[ng-if]', map: const {'ng-if': '=>condition'})",
-                "class NgIfDirective {",
-                "  set condition(value) {}",
-                "}",
-                "",
-                "@Decorator(selector: '[ng-show]', map: const {'ng-show': '=>show'})",
-                "class NgShowDirective {",
-                "  set show(value) {}",
-                "}",
-                "",
-                "@Formatter(name: 'filter')",
-                "class FilterFormatter {}",
-                "",
-                "@Formatter(name: 'orderBy')",
-                "class OrderByFilter {}",
-                "",
-                "@Formatter(name: 'uppercase')",
-                "class UppercaseFilter {}",
-                "",
-                "class ViewFactory {",
-                "  call(String templateUrl) => null;",
-                "}",
-                "",
-                "class Module {",
-                "  install(Module m) {}",
-                "  type(Type t) {}",
-                "  value(Type t, value) {}",
-                "}",
-                "",
-                "class Injector {}",
-                "",
-                "Injector ngBootstrap({",
-                "        Module module: null,",
-                "        List<Module> modules: null,",
-                "        /*dom.Element*/ element: null,",
-                "        String selector: '[ng-app]',",
-                "        /*Injector*/ injectorFactory/*(List<Module> modules): _defaultInjectorFactory*/}) {}",
-                ""]));
+        r'''
+library angular;
+
+class Scope {
+  Map context;
+}
+
+class Formatter {
+  final String name;
+  const Formatter({this.name});
+}
+
+class Directive {
+  const Directive({
+    selector,
+    children,
+    visibility,
+    module,
+    map,
+    exportedExpressions,
+    exportedExpressionAttrs
+  });
+}
+
+class Decorator {
+  const Decorator({
+    children/*: Directive.COMPILE_CHILDREN*/,
+    map,
+    selector,
+    module,
+    visibility,
+    exportedExpressions,
+    exportedExpressionAttrs
+  });
+}
+
+class Controller {
+  const Controller({
+    children,
+    publishAs,
+    map,
+    selector,
+    visibility,
+    publishTypes,
+    exportedExpressions,
+    exportedExpressionAttrs
+  });
+}
+
+class NgAttr {
+  const NgAttr(String name);
+}
+class NgCallback {
+  const NgCallback(String name);
+}
+class NgOneWay {
+  const NgOneWay(String name);
+}
+class NgOneWayOneTime {
+  const NgOneWayOneTime(String name);
+}
+class NgTwoWay {
+  const NgTwoWay(String name);
+}
+
+class Component extends Directive {
+  const Component({
+    this.template,
+    this.templateUrl,
+    this.cssUrl,
+    this.applyAuthorStyles,
+    this.resetStyleInheritance,
+    publishAs,
+    module,
+    map,
+    selector,
+    visibility,
+    exportExpressions,
+    exportExpressionAttrs
+  }) : super(selector: selector,
+             children: null/*NgAnnotation.COMPILE_CHILDREN*/,
+             visibility: visibility,
+             map: map,
+             module: module,
+             exportExpressions: exportExpressions,
+             exportExpressionAttrs: exportExpressionAttrs);
+}
+
+@Decorator(selector: '[ng-click]', map: const {'ng-click': '&onEvent'})
+@Decorator(selector: '[ng-mouseout]', map: const {'ng-mouseout': '&onEvent'})
+class NgEventDirective {
+  set onEvent(value) {}
+}
+
+@Decorator(selector: '[ng-if]', map: const {'ng-if': '=>condition'})
+class NgIfDirective {
+  set condition(value) {}
+}
+
+@Decorator(selector: '[ng-show]', map: const {'ng-show': '=>show'})
+class NgShowDirective {
+  set show(value) {}
+}
+
+@Formatter(name: 'filter')
+class FilterFormatter {}
+
+@Formatter(name: 'orderBy')
+class OrderByFilter {}
+
+@Formatter(name: 'uppercase')
+class UppercaseFilter {}
+
+class ViewFactory {
+  call(String templateUrl) => null;
+}
+
+class Module {
+  install(Module m) {}
+  type(Type t) {}
+  value(Type t, value) {}
+}
+
+class Injector {}
+
+Injector ngBootstrap({
+        Module module: null,
+        List<Module> modules: null,
+        /*dom.Element*/ element: null,
+        String selector: '[ng-app]',
+        /*Injector*/ injectorFactory/*(List<Module> modules): _defaultInjectorFactory*/}) {}
+''');
   }
 
   /**
-   * Creates an HTML content that has Angular marker and script with "main.dart" reference.
+   * Creates an HTML content that has Angular marker and script with
+   * the "main.dart" reference.
    */
-  static String createHtmlWithAngular(List<String> lines) {
-    String source = EngineTestCase.createSource(["<html ng-app>", "  <body>"]);
-    source += EngineTestCase.createSource(lines);
-    source += EngineTestCase.createSource(
-        [
-            "    <script type='application/dart' src='main.dart'></script>",
-            "  </body>",
-            "</html>"]);
+  static String createHtmlWithAngular(String innerCode) {
+    String source = '''
+<html ng-app>
+  <body>
+$innerCode
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''';
     return source;
   }
 
@@ -3050,16 +2962,16 @@
    * Creates an HTML content that has Angular marker, script with "main.dart" reference and
    * "MyController" injected.
    */
-  static String createHtmlWithMyController(List<String> lines) {
-    String source = EngineTestCase.createSource(
-        ["<html ng-app>", "  <body>", "    <div my-controller>"]);
-    source += EngineTestCase.createSource(lines);
-    source += EngineTestCase.createSource(
-        [
-            "    </div>",
-            "    <script type='application/dart' src='main.dart'></script>",
-            "  </body>",
-            "</html>"]);
+  static String createHtmlWithMyController(String innerHtml) {
+    String source = '''
+<html ng-app>
+  <body>
+    <div my-controller>
+$innerHtml
+    </div>
+    <script type='application/dart' src='main.dart'></script>
+  </body>
+</html>''';
     return source;
   }
 
@@ -3074,9 +2986,9 @@
    * @return the found [Element] or `null` if not found
    */
   static Element findElement(Element root, ElementKind kind, String name) {
-    List<Element> result = [null];
-    root.accept(new _AngularTest_findElement(kind, name, result));
-    return result[0];
+    _AngularTest_findElement visitor = new _AngularTest_findElement(kind, name);
+    root.accept(visitor);
+    return visitor.result;
   }
 
   /**
@@ -3096,7 +3008,7 @@
    */
   static int findOffset(String content, String search) {
     int offset = content.indexOf(search);
-    _ut.expect(offset, _ut.isNot(-1));
+    expect(offset, isNot(-1));
     return offset;
   }
 }
@@ -3105,51 +3017,51 @@
 class ConstantEvaluatorTest extends ResolverTestCase {
   void fail_constructor() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_class() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_function() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_static() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_staticMethod() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_topLevel() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_typeParameter() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_plus_string_string() {
@@ -3158,44 +3070,44 @@
 
   void fail_prefixedIdentifier_invalid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_prefixedIdentifier_valid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_propertyAccess_invalid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_propertyAccess_valid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_simpleIdentifier_invalid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_simpleIdentifier_valid() {
     EvaluationResult result = _getExpressionValue("?");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_stringLength_complex() {
@@ -3227,10 +3139,10 @@
 
   void test_divide_double_double_byZero() {
     EvaluationResult result = _getExpressionValue("3.2 / 0.0");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals("double", value.type.name);
-    JUnitTestCase.assertTrue(value.doubleValue.isInfinite);
+    expect(value.type.name, "double");
+    expect(value.doubleValue.isInfinite, isTrue);
   }
 
   void test_divide_int_int() {
@@ -3239,7 +3151,7 @@
 
   void test_divide_int_int_byZero() {
     EvaluationResult result = _getExpressionValue("3 / 0");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
   }
 
   void test_equal_boolean_boolean() {
@@ -3252,12 +3164,12 @@
 
   void test_equal_invalidLeft() {
     EvaluationResult result = _getExpressionValue("a == 3");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_equal_invalidRight() {
     EvaluationResult result = _getExpressionValue("2 == a");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_equal_string_string() {
@@ -3293,20 +3205,20 @@
 
   void test_literal_list() {
     EvaluationResult result = _getExpressionValue("const ['a', 'b', 'c']");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
   }
 
   void test_literal_map() {
     EvaluationResult result =
         _getExpressionValue("const {'a' : 'm', 'b' : 'n', 'c' : 'o'}");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
   }
 
   void test_literal_null() {
     EvaluationResult result = _getExpressionValue("null");
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertTrue(value.isNull);
+    expect(value.isNull, isTrue);
   }
 
   void test_literal_number_double() {
@@ -3323,7 +3235,7 @@
 
   void test_literal_string_interpolation_invalid() {
     EvaluationResult result = _getExpressionValue("'a\${f()}c'");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_literal_string_interpolation_valid() {
@@ -3356,7 +3268,7 @@
 
   void test_negated_boolean() {
     EvaluationResult result = _getExpressionValue("-true");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_negated_double() {
@@ -3377,12 +3289,12 @@
 
   void test_notEqual_invalidLeft() {
     EvaluationResult result = _getExpressionValue("a != 3");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_notEqual_invalidRight() {
     EvaluationResult result = _getExpressionValue("2 != a");
-    JUnitTestCase.assertFalse(result.isValid);
+    expect(result.isValid, isFalse);
   }
 
   void test_notEqual_string_string() {
@@ -3432,44 +3344,44 @@
   void _assertValue(bool expectedValue, String contents) {
     EvaluationResult result = _getExpressionValue(contents);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals("bool", value.type.name);
-    JUnitTestCase.assertEquals(expectedValue, value.boolValue);
+    expect(value.type.name, "bool");
+    expect(value.boolValue, expectedValue);
   }
 
   void _assertValue2(double expectedValue, String contents) {
     EvaluationResult result = _getExpressionValue(contents);
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals("double", value.type.name);
-    JUnitTestCase.assertEquals(expectedValue, value.doubleValue);
+    expect(value.type.name, "double");
+    expect(value.doubleValue, expectedValue);
   }
 
   void _assertValue3(int expectedValue, String contents) {
     EvaluationResult result = _getExpressionValue(contents);
-    JUnitTestCase.assertTrue(result.isValid);
+    expect(result.isValid, isTrue);
     DartObject value = result.value;
-    JUnitTestCase.assertEquals("int", value.type.name);
-    JUnitTestCase.assertEquals(expectedValue, value.intValue);
+    expect(value.type.name, "int");
+    expect(value.intValue, expectedValue);
   }
 
   void _assertValue4(String expectedValue, String contents) {
     EvaluationResult result = _getExpressionValue(contents);
     DartObject value = result.value;
-    JUnitTestCase.assertNotNull(value);
+    expect(value, isNotNull);
     ParameterizedType type = value.type;
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals("String", type.name);
-    JUnitTestCase.assertEquals(expectedValue, value.stringValue);
+    expect(type, isNotNull);
+    expect(type.name, "String");
+    expect(value.stringValue, expectedValue);
   }
 
   EvaluationResult _getExpressionValue(String contents) {
-    Source source = addSource("var x = ${contents};");
+    Source source = addSource("var x = $contents;");
     LibraryElement library = resolve(source);
     CompilationUnit unit =
         analysisContext.resolveCompilationUnit(source, library);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember declaration = declarations[0];
     EngineTestCase.assertInstanceOf(
         (obj) => obj is TopLevelVariableDeclaration,
@@ -3477,7 +3389,7 @@
         declaration);
     NodeList<VariableDeclaration> variables =
         (declaration as TopLevelVariableDeclaration).variables.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     ConstantEvaluator evaluator = new ConstantEvaluator(
         source,
         (analysisContext as AnalysisContextImpl).typeProvider);
@@ -3491,37 +3403,37 @@
 
   void test_visitConstructorDeclaration_const() {
     ConstructorElement element = _setupConstructorDeclaration("A", true);
-    JUnitTestCase.assertSame(_node, _findConstantDeclarations()[element]);
+    expect(_findConstantDeclarations()[element], same(_node));
   }
 
   void test_visitConstructorDeclaration_nonConst() {
     _setupConstructorDeclaration("A", false);
-    JUnitTestCase.assertTrue(_findConstantDeclarations().isEmpty);
+    expect(_findConstantDeclarations().isEmpty, isTrue);
   }
 
   void test_visitInstanceCreationExpression_const() {
     _setupInstanceCreationExpression("A", true);
-    JUnitTestCase.assertTrue(_findConstructorInvocations().contains(_node));
+    expect(_findConstructorInvocations().contains(_node), isTrue);
   }
 
   void test_visitInstanceCreationExpression_nonConst() {
     _setupInstanceCreationExpression("A", false);
-    JUnitTestCase.assertTrue(_findConstructorInvocations().isEmpty);
+    expect(_findConstructorInvocations().isEmpty, isTrue);
   }
 
   void test_visitVariableDeclaration_const() {
     VariableElement element = _setupVariableDeclaration("v", true, true);
-    JUnitTestCase.assertSame(_node, _findVariableDeclarations()[element]);
+    expect(_findVariableDeclarations()[element], same(_node));
   }
 
   void test_visitVariableDeclaration_noInitializer() {
     _setupVariableDeclaration("v", true, false);
-    JUnitTestCase.assertTrue(_findVariableDeclarations().isEmpty);
+    expect(_findVariableDeclarations().isEmpty, isTrue);
   }
 
   void test_visitVariableDeclaration_nonConst() {
     _setupVariableDeclaration("v", false, true);
-    JUnitTestCase.assertTrue(_findVariableDeclarations().isEmpty);
+    expect(_findVariableDeclarations().isEmpty, isTrue);
   }
 
   Map<ConstructorElement, ConstructorDeclaration> _findConstantDeclarations() {
@@ -3529,7 +3441,7 @@
     _node.accept(finder);
     Map<ConstructorElement, ConstructorDeclaration> constructorMap =
         finder.constructorMap;
-    JUnitTestCase.assertNotNull(constructorMap);
+    expect(constructorMap, isNotNull);
     return constructorMap;
   }
 
@@ -3538,7 +3450,7 @@
     _node.accept(finder);
     List<InstanceCreationExpression> constructorInvocations =
         finder.constructorInvocations;
-    JUnitTestCase.assertNotNull(constructorInvocations);
+    expect(constructorInvocations, isNotNull);
     return constructorInvocations;
   }
 
@@ -3546,7 +3458,7 @@
     ConstantFinder finder = new ConstantFinder();
     _node.accept(finder);
     Map<VariableElement, VariableDeclaration> variableMap = finder.variableMap;
-    JUnitTestCase.assertNotNull(variableMap);
+    expect(variableMap, isNotNull);
     return variableMap;
   }
 
@@ -3597,36 +3509,38 @@
   void test_computeValues_cycle() {
     TestLogger logger = new TestLogger();
     AnalysisEngine.instance.logger = logger;
-    Source librarySource = addSource(
-        EngineTestCase.createSource(
-            ["const int a = c;", "const int b = a;", "const int c = b;"]));
+    Source librarySource = addSource(r'''
+const int a = c;
+const int b = a;
+const int c = b;''');
     LibraryElement libraryElement = resolve(librarySource);
     CompilationUnit unit =
         analysisContext.resolveCompilationUnit(librarySource, libraryElement);
     analysisContext.computeErrors(librarySource);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     ConstantValueComputer computer = _makeConstantValueComputer();
     computer.add(unit);
     computer.computeValues();
     NodeList<CompilationUnitMember> members = unit.declarations;
-    EngineTestCase.assertSizeOfList(3, members);
+    expect(members, hasLength(3));
     _validate(false, (members[0] as TopLevelVariableDeclaration).variables);
     _validate(false, (members[1] as TopLevelVariableDeclaration).variables);
     _validate(false, (members[2] as TopLevelVariableDeclaration).variables);
   }
 
   void test_computeValues_dependentVariables() {
-    Source librarySource = addSource(
-        EngineTestCase.createSource(["const int b = a;", "const int a = 0;"]));
+    Source librarySource = addSource(r'''
+const int b = a;
+const int a = 0;''');
     LibraryElement libraryElement = resolve(librarySource);
     CompilationUnit unit =
         analysisContext.resolveCompilationUnit(librarySource, libraryElement);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     ConstantValueComputer computer = _makeConstantValueComputer();
     computer.add(unit);
     computer.computeValues();
     NodeList<CompilationUnitMember> members = unit.declarations;
-    EngineTestCase.assertSizeOfList(2, members);
+    expect(members, hasLength(2));
     _validate(true, (members[0] as TopLevelVariableDeclaration).variables);
     _validate(true, (members[1] as TopLevelVariableDeclaration).variables);
   }
@@ -3639,25 +3553,30 @@
   void test_computeValues_multipleSources() {
     Source librarySource = addNamedSource(
         "/lib.dart",
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "const int c = b;", "const int a = 0;"]));
+        r'''
+library lib;
+part 'part.dart';
+const int c = b;
+const int a = 0;''');
     Source partSource = addNamedSource(
         "/part.dart",
-        EngineTestCase.createSource(
-            ["part of lib;", "const int b = a;", "const int d = c;"]));
+        r'''
+part of lib;
+const int b = a;
+const int d = c;''');
     LibraryElement libraryElement = resolve(librarySource);
     CompilationUnit libraryUnit =
         analysisContext.resolveCompilationUnit(librarySource, libraryElement);
-    JUnitTestCase.assertNotNull(libraryUnit);
+    expect(libraryUnit, isNotNull);
     CompilationUnit partUnit =
         analysisContext.resolveCompilationUnit(partSource, libraryElement);
-    JUnitTestCase.assertNotNull(partUnit);
+    expect(partUnit, isNotNull);
     ConstantValueComputer computer = _makeConstantValueComputer();
     computer.add(libraryUnit);
     computer.add(partUnit);
     computer.computeValues();
     NodeList<CompilationUnitMember> libraryMembers = libraryUnit.declarations;
-    EngineTestCase.assertSizeOfList(2, libraryMembers);
+    expect(libraryMembers, hasLength(2));
     _validate(
         true,
         (libraryMembers[0] as TopLevelVariableDeclaration).variables);
@@ -3665,7 +3584,7 @@
         true,
         (libraryMembers[1] as TopLevelVariableDeclaration).variables);
     NodeList<CompilationUnitMember> partMembers = libraryUnit.declarations;
-    EngineTestCase.assertSizeOfList(2, partMembers);
+    expect(partMembers, hasLength(2));
     _validate(true, (partMembers[0] as TopLevelVariableDeclaration).variables);
     _validate(true, (partMembers[1] as TopLevelVariableDeclaration).variables);
   }
@@ -3675,283 +3594,246 @@
     LibraryElement libraryElement = resolve(librarySource);
     CompilationUnit unit =
         analysisContext.resolveCompilationUnit(librarySource, libraryElement);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     ConstantValueComputer computer = _makeConstantValueComputer();
     computer.add(unit);
     computer.computeValues();
     NodeList<CompilationUnitMember> members = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, members);
+    expect(members, hasLength(1));
     _validate(true, (members[0] as TopLevelVariableDeclaration).variables);
   }
 
   void test_dependencyOnConstructor() {
     // x depends on "const A()"
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            ["class A {", "  const A();", "}", "const x = const A();"]),
+    _assertProperDependencies(r'''
+class A {
+  const A();
+}
+const x = const A();''',
         []);
   }
 
   void test_dependencyOnConstructorArgument() {
     // "const A(x)" depends on x
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const A(this.next);",
-                "  final A next;",
-                "}",
-                "const A x = const A(null);",
-                "const A y = const A(x);"]),
+    _assertProperDependencies(r'''
+class A {
+  const A(this.next);
+  final A next;
+}
+const A x = const A(null);
+const A y = const A(x);''',
         []);
   }
 
   void test_dependencyOnConstructorArgument_unresolvedConstructor() {
     // "const A.a(x)" depends on x even if the constructor A.a can't be found.
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            ["class A {", "}", "const int x = 1;", "const A y = const A.a(x);"]),
+    _assertProperDependencies(r'''
+class A {
+}
+const int x = 1;
+const A y = const A.a(x);''',
         [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]);
   }
 
   void test_dependencyOnConstructorInitializer() {
     // "const A()" depends on x
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const int x = 1;",
-                "class A {",
-                "  const A() : v = x;",
-                "  final int v;",
-                "}"]),
+    _assertProperDependencies(r'''
+const int x = 1;
+class A {
+  const A() : v = x;
+  final int v;
+}''',
         []);
   }
 
   void test_dependencyOnExplicitSuperConstructor() {
     // b depends on B() depends on A()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const A(this.x);",
-                "  final int x;",
-                "}",
-                "class B extends A {",
-                "  const B() : super(5);",
-                "}",
-                "const B b = const B();"]),
+    _assertProperDependencies(r'''
+class A {
+  const A(this.x);
+  final int x;
+}
+class B extends A {
+  const B() : super(5);
+}
+const B b = const B();''',
         []);
   }
 
   void test_dependencyOnExplicitSuperConstructorParameters() {
     // b depends on B() depends on i
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const A(this.x);",
-                "  final int x;",
-                "}",
-                "class B extends A {",
-                "  const B() : super(i);",
-                "}",
-                "const B b = const B();",
-                "const int i = 5;"]),
+    _assertProperDependencies(r'''
+class A {
+  const A(this.x);
+  final int x;
+}
+class B extends A {
+  const B() : super(i);
+}
+const B b = const B();
+const int i = 5;''',
         []);
   }
 
   void test_dependencyOnFactoryRedirect() {
     // a depends on A.foo() depends on A.bar()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "class A {",
-                "  factory const A.foo() = A.bar;",
-                "  const A.bar();",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+class A {
+  factory const A.foo() = A.bar;
+  const A.bar();
+}''',
         []);
   }
 
   void test_dependencyOnFactoryRedirectWithTypeParams() {
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const factory A(var a) = B<int>;",
-                "}",
-                "",
-                "class B<T> implements A {",
-                "  final T x;",
-                "  const B(this.x);",
-                "}",
-                "",
-                "const A a = const A(10);"]),
+    _assertProperDependencies(r'''
+class A {
+  const factory A(var a) = B<int>;
+}
+
+class B<T> implements A {
+  final T x;
+  const B(this.x);
+}
+
+const A a = const A(10);''',
         []);
   }
 
   void test_dependencyOnImplicitSuperConstructor() {
     // b depends on B() depends on A()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const A() : x = 5;",
-                "  final int x;",
-                "}",
-                "class B extends A {",
-                "  const B();",
-                "}",
-                "const B b = const B();"]),
+    _assertProperDependencies(r'''
+class A {
+  const A() : x = 5;
+  final int x;
+}
+class B extends A {
+  const B();
+}
+const B b = const B();''',
         []);
   }
 
   void test_dependencyOnNonFactoryRedirect() {
     // a depends on A.foo() depends on A.bar()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "class A {",
-                "  const A.foo() : this.bar();",
-                "  const A.bar();",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+class A {
+  const A.foo() : this.bar();
+  const A.bar();
+}''',
         []);
   }
 
   void test_dependencyOnNonFactoryRedirect_arg() {
     // a depends on A.foo() depends on b
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "const int b = 1;",
-                "class A {",
-                "  const A.foo() : this.bar(b);",
-                "  const A.bar(x) : y = x;",
-                "  final int y;"
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+const int b = 1;
+class A {
+  const A.foo() : this.bar(b);
+  const A.bar(x) : y = x;
+  final int y;
+}''',
         []);
   }
 
   void test_dependencyOnNonFactoryRedirect_defaultValue() {
     // a depends on A.foo() depends on A.bar() depends on b
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "const int b = 1;",
-                "class A {",
-                "  const A.foo() : this.bar();",
-                "  const A.bar([x = b]) : y = x;",
-                "  final int y;",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+const int b = 1;
+class A {
+  const A.foo() : this.bar();
+  const A.bar([x = b]) : y = x;
+  final int y;
+}''',
         []);
   }
 
   void test_dependencyOnNonFactoryRedirect_toMissing() {
     // a depends on A.foo() which depends on nothing, since A.bar() is
     // missing.
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "class A {",
-                "  const A.foo() : this.bar();",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+class A {
+  const A.foo() : this.bar();
+}''',
         [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_dependencyOnNonFactoryRedirect_toNonConst() {
     // a depends on A.foo() which depends on nothing, since A.bar() is
     // non-const.
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "class A {",
-                "  const A.foo() : this.bar();",
-                "  A.bar();",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+class A {
+  const A.foo() : this.bar();
+  A.bar();
+}''',
         []);
   }
 
   void test_dependencyOnNonFactoryRedirect_unnamed() {
     // a depends on A.foo() depends on A()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "const A a = const A.foo();",
-                "class A {",
-                "  const A.foo() : this();",
-                "  const A();",
-                "}"]),
+    _assertProperDependencies(r'''
+const A a = const A.foo();
+class A {
+  const A.foo() : this();
+  const A();
+}''',
         []);
   }
 
   void test_dependencyOnOptionalParameterDefault() {
     // a depends on A() depends on B()
-    _assertProperDependencies(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const A([x = const B()]) : b = x;",
-                "  final B b;",
-                "}",
-                "class B {",
-                "  const B();",
-                "}",
-                "const A a = const A();"]),
+    _assertProperDependencies(r'''
+class A {
+  const A([x = const B()]) : b = x;
+  final B b;
+}
+class B {
+  const B();
+}
+const A a = const A();''',
         []);
   }
 
   void test_dependencyOnVariable() {
     // x depends on y
-    _assertProperDependencies(
-        EngineTestCase.createSource(["const x = y + 1;", "const y = 2;"]),
+    _assertProperDependencies(r'''
+const x = y + 1;
+const y = 2;''',
         []);
   }
 
   void test_fromEnvironment_bool_default_false() {
-    JUnitTestCase.assertEquals(
-        false,
-        _assertValidBool(_check_fromEnvironment_bool(null, "false")));
+    expect(_assertValidBool(_check_fromEnvironment_bool(null, "false")), false);
   }
 
   void test_fromEnvironment_bool_default_overridden() {
-    JUnitTestCase.assertEquals(
-        false,
-        _assertValidBool(_check_fromEnvironment_bool("false", "true")));
+    expect(_assertValidBool(_check_fromEnvironment_bool("false", "true")), false);
   }
 
   void test_fromEnvironment_bool_default_parseError() {
-    JUnitTestCase.assertEquals(
-        true,
-        _assertValidBool(_check_fromEnvironment_bool("parseError", "true")));
+    expect(_assertValidBool(_check_fromEnvironment_bool("parseError", "true")), true);
   }
 
   void test_fromEnvironment_bool_default_true() {
-    JUnitTestCase.assertEquals(
-        true,
-        _assertValidBool(_check_fromEnvironment_bool(null, "true")));
+    expect(_assertValidBool(_check_fromEnvironment_bool(null, "true")), true);
   }
 
   void test_fromEnvironment_bool_false() {
-    JUnitTestCase.assertEquals(
-        false,
-        _assertValidBool(_check_fromEnvironment_bool("false", null)));
+    expect(_assertValidBool(_check_fromEnvironment_bool("false", null)), false);
   }
 
   void test_fromEnvironment_bool_parseError() {
-    JUnitTestCase.assertEquals(
-        false,
-        _assertValidBool(_check_fromEnvironment_bool("parseError", null)));
+    expect(_assertValidBool(_check_fromEnvironment_bool("parseError", null)), false);
   }
 
   void test_fromEnvironment_bool_true() {
-    JUnitTestCase.assertEquals(
-        true,
-        _assertValidBool(_check_fromEnvironment_bool("true", null)));
+    expect(_assertValidBool(_check_fromEnvironment_bool("true", null)), true);
   }
 
   void test_fromEnvironment_bool_undeclared() {
@@ -3959,27 +3841,19 @@
   }
 
   void test_fromEnvironment_int_default_overridden() {
-    JUnitTestCase.assertEquals(
-        234,
-        _assertValidInt(_check_fromEnvironment_int("234", "123")));
+    expect(_assertValidInt(_check_fromEnvironment_int("234", "123")), 234);
   }
 
   void test_fromEnvironment_int_default_parseError() {
-    JUnitTestCase.assertEquals(
-        123,
-        _assertValidInt(_check_fromEnvironment_int("parseError", "123")));
+    expect(_assertValidInt(_check_fromEnvironment_int("parseError", "123")), 123);
   }
 
   void test_fromEnvironment_int_default_undeclared() {
-    JUnitTestCase.assertEquals(
-        123,
-        _assertValidInt(_check_fromEnvironment_int(null, "123")));
+    expect(_assertValidInt(_check_fromEnvironment_int(null, "123")), 123);
   }
 
   void test_fromEnvironment_int_ok() {
-    JUnitTestCase.assertEquals(
-        234,
-        _assertValidInt(_check_fromEnvironment_int("234", null)));
+    expect(_assertValidInt(_check_fromEnvironment_int("234", null)), 234);
   }
 
   void test_fromEnvironment_int_parseError() {
@@ -3999,27 +3873,19 @@
   }
 
   void test_fromEnvironment_string_default_overridden() {
-    JUnitTestCase.assertEquals(
-        "abc",
-        _assertValidString(_check_fromEnvironment_string("abc", "'def'")));
+    expect(_assertValidString(_check_fromEnvironment_string("abc", "'def'")), "abc");
   }
 
   void test_fromEnvironment_string_default_undeclared() {
-    JUnitTestCase.assertEquals(
-        "def",
-        _assertValidString(_check_fromEnvironment_string(null, "'def'")));
+    expect(_assertValidString(_check_fromEnvironment_string(null, "'def'")), "def");
   }
 
   void test_fromEnvironment_string_empty() {
-    JUnitTestCase.assertEquals(
-        "",
-        _assertValidString(_check_fromEnvironment_string("", null)));
+    expect(_assertValidString(_check_fromEnvironment_string("", null)), "");
   }
 
   void test_fromEnvironment_string_ok() {
-    JUnitTestCase.assertEquals(
-        "abc",
-        _assertValidString(_check_fromEnvironment_string("abc", null)));
+    expect(_assertValidString(_check_fromEnvironment_string("abc", null)), "abc");
   }
 
   void test_fromEnvironment_string_undeclared() {
@@ -4031,18 +3897,16 @@
   }
 
   void test_instanceCreationExpression_computedField() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A(4, 5);",
-                "class A {",
-                "  const A(int i, int j) : k = 2 * i + j;",
-                "  final int k;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A(4, 5);
+class A {
+  const A(int i, int j) : k = 2 * i + j;
+  final int k;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "A");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "k", 13);
   }
 
@@ -4067,101 +3931,91 @@
   }
 
   void test_instanceCreationExpression_computedField_usesConstConstructor() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A(3);",
-                "class A {",
-                "  const A(int i) : b = const B(4);",
-                "  final int b;",
-                "}",
-                "class B {",
-                "  const B(this.k);",
-                "  final int k;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A(3);
+class A {
+  const A(int i) : b = const B(4);
+  final int b;
+}
+class B {
+  const B(this.k);
+  final int k;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fieldsOfA = _assertType(result, "A");
-    EngineTestCase.assertSizeOfMap(1, fieldsOfA);
+    expect(fieldsOfA, hasLength(1));
     Map<String, DartObjectImpl> fieldsOfB =
         _assertFieldType(fieldsOfA, "b", "B");
-    EngineTestCase.assertSizeOfMap(1, fieldsOfB);
+    expect(fieldsOfB, hasLength(1));
     _assertIntField(fieldsOfB, "k", 4);
   }
 
   void test_instanceCreationExpression_computedField_usesStaticConst() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A(3);",
-                "class A {",
-                "  const A(int i) : k = i + B.bar;",
-                "  final int k;",
-                "}",
-                "class B {",
-                "  static const bar = 4;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A(3);
+class A {
+  const A(int i) : k = i + B.bar;
+  final int k;
+}
+class B {
+  static const bar = 4;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "A");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "k", 7);
   }
 
   void test_instanceCreationExpression_computedField_usesToplevelConst() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A(3);",
-                "const bar = 4;",
-                "class A {",
-                "  const A(int i) : k = i + bar;",
-                "  final int k;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A(3);
+const bar = 4;
+class A {
+  const A(int i) : k = i + bar;
+  final int k;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "A");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "k", 7);
   }
 
   void test_instanceCreationExpression_explicitSuper() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const B(4, 5);",
-                "class A {",
-                "  const A(this.x);",
-                "  final int x;",
-                "}",
-                "class B extends A {",
-                "  const B(int x, this.y) : super(x * 2);",
-                "  final int y;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const B(4, 5);
+class A {
+  const A(this.x);
+  final int x;
+}
+class B extends A {
+  const B(int x, this.y) : super(x * 2);
+  final int y;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "B");
-    EngineTestCase.assertSizeOfMap(2, fields);
+    expect(fields, hasLength(2));
     _assertIntField(fields, "y", 5);
     Map<String, DartObjectImpl> superclassFields =
         _assertFieldType(fields, GenericState.SUPERCLASS_FIELD, "A");
-    EngineTestCase.assertSizeOfMap(1, superclassFields);
+    expect(superclassFields, hasLength(1));
     _assertIntField(superclassFields, "x", 8);
   }
 
   void test_instanceCreationExpression_fieldFormalParameter() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A(42);",
-                "class A {",
-                "  int x;",
-                "  const A(this.x)",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A(42);
+class A {
+  int x;
+  const A(this.x)
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "A");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "x", 42);
   }
 
@@ -4186,39 +4040,35 @@
   }
 
   void test_instanceCreationExpression_implicitSuper() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const B(4);",
-                "class A {",
-                "  const A() : x(3);",
-                "  final int x;",
-                "}",
-                "class B extends A {",
-                "  const B(this.y);",
-                "  final int y;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const B(4);
+class A {
+  const A() : x(3);
+  final int x;
+}
+class B extends A {
+  const B(this.y);
+  final int y;
+}''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
     Map<String, DartObjectImpl> fields = _assertType(result, "B");
-    EngineTestCase.assertSizeOfMap(2, fields);
+    expect(fields, hasLength(2));
     _assertIntField(fields, "y", 4);
     Map<String, DartObjectImpl> superclassFields =
         _assertFieldType(fields, GenericState.SUPERCLASS_FIELD, "A");
-    EngineTestCase.assertSizeOfMap(1, superclassFields);
+    expect(superclassFields, hasLength(1));
     _assertIntField(superclassFields, "x", 3);
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1();",
-                "class A {",
-                "  const A.a1() : this.a2();",
-                "  const A.a2() : x = 5;",
-                "  final int x;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1();
+class A {
+  const A.a1() : this.a2();
+  const A.a2() : x = 5;
+  final int x;
+}''');
     Map<String, DartObjectImpl> aFields = _assertType(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"),
         "A");
@@ -4226,15 +4076,13 @@
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect_arg() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1(1);",
-                "class A {",
-                "  const A.a1(x) : this.a2(x + 100);",
-                "  const A.a2(x) : y = x + 10;",
-                "  final int y;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1(1);
+class A {
+  const A.a1(x) : this.a2(x + 100);
+  const A.a2(x) : y = x + 10;
+  final int y;
+}''');
     Map<String, DartObjectImpl> aFields = _assertType(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"),
         "A");
@@ -4245,28 +4093,24 @@
     // It is an error to have a cycle in non-factory redirects; however, we
     // need to make sure that even if the error occurs, attempting to evaluate
     // the constant will terminate.
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A();",
-                "class A {",
-                "  const A() : this.b();",
-                "  const A.b() : this();",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A();
+class A {
+  const A() : this.b();
+  const A.b() : this();
+}''');
     _assertValidUnknown(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"));
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect_defaultArg() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1();",
-                "class A {",
-                "  const A.a1() : this.a2();",
-                "  const A.a2([x = 100]) : y = x + 10;",
-                "  final int y;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1();
+class A {
+  const A.a1() : this.a2();
+  const A.a2([x = 100]) : y = x + 10;
+  final int y;
+}''');
     Map<String, DartObjectImpl> aFields = _assertType(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"),
         "A");
@@ -4274,13 +4118,11 @@
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect_toMissing() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1();",
-                "class A {",
-                "  const A.a1() : this.a2();",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1();
+class A {
+  const A.a1() : this.a2();
+}''');
     // We don't care what value foo evaluates to (since there is a compile
     // error), but we shouldn't crash, and we should figure
     // out that it evaluates to an instance of class A.
@@ -4290,14 +4132,12 @@
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect_toNonConst() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1();",
-                "class A {",
-                "  const A.a1() : this.a2();",
-                "  A.a2();",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1();
+class A {
+  const A.a1() : this.a2();
+  A.a2();
+}''');
     // We don't care what value foo evaluates to (since there is a compile
     // error), but we shouldn't crash, and we should figure
     // out that it evaluates to an instance of class A.
@@ -4307,15 +4147,13 @@
   }
 
   void test_instanceCreationExpression_nonFactoryRedirect_unnamed() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A.a1();",
-                "class A {",
-                "  const A.a1() : this();",
-                "  const A() : x = 5;",
-                "  final int x;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A.a1();
+class A {
+  const A.a1() : this();
+  const A() : x = 5;
+  final int x;
+}''');
     Map<String, DartObjectImpl> aFields = _assertType(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"),
         "A");
@@ -4323,39 +4161,35 @@
   }
 
   void test_instanceCreationExpression_redirect() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A();",
-                "class A {",
-                "  const factory A() = B;",
-                "}",
-                "class B implements A {",
-                "  const B();",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A();
+class A {
+  const factory A() = B;
+}
+class B implements A {
+  const B();
+}''');
     _assertType(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"),
         "B");
   }
 
   void test_instanceCreationExpression_redirectWithTypeParams() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "class A {",
-                "  const factory A(var a) = B<int>;",
-                "}",
-                "",
-                "class B<T> implements A {",
-                "  final T x;",
-                "  const B(this.x);",
-                "}",
-                "",
-                "const A a = const A(10);"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+class A {
+  const factory A(var a) = B<int>;
+}
+
+class B<T> implements A {
+  final T x;
+  const B(this.x);
+}
+
+const A a = const A(10);''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "a");
     Map<String, DartObjectImpl> fields = _assertType(result, "B<int>");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "x", 10);
   }
 
@@ -4363,23 +4197,21 @@
     // To evaluate the redirection of A<int>,
     // A's template argument (T=int) must be substituted
     // into B's template argument (B<U> where U=T) to get B<int>.
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "class A<T> {",
-                "  const factory A(var a) = B<T>;",
-                "}",
-                "",
-                "class B<U> implements A {",
-                "  final U x;",
-                "  const B(this.x);",
-                "}",
-                "",
-                "const A<int> a = const A<int>(10);"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+class A<T> {
+  const factory A(var a) = B<T>;
+}
+
+class B<U> implements A {
+  final U x;
+  const B(this.x);
+}
+
+const A<int> a = const A<int>(10);''');
     EvaluationResultImpl result =
         _evaluateInstanceCreationExpression(compilationUnit, "a");
     Map<String, DartObjectImpl> fields = _assertType(result, "B<int>");
-    EngineTestCase.assertSizeOfMap(1, fields);
+    expect(fields, hasLength(1));
     _assertIntField(fields, "x", 10);
   }
 
@@ -4387,22 +4219,22 @@
     // It is an error to have a cycle in factory redirects; however, we need
     // to make sure that even if the error occurs, attempting to evaluate the
     // constant will terminate.
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A();",
-                "class A {",
-                "  const factory A() = A.b;",
-                "  const factory A.b() = A;",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A();
+class A {
+  const factory A() = A.b;
+  const factory A.b() = A;
+}''');
     _assertValidUnknown(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"));
   }
 
   void test_instanceCreationExpression_redirect_extern() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            ["const foo = const A();", "class A {", "  external const factory A();", "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A();
+class A {
+  external const factory A();
+}''');
     _assertValidUnknown(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"));
   }
@@ -4411,27 +4243,25 @@
     // It is an error for a const factory constructor redirect to a non-const
     // constructor; however, we need to make sure that even if the error
     // attempting to evaluate the constant won't cause a crash.
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const foo = const A();",
-                "class A {",
-                "  const factory A() = A.b;",
-                "  A.b();",
-                "}"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+const foo = const A();
+class A {
+  const factory A() = A.b;
+  A.b();
+}''');
     _assertValidUnknown(
         _evaluateInstanceCreationExpression(compilationUnit, "foo"));
   }
 
   void test_instanceCreationExpression_symbol() {
     CompilationUnit compilationUnit =
-        resolveSource(EngineTestCase.createSource(["const foo = const Symbol('a');"]));
+        resolveSource("const foo = const Symbol('a');");
     EvaluationResultImpl evaluationResult =
         _evaluateInstanceCreationExpression(compilationUnit, "foo");
-    JUnitTestCase.assertNotNull(evaluationResult.value);
+    expect(evaluationResult.value, isNotNull);
     DartObjectImpl value = evaluationResult.value;
-    JUnitTestCase.assertEquals(typeProvider.symbolType, value.type);
-    JUnitTestCase.assertEquals("a", value.value);
+    expect(value.type, typeProvider.symbolType);
+    expect(value.value, "a");
   }
 
   void test_instanceCreationExpression_withSupertypeParams_explicit() {
@@ -4443,14 +4273,12 @@
   }
 
   void test_instanceCreationExpression_withTypeParams() {
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "class C<E> {",
-                "  const C();",
-                "}",
-                "const c_int = const C<int>();",
-                "const c_num = const C<num>();"]));
+    CompilationUnit compilationUnit = resolveSource(r'''
+class C<E> {
+  const C();
+}
+const c_int = const C<int>();
+const c_num = const C<num>();''');
     EvaluationResultImpl c_int =
         _evaluateInstanceCreationExpression(compilationUnit, "c_int");
     _assertType(c_int, "C<int>");
@@ -4459,80 +4287,65 @@
         _evaluateInstanceCreationExpression(compilationUnit, "c_num");
     _assertType(c_num, "C<num>");
     DartObjectImpl c_num_value = c_num.value;
-    JUnitTestCase.assertFalse(c_int_value == c_num_value);
+    expect(c_int_value == c_num_value, isFalse);
   }
 
   void test_isValidSymbol() {
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol(""));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo"));
-    JUnitTestCase.assertTrue(
-        ConstantValueComputer.isValidPublicSymbol("foo.bar"));
-    JUnitTestCase.assertTrue(
-        ConstantValueComputer.isValidPublicSymbol("foo\$"));
-    JUnitTestCase.assertTrue(
-        ConstantValueComputer.isValidPublicSymbol("foo\$bar"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("iff"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("gif"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("if\$"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("\$if"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("foo="));
-    JUnitTestCase.assertTrue(
-        ConstantValueComputer.isValidPublicSymbol("foo.bar="));
-    JUnitTestCase.assertTrue(
-        ConstantValueComputer.isValidPublicSymbol("foo.+"));
-    JUnitTestCase.assertTrue(ConstantValueComputer.isValidPublicSymbol("void"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("_foo"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("_foo.bar"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("foo._bar"));
-    JUnitTestCase.assertFalse(ConstantValueComputer.isValidPublicSymbol("if"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("if.foo"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("foo.if"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("foo=.bar"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("foo."));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("+.foo"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("void.foo"));
-    JUnitTestCase.assertFalse(
-        ConstantValueComputer.isValidPublicSymbol("foo.void"));
+    expect(ConstantValueComputer.isValidPublicSymbol(""), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo.bar"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo\$"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo\$bar"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("iff"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("gif"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("if\$"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("\$if"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo="), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo.bar="), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo.+"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("void"), isTrue);
+    expect(ConstantValueComputer.isValidPublicSymbol("_foo"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("_foo.bar"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo._bar"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("if"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("if.foo"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo.if"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo=.bar"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo."), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("+.foo"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("void.foo"), isFalse);
+    expect(ConstantValueComputer.isValidPublicSymbol("foo.void"), isFalse);
   }
 
   void test_symbolLiteral_void() {
     CompilationUnit compilationUnit =
-        resolveSource(EngineTestCase.createSource(["const voidSymbol = #void;"]));
+        resolveSource("const voidSymbol = #void;");
     VariableDeclaration voidSymbol =
         findTopLevelDeclaration(compilationUnit, "voidSymbol");
     EvaluationResultImpl voidSymbolResult =
         (voidSymbol.element as VariableElementImpl).evaluationResult;
     DartObjectImpl value = voidSymbolResult.value;
-    JUnitTestCase.assertEquals(typeProvider.symbolType, value.type);
-    JUnitTestCase.assertEquals("void", value.value);
+    expect(value.type, typeProvider.symbolType);
+    expect(value.value, "void");
   }
 
   Map<String, DartObjectImpl> _assertFieldType(Map<String,
       DartObjectImpl> fields, String fieldName, String expectedType) {
     DartObjectImpl field = fields[fieldName];
-    JUnitTestCase.assertEquals(expectedType, field.type.displayName);
+    expect(field.type.displayName, expectedType);
     return field.fields;
   }
 
   void _assertIntField(Map<String, DartObjectImpl> fields, String fieldName,
       int expectedValue) {
     DartObjectImpl field = fields[fieldName];
-    JUnitTestCase.assertEquals("int", field.type.name);
-    JUnitTestCase.assertEquals(expectedValue, field.intValue);
+    expect(field.type.name, "int");
+    expect(field.intValue, expectedValue);
   }
 
   void _assertNullField(Map<String, DartObjectImpl> fields, String fieldName) {
     DartObjectImpl field = fields[fieldName];
-    JUnitTestCase.assertTrue(field.isNull);
+    expect(field.isNull, isTrue);
   }
 
   void _assertProperDependencies(String sourceText,
@@ -4541,7 +4354,7 @@
     LibraryElement element = resolve(source);
     CompilationUnit unit =
         analysisContext.resolveCompilationUnit(source, element);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     ConstantValueComputer computer = _makeConstantValueComputer();
     computer.add(unit);
     computer.computeValues();
@@ -4550,45 +4363,45 @@
 
   Map<String, DartObjectImpl> _assertType(EvaluationResultImpl result,
       String typeName) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertEquals(typeName, value.type.displayName);
+    expect(value.type.displayName, typeName);
     return value.fields;
   }
 
   bool _assertValidBool(EvaluationResultImpl result) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertEquals(typeProvider.boolType, value.type);
+    expect(value.type, typeProvider.boolType);
     bool boolValue = value.boolValue;
-    JUnitTestCase.assertNotNull(boolValue);
+    expect(boolValue, isNotNull);
     return boolValue;
   }
 
   int _assertValidInt(EvaluationResultImpl result) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertEquals(typeProvider.intType, value.type);
+    expect(value.type, typeProvider.intType);
     return value.intValue;
   }
 
   void _assertValidNull(EvaluationResultImpl result) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertEquals(typeProvider.nullType, value.type);
+    expect(value.type, typeProvider.nullType);
   }
 
   String _assertValidString(EvaluationResultImpl result) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertEquals(typeProvider.stringType, value.type);
+    expect(value.type, typeProvider.stringType);
     return value.stringValue;
   }
 
   void _assertValidUnknown(EvaluationResultImpl result) {
-    JUnitTestCase.assertNotNull(result.value);
+    expect(result.value, isNotNull);
     DartObjectImpl value = result.value;
-    JUnitTestCase.assertTrue(value.isUnknown);
+    expect(value.isUnknown, isTrue);
   }
 
   void _checkInstanceCreationOptionalParams(bool isFieldFormal, bool isNamed,
@@ -4596,20 +4409,18 @@
     String fieldName = "j";
     String paramName = isFieldFormal ? fieldName : "i";
     String formalParam =
-        "${(isFieldFormal ? "this." : "int ")}${paramName}${(hasDefault ? " = 3" : "")}";
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const x = const A();",
-                "const y = const A(${(isNamed ? "${paramName}: " : "")}10);",
-                "class A {",
-                "  const A(${(isNamed ? "{${formalParam}}" : "[${formalParam}]")})${(isFieldFormal ? "" : " : ${fieldName} = ${paramName}")};",
-                "  final int ${fieldName};",
-                "}"]));
+        "${isFieldFormal ? "this." : "int "}$paramName${hasDefault ? " = 3" : ""}";
+    CompilationUnit compilationUnit = resolveSource("""
+const x = const A();
+const y = const A(${isNamed ? '$paramName: ' : ''}10);
+class A {
+  const A(${isNamed ? "{$formalParam}" : "[$formalParam]"})${isFieldFormal ? "" : " : $fieldName = $paramName"};
+  final int $fieldName;
+}""");
     EvaluationResultImpl x =
         _evaluateInstanceCreationExpression(compilationUnit, "x");
     Map<String, DartObjectImpl> fieldsOfX = _assertType(x, "A");
-    EngineTestCase.assertSizeOfMap(1, fieldsOfX);
+    expect(fieldsOfX, hasLength(1));
     if (hasDefault) {
       _assertIntField(fieldsOfX, fieldName, 3);
     } else {
@@ -4618,26 +4429,24 @@
     EvaluationResultImpl y =
         _evaluateInstanceCreationExpression(compilationUnit, "y");
     Map<String, DartObjectImpl> fieldsOfY = _assertType(y, "A");
-    EngineTestCase.assertSizeOfMap(1, fieldsOfY);
+    expect(fieldsOfY, hasLength(1));
     _assertIntField(fieldsOfY, fieldName, 10);
   }
 
   void _checkInstanceCreation_withSupertypeParams(bool isExplicit) {
     String superCall = isExplicit ? " : super()" : "";
-    CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "class A<T> {",
-                "  const A();",
-                "}",
-                "class B<T, U> extends A<T> {",
-                "  const B()${superCall};",
-                "}",
-                "class C<T, U> extends A<U> {",
-                "  const C()${superCall};",
-                "}",
-                "const b_int_num = const B<int, num>();",
-                "const c_int_num = const C<int, num>();"]));
+    CompilationUnit compilationUnit = resolveSource("""
+class A<T> {
+  const A();
+}
+class B<T, U> extends A<T> {
+  const B()$superCall;
+}
+class C<T, U> extends A<U> {
+  const C()$superCall;
+}
+const b_int_num = const B<int, num>();
+const c_int_num = const C<int, num>();""");
     EvaluationResultImpl b_int_num =
         _evaluateInstanceCreationExpression(compilationUnit, "b_int_num");
     Map<String, DartObjectImpl> b_int_num_fields =
@@ -4658,11 +4467,9 @@
       analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
     }
     String defaultArg =
-        defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+        defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
     CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const ${varName} = const bool.fromEnvironment('${envVarName}'${defaultArg});"]));
+                "const $varName = const bool.fromEnvironment('$envVarName'$defaultArg);");
     return _evaluateInstanceCreationExpression(compilationUnit, varName);
   }
 
@@ -4674,11 +4481,9 @@
       analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
     }
     String defaultArg =
-        defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+        defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
     CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const ${varName} = const int.fromEnvironment('${envVarName}'${defaultArg});"]));
+                "const $varName = const int.fromEnvironment('$envVarName'$defaultArg);");
     return _evaluateInstanceCreationExpression(compilationUnit, varName);
   }
 
@@ -4690,11 +4495,9 @@
       analysisContext2.declaredVariables.define(envVarName, valueInEnvironment);
     }
     String defaultArg =
-        defaultExpr == null ? "" : ", defaultValue: ${defaultExpr}";
+        defaultExpr == null ? "" : ", defaultValue: $defaultExpr";
     CompilationUnit compilationUnit = resolveSource(
-        EngineTestCase.createSource(
-            [
-                "const ${varName} = const String.fromEnvironment('${envVarName}'${defaultArg});"]));
+                "const $varName = const String.fromEnvironment('$envVarName'$defaultArg);");
     return _evaluateInstanceCreationExpression(compilationUnit, varName);
   }
 
@@ -4715,12 +4518,12 @@
   void _validate(bool shouldBeValid, VariableDeclarationList declarationList) {
     for (VariableDeclaration declaration in declarationList.variables) {
       VariableElementImpl element = declaration.element as VariableElementImpl;
-      JUnitTestCase.assertNotNull(element);
+      expect(element, isNotNull);
       EvaluationResultImpl result = element.evaluationResult;
       if (shouldBeValid) {
-        JUnitTestCase.assertNotNull(result.value);
+        expect(result.value, isNotNull);
       } else {
-        JUnitTestCase.assertNull(result.value);
+        expect(result.value, isNull);
       }
     }
   }
@@ -4742,8 +4545,7 @@
     // If we are getting the evaluation result for a node in the graph,
     // make sure we properly recorded the dependency.
     if (_referenceGraph.nodes.contains(node)) {
-      JUnitTestCase.assertTrue(
-          _referenceGraph.containsPath(_nodeBeingEvaluated, node));
+      expect(_referenceGraph.containsPath(_nodeBeingEvaluated, node), isTrue);
     }
   }
 }
@@ -4810,7 +4612,7 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(
         new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
     errorListener.assertErrorsWithCodes(
         [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]);
   }
@@ -4827,7 +4629,7 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(
         new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
     errorListener.assertErrorsWithCodes(
         [CompileTimeErrorCode.INVALID_CONSTANT]);
   }
@@ -4844,7 +4646,7 @@
         new ErrorReporter(errorListener, _dummySource());
     DartObjectImpl result = expression.accept(
         new ConstantVisitor.con1(new TestTypeProvider(), errorReporter));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
     errorListener.assertErrorsWithCodes(
         [CompileTimeErrorCode.INVALID_CONSTANT]);
   }
@@ -4868,7 +4670,9 @@
 
   void test_visitSimpleIdentifier_inEnvironment() {
     CompilationUnit compilationUnit =
-        resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+        resolveSource(r'''
+const a = b;
+const b = 3;''');
     Map<String, DartObjectImpl> environment = new Map<String, DartObjectImpl>();
     DartObjectImpl six =
         new DartObjectImpl(typeProvider.intType, new IntState(6));
@@ -4878,7 +4682,9 @@
 
   void test_visitSimpleIdentifier_notInEnvironment() {
     CompilationUnit compilationUnit =
-        resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+        resolveSource(r'''
+const a = b;
+const b = 3;''');
     Map<String, DartObjectImpl> environment = new Map<String, DartObjectImpl>();
     DartObjectImpl six =
         new DartObjectImpl(typeProvider.intType, new IntState(6));
@@ -4888,14 +4694,16 @@
 
   void test_visitSimpleIdentifier_withoutEnvironment() {
     CompilationUnit compilationUnit =
-        resolveSource(EngineTestCase.createSource(["const a = b;", "const b = 3;"]));
+        resolveSource(r'''
+const a = b;
+const b = 3;''');
     _assertValue(3, _evaluateConstant(compilationUnit, "a", null));
   }
 
   void _assertValue(int expectedValue, DartObjectImpl result) {
-    JUnitTestCase.assertNotNull(result);
-    JUnitTestCase.assertEquals("int", result.type.name);
-    JUnitTestCase.assertEquals(expectedValue, result.intValue);
+    expect(result, isNotNull);
+    expect(result.type.name, "int");
+    expect(result.intValue, expectedValue);
   }
 
   NonExistingSource _dummySource() {
@@ -4917,21 +4725,21 @@
 }
 
 
-class ContentCacheTest extends JUnitTestCase {
+class ContentCacheTest {
   void test_setContents() {
     Source source = new TestSource();
     ContentCache cache = new ContentCache();
-    JUnitTestCase.assertNull(cache.getContents(source));
-    JUnitTestCase.assertNull(cache.getModificationStamp(source));
+    expect(cache.getContents(source), isNull);
+    expect(cache.getModificationStamp(source), isNull);
     String contents = "library lib;";
-    JUnitTestCase.assertNull(cache.setContents(source, contents));
-    JUnitTestCase.assertEquals(contents, cache.getContents(source));
-    JUnitTestCase.assertNotNull(cache.getModificationStamp(source));
-    JUnitTestCase.assertEquals(contents, cache.setContents(source, contents));
-    JUnitTestCase.assertEquals(contents, cache.setContents(source, null));
-    JUnitTestCase.assertNull(cache.getContents(source));
-    JUnitTestCase.assertNull(cache.getModificationStamp(source));
-    JUnitTestCase.assertNull(cache.setContents(source, null));
+    expect(cache.setContents(source, contents), isNull);
+    expect(cache.getContents(source), contents);
+    expect(cache.getModificationStamp(source), isNotNull);
+    expect(cache.setContents(source, contents), contents);
+    expect(cache.setContents(source, null), contents);
+    expect(cache.getContents(source), isNull);
+    expect(cache.getModificationStamp(source), isNull);
+    expect(cache.setContents(source, null), isNull);
   }
 }
 
@@ -4940,21 +4748,21 @@
   TypeProvider _typeProvider = new TestTypeProvider();
 
   void fail_add_knownString_knownString() {
-    JUnitTestCase.fail("New constant semantics are not yet enabled");
+    fail("New constant semantics are not yet enabled");
     _assertAdd(_stringValue("ab"), _stringValue("a"), _stringValue("b"));
   }
 
   void fail_add_knownString_unknownString() {
-    JUnitTestCase.fail("New constant semantics are not yet enabled");
+    fail("New constant semantics are not yet enabled");
     _assertAdd(_stringValue(null), _stringValue("a"), _stringValue(null));
   }
 
   void fail_add_unknownString_knownString() {
-    JUnitTestCase.fail("New constant semantics are not yet enabled");
+    fail("New constant semantics are not yet enabled");
     _assertAdd(_stringValue(null), _stringValue(null), _stringValue("b"));
   }
   void fail_add_unknownString_unknownString() {
-    JUnitTestCase.fail("New constant semantics are not yet enabled");
+    fail("New constant semantics are not yet enabled");
     _assertAdd(_stringValue(null), _stringValue(null), _stringValue(null));
   }
 
@@ -5252,87 +5060,83 @@
   }
 
   void test_equals_list_false_differentSizes() {
-    JUnitTestCase.assertFalse(
-        _listValue([_boolValue(true)]) ==
-            _listValue([_boolValue(true), _boolValue(false)]));
+    expect(_listValue([_boolValue(true)]) ==
+            _listValue([_boolValue(true), _boolValue(false)]), isFalse);
   }
 
   void test_equals_list_false_sameSize() {
-    JUnitTestCase.assertFalse(
-        _listValue([_boolValue(true)]) == _listValue([_boolValue(false)]));
+    expect(_listValue([_boolValue(true)]) == _listValue([_boolValue(false)]), isFalse);
   }
 
   void test_equals_list_true_empty() {
-    JUnitTestCase.assertEquals(_listValue([]), _listValue([]));
+    expect(_listValue([]), _listValue([]));
   }
 
   void test_equals_list_true_nonEmpty() {
-    JUnitTestCase.assertEquals(
-        _listValue([_boolValue(true)]),
-        _listValue([_boolValue(true)]));
+    expect(_listValue([_boolValue(true)]), _listValue([_boolValue(true)]));
   }
 
   void test_equals_map_true_empty() {
-    JUnitTestCase.assertEquals(_mapValue([]), _mapValue([]));
+    expect(_mapValue([]), _mapValue([]));
   }
 
   void test_equals_symbol_false() {
-    JUnitTestCase.assertFalse(_symbolValue("a") == _symbolValue("b"));
+    expect(_symbolValue("a") == _symbolValue("b"), isFalse);
   }
 
   void test_equals_symbol_true() {
-    JUnitTestCase.assertEquals(_symbolValue("a"), _symbolValue("a"));
+    expect(_symbolValue("a"), _symbolValue("a"));
   }
 
   void test_getValue_bool_false() {
-    JUnitTestCase.assertEquals(false, _boolValue(false).value);
+    expect(_boolValue(false).value, false);
   }
 
   void test_getValue_bool_true() {
-    JUnitTestCase.assertEquals(true, _boolValue(true).value);
+    expect(_boolValue(true).value, true);
   }
 
   void test_getValue_bool_unknown() {
-    JUnitTestCase.assertNull(_boolValue(null).value);
+    expect(_boolValue(null).value, isNull);
   }
 
   void test_getValue_double_known() {
     double value = 2.3;
-    JUnitTestCase.assertEquals(value, _doubleValue(value).value);
+    expect(_doubleValue(value).value, value);
   }
 
   void test_getValue_double_unknown() {
-    JUnitTestCase.assertNull(_doubleValue(null).value);
+    expect(_doubleValue(null).value, isNull);
   }
 
   void test_getValue_int_known() {
     int value = 23;
-    JUnitTestCase.assertEquals(value, _intValue(value).value);
+    expect(_intValue(value).value, value);
   }
 
   void test_getValue_int_unknown() {
-    JUnitTestCase.assertNull(_intValue(null).value);
+    expect(_intValue(null).value, isNull);
   }
 
   void test_getValue_list_empty() {
     Object result = _listValue([]).value;
     _assertInstanceOfObjectArray(result);
     List<Object> array = result as List<Object>;
-    EngineTestCase.assertLength(0, array);
+    expect(array, hasLength(0));
   }
 
   void test_getValue_list_valid() {
     Object result = _listValue([_intValue(23)]).value;
     _assertInstanceOfObjectArray(result);
     List<Object> array = result as List<Object>;
-    EngineTestCase.assertLength(1, array);
+    expect(array, hasLength(1));
   }
 
   void test_getValue_map_empty() {
     Object result = _mapValue([]).value;
     EngineTestCase.assertInstanceOf((obj) => obj is Map, Map, result);
     Map map = result as Map;
-    EngineTestCase.assertSizeOfMap(0, map);
+    expect(map, hasLength(0));
   }
 
   void test_getValue_map_valid() {
@@ -5340,20 +5144,20 @@
         _mapValue([_stringValue("key"), _stringValue("value")]).value;
     EngineTestCase.assertInstanceOf((obj) => obj is Map, Map, result);
     Map map = result as Map;
-    EngineTestCase.assertSizeOfMap(1, map);
+    expect(map, hasLength(1));
   }
 
   void test_getValue_null() {
-    JUnitTestCase.assertNull(_nullValue().value);
+    expect(_nullValue().value, isNull);
   }
 
   void test_getValue_string_known() {
     String value = "twenty-three";
-    JUnitTestCase.assertEquals(value, _stringValue(value).value);
+    expect(_stringValue(value).value, value);
   }
 
   void test_getValue_string_unknown() {
-    JUnitTestCase.assertNull(_stringValue(null).value);
+    expect(_stringValue(null).value, isNull);
   }
 
   void test_greaterThanOrEqual_knownDouble_knownDouble_false() {
@@ -5515,82 +5319,79 @@
   }
 
   void test_hasExactValue_bool_false() {
-    JUnitTestCase.assertTrue(_boolValue(false).hasExactValue);
+    expect(_boolValue(false).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_bool_true() {
-    JUnitTestCase.assertTrue(_boolValue(true).hasExactValue);
+    expect(_boolValue(true).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_bool_unknown() {
-    JUnitTestCase.assertTrue(_boolValue(null).hasExactValue);
+    expect(_boolValue(null).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_double_known() {
-    JUnitTestCase.assertTrue(_doubleValue(2.3).hasExactValue);
+    expect(_doubleValue(2.3).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_double_unknown() {
-    JUnitTestCase.assertTrue(_doubleValue(null).hasExactValue);
+    expect(_doubleValue(null).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_dynamic() {
-    JUnitTestCase.assertFalse(_dynamicValue().hasExactValue);
+    expect(_dynamicValue().hasExactValue, isFalse);
   }
 
   void test_hasExactValue_int_known() {
-    JUnitTestCase.assertTrue(_intValue(23).hasExactValue);
+    expect(_intValue(23).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_int_unknown() {
-    JUnitTestCase.assertTrue(_intValue(null).hasExactValue);
+    expect(_intValue(null).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_list_empty() {
-    JUnitTestCase.assertTrue(_listValue([]).hasExactValue);
+    expect(_listValue([]).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_list_invalid() {
-    JUnitTestCase.assertFalse(_dynamicValue().hasExactValue);
+    expect(_dynamicValue().hasExactValue, isFalse);
   }
 
   void test_hasExactValue_list_valid() {
-    JUnitTestCase.assertTrue(_listValue([_intValue(23)]).hasExactValue);
+    expect(_listValue([_intValue(23)]).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_map_empty() {
-    JUnitTestCase.assertTrue(_mapValue([]).hasExactValue);
+    expect(_mapValue([]).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_map_invalidKey() {
-    JUnitTestCase.assertFalse(
-        _mapValue([_dynamicValue(), _stringValue("value")]).hasExactValue);
+    expect(_mapValue([_dynamicValue(), _stringValue("value")]).hasExactValue, isFalse);
   }
 
   void test_hasExactValue_map_invalidValue() {
-    JUnitTestCase.assertFalse(
-        _mapValue([_stringValue("key"), _dynamicValue()]).hasExactValue);
+    expect(_mapValue([_stringValue("key"), _dynamicValue()]).hasExactValue, isFalse);
   }
 
   void test_hasExactValue_map_valid() {
-    JUnitTestCase.assertTrue(
-        _mapValue([_stringValue("key"), _stringValue("value")]).hasExactValue);
+    expect(_mapValue([_stringValue("key"), _stringValue("value")]).hasExactValue, isTrue);
   }
 
   void test_hasExactValue_null() {
-    JUnitTestCase.assertTrue(_nullValue().hasExactValue);
+    expect(_nullValue().hasExactValue, isTrue);
   }
 
   void test_hasExactValue_num() {
-    JUnitTestCase.assertFalse(_numValue().hasExactValue);
+    expect(_numValue().hasExactValue, isFalse);
   }
 
   void test_hasExactValue_string_known() {
-    JUnitTestCase.assertTrue(_stringValue("twenty-three").hasExactValue);
+    expect(_stringValue("twenty-three").hasExactValue, isTrue);
   }
 
   void test_hasExactValue_string_unknown() {
-    JUnitTestCase.assertTrue(_stringValue(null).hasExactValue);
+    expect(_stringValue(null).hasExactValue, isTrue);
   }
 
   void test_integerDivide_knownDouble_knownDouble() {
@@ -5652,56 +5453,55 @@
   }
 
   void test_isBoolNumStringOrNull_bool_false() {
-    JUnitTestCase.assertTrue(_boolValue(false).isBoolNumStringOrNull);
+    expect(_boolValue(false).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_bool_true() {
-    JUnitTestCase.assertTrue(_boolValue(true).isBoolNumStringOrNull);
+    expect(_boolValue(true).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_bool_unknown() {
-    JUnitTestCase.assertTrue(_boolValue(null).isBoolNumStringOrNull);
+    expect(_boolValue(null).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_double_known() {
-    JUnitTestCase.assertTrue(_doubleValue(2.3).isBoolNumStringOrNull);
+    expect(_doubleValue(2.3).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_double_unknown() {
-    JUnitTestCase.assertTrue(_doubleValue(null).isBoolNumStringOrNull);
+    expect(_doubleValue(null).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_dynamic() {
-    JUnitTestCase.assertTrue(_dynamicValue().isBoolNumStringOrNull);
+    expect(_dynamicValue().isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_int_known() {
-    JUnitTestCase.assertTrue(_intValue(23).isBoolNumStringOrNull);
+    expect(_intValue(23).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_int_unknown() {
-    JUnitTestCase.assertTrue(_intValue(null).isBoolNumStringOrNull);
+    expect(_intValue(null).isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_list() {
-    JUnitTestCase.assertFalse(_listValue([]).isBoolNumStringOrNull);
+    expect(_listValue([]).isBoolNumStringOrNull, isFalse);
   }
 
   void test_isBoolNumStringOrNull_null() {
-    JUnitTestCase.assertTrue(_nullValue().isBoolNumStringOrNull);
+    expect(_nullValue().isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_num() {
-    JUnitTestCase.assertTrue(_numValue().isBoolNumStringOrNull);
+    expect(_numValue().isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_string_known() {
-    JUnitTestCase.assertTrue(
-        _stringValue("twenty-three").isBoolNumStringOrNull);
+    expect(_stringValue("twenty-three").isBoolNumStringOrNull, isTrue);
   }
 
   void test_isBoolNumStringOrNull_string_unknown() {
-    JUnitTestCase.assertTrue(_stringValue(null).isBoolNumStringOrNull);
+    expect(_stringValue(null).isBoolNumStringOrNull, isTrue);
   }
 
   void test_lessThanOrEqual_knownDouble_knownDouble_false() {
@@ -5857,7 +5657,7 @@
   void test_logicalAnd_false_null() {
     try {
       _assertLogicalAnd(_boolValue(false), _boolValue(false), _nullValue());
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5868,7 +5668,7 @@
           _boolValue(false),
           _boolValue(false),
           _stringValue("false"));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5880,7 +5680,7 @@
   void test_logicalAnd_null_false() {
     try {
       _assertLogicalAnd(_boolValue(false), _nullValue(), _boolValue(false));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5888,7 +5688,7 @@
   void test_logicalAnd_null_true() {
     try {
       _assertLogicalAnd(_boolValue(false), _nullValue(), _boolValue(true));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5899,7 +5699,7 @@
           _boolValue(false),
           _stringValue("true"),
           _boolValue(false));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5910,7 +5710,7 @@
           _boolValue(false),
           _stringValue("false"),
           _boolValue(true));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5929,7 +5729,7 @@
           _boolValue(false),
           _boolValue(true),
           _stringValue("true"));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5949,7 +5749,7 @@
   void test_logicalNot_string() {
     try {
       _assertLogicalNot(_boolValue(true), _stringValue(null));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5976,7 +5776,7 @@
           _boolValue(false),
           _boolValue(false),
           _stringValue("false"));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5988,7 +5788,7 @@
   void test_logicalOr_null_false() {
     try {
       _assertLogicalOr(_boolValue(false), _nullValue(), _boolValue(false));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -5996,7 +5796,7 @@
   void test_logicalOr_null_true() {
     try {
       _assertLogicalOr(_boolValue(true), _nullValue(), _boolValue(true));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6007,7 +5807,7 @@
           _boolValue(false),
           _stringValue("true"),
           _boolValue(false));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6018,7 +5818,7 @@
           _boolValue(true),
           _stringValue("false"),
           _boolValue(true));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6030,7 +5830,7 @@
   void test_logicalOr_true_null() {
     try {
       _assertLogicalOr(_boolValue(true), _boolValue(true), _nullValue());
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6041,7 +5841,7 @@
           _boolValue(true),
           _boolValue(true),
           _stringValue("true"));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6334,7 +6134,7 @@
   void test_stringLength_int() {
     try {
       _assertStringLength(_intValue(null), _intValue(0));
-      JUnitTestCase.fail("Expected EvaluationException");
+      fail("Expected EvaluationException");
     } on EvaluationException catch (exception) {
     }
   }
@@ -6413,13 +6213,13 @@
     if (expected == null) {
       try {
         leftOperand.add(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.add(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6437,13 +6237,13 @@
     if (expected == null) {
       try {
         leftOperand.bitAnd(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.bitAnd(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6459,13 +6259,13 @@
     if (expected == null) {
       try {
         operand.bitNot(_typeProvider);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = operand.bitNot(_typeProvider);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6483,13 +6283,13 @@
     if (expected == null) {
       try {
         leftOperand.bitOr(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.bitOr(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6507,13 +6307,13 @@
     if (expected == null) {
       try {
         leftOperand.bitXor(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.bitXor(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6531,14 +6331,14 @@
     if (expected == null) {
       try {
         leftOperand.concatenate(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.concatenate(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6556,13 +6356,13 @@
     if (expected == null) {
       try {
         leftOperand.divide(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.divide(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6580,14 +6380,14 @@
     if (expected == null) {
       try {
         leftOperand.equalEqual(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.equalEqual(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6605,14 +6405,14 @@
     if (expected == null) {
       try {
         leftOperand.greaterThan(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.greaterThan(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6630,14 +6430,14 @@
     if (expected == null) {
       try {
         leftOperand.greaterThanOrEqual(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.greaterThanOrEqual(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6659,14 +6459,14 @@
     if (expected == null) {
       try {
         leftOperand.integerDivide(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.integerDivide(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6684,13 +6484,13 @@
     if (expected == null) {
       try {
         leftOperand.lessThan(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.lessThan(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6708,14 +6508,14 @@
     if (expected == null) {
       try {
         leftOperand.lessThanOrEqual(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.lessThanOrEqual(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6733,14 +6533,14 @@
     if (expected == null) {
       try {
         leftOperand.logicalAnd(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.logicalAnd(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6756,13 +6556,13 @@
     if (expected == null) {
       try {
         operand.logicalNot(_typeProvider);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = operand.logicalNot(_typeProvider);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6780,14 +6580,14 @@
     if (expected == null) {
       try {
         leftOperand.logicalOr(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.logicalOr(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6805,13 +6605,13 @@
     if (expected == null) {
       try {
         leftOperand.minus(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.minus(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6827,13 +6627,13 @@
     if (expected == null) {
       try {
         operand.negated(_typeProvider);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = operand.negated(_typeProvider);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6851,13 +6651,13 @@
     if (expected == null) {
       try {
         leftOperand.notEqual(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.notEqual(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6873,13 +6673,13 @@
     if (expected == null) {
       try {
         operand.performToString(_typeProvider);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = operand.performToString(_typeProvider);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6897,14 +6697,14 @@
     if (expected == null) {
       try {
         leftOperand.remainder(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.remainder(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6922,14 +6722,14 @@
     if (expected == null) {
       try {
         leftOperand.shiftLeft(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.shiftLeft(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6947,14 +6747,14 @@
     if (expected == null) {
       try {
         leftOperand.shiftRight(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result =
           leftOperand.shiftRight(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6970,13 +6770,13 @@
     if (expected == null) {
       try {
         operand.stringLength(_typeProvider);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = operand.stringLength(_typeProvider);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -6994,13 +6794,13 @@
     if (expected == null) {
       try {
         leftOperand.times(_typeProvider, rightOperand);
-        JUnitTestCase.fail("Expected an EvaluationException");
+        fail("Expected an EvaluationException");
       } on EvaluationException catch (exception) {
       }
     } else {
       DartObjectImpl result = leftOperand.times(_typeProvider, rightOperand);
-      JUnitTestCase.assertNotNull(result);
-      JUnitTestCase.assertEquals(expected, result);
+      expect(result, isNotNull);
+      expect(result, expected);
     }
   }
 
@@ -7014,7 +6814,7 @@
     } else if (identical(value, true)) {
       return new DartObjectImpl(_typeProvider.boolType, BoolState.TRUE_STATE);
     }
-    JUnitTestCase.fail("Invalid boolean value used in test");
+    fail("Invalid boolean value used in test");
     return null;
   }
 
@@ -7084,47 +6884,47 @@
 }
 
 
-class DartUriResolverTest extends JUnitTestCase {
+class DartUriResolverTest {
   void test_creation() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNull(sdkDirectory);
+    expect(sdkDirectory, isNotNull);
     DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
-    JUnitTestCase.assertNotNull(new DartUriResolver(sdk));
+    expect(new DartUriResolver(sdk), isNotNull);
   }
 
   void test_isDartUri_null_scheme() {
     Uri uri = parseUriWithException("foo.dart");
-    JUnitTestCase.assertEquals(uri.scheme, '');
-    JUnitTestCase.assertFalse(DartUriResolver.isDartUri(uri));
+    expect('', uri.scheme);
+    expect(DartUriResolver.isDartUri(uri), isFalse);
   }
 
   void test_resolve_dart() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNull(sdkDirectory);
+    expect(sdkDirectory, isNotNull);
     DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
     UriResolver resolver = new DartUriResolver(sdk);
     Source result =
         resolver.resolveAbsolute(parseUriWithException("dart:core"));
-    JUnitTestCase.assertNotNull(result);
+    expect(result, isNotNull);
   }
 
   void test_resolve_dart_nonExistingLibrary() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNull(sdkDirectory);
+    expect(sdkDirectory, isNotNull);
     DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
     UriResolver resolver = new DartUriResolver(sdk);
     Source result = resolver.resolveAbsolute(parseUriWithException("dart:cor"));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
   }
 
   void test_resolve_nonDart() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNull(sdkDirectory);
+    expect(sdkDirectory, isNotNull);
     DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
     UriResolver resolver = new DartUriResolver(sdk);
     Source result =
         resolver.resolveAbsolute(parseUriWithException("package:some/file.dart"));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
   }
 }
 
@@ -7136,8 +6936,8 @@
     DeclaredVariables variables = new DeclaredVariables();
     variables.define(variableName, "false");
     DartObject object = variables.getBool(typeProvider, variableName);
-    JUnitTestCase.assertNotNull(object);
-    JUnitTestCase.assertEquals(false, object.boolValue);
+    expect(object, isNotNull);
+    expect(object.boolValue, false);
   }
 
   void test_getBool_invalid() {
@@ -7156,15 +6956,16 @@
     DeclaredVariables variables = new DeclaredVariables();
     variables.define(variableName, "true");
     DartObject object = variables.getBool(typeProvider, variableName);
-    JUnitTestCase.assertNotNull(object);
-    JUnitTestCase.assertEquals(true, object.boolValue);
+    expect(object, isNotNull);
+    expect(object.boolValue, true);
   }
 
   void test_getBool_undefined() {
     TestTypeProvider typeProvider = new TestTypeProvider();
     String variableName = "var";
     DeclaredVariables variables = new DeclaredVariables();
-    _assertUnknownDartObject(variables.getBool(typeProvider, variableName));
+    _assertUnknownDartObject(typeProvider.boolType,
+        variables.getBool(typeProvider, variableName));
   }
 
   void test_getInt_invalid() {
@@ -7181,7 +6982,8 @@
     TestTypeProvider typeProvider = new TestTypeProvider();
     String variableName = "var";
     DeclaredVariables variables = new DeclaredVariables();
-    _assertUnknownDartObject(variables.getInt(typeProvider, variableName));
+    _assertUnknownDartObject(typeProvider.intType,
+        variables.getInt(typeProvider, variableName));
   }
 
   void test_getInt_valid() {
@@ -7190,8 +6992,8 @@
     DeclaredVariables variables = new DeclaredVariables();
     variables.define(variableName, "23");
     DartObject object = variables.getInt(typeProvider, variableName);
-    JUnitTestCase.assertNotNull(object);
-    JUnitTestCase.assertEquals(23, object.intValue);
+    expect(object, isNotNull);
+    expect(object.intValue, 23);
   }
 
   void test_getString_defined() {
@@ -7201,43 +7003,45 @@
     DeclaredVariables variables = new DeclaredVariables();
     variables.define(variableName, value);
     DartObject object = variables.getString(typeProvider, variableName);
-    JUnitTestCase.assertNotNull(object);
-    JUnitTestCase.assertEquals(value, object.stringValue);
+    expect(object, isNotNull);
+    expect(object.stringValue, value);
   }
 
   void test_getString_undefined() {
     TestTypeProvider typeProvider = new TestTypeProvider();
     String variableName = "var";
     DeclaredVariables variables = new DeclaredVariables();
-    _assertUnknownDartObject(variables.getString(typeProvider, variableName));
+    _assertUnknownDartObject(typeProvider.stringType,
+        variables.getString(typeProvider, variableName));
   }
 
   void _assertNullDartObject(TestTypeProvider typeProvider, DartObject result) {
-    JUnitTestCase.assertEquals(typeProvider.nullType, result.type);
+    expect(result.type, typeProvider.nullType);
   }
 
-  void _assertUnknownDartObject(DartObject result) {
-    JUnitTestCase.assertTrue((result as DartObjectImpl).isUnknown);
+  void _assertUnknownDartObject(ParameterizedType expectedType,
+                                DartObject result) {
+    expect((result as DartObjectImpl).isUnknown, isTrue);
+    expect(result.type, expectedType);
   }
 }
 
 
-class DirectoryBasedDartSdkTest extends JUnitTestCase {
+class DirectoryBasedDartSdkTest {
   void fail_getDocFileFor() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile docFile = sdk.getDocFileFor("html");
-    JUnitTestCase.assertNotNull(docFile);
+    expect(docFile, isNotNull);
   }
 
   void test_creation() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
-    JUnitTestCase.assertNotNull(sdk);
+    expect(sdk, isNotNull);
   }
 
   void test_fromFile_invalid() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
-    JUnitTestCase.assertNull(
-        sdk.fromFileUri(new JavaFile("/not/in/the/sdk.dart").toURI()));
+    expect(sdk.fromFileUri(new JavaFile("/not/in/the/sdk.dart").toURI()), isNull);
   }
 
   void test_fromFile_library() {
@@ -7246,9 +7050,9 @@
         new JavaFile.relative(
             new JavaFile.relative(sdk.libraryDirectory, "core"),
             "core.dart").toURI());
-    JUnitTestCase.assertNotNull(source);
-    JUnitTestCase.assertTrue(source.isInSystemLibrary);
-    JUnitTestCase.assertEquals("dart:core", source.uri.toString());
+    expect(source, isNotNull);
+    expect(source.isInSystemLibrary, isTrue);
+    expect(source.uri.toString(), "dart:core");
   }
 
   void test_fromFile_part() {
@@ -7257,81 +7061,79 @@
         new JavaFile.relative(
             new JavaFile.relative(sdk.libraryDirectory, "core"),
             "num.dart").toURI());
-    JUnitTestCase.assertNotNull(source);
-    JUnitTestCase.assertTrue(source.isInSystemLibrary);
-    JUnitTestCase.assertEquals("dart:core/num.dart", source.uri.toString());
+    expect(source, isNotNull);
+    expect(source.isInSystemLibrary, isTrue);
+    expect(source.uri.toString(), "dart:core/num.dart");
   }
 
   void test_getDart2JsExecutable() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile executable = sdk.dart2JsExecutable;
-    JUnitTestCase.assertNotNull(executable);
-    JUnitTestCase.assertTrue(executable.exists());
-    JUnitTestCase.assertTrue(executable.isExecutable());
+    expect(executable, isNotNull);
+    expect(executable.exists(), isTrue);
+    expect(executable.isExecutable(), isTrue);
   }
 
   void test_getDartFmtExecutable() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile executable = sdk.dartFmtExecutable;
-    JUnitTestCase.assertNotNull(executable);
-    JUnitTestCase.assertTrue(executable.exists());
-    JUnitTestCase.assertTrue(executable.isExecutable());
+    expect(executable, isNotNull);
+    expect(executable.exists(), isTrue);
+    expect(executable.isExecutable(), isTrue);
   }
 
   void test_getDirectory() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile directory = sdk.directory;
-    JUnitTestCase.assertNotNull(directory);
-    JUnitTestCase.assertTrue(directory.exists());
+    expect(directory, isNotNull);
+    expect(directory.exists(), isTrue);
   }
 
   void test_getDocDirectory() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile directory = sdk.docDirectory;
-    JUnitTestCase.assertNotNull(directory);
+    expect(directory, isNotNull);
   }
 
   void test_getLibraryDirectory() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile directory = sdk.libraryDirectory;
-    JUnitTestCase.assertNotNull(directory);
-    JUnitTestCase.assertTrue(directory.exists());
+    expect(directory, isNotNull);
+    expect(directory.exists(), isTrue);
   }
 
   void test_getPubExecutable() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile executable = sdk.pubExecutable;
-    JUnitTestCase.assertNotNull(executable);
-    JUnitTestCase.assertTrue(executable.exists());
-    JUnitTestCase.assertTrue(executable.isExecutable());
+    expect(executable, isNotNull);
+    expect(executable.exists(), isTrue);
+    expect(executable.isExecutable(), isTrue);
   }
 
   void test_getSdkVersion() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     String version = sdk.sdkVersion;
-    JUnitTestCase.assertNotNull(version);
-    JUnitTestCase.assertTrue(version.length > 0);
+    expect(version, isNotNull);
+    expect(version.length > 0, isTrue);
   }
 
   void test_getVmExecutable() {
     DirectoryBasedDartSdk sdk = _createDartSdk();
     JavaFile executable = sdk.vmExecutable;
-    JUnitTestCase.assertNotNull(executable);
-    JUnitTestCase.assertTrue(executable.exists());
-    JUnitTestCase.assertTrue(executable.isExecutable());
+    expect(executable, isNotNull);
+    expect(executable.exists(), isTrue);
+    expect(executable.isExecutable(), isTrue);
   }
 
   DirectoryBasedDartSdk _createDartSdk() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNullMsg(
-        "No SDK configured; set the property 'com.google.dart.sdk' on the command line",
-        sdkDirectory);
+    expect(sdkDirectory, isNotNull, reason: "No SDK configured; set the property 'com.google.dart.sdk' on the command line");
     return new DirectoryBasedDartSdk(sdkDirectory);
   }
 }
 
 
-class DirectoryBasedSourceContainerTest extends JUnitTestCase {
+class DirectoryBasedSourceContainerTest {
   void test_contains() {
     JavaFile dir = FileUtilities2.createFile("/does/not/exist");
     JavaFile file1 = FileUtilities2.createFile("/does/not/exist/some.dart");
@@ -7343,9 +7145,9 @@
     FileBasedSource source3 = new FileBasedSource.con1(file3);
     DirectoryBasedSourceContainer container =
         new DirectoryBasedSourceContainer.con1(dir);
-    JUnitTestCase.assertTrue(container.contains(source1));
-    JUnitTestCase.assertTrue(container.contains(source2));
-    JUnitTestCase.assertFalse(container.contains(source3));
+    expect(container.contains(source1), isTrue);
+    expect(container.contains(source2), isTrue);
+    expect(container.contains(source3), isFalse);
   }
 }
 
@@ -7360,21 +7162,21 @@
         AstFactory.catchClause2(exceptionParameterName, stackParameterName, []);
     clause.accept(builder);
     List<LocalVariableElement> variables = holder.localVariables;
-    EngineTestCase.assertLength(2, variables);
+    expect(variables, hasLength(2));
     VariableElement exceptionVariable = variables[0];
-    JUnitTestCase.assertNotNull(exceptionVariable);
-    JUnitTestCase.assertEquals(exceptionParameterName, exceptionVariable.name);
-    JUnitTestCase.assertFalse(exceptionVariable.isSynthetic);
-    JUnitTestCase.assertFalse(exceptionVariable.isConst);
-    JUnitTestCase.assertFalse(exceptionVariable.isFinal);
-    JUnitTestCase.assertNull(exceptionVariable.initializer);
+    expect(exceptionVariable, isNotNull);
+    expect(exceptionVariable.name, exceptionParameterName);
+    expect(exceptionVariable.isSynthetic, isFalse);
+    expect(exceptionVariable.isConst, isFalse);
+    expect(exceptionVariable.isFinal, isFalse);
+    expect(exceptionVariable.initializer, isNull);
     VariableElement stackVariable = variables[1];
-    JUnitTestCase.assertNotNull(stackVariable);
-    JUnitTestCase.assertEquals(stackParameterName, stackVariable.name);
-    JUnitTestCase.assertFalse(stackVariable.isSynthetic);
-    JUnitTestCase.assertFalse(stackVariable.isConst);
-    JUnitTestCase.assertFalse(stackVariable.isFinal);
-    JUnitTestCase.assertNull(stackVariable.initializer);
+    expect(stackVariable, isNotNull);
+    expect(stackVariable.name, stackParameterName);
+    expect(stackVariable.isSynthetic, isFalse);
+    expect(stackVariable.isConst, isFalse);
+    expect(stackVariable.isFinal, isFalse);
+    expect(stackVariable.initializer, isNull);
   }
 
   void test_visitClassDeclaration_abstract() {
@@ -7391,14 +7193,14 @@
         []);
     classDeclaration.accept(builder);
     List<ClassElement> types = holder.types;
-    EngineTestCase.assertLength(1, types);
+    expect(types, hasLength(1));
     ClassElement type = types[0];
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals(className, type.name);
+    expect(type, isNotNull);
+    expect(type.name, className);
     List<TypeParameterElement> typeParameters = type.typeParameters;
-    EngineTestCase.assertLength(0, typeParameters);
-    JUnitTestCase.assertTrue(type.isAbstract);
-    JUnitTestCase.assertFalse(type.isSynthetic);
+    expect(typeParameters, hasLength(0));
+    expect(type.isAbstract, isTrue);
+    expect(type.isSynthetic, isFalse);
   }
 
   void test_visitClassDeclaration_minimal() {
@@ -7409,14 +7211,14 @@
         AstFactory.classDeclaration(null, className, null, null, null, null, []);
     classDeclaration.accept(builder);
     List<ClassElement> types = holder.types;
-    EngineTestCase.assertLength(1, types);
+    expect(types, hasLength(1));
     ClassElement type = types[0];
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals(className, type.name);
+    expect(type, isNotNull);
+    expect(type.name, className);
     List<TypeParameterElement> typeParameters = type.typeParameters;
-    EngineTestCase.assertLength(0, typeParameters);
-    JUnitTestCase.assertFalse(type.isAbstract);
-    JUnitTestCase.assertFalse(type.isSynthetic);
+    expect(typeParameters, hasLength(0));
+    expect(type.isAbstract, isFalse);
+    expect(type.isSynthetic, isFalse);
   }
 
   void test_visitClassDeclaration_parameterized() {
@@ -7435,16 +7237,16 @@
         []);
     classDeclaration.accept(builder);
     List<ClassElement> types = holder.types;
-    EngineTestCase.assertLength(1, types);
+    expect(types, hasLength(1));
     ClassElement type = types[0];
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals(className, type.name);
+    expect(type, isNotNull);
+    expect(type.name, className);
     List<TypeParameterElement> typeParameters = type.typeParameters;
-    EngineTestCase.assertLength(2, typeParameters);
-    JUnitTestCase.assertEquals(firstVariableName, typeParameters[0].name);
-    JUnitTestCase.assertEquals(secondVariableName, typeParameters[1].name);
-    JUnitTestCase.assertFalse(type.isAbstract);
-    JUnitTestCase.assertFalse(type.isSynthetic);
+    expect(typeParameters, hasLength(2));
+    expect(typeParameters[0].name, firstVariableName);
+    expect(typeParameters[1].name, secondVariableName);
+    expect(type.isAbstract, isFalse);
+    expect(type.isSynthetic, isFalse);
   }
 
   void test_visitClassDeclaration_withMembers() {
@@ -7476,27 +7278,27 @@
                 AstFactory.blockFunctionBody2([]))]);
     classDeclaration.accept(builder);
     List<ClassElement> types = holder.types;
-    EngineTestCase.assertLength(1, types);
+    expect(types, hasLength(1));
     ClassElement type = types[0];
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertEquals(className, type.name);
-    JUnitTestCase.assertFalse(type.isAbstract);
-    JUnitTestCase.assertFalse(type.isSynthetic);
+    expect(type, isNotNull);
+    expect(type.name, className);
+    expect(type.isAbstract, isFalse);
+    expect(type.isSynthetic, isFalse);
     List<TypeParameterElement> typeParameters = type.typeParameters;
-    EngineTestCase.assertLength(1, typeParameters);
+    expect(typeParameters, hasLength(1));
     TypeParameterElement typeParameter = typeParameters[0];
-    JUnitTestCase.assertNotNull(typeParameter);
-    JUnitTestCase.assertEquals(typeParameterName, typeParameter.name);
+    expect(typeParameter, isNotNull);
+    expect(typeParameter.name, typeParameterName);
     List<FieldElement> fields = type.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(fieldName, field.name);
+    expect(field, isNotNull);
+    expect(field.name, fieldName);
     List<MethodElement> methods = type.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
   }
 
   void test_visitConstructorDeclaration_factory() {
@@ -7514,15 +7316,15 @@
             AstFactory.blockFunctionBody2([]));
     constructorDeclaration.accept(builder);
     List<ConstructorElement> constructors = holder.constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     ConstructorElement constructor = constructors[0];
-    JUnitTestCase.assertNotNull(constructor);
-    JUnitTestCase.assertTrue(constructor.isFactory);
-    JUnitTestCase.assertEquals("", constructor.name);
-    EngineTestCase.assertLength(0, constructor.functions);
-    EngineTestCase.assertLength(0, constructor.labels);
-    EngineTestCase.assertLength(0, constructor.localVariables);
-    EngineTestCase.assertLength(0, constructor.parameters);
+    expect(constructor, isNotNull);
+    expect(constructor.isFactory, isTrue);
+    expect(constructor.name, "");
+    expect(constructor.functions, hasLength(0));
+    expect(constructor.labels, hasLength(0));
+    expect(constructor.localVariables, hasLength(0));
+    expect(constructor.parameters, hasLength(0));
   }
 
   void test_visitConstructorDeclaration_minimal() {
@@ -7540,15 +7342,15 @@
             AstFactory.blockFunctionBody2([]));
     constructorDeclaration.accept(builder);
     List<ConstructorElement> constructors = holder.constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     ConstructorElement constructor = constructors[0];
-    JUnitTestCase.assertNotNull(constructor);
-    JUnitTestCase.assertFalse(constructor.isFactory);
-    JUnitTestCase.assertEquals("", constructor.name);
-    EngineTestCase.assertLength(0, constructor.functions);
-    EngineTestCase.assertLength(0, constructor.labels);
-    EngineTestCase.assertLength(0, constructor.localVariables);
-    EngineTestCase.assertLength(0, constructor.parameters);
+    expect(constructor, isNotNull);
+    expect(constructor.isFactory, isFalse);
+    expect(constructor.name, "");
+    expect(constructor.functions, hasLength(0));
+    expect(constructor.labels, hasLength(0));
+    expect(constructor.localVariables, hasLength(0));
+    expect(constructor.parameters, hasLength(0));
   }
 
   void test_visitConstructorDeclaration_named() {
@@ -7567,19 +7369,17 @@
             AstFactory.blockFunctionBody2([]));
     constructorDeclaration.accept(builder);
     List<ConstructorElement> constructors = holder.constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     ConstructorElement constructor = constructors[0];
-    JUnitTestCase.assertNotNull(constructor);
-    JUnitTestCase.assertFalse(constructor.isFactory);
-    JUnitTestCase.assertEquals(constructorName, constructor.name);
-    EngineTestCase.assertLength(0, constructor.functions);
-    EngineTestCase.assertLength(0, constructor.labels);
-    EngineTestCase.assertLength(0, constructor.localVariables);
-    EngineTestCase.assertLength(0, constructor.parameters);
-    JUnitTestCase.assertSame(
-        constructor,
-        constructorDeclaration.name.staticElement);
-    JUnitTestCase.assertSame(constructor, constructorDeclaration.element);
+    expect(constructor, isNotNull);
+    expect(constructor.isFactory, isFalse);
+    expect(constructor.name, constructorName);
+    expect(constructor.functions, hasLength(0));
+    expect(constructor.labels, hasLength(0));
+    expect(constructor.localVariables, hasLength(0));
+    expect(constructor.parameters, hasLength(0));
+    expect(constructorDeclaration.name.staticElement, same(constructor));
+    expect(constructorDeclaration.element, same(constructor));
   }
 
   void test_visitConstructorDeclaration_unnamed() {
@@ -7597,16 +7397,16 @@
             AstFactory.blockFunctionBody2([]));
     constructorDeclaration.accept(builder);
     List<ConstructorElement> constructors = holder.constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     ConstructorElement constructor = constructors[0];
-    JUnitTestCase.assertNotNull(constructor);
-    JUnitTestCase.assertFalse(constructor.isFactory);
-    JUnitTestCase.assertEquals("", constructor.name);
-    EngineTestCase.assertLength(0, constructor.functions);
-    EngineTestCase.assertLength(0, constructor.labels);
-    EngineTestCase.assertLength(0, constructor.localVariables);
-    EngineTestCase.assertLength(0, constructor.parameters);
-    JUnitTestCase.assertSame(constructor, constructorDeclaration.element);
+    expect(constructor, isNotNull);
+    expect(constructor.isFactory, isFalse);
+    expect(constructor.name, "");
+    expect(constructor.functions, hasLength(0));
+    expect(constructor.labels, hasLength(0));
+    expect(constructor.localVariables, hasLength(0));
+    expect(constructor.parameters, hasLength(0));
+    expect(constructorDeclaration.element, same(constructor));
   }
 
   void test_visitEnumDeclaration() {
@@ -7617,10 +7417,10 @@
         AstFactory.enumDeclaration2(enumName, ["ONE"]);
     enumDeclaration.accept(builder);
     List<ClassElement> enums = holder.enums;
-    EngineTestCase.assertLength(1, enums);
+    expect(enums, hasLength(1));
     ClassElement enumElement = enums[0];
-    JUnitTestCase.assertNotNull(enumElement);
-    JUnitTestCase.assertEquals(enumName, enumElement.name);
+    expect(enumElement, isNotNull);
+    expect(enumElement.name, enumName);
   }
 
   void test_visitFieldDeclaration() {
@@ -7636,21 +7436,21 @@
             AstFactory.variableDeclaration(secondFieldName)]);
     fieldDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(2, fields);
+    expect(fields, hasLength(2));
     FieldElement firstField = fields[0];
-    JUnitTestCase.assertNotNull(firstField);
-    JUnitTestCase.assertEquals(firstFieldName, firstField.name);
-    JUnitTestCase.assertNull(firstField.initializer);
-    JUnitTestCase.assertFalse(firstField.isConst);
-    JUnitTestCase.assertFalse(firstField.isFinal);
-    JUnitTestCase.assertFalse(firstField.isSynthetic);
+    expect(firstField, isNotNull);
+    expect(firstField.name, firstFieldName);
+    expect(firstField.initializer, isNull);
+    expect(firstField.isConst, isFalse);
+    expect(firstField.isFinal, isFalse);
+    expect(firstField.isSynthetic, isFalse);
     FieldElement secondField = fields[1];
-    JUnitTestCase.assertNotNull(secondField);
-    JUnitTestCase.assertEquals(secondFieldName, secondField.name);
-    JUnitTestCase.assertNull(secondField.initializer);
-    JUnitTestCase.assertFalse(secondField.isConst);
-    JUnitTestCase.assertFalse(secondField.isFinal);
-    JUnitTestCase.assertFalse(secondField.isSynthetic);
+    expect(secondField, isNotNull);
+    expect(secondField.name, secondFieldName);
+    expect(secondField.initializer, isNull);
+    expect(secondField.isConst, isFalse);
+    expect(secondField.isFinal, isFalse);
+    expect(secondField.isSynthetic, isFalse);
   }
 
   void test_visitFieldFormalParameter() {
@@ -7661,16 +7461,16 @@
         AstFactory.fieldFormalParameter(null, null, parameterName);
     formalParameter.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     ParameterElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
-    JUnitTestCase.assertNull(parameter.initializer);
-    JUnitTestCase.assertFalse(parameter.isConst);
-    JUnitTestCase.assertFalse(parameter.isFinal);
-    JUnitTestCase.assertFalse(parameter.isSynthetic);
-    JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
-    EngineTestCase.assertLength(0, parameter.parameters);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
+    expect(parameter.initializer, isNull);
+    expect(parameter.isConst, isFalse);
+    expect(parameter.isFinal, isFalse);
+    expect(parameter.isSynthetic, isFalse);
+    expect(parameter.parameterKind, ParameterKind.REQUIRED);
+    expect(parameter.parameters, hasLength(0));
   }
 
   void test_visitFieldFormalParameter_funtionTyped() {
@@ -7684,16 +7484,16 @@
         AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("a")]));
     formalParameter.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     ParameterElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
-    JUnitTestCase.assertNull(parameter.initializer);
-    JUnitTestCase.assertFalse(parameter.isConst);
-    JUnitTestCase.assertFalse(parameter.isFinal);
-    JUnitTestCase.assertFalse(parameter.isSynthetic);
-    JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
-    EngineTestCase.assertLength(1, parameter.parameters);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
+    expect(parameter.initializer, isNull);
+    expect(parameter.isConst, isFalse);
+    expect(parameter.isFinal, isFalse);
+    expect(parameter.isSynthetic, isFalse);
+    expect(parameter.parameterKind, ParameterKind.REQUIRED);
+    expect(parameter.parameters, hasLength(1));
   }
 
   void test_visitFormalParameterList() {
@@ -7707,9 +7507,9 @@
             AstFactory.simpleFormalParameter3(secondParameterName)]);
     parameterList.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(2, parameters);
-    JUnitTestCase.assertEquals(firstParameterName, parameters[0].name);
-    JUnitTestCase.assertEquals(secondParameterName, parameters[1].name);
+    expect(parameters, hasLength(2));
+    expect(parameters[0].name, firstParameterName);
+    expect(parameters[1].name, secondParameterName);
   }
 
   void test_visitFunctionDeclaration_getter() {
@@ -7725,21 +7525,21 @@
             AstFactory.blockFunctionBody2([])));
     declaration.accept(builder);
     List<PropertyAccessorElement> accessors = holder.accessors;
-    EngineTestCase.assertLength(1, accessors);
+    expect(accessors, hasLength(1));
     PropertyAccessorElement accessor = accessors[0];
-    JUnitTestCase.assertNotNull(accessor);
-    JUnitTestCase.assertEquals(functionName, accessor.name);
-    JUnitTestCase.assertSame(accessor, declaration.element);
-    JUnitTestCase.assertSame(accessor, declaration.functionExpression.element);
-    JUnitTestCase.assertTrue(accessor.isGetter);
-    JUnitTestCase.assertFalse(accessor.isSetter);
-    JUnitTestCase.assertFalse(accessor.isSynthetic);
+    expect(accessor, isNotNull);
+    expect(accessor.name, functionName);
+    expect(declaration.element, same(accessor));
+    expect(declaration.functionExpression.element, same(accessor));
+    expect(accessor.isGetter, isTrue);
+    expect(accessor.isSetter, isFalse);
+    expect(accessor.isSynthetic, isFalse);
     PropertyInducingElement variable = accessor.variable;
     EngineTestCase.assertInstanceOf(
         (obj) => obj is TopLevelVariableElement,
         TopLevelVariableElement,
         variable);
-    JUnitTestCase.assertTrue(variable.isSynthetic);
+    expect(variable.isSynthetic, isTrue);
   }
 
   void test_visitFunctionDeclaration_plain() {
@@ -7755,13 +7555,13 @@
             AstFactory.blockFunctionBody2([])));
     declaration.accept(builder);
     List<FunctionElement> functions = holder.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     FunctionElement function = functions[0];
-    JUnitTestCase.assertNotNull(function);
-    JUnitTestCase.assertEquals(functionName, function.name);
-    JUnitTestCase.assertSame(function, declaration.element);
-    JUnitTestCase.assertSame(function, declaration.functionExpression.element);
-    JUnitTestCase.assertFalse(function.isSynthetic);
+    expect(function, isNotNull);
+    expect(function.name, functionName);
+    expect(declaration.element, same(function));
+    expect(declaration.functionExpression.element, same(function));
+    expect(function.isSynthetic, isFalse);
   }
 
   void test_visitFunctionDeclaration_setter() {
@@ -7777,21 +7577,21 @@
             AstFactory.blockFunctionBody2([])));
     declaration.accept(builder);
     List<PropertyAccessorElement> accessors = holder.accessors;
-    EngineTestCase.assertLength(1, accessors);
+    expect(accessors, hasLength(1));
     PropertyAccessorElement accessor = accessors[0];
-    JUnitTestCase.assertNotNull(accessor);
-    JUnitTestCase.assertEquals("${functionName}=", accessor.name);
-    JUnitTestCase.assertSame(accessor, declaration.element);
-    JUnitTestCase.assertSame(accessor, declaration.functionExpression.element);
-    JUnitTestCase.assertFalse(accessor.isGetter);
-    JUnitTestCase.assertTrue(accessor.isSetter);
-    JUnitTestCase.assertFalse(accessor.isSynthetic);
+    expect(accessor, isNotNull);
+    expect(accessor.name, "$functionName=");
+    expect(declaration.element, same(accessor));
+    expect(declaration.functionExpression.element, same(accessor));
+    expect(accessor.isGetter, isFalse);
+    expect(accessor.isSetter, isTrue);
+    expect(accessor.isSynthetic, isFalse);
     PropertyInducingElement variable = accessor.variable;
     EngineTestCase.assertInstanceOf(
         (obj) => obj is TopLevelVariableElement,
         TopLevelVariableElement,
         variable);
-    JUnitTestCase.assertTrue(variable.isSynthetic);
+    expect(variable.isSynthetic, isTrue);
   }
 
   void test_visitFunctionExpression() {
@@ -7802,11 +7602,11 @@
         AstFactory.blockFunctionBody2([]));
     expression.accept(builder);
     List<FunctionElement> functions = holder.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     FunctionElement function = functions[0];
-    JUnitTestCase.assertNotNull(function);
-    JUnitTestCase.assertSame(function, expression.element);
-    JUnitTestCase.assertFalse(function.isSynthetic);
+    expect(function, isNotNull);
+    expect(expression.element, same(function));
+    expect(function.isSynthetic, isFalse);
   }
 
   void test_visitFunctionTypeAlias() {
@@ -7821,16 +7621,16 @@
         null);
     aliasNode.accept(builder);
     List<FunctionTypeAliasElement> aliases = holder.typeAliases;
-    EngineTestCase.assertLength(1, aliases);
+    expect(aliases, hasLength(1));
     FunctionTypeAliasElement alias = aliases[0];
-    JUnitTestCase.assertNotNull(alias);
-    JUnitTestCase.assertEquals(aliasName, alias.name);
-    EngineTestCase.assertLength(0, alias.parameters);
+    expect(alias, isNotNull);
+    expect(alias.name, aliasName);
+    expect(alias.parameters, hasLength(0));
     List<TypeParameterElement> typeParameters = alias.typeParameters;
-    EngineTestCase.assertLength(1, typeParameters);
+    expect(typeParameters, hasLength(1));
     TypeParameterElement typeParameter = typeParameters[0];
-    JUnitTestCase.assertNotNull(typeParameter);
-    JUnitTestCase.assertEquals(parameterName, typeParameter.name);
+    expect(typeParameter, isNotNull);
+    expect(typeParameter.name, parameterName);
   }
 
   void test_visitFunctionTypedFormalParameter() {
@@ -7842,19 +7642,19 @@
     _useParameterInMethod(formalParameter, 100, 110);
     formalParameter.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     ParameterElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
-    JUnitTestCase.assertNull(parameter.initializer);
-    JUnitTestCase.assertFalse(parameter.isConst);
-    JUnitTestCase.assertFalse(parameter.isFinal);
-    JUnitTestCase.assertFalse(parameter.isSynthetic);
-    JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
+    expect(parameter.initializer, isNull);
+    expect(parameter.isConst, isFalse);
+    expect(parameter.isFinal, isFalse);
+    expect(parameter.isSynthetic, isFalse);
+    expect(parameter.parameterKind, ParameterKind.REQUIRED);
     {
       SourceRange visibleRange = parameter.visibleRange;
-      JUnitTestCase.assertEquals(visibleRange.offset, 100);
-      JUnitTestCase.assertEquals(visibleRange.end, 110);
+      expect(100, visibleRange.offset);
+      expect(110, visibleRange.end);
     }
   }
 
@@ -7867,11 +7667,11 @@
         AstFactory.breakStatement());
     statement.accept(builder);
     List<LabelElement> labels = holder.labels;
-    EngineTestCase.assertLength(1, labels);
+    expect(labels, hasLength(1));
     LabelElement label = labels[0];
-    JUnitTestCase.assertNotNull(label);
-    JUnitTestCase.assertEquals(labelName, label.name);
-    JUnitTestCase.assertFalse(label.isSynthetic);
+    expect(label, isNotNull);
+    expect(label.name, labelName);
+    expect(label.isSynthetic, isFalse);
   }
 
   void test_visitMethodDeclaration_abstract() {
@@ -7888,17 +7688,17 @@
         AstFactory.emptyFunctionBody());
     methodDeclaration.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
-    EngineTestCase.assertLength(0, method.functions);
-    EngineTestCase.assertLength(0, method.labels);
-    EngineTestCase.assertLength(0, method.localVariables);
-    EngineTestCase.assertLength(0, method.parameters);
-    JUnitTestCase.assertTrue(method.isAbstract);
-    JUnitTestCase.assertFalse(method.isStatic);
-    JUnitTestCase.assertFalse(method.isSynthetic);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
+    expect(method.functions, hasLength(0));
+    expect(method.labels, hasLength(0));
+    expect(method.localVariables, hasLength(0));
+    expect(method.parameters, hasLength(0));
+    expect(method.isAbstract, isTrue);
+    expect(method.isStatic, isFalse);
+    expect(method.isSynthetic, isFalse);
   }
 
   void test_visitMethodDeclaration_getter() {
@@ -7915,23 +7715,23 @@
         AstFactory.blockFunctionBody2([]));
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.setter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.setter, isNull);
     PropertyAccessorElement getter = field.getter;
-    JUnitTestCase.assertNotNull(getter);
-    JUnitTestCase.assertFalse(getter.isAbstract);
-    JUnitTestCase.assertTrue(getter.isGetter);
-    JUnitTestCase.assertFalse(getter.isSynthetic);
-    JUnitTestCase.assertEquals(methodName, getter.name);
-    JUnitTestCase.assertEquals(field, getter.variable);
-    EngineTestCase.assertLength(0, getter.functions);
-    EngineTestCase.assertLength(0, getter.labels);
-    EngineTestCase.assertLength(0, getter.localVariables);
-    EngineTestCase.assertLength(0, getter.parameters);
+    expect(getter, isNotNull);
+    expect(getter.isAbstract, isFalse);
+    expect(getter.isGetter, isTrue);
+    expect(getter.isSynthetic, isFalse);
+    expect(getter.name, methodName);
+    expect(getter.variable, field);
+    expect(getter.functions, hasLength(0));
+    expect(getter.labels, hasLength(0));
+    expect(getter.localVariables, hasLength(0));
+    expect(getter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_getter_abstract() {
@@ -7948,23 +7748,23 @@
         AstFactory.emptyFunctionBody());
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.setter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.setter, isNull);
     PropertyAccessorElement getter = field.getter;
-    JUnitTestCase.assertNotNull(getter);
-    JUnitTestCase.assertTrue(getter.isAbstract);
-    JUnitTestCase.assertTrue(getter.isGetter);
-    JUnitTestCase.assertFalse(getter.isSynthetic);
-    JUnitTestCase.assertEquals(methodName, getter.name);
-    JUnitTestCase.assertEquals(field, getter.variable);
-    EngineTestCase.assertLength(0, getter.functions);
-    EngineTestCase.assertLength(0, getter.labels);
-    EngineTestCase.assertLength(0, getter.localVariables);
-    EngineTestCase.assertLength(0, getter.parameters);
+    expect(getter, isNotNull);
+    expect(getter.isAbstract, isTrue);
+    expect(getter.isGetter, isTrue);
+    expect(getter.isSynthetic, isFalse);
+    expect(getter.name, methodName);
+    expect(getter.variable, field);
+    expect(getter.functions, hasLength(0));
+    expect(getter.labels, hasLength(0));
+    expect(getter.localVariables, hasLength(0));
+    expect(getter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_getter_external() {
@@ -7980,23 +7780,23 @@
         AstFactory.formalParameterList([]));
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.setter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.setter, isNull);
     PropertyAccessorElement getter = field.getter;
-    JUnitTestCase.assertNotNull(getter);
-    JUnitTestCase.assertFalse(getter.isAbstract);
-    JUnitTestCase.assertTrue(getter.isGetter);
-    JUnitTestCase.assertFalse(getter.isSynthetic);
-    JUnitTestCase.assertEquals(methodName, getter.name);
-    JUnitTestCase.assertEquals(field, getter.variable);
-    EngineTestCase.assertLength(0, getter.functions);
-    EngineTestCase.assertLength(0, getter.labels);
-    EngineTestCase.assertLength(0, getter.localVariables);
-    EngineTestCase.assertLength(0, getter.parameters);
+    expect(getter, isNotNull);
+    expect(getter.isAbstract, isFalse);
+    expect(getter.isGetter, isTrue);
+    expect(getter.isSynthetic, isFalse);
+    expect(getter.name, methodName);
+    expect(getter.variable, field);
+    expect(getter.functions, hasLength(0));
+    expect(getter.labels, hasLength(0));
+    expect(getter.localVariables, hasLength(0));
+    expect(getter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_minimal() {
@@ -8013,17 +7813,17 @@
         AstFactory.blockFunctionBody2([]));
     methodDeclaration.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
-    EngineTestCase.assertLength(0, method.functions);
-    EngineTestCase.assertLength(0, method.labels);
-    EngineTestCase.assertLength(0, method.localVariables);
-    EngineTestCase.assertLength(0, method.parameters);
-    JUnitTestCase.assertFalse(method.isAbstract);
-    JUnitTestCase.assertFalse(method.isStatic);
-    JUnitTestCase.assertFalse(method.isSynthetic);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
+    expect(method.functions, hasLength(0));
+    expect(method.labels, hasLength(0));
+    expect(method.localVariables, hasLength(0));
+    expect(method.parameters, hasLength(0));
+    expect(method.isAbstract, isFalse);
+    expect(method.isStatic, isFalse);
+    expect(method.isSynthetic, isFalse);
   }
 
   void test_visitMethodDeclaration_operator() {
@@ -8040,17 +7840,17 @@
         AstFactory.blockFunctionBody2([]));
     methodDeclaration.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
-    EngineTestCase.assertLength(0, method.functions);
-    EngineTestCase.assertLength(0, method.labels);
-    EngineTestCase.assertLength(0, method.localVariables);
-    EngineTestCase.assertLength(1, method.parameters);
-    JUnitTestCase.assertFalse(method.isAbstract);
-    JUnitTestCase.assertFalse(method.isStatic);
-    JUnitTestCase.assertFalse(method.isSynthetic);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
+    expect(method.functions, hasLength(0));
+    expect(method.labels, hasLength(0));
+    expect(method.localVariables, hasLength(0));
+    expect(method.parameters, hasLength(1));
+    expect(method.isAbstract, isFalse);
+    expect(method.isStatic, isFalse);
+    expect(method.isSynthetic, isFalse);
   }
 
   void test_visitMethodDeclaration_setter() {
@@ -8067,24 +7867,24 @@
         AstFactory.blockFunctionBody2([]));
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.getter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.getter, isNull);
     PropertyAccessorElement setter = field.setter;
-    JUnitTestCase.assertNotNull(setter);
-    JUnitTestCase.assertFalse(setter.isAbstract);
-    JUnitTestCase.assertTrue(setter.isSetter);
-    JUnitTestCase.assertFalse(setter.isSynthetic);
-    JUnitTestCase.assertEquals("${methodName}=", setter.name);
-    JUnitTestCase.assertEquals(methodName, setter.displayName);
-    JUnitTestCase.assertEquals(field, setter.variable);
-    EngineTestCase.assertLength(0, setter.functions);
-    EngineTestCase.assertLength(0, setter.labels);
-    EngineTestCase.assertLength(0, setter.localVariables);
-    EngineTestCase.assertLength(0, setter.parameters);
+    expect(setter, isNotNull);
+    expect(setter.isAbstract, isFalse);
+    expect(setter.isSetter, isTrue);
+    expect(setter.isSynthetic, isFalse);
+    expect(setter.name, "$methodName=");
+    expect(setter.displayName, methodName);
+    expect(setter.variable, field);
+    expect(setter.functions, hasLength(0));
+    expect(setter.labels, hasLength(0));
+    expect(setter.localVariables, hasLength(0));
+    expect(setter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_setter_abstract() {
@@ -8101,24 +7901,24 @@
         AstFactory.emptyFunctionBody());
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.getter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.getter, isNull);
     PropertyAccessorElement setter = field.setter;
-    JUnitTestCase.assertNotNull(setter);
-    JUnitTestCase.assertTrue(setter.isAbstract);
-    JUnitTestCase.assertTrue(setter.isSetter);
-    JUnitTestCase.assertFalse(setter.isSynthetic);
-    JUnitTestCase.assertEquals("${methodName}=", setter.name);
-    JUnitTestCase.assertEquals(methodName, setter.displayName);
-    JUnitTestCase.assertEquals(field, setter.variable);
-    EngineTestCase.assertLength(0, setter.functions);
-    EngineTestCase.assertLength(0, setter.labels);
-    EngineTestCase.assertLength(0, setter.localVariables);
-    EngineTestCase.assertLength(0, setter.parameters);
+    expect(setter, isNotNull);
+    expect(setter.isAbstract, isTrue);
+    expect(setter.isSetter, isTrue);
+    expect(setter.isSynthetic, isFalse);
+    expect(setter.name, "$methodName=");
+    expect(setter.displayName, methodName);
+    expect(setter.variable, field);
+    expect(setter.functions, hasLength(0));
+    expect(setter.labels, hasLength(0));
+    expect(setter.localVariables, hasLength(0));
+    expect(setter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_setter_external() {
@@ -8134,24 +7934,24 @@
         AstFactory.formalParameterList([]));
     methodDeclaration.accept(builder);
     List<FieldElement> fields = holder.fields;
-    EngineTestCase.assertLength(1, fields);
+    expect(fields, hasLength(1));
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals(methodName, field.name);
-    JUnitTestCase.assertTrue(field.isSynthetic);
-    JUnitTestCase.assertNull(field.getter);
+    expect(field, isNotNull);
+    expect(field.name, methodName);
+    expect(field.isSynthetic, isTrue);
+    expect(field.getter, isNull);
     PropertyAccessorElement setter = field.setter;
-    JUnitTestCase.assertNotNull(setter);
-    JUnitTestCase.assertFalse(setter.isAbstract);
-    JUnitTestCase.assertTrue(setter.isSetter);
-    JUnitTestCase.assertFalse(setter.isSynthetic);
-    JUnitTestCase.assertEquals("${methodName}=", setter.name);
-    JUnitTestCase.assertEquals(methodName, setter.displayName);
-    JUnitTestCase.assertEquals(field, setter.variable);
-    EngineTestCase.assertLength(0, setter.functions);
-    EngineTestCase.assertLength(0, setter.labels);
-    EngineTestCase.assertLength(0, setter.localVariables);
-    EngineTestCase.assertLength(0, setter.parameters);
+    expect(setter, isNotNull);
+    expect(setter.isAbstract, isFalse);
+    expect(setter.isSetter, isTrue);
+    expect(setter.isSynthetic, isFalse);
+    expect(setter.name, "$methodName=");
+    expect(setter.displayName, methodName);
+    expect(setter.variable, field);
+    expect(setter.functions, hasLength(0));
+    expect(setter.labels, hasLength(0));
+    expect(setter.localVariables, hasLength(0));
+    expect(setter.parameters, hasLength(0));
   }
 
   void test_visitMethodDeclaration_static() {
@@ -8168,17 +7968,17 @@
         AstFactory.blockFunctionBody2([]));
     methodDeclaration.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
-    EngineTestCase.assertLength(0, method.functions);
-    EngineTestCase.assertLength(0, method.labels);
-    EngineTestCase.assertLength(0, method.localVariables);
-    EngineTestCase.assertLength(0, method.parameters);
-    JUnitTestCase.assertFalse(method.isAbstract);
-    JUnitTestCase.assertTrue(method.isStatic);
-    JUnitTestCase.assertFalse(method.isSynthetic);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
+    expect(method.functions, hasLength(0));
+    expect(method.labels, hasLength(0));
+    expect(method.localVariables, hasLength(0));
+    expect(method.parameters, hasLength(0));
+    expect(method.isAbstract, isFalse);
+    expect(method.isStatic, isTrue);
+    expect(method.isSynthetic, isFalse);
   }
 
   void test_visitMethodDeclaration_withMembers() {
@@ -8211,34 +8011,33 @@
                     [AstFactory.catchClause(exceptionParameterName, [])])]));
     methodDeclaration.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     MethodElement method = methods[0];
-    JUnitTestCase.assertNotNull(method);
-    JUnitTestCase.assertEquals(methodName, method.name);
-    JUnitTestCase.assertFalse(method.isAbstract);
-    JUnitTestCase.assertFalse(method.isStatic);
-    JUnitTestCase.assertFalse(method.isSynthetic);
+    expect(method, isNotNull);
+    expect(method.name, methodName);
+    expect(method.isAbstract, isFalse);
+    expect(method.isStatic, isFalse);
+    expect(method.isSynthetic, isFalse);
     List<VariableElement> parameters = method.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     VariableElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
     List<VariableElement> localVariables = method.localVariables;
-    EngineTestCase.assertLength(2, localVariables);
+    expect(localVariables, hasLength(2));
     VariableElement firstVariable = localVariables[0];
     VariableElement secondVariable = localVariables[1];
-    JUnitTestCase.assertNotNull(firstVariable);
-    JUnitTestCase.assertNotNull(secondVariable);
-    JUnitTestCase.assertTrue(
-        (firstVariable.name == localVariableName &&
+    expect(firstVariable, isNotNull);
+    expect(secondVariable, isNotNull);
+    expect((firstVariable.name == localVariableName &&
             secondVariable.name == exceptionParameterName) ||
             (firstVariable.name == exceptionParameterName &&
-                secondVariable.name == localVariableName));
+                secondVariable.name == localVariableName), isTrue);
     List<LabelElement> labels = method.labels;
-    EngineTestCase.assertLength(1, labels);
+    expect(labels, hasLength(1));
     LabelElement label = labels[0];
-    JUnitTestCase.assertNotNull(label);
-    JUnitTestCase.assertEquals(labelName, label.name);
+    expect(label, isNotNull);
+    expect(label.name, labelName);
   }
 
   void test_visitNamedFormalParameter() {
@@ -8251,23 +8050,23 @@
     _useParameterInMethod(formalParameter, 100, 110);
     formalParameter.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     ParameterElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
-    JUnitTestCase.assertFalse(parameter.isConst);
-    JUnitTestCase.assertFalse(parameter.isFinal);
-    JUnitTestCase.assertFalse(parameter.isSynthetic);
-    JUnitTestCase.assertEquals(ParameterKind.NAMED, parameter.parameterKind);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
+    expect(parameter.isConst, isFalse);
+    expect(parameter.isFinal, isFalse);
+    expect(parameter.isSynthetic, isFalse);
+    expect(parameter.parameterKind, ParameterKind.NAMED);
     {
       SourceRange visibleRange = parameter.visibleRange;
-      JUnitTestCase.assertEquals(visibleRange.offset, 100);
-      JUnitTestCase.assertEquals(visibleRange.end, 110);
+      expect(100, visibleRange.offset);
+      expect(110, visibleRange.end);
     }
-    JUnitTestCase.assertEquals("42", parameter.defaultValueCode);
+    expect(parameter.defaultValueCode, "42");
     FunctionElement initializer = parameter.initializer;
-    JUnitTestCase.assertNotNull(initializer);
-    JUnitTestCase.assertTrue(initializer.isSynthetic);
+    expect(initializer, isNotNull);
+    expect(initializer.isSynthetic, isTrue);
   }
 
   void test_visitSimpleFormalParameter() {
@@ -8279,19 +8078,19 @@
     _useParameterInMethod(formalParameter, 100, 110);
     formalParameter.accept(builder);
     List<ParameterElement> parameters = holder.parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     ParameterElement parameter = parameters[0];
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals(parameterName, parameter.name);
-    JUnitTestCase.assertNull(parameter.initializer);
-    JUnitTestCase.assertFalse(parameter.isConst);
-    JUnitTestCase.assertFalse(parameter.isFinal);
-    JUnitTestCase.assertFalse(parameter.isSynthetic);
-    JUnitTestCase.assertEquals(ParameterKind.REQUIRED, parameter.parameterKind);
+    expect(parameter, isNotNull);
+    expect(parameter.name, parameterName);
+    expect(parameter.initializer, isNull);
+    expect(parameter.isConst, isFalse);
+    expect(parameter.isFinal, isFalse);
+    expect(parameter.isSynthetic, isFalse);
+    expect(parameter.parameterKind, ParameterKind.REQUIRED);
     {
       SourceRange visibleRange = parameter.visibleRange;
-      JUnitTestCase.assertEquals(visibleRange.offset, 100);
-      JUnitTestCase.assertEquals(visibleRange.end, 110);
+      expect(100, visibleRange.offset);
+      expect(110, visibleRange.end);
     }
   }
 
@@ -8302,12 +8101,12 @@
     TypeAlias typeAlias = AstFactory.typeAlias(null, aliasName, null, null);
     typeAlias.accept(builder);
     List<FunctionTypeAliasElement> aliases = holder.typeAliases;
-    EngineTestCase.assertLength(1, aliases);
+    expect(aliases, hasLength(1));
     FunctionTypeAliasElement alias = aliases[0];
-    JUnitTestCase.assertNotNull(alias);
-    JUnitTestCase.assertEquals(aliasName, alias.name);
-    JUnitTestCase.assertNotNull(alias.type);
-    JUnitTestCase.assertFalse(alias.isSynthetic);
+    expect(alias, isNotNull);
+    expect(alias.name, aliasName);
+    expect(alias.type, isNotNull);
+    expect(alias.isSynthetic, isFalse);
   }
 
   void test_visitTypeAlias_withFormalParameters() {
@@ -8326,19 +8125,19 @@
                 AstFactory.simpleFormalParameter3(secondParameterName)]));
     typeAlias.accept(builder);
     List<FunctionTypeAliasElement> aliases = holder.typeAliases;
-    EngineTestCase.assertLength(1, aliases);
+    expect(aliases, hasLength(1));
     FunctionTypeAliasElement alias = aliases[0];
-    JUnitTestCase.assertNotNull(alias);
-    JUnitTestCase.assertEquals(aliasName, alias.name);
-    JUnitTestCase.assertNotNull(alias.type);
-    JUnitTestCase.assertFalse(alias.isSynthetic);
+    expect(alias, isNotNull);
+    expect(alias.name, aliasName);
+    expect(alias.type, isNotNull);
+    expect(alias.isSynthetic, isFalse);
     List<VariableElement> parameters = alias.parameters;
-    EngineTestCase.assertLength(2, parameters);
-    JUnitTestCase.assertEquals(firstParameterName, parameters[0].name);
-    JUnitTestCase.assertEquals(secondParameterName, parameters[1].name);
+    expect(parameters, hasLength(2));
+    expect(parameters[0].name, firstParameterName);
+    expect(parameters[1].name, secondParameterName);
     List<TypeParameterElement> typeParameters = alias.typeParameters;
-    JUnitTestCase.assertNotNull(typeParameters);
-    EngineTestCase.assertLength(0, typeParameters);
+    expect(typeParameters, isNotNull);
+    expect(typeParameters, hasLength(0));
   }
 
   void test_visitTypeAlias_withTypeParameters() {
@@ -8354,19 +8153,19 @@
         AstFactory.formalParameterList([]));
     typeAlias.accept(builder);
     List<FunctionTypeAliasElement> aliases = holder.typeAliases;
-    EngineTestCase.assertLength(1, aliases);
+    expect(aliases, hasLength(1));
     FunctionTypeAliasElement alias = aliases[0];
-    JUnitTestCase.assertNotNull(alias);
-    JUnitTestCase.assertEquals(aliasName, alias.name);
-    JUnitTestCase.assertNotNull(alias.type);
-    JUnitTestCase.assertFalse(alias.isSynthetic);
+    expect(alias, isNotNull);
+    expect(alias.name, aliasName);
+    expect(alias.type, isNotNull);
+    expect(alias.isSynthetic, isFalse);
     List<VariableElement> parameters = alias.parameters;
-    JUnitTestCase.assertNotNull(parameters);
-    EngineTestCase.assertLength(0, parameters);
+    expect(parameters, isNotNull);
+    expect(parameters, hasLength(0));
     List<TypeParameterElement> typeParameters = alias.typeParameters;
-    EngineTestCase.assertLength(2, typeParameters);
-    JUnitTestCase.assertEquals(firstTypeParameterName, typeParameters[0].name);
-    JUnitTestCase.assertEquals(secondTypeParameterName, typeParameters[1].name);
+    expect(typeParameters, hasLength(2));
+    expect(typeParameters[0].name, firstTypeParameterName);
+    expect(typeParameters[1].name, secondTypeParameterName);
   }
 
   void test_visitTypeParameter() {
@@ -8376,12 +8175,12 @@
     TypeParameter typeParameter = AstFactory.typeParameter(parameterName);
     typeParameter.accept(builder);
     List<TypeParameterElement> typeParameters = holder.typeParameters;
-    EngineTestCase.assertLength(1, typeParameters);
+    expect(typeParameters, hasLength(1));
     TypeParameterElement typeParameterElement = typeParameters[0];
-    JUnitTestCase.assertNotNull(typeParameterElement);
-    JUnitTestCase.assertEquals(parameterName, typeParameterElement.name);
-    JUnitTestCase.assertNull(typeParameterElement.bound);
-    JUnitTestCase.assertFalse(typeParameterElement.isSynthetic);
+    expect(typeParameterElement, isNotNull);
+    expect(typeParameterElement.name, parameterName);
+    expect(typeParameterElement.bound, isNull);
+    expect(typeParameterElement.isSynthetic, isFalse);
   }
 
   void test_visitVariableDeclaration_inConstructor() {
@@ -8405,12 +8204,12 @@
         AstFactory.blockFunctionBody2([statement]));
     constructor.accept(builder);
     List<ConstructorElement> constructors = holder.constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     List<LocalVariableElement> variableElements =
         constructors[0].localVariables;
-    EngineTestCase.assertLength(1, variableElements);
+    expect(variableElements, hasLength(1));
     LocalVariableElement variableElement = variableElements[0];
-    JUnitTestCase.assertEquals(variableName, variableElement.name);
+    expect(variableElement.name, variableName);
   }
 
   void test_visitVariableDeclaration_inMethod() {
@@ -8434,11 +8233,11 @@
         AstFactory.blockFunctionBody2([statement]));
     constructor.accept(builder);
     List<MethodElement> methods = holder.methods;
-    EngineTestCase.assertLength(1, methods);
+    expect(methods, hasLength(1));
     List<LocalVariableElement> variableElements = methods[0].localVariables;
-    EngineTestCase.assertLength(1, variableElements);
+    expect(variableElements, hasLength(1));
     LocalVariableElement variableElement = variableElements[0];
-    JUnitTestCase.assertEquals(variableName, variableElement.name);
+    expect(variableElement.name, variableName);
   }
 
   void test_visitVariableDeclaration_localNestedInField() {
@@ -8462,21 +8261,21 @@
         AstFactory.fieldDeclaration2(false, null, [field]);
     fieldDeclaration.accept(builder);
     List<FieldElement> variables = holder.fields;
-    EngineTestCase.assertLength(1, variables);
+    expect(variables, hasLength(1));
     FieldElement fieldElement = variables[0];
-    JUnitTestCase.assertNotNull(fieldElement);
+    expect(fieldElement, isNotNull);
     FunctionElement initializerElement = fieldElement.initializer;
-    JUnitTestCase.assertNotNull(initializerElement);
+    expect(initializerElement, isNotNull);
     List<FunctionElement> functionElements = initializerElement.functions;
-    EngineTestCase.assertLength(1, functionElements);
+    expect(functionElements, hasLength(1));
     List<LocalVariableElement> variableElements =
         functionElements[0].localVariables;
-    EngineTestCase.assertLength(1, variableElements);
+    expect(variableElements, hasLength(1));
     LocalVariableElement variableElement = variableElements[0];
-    JUnitTestCase.assertEquals(variableName, variableElement.name);
-    JUnitTestCase.assertFalse(variableElement.isConst);
-    JUnitTestCase.assertFalse(variableElement.isFinal);
-    JUnitTestCase.assertFalse(variableElement.isSynthetic);
+    expect(variableElement.name, variableName);
+    expect(variableElement.isConst, isFalse);
+    expect(variableElement.isFinal, isFalse);
+    expect(variableElement.isSynthetic, isFalse);
   }
 
   void test_visitVariableDeclaration_noInitializer() {
@@ -8488,16 +8287,16 @@
     AstFactory.variableDeclarationList2(null, [variableDeclaration]);
     variableDeclaration.accept(builder);
     List<TopLevelVariableElement> variables = holder.topLevelVariables;
-    EngineTestCase.assertLength(1, variables);
+    expect(variables, hasLength(1));
     TopLevelVariableElement variable = variables[0];
-    JUnitTestCase.assertNotNull(variable);
-    JUnitTestCase.assertNull(variable.initializer);
-    JUnitTestCase.assertEquals(variableName, variable.name);
-    JUnitTestCase.assertFalse(variable.isConst);
-    JUnitTestCase.assertFalse(variable.isFinal);
-    JUnitTestCase.assertFalse(variable.isSynthetic);
-    JUnitTestCase.assertNotNull(variable.getter);
-    JUnitTestCase.assertNotNull(variable.setter);
+    expect(variable, isNotNull);
+    expect(variable.initializer, isNull);
+    expect(variable.name, variableName);
+    expect(variable.isConst, isFalse);
+    expect(variable.isFinal, isFalse);
+    expect(variable.isSynthetic, isFalse);
+    expect(variable.getter, isNotNull);
+    expect(variable.setter, isNotNull);
   }
 
   void _useParameterInMethod(FormalParameter formalParameter, int blockOffset,
@@ -8520,7 +8319,7 @@
 
 class ElementLocatorTest extends ResolverTestCase {
   void fail_locate_ExportDirective() {
-    AstNode id = _findNodeIn("export", ["export 'dart:core';"]);
+    AstNode id = _findNodeIn("export", "export 'dart:core';");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ImportElement,
@@ -8529,7 +8328,7 @@
   }
 
   void fail_locate_Identifier_libraryDirective() {
-    AstNode id = _findNodeIn("foo", ["library foo.bar;"]);
+    AstNode id = _findNodeIn("foo", "library foo.bar;");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is LibraryElement,
@@ -8542,7 +8341,7 @@
     //    AstNode id = findNodeIn("foo", "part of foo.bar;");
     //    Element element = ElementLocator.locate(id);
     //    assertInstanceOf(LibraryElement.class, element);
-    JUnitTestCase.fail("Test this case");
+    fail("Test this case");
   }
 
   @override
@@ -8553,7 +8352,7 @@
   }
 
   void test_locateWithOffset_BinaryExpression() {
-    AstNode id = _findNodeIn("+", ["var x = 3 + 4;"]);
+    AstNode id = _findNodeIn("+", "var x = 3 + 4;");
     Element element = ElementLocator.locateWithOffset(id, 0);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8562,14 +8361,18 @@
   }
 
   void test_locateWithOffset_StringLiteral() {
-    AstNode id = _findNodeIn("abc", ["var x = 'abc';"]);
+    AstNode id = _findNodeIn("abc", "var x = 'abc';");
     Element element = ElementLocator.locateWithOffset(id, 1);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_locate_AssignmentExpression() {
     AstNode id =
-        _findNodeIn("+=", ["int x = 0;", "void main() {", "  x += 1;", "}"]);
+        _findNodeIn("+=", r'''
+int x = 0;
+void main() {
+  x += 1;
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8578,7 +8381,7 @@
   }
 
   void test_locate_BinaryExpression() {
-    AstNode id = _findNodeIn("+", ["var x = 3 + 4;"]);
+    AstNode id = _findNodeIn("+", "var x = 3 + 4;");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8587,7 +8390,7 @@
   }
 
   void test_locate_ClassDeclaration() {
-    AstNode id = _findNodeIn("class", ["class A { }"]);
+    AstNode id = _findNodeIn("class", "class A { }");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ClassElement,
@@ -8596,15 +8399,18 @@
   }
 
   void test_locate_CompilationUnit() {
-    CompilationUnit cu = _resolveContents(["// only comment"]);
-    JUnitTestCase.assertNotNull(cu.element);
+    CompilationUnit cu = _resolveContents("// only comment");
+    expect(cu.element, isNotNull);
     Element element = ElementLocator.locate(cu);
-    JUnitTestCase.assertSame(cu.element, element);
+    expect(element, same(cu.element));
   }
 
   void test_locate_ConstructorDeclaration() {
     AstNode id =
-        _findNodeIndexedIn("bar", 0, ["class A {", "  A.bar() {}", "}"]);
+        _findNodeIndexedIn("bar", 0, r'''
+class A {
+  A.bar() {}
+}''');
     ConstructorDeclaration declaration =
         id.getAncestor((node) => node is ConstructorDeclaration);
     Element element = ElementLocator.locate(declaration);
@@ -8615,7 +8421,7 @@
   }
 
   void test_locate_FunctionDeclaration() {
-    AstNode id = _findNodeIn("f", ["int f() => 3;"]);
+    AstNode id = _findNodeIn("f", "int f() => 3;");
     FunctionDeclaration declaration =
         id.getAncestor((node) => node is FunctionDeclaration);
     Element element = ElementLocator.locate(declaration);
@@ -8630,12 +8436,12 @@
     AstNode id = _findNodeIndexedIn(
         "Class",
         2,
-        [
-            "class Class {",
-            "  const Class.name();",
-            "}",
-            "void main(@Class.name() parameter) {",
-            "}"]);
+        r'''
+class Class {
+  const Class.name();
+}
+void main(@Class.name() parameter) {
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ClassElement,
@@ -8648,12 +8454,12 @@
     AstNode id = _findNodeIndexedIn(
         "Class",
         2,
-        [
-            "class Class {",
-            "  const Class();",
-            "}",
-            "void main(@Class() parameter) {",
-            "}"]);
+        r'''
+class Class {
+  const Class();
+}
+void main(@Class() parameter) {
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ConstructorElement,
@@ -8662,7 +8468,7 @@
   }
 
   void test_locate_Identifier_className() {
-    AstNode id = _findNodeIn("A", ["class A { }"]);
+    AstNode id = _findNodeIn("A", "class A { }");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ClassElement,
@@ -8672,7 +8478,10 @@
 
   void test_locate_Identifier_constructor_named() {
     AstNode id =
-        _findNodeIndexedIn("bar", 0, ["class A {", "  A.bar() {}", "}"]);
+        _findNodeIndexedIn("bar", 0, r'''
+class A {
+  A.bar() {}
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ConstructorElement,
@@ -8681,7 +8490,10 @@
   }
 
   void test_locate_Identifier_constructor_unnamed() {
-    AstNode id = _findNodeIndexedIn("A", 1, ["class A {", "  A() {}", "}"]);
+    AstNode id = _findNodeIndexedIn("A", 1, r'''
+class A {
+  A() {}
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ConstructorElement,
@@ -8690,7 +8502,7 @@
   }
 
   void test_locate_Identifier_fieldName() {
-    AstNode id = _findNodeIn("x", ["class A { var x; }"]);
+    AstNode id = _findNodeIn("x", "class A { var x; }");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is FieldElement,
@@ -8700,7 +8512,10 @@
 
   void test_locate_Identifier_propertAccess() {
     AstNode id =
-        _findNodeIn("length", ["void main() {", " int x = 'foo'.length;", "}"]);
+        _findNodeIn("length", r'''
+void main() {
+ int x = 'foo'.length;
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is PropertyAccessorElement,
@@ -8709,7 +8524,7 @@
   }
 
   void test_locate_ImportDirective() {
-    AstNode id = _findNodeIn("import", ["import 'dart:core';"]);
+    AstNode id = _findNodeIn("import", "import 'dart:core';");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ImportElement,
@@ -8721,7 +8536,11 @@
     AstNode id = _findNodeIndexedIn(
         "\\[",
         1,
-        ["void main() {", "  List x = [1, 2];", "  var y = x[0];", "}"]);
+        r'''
+void main() {
+  List x = [1, 2];
+  var y = x[0];
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8731,7 +8550,11 @@
 
   void test_locate_InstanceCreationExpression() {
     AstNode node =
-        _findNodeIndexedIn("A(", 0, ["class A {}", "void main() {", " new A();", "}"]);
+        _findNodeIndexedIn("A(", 0, r'''
+class A {}
+void main() {
+ new A();
+}''');
     Element element = ElementLocator.locate(node);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ConstructorElement,
@@ -8758,7 +8581,7 @@
     creation.constructorName.staticElement = constructorElement;
     // verify that "A" is resolved to ConstructorElement
     Element element = ElementLocator.locate(identifier);
-    JUnitTestCase.assertSame(classElement, element);
+    expect(element, same(classElement));
   }
 
   void test_locate_InstanceCreationExpression_type_simpleIdentifier() {
@@ -8778,11 +8601,11 @@
     creation.constructorName.staticElement = constructorElement;
     // verify that "A" is resolved to ConstructorElement
     Element element = ElementLocator.locate(identifier);
-    JUnitTestCase.assertSame(classElement, element);
+    expect(element, same(classElement));
   }
 
   void test_locate_LibraryDirective() {
-    AstNode id = _findNodeIn("library", ["library foo;"]);
+    AstNode id = _findNodeIn("library", "library foo;");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is LibraryElement,
@@ -8791,7 +8614,10 @@
   }
 
   void test_locate_MethodDeclaration() {
-    AstNode id = _findNodeIn("m", ["class A {", "  void m() {}", "}"]);
+    AstNode id = _findNodeIn("m", r'''
+class A {
+  void m() {}
+}''');
     MethodDeclaration declaration =
         id.getAncestor((node) => node is MethodDeclaration);
     Element element = ElementLocator.locate(declaration);
@@ -8805,13 +8631,13 @@
     AstNode id = _findNodeIndexedIn(
         "bar",
         1,
-        [
-            "class A {",
-            "  int bar() => 42;",
-            "}",
-            "void main() {",
-            " var f = new A().bar();",
-            "}"]);
+        r'''
+class A {
+  int bar() => 42;
+}
+void main() {
+ var f = new A().bar();
+}''');
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8820,10 +8646,14 @@
   }
 
   void test_locate_MethodInvocation_topLevel() {
-    String contents =
-        EngineTestCase.createSource(["foo(x) {}", "void main() {", " foo(0);", "}"]);
-    CompilationUnit cu = _resolveContents([contents]);
-    int offset = contents.indexOf('foo(0)');
+    String code =
+        r'''
+foo(x) {}
+void main() {
+ foo(0);
+}''';
+    CompilationUnit cu = _resolveContents(code);
+    int offset = code.indexOf('foo(0)');
     AstNode node = new NodeLocator.con1(offset).searchWithin(cu);
     MethodInvocation invocation =
         node.getAncestor((n) => n is MethodInvocation);
@@ -8835,7 +8665,7 @@
   }
 
   void test_locate_PostfixExpression() {
-    AstNode id = _findNodeIn("++", ["int addOne(int x) => x++;"]);
+    AstNode id = _findNodeIn("++", "int addOne(int x) => x++;");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8844,7 +8674,7 @@
   }
 
   void test_locate_PrefixExpression() {
-    AstNode id = _findNodeIn("++", ["int addOne(int x) => ++x;"]);
+    AstNode id = _findNodeIn("++", "int addOne(int x) => ++x;");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is MethodElement,
@@ -8854,7 +8684,9 @@
 
   void test_locate_PrefixedIdentifier() {
     AstNode id =
-        _findNodeIn("int", ["import 'dart:core' as core;", "core.int value;"]);
+        _findNodeIn("int", r'''
+import 'dart:core' as core;
+core.int value;''');
     PrefixedIdentifier identifier =
         id.getAncestor((node) => node is PrefixedIdentifier);
     Element element = ElementLocator.locate(identifier);
@@ -8866,7 +8698,7 @@
 
   void test_locate_StringLiteral_exportUri() {
     addNamedSource("/foo.dart", "library foo;");
-    AstNode id = _findNodeIn("'foo.dart'", ["export 'foo.dart';"]);
+    AstNode id = _findNodeIn("'foo.dart'", "export 'foo.dart';");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is LibraryElement,
@@ -8875,15 +8707,15 @@
   }
 
   void test_locate_StringLiteral_expression() {
-    AstNode id = _findNodeIn("abc", ["var x = 'abc';"]);
+    AstNode id = _findNodeIn("abc", "var x = 'abc';");
     Element element = ElementLocator.locate(id);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
   }
 
   void test_locate_StringLiteral_importUri() {
     addNamedSource("/foo.dart", "library foo; class A {}");
     AstNode id =
-        _findNodeIn("'foo.dart'", ["import 'foo.dart'; class B extends A {}"]);
+        _findNodeIn("'foo.dart'", "import 'foo.dart'; class B extends A {}");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is LibraryElement,
@@ -8893,7 +8725,7 @@
 
   void test_locate_StringLiteral_partUri() {
     addNamedSource("/foo.dart", "part of app;");
-    AstNode id = _findNodeIn("'foo.dart'", ["library app; part 'foo.dart';"]);
+    AstNode id = _findNodeIn("'foo.dart'", "library app; part 'foo.dart';");
     Element element = ElementLocator.locate(id);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is CompilationUnitElement,
@@ -8902,7 +8734,7 @@
   }
 
   void test_locate_VariableDeclaration() {
-    AstNode id = _findNodeIn("x", ["var x = 'abc';"]);
+    AstNode id = _findNodeIn("x", "var x = 'abc';");
     VariableDeclaration declaration =
         id.getAncestor((node) => node is VariableDeclaration);
     Element element = ElementLocator.locate(declaration);
@@ -8915,30 +8747,27 @@
   /**
    * Find the first AST node matching a pattern in the resolved AST for the given source.
    *
-   * @param nodePattern the (unique) pattern used to identify the node of interest
-   * @param lines the lines to be merged into a single source string
-   * @return the matched node in the resolved AST for the given source lines
-   * @throws Exception if source cannot be verified
+   * [nodePattern] the (unique) pattern used to identify the node of interest.
+   * [code] the code to resolve.
+   * Returns the matched node in the resolved AST for the given source lines.
    */
-  AstNode _findNodeIn(String nodePattern, List<String> lines) {
-    return _findNodeIndexedIn(nodePattern, 0, lines);
+  AstNode _findNodeIn(String nodePattern, String code) {
+    return _findNodeIndexedIn(nodePattern, 0, code);
   }
 
   /**
    * Find the AST node matching the given indexed occurrence of a pattern in the resolved AST for
    * the given source.
    *
-   * @param nodePattern the pattern used to identify the node of interest
-   * @param index the index of the pattern match of interest
-   * @param lines the lines to be merged into a single source string
-   * @return the matched node in the resolved AST for the given source lines
-   * @throws Exception if source cannot be verified
+   * [nodePattern] the pattern used to identify the node of interest.
+   * [index] the index of the pattern match of interest.
+   * [code] the code to resolve.
+   * Returns the matched node in the resolved AST for the given source lines
    */
   AstNode _findNodeIndexedIn(String nodePattern, int index,
-      List<String> lines) {
-    String contents = EngineTestCase.createSource(lines);
-    CompilationUnit cu = _resolveContents([contents]);
-    int start = _getOffsetOfMatch(contents, nodePattern, index);
+                             String code) {
+    CompilationUnit cu = _resolveContents(code);
+    int start = _getOffsetOfMatch(code, nodePattern, index);
     int end = start + nodePattern.length;
     return new NodeLocator.con2(start, end).searchWithin(cu);
   }
@@ -8960,14 +8789,18 @@
   }
 
   /**
-   * Parse, resolve and verify the given source lines to produce a fully resolved AST.
+   * Parse, resolve and verify the given source lines to produce a fully
+   * resolved AST.
    *
-   * @param lines the lines to be merged into a single source string
-   * @return the result of resolving the AST structure representing the content of the source
-   * @throws Exception if source cannot be verified
+   * [code] the code to resolve.
+   *
+   * Returns the result of resolving the AST structure representing the content
+   * of the source.
+   *
+   * Throws if source cannot be verified.
    */
-  CompilationUnit _resolveContents(List<String> lines) {
-    Source source = addSource(EngineTestCase.createSource(lines));
+  CompilationUnit _resolveContents(String code) {
+    Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -8983,44 +8816,65 @@
     String thirdName = "THREE";
     EnumDeclaration enumDeclaration =
         AstFactory.enumDeclaration2("E", [firstName, secondName, thirdName]);
+
     ClassElement enumElement = _buildElement(enumDeclaration);
     List<FieldElement> fields = enumElement.fields;
-    EngineTestCase.assertLength(5, fields);
+    expect(fields, hasLength(5));
+
     FieldElement constant = fields[2];
-    JUnitTestCase.assertNotNull(constant);
-    JUnitTestCase.assertEquals(firstName, constant.name);
-    JUnitTestCase.assertTrue(constant.isStatic);
+    expect(constant, isNotNull);
+    expect(constant.name, firstName);
+    expect(constant.isStatic, isTrue);
+    _assertGetter(constant);
+
     constant = fields[3];
-    JUnitTestCase.assertNotNull(constant);
-    JUnitTestCase.assertEquals(secondName, constant.name);
-    JUnitTestCase.assertTrue(constant.isStatic);
+    expect(constant, isNotNull);
+    expect(constant.name, secondName);
+    expect(constant.isStatic, isTrue);
+    _assertGetter(constant);
+
     constant = fields[4];
-    JUnitTestCase.assertNotNull(constant);
-    JUnitTestCase.assertEquals(thirdName, constant.name);
-    JUnitTestCase.assertTrue(constant.isStatic);
+    expect(constant, isNotNull);
+    expect(constant.name, thirdName);
+    expect(constant.isStatic, isTrue);
+    _assertGetter(constant);
   }
 
   void test_visitEnumDeclaration_single() {
     String firstName = "ONE";
     EnumDeclaration enumDeclaration =
         AstFactory.enumDeclaration2("E", [firstName]);
+
     ClassElement enumElement = _buildElement(enumDeclaration);
     List<FieldElement> fields = enumElement.fields;
-    EngineTestCase.assertLength(3, fields);
+    expect(fields, hasLength(3));
+
     FieldElement field = fields[0];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals("index", field.name);
-    JUnitTestCase.assertFalse(field.isStatic);
-    JUnitTestCase.assertTrue(field.isSynthetic);
+    expect(field, isNotNull);
+    expect(field.name, "index");
+    expect(field.isStatic, isFalse);
+    expect(field.isSynthetic, isTrue);
+    _assertGetter(field);
+
     field = fields[1];
-    JUnitTestCase.assertNotNull(field);
-    JUnitTestCase.assertEquals("values", field.name);
-    JUnitTestCase.assertTrue(field.isStatic);
-    JUnitTestCase.assertTrue(field.isSynthetic);
+    expect(field, isNotNull);
+    expect(field.name, "values");
+    expect(field.isStatic, isTrue);
+    expect(field.isSynthetic, isTrue);
+    _assertGetter(field);
+
     FieldElement constant = fields[2];
-    JUnitTestCase.assertNotNull(constant);
-    JUnitTestCase.assertEquals(firstName, constant.name);
-    JUnitTestCase.assertTrue(constant.isStatic);
+    expect(constant, isNotNull);
+    expect(constant.name, firstName);
+    expect(constant.isStatic, isTrue);
+    _assertGetter(constant);
+  }
+
+  void _assertGetter(FieldElement field) {
+    PropertyAccessorElement getter = field.getter;
+    expect(getter, isNotNull);
+    expect(getter.variable, same(field));
+    expect(getter.type, isNotNull);
   }
 
   ClassElement _buildElement(EnumDeclaration enumDeclaration) {
@@ -9031,7 +8885,7 @@
         new EnumMemberBuilder(new TestTypeProvider());
     enumDeclaration.accept(memberBuilder);
     List<ClassElement> enums = holder.enums;
-    EngineTestCase.assertLength(1, enums);
+    expect(enums, hasLength(1));
     return enums[0];
   }
 }
@@ -9055,7 +8909,7 @@
   void test_creation() {
     GatheringErrorListener listener = new GatheringErrorListener();
     TestSource source = new TestSource();
-    JUnitTestCase.assertNotNull(new ErrorReporter(listener, source));
+    expect(new ErrorReporter(listener, source), isNotNull);
   }
 
   void test_reportTypeErrorForNode_differentNames() {
@@ -9069,7 +8923,7 @@
         AstFactory.identifier3("x"),
         [firstType, secondType]);
     AnalysisError error = listener.errors[0];
-    JUnitTestCase.assertTrue(error.message.indexOf("(") < 0);
+    expect(error.message.indexOf("(") < 0, isTrue);
   }
 
   void test_reportTypeErrorForNode_sameName() {
@@ -9084,64 +8938,46 @@
         AstFactory.identifier3("x"),
         [firstType, secondType]);
     AnalysisError error = listener.errors[0];
-    JUnitTestCase.assertTrue(error.message.indexOf("(") >= 0);
+    expect(error.message.indexOf("(") >= 0, isTrue);
   }
 }
 
 
 class ErrorSeverityTest extends EngineTestCase {
   void test_max_error_error() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.ERROR,
-        ErrorSeverity.ERROR.max(ErrorSeverity.ERROR));
+    expect(ErrorSeverity.ERROR.max(ErrorSeverity.ERROR), same(ErrorSeverity.ERROR));
   }
 
   void test_max_error_none() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.ERROR,
-        ErrorSeverity.ERROR.max(ErrorSeverity.NONE));
+    expect(ErrorSeverity.ERROR.max(ErrorSeverity.NONE), same(ErrorSeverity.ERROR));
   }
 
   void test_max_error_warning() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.ERROR,
-        ErrorSeverity.ERROR.max(ErrorSeverity.WARNING));
+    expect(ErrorSeverity.ERROR.max(ErrorSeverity.WARNING), same(ErrorSeverity.ERROR));
   }
 
   void test_max_none_error() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.ERROR,
-        ErrorSeverity.NONE.max(ErrorSeverity.ERROR));
+    expect(ErrorSeverity.NONE.max(ErrorSeverity.ERROR), same(ErrorSeverity.ERROR));
   }
 
   void test_max_none_none() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.NONE,
-        ErrorSeverity.NONE.max(ErrorSeverity.NONE));
+    expect(ErrorSeverity.NONE.max(ErrorSeverity.NONE), same(ErrorSeverity.NONE));
   }
 
   void test_max_none_warning() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.WARNING,
-        ErrorSeverity.NONE.max(ErrorSeverity.WARNING));
+    expect(ErrorSeverity.NONE.max(ErrorSeverity.WARNING), same(ErrorSeverity.WARNING));
   }
 
   void test_max_warning_error() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.ERROR,
-        ErrorSeverity.WARNING.max(ErrorSeverity.ERROR));
+    expect(ErrorSeverity.WARNING.max(ErrorSeverity.ERROR), same(ErrorSeverity.ERROR));
   }
 
   void test_max_warning_none() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.WARNING,
-        ErrorSeverity.WARNING.max(ErrorSeverity.NONE));
+    expect(ErrorSeverity.WARNING.max(ErrorSeverity.NONE), same(ErrorSeverity.WARNING));
   }
 
   void test_max_warning_warning() {
-    JUnitTestCase.assertSame(
-        ErrorSeverity.WARNING,
-        ErrorSeverity.WARNING.max(ErrorSeverity.WARNING));
+    expect(ErrorSeverity.WARNING.max(ErrorSeverity.WARNING), same(ErrorSeverity.WARNING));
   }
 }
 
@@ -9276,7 +9112,7 @@
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new ExitDetector());
+    expect(new ExitDetector(), isNotNull);
   }
 
   void test_doStatement_throwCondition() {
@@ -9626,7 +9462,7 @@
   void _assertHasReturn(bool expectedResult, String source) {
     ExitDetector detector = new ExitDetector();
     Statement statement = ParserTestCase.parseStatement(source, []);
-    JUnitTestCase.assertSame(expectedResult, statement.accept(detector));
+    expect(statement.accept(detector), same(expectedResult));
   }
 
   void _assertTrue(String source) {
@@ -9647,19 +9483,19 @@
 }
 
 
-class FileBasedSourceTest extends JUnitTestCase {
+class FileBasedSourceTest {
   void test_equals_false_differentFiles() {
     JavaFile file1 = FileUtilities2.createFile("/does/not/exist1.dart");
     JavaFile file2 = FileUtilities2.createFile("/does/not/exist2.dart");
     FileBasedSource source1 = new FileBasedSource.con1(file1);
     FileBasedSource source2 = new FileBasedSource.con1(file2);
-    JUnitTestCase.assertFalse(source1 == source2);
+    expect(source1 == source2, isFalse);
   }
 
   void test_equals_false_null() {
     JavaFile file = FileUtilities2.createFile("/does/not/exist1.dart");
     FileBasedSource source1 = new FileBasedSource.con1(file);
-    JUnitTestCase.assertFalse(source1 == null);
+    expect(source1 == null, isFalse);
   }
 
   void test_equals_true() {
@@ -9667,7 +9503,7 @@
     JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source1 = new FileBasedSource.con1(file1);
     FileBasedSource source2 = new FileBasedSource.con1(file2);
-    JUnitTestCase.assertTrue(source1 == source2);
+    expect(source1 == source2, isTrue);
   }
 
   void test_getEncoding() {
@@ -9675,20 +9511,20 @@
     String fullPath = "/does/not/exist.dart";
     JavaFile file = FileUtilities2.createFile(fullPath);
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertEquals(source, factory.fromEncoding(source.encoding));
+    expect(factory.fromEncoding(source.encoding), source);
   }
 
   void test_getFullName() {
     String fullPath = "/does/not/exist.dart";
     JavaFile file = FileUtilities2.createFile(fullPath);
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
+    expect(source.fullName, file.getAbsolutePath());
   }
 
   void test_getShortName() {
     JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertEquals("exist.dart", source.shortName);
+    expect(source.shortName, "exist.dart");
   }
 
   void test_hashCode() {
@@ -9696,72 +9532,72 @@
     JavaFile file2 = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source1 = new FileBasedSource.con1(file1);
     FileBasedSource source2 = new FileBasedSource.con1(file2);
-    JUnitTestCase.assertEquals(source1.hashCode, source2.hashCode);
+    expect(source2.hashCode, source1.hashCode);
   }
 
   void test_isInSystemLibrary_contagious() {
     JavaFile sdkDirectory = DirectoryBasedDartSdk.defaultSdkDirectory;
-    JUnitTestCase.assertNotNull(sdkDirectory);
+    expect(sdkDirectory, isNotNull);
     DartSdk sdk = new DirectoryBasedDartSdk(sdkDirectory);
     UriResolver resolver = new DartUriResolver(sdk);
     SourceFactory factory = new SourceFactory([resolver]);
     // resolve dart:core
     Source result =
         resolver.resolveAbsolute(parseUriWithException("dart:core"));
-    JUnitTestCase.assertNotNull(result);
-    JUnitTestCase.assertTrue(result.isInSystemLibrary);
+    expect(result, isNotNull);
+    expect(result.isInSystemLibrary, isTrue);
     // system libraries reference only other system libraries
     Source partSource = factory.resolveUri(result, "num.dart");
-    JUnitTestCase.assertNotNull(partSource);
-    JUnitTestCase.assertTrue(partSource.isInSystemLibrary);
+    expect(partSource, isNotNull);
+    expect(partSource.isInSystemLibrary, isTrue);
   }
 
   void test_isInSystemLibrary_false() {
     JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertNotNull(source);
-    JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
-    JUnitTestCase.assertFalse(source.isInSystemLibrary);
+    expect(source, isNotNull);
+    expect(source.fullName, file.getAbsolutePath());
+    expect(source.isInSystemLibrary, isFalse);
   }
 
   void test_issue14500() {
     // see https://code.google.com/p/dart/issues/detail?id=14500
     FileBasedSource source = new FileBasedSource.con1(
         FileUtilities2.createFile("/some/packages/foo:bar.dart"));
-    JUnitTestCase.assertNotNull(source);
-    JUnitTestCase.assertFalse(source.exists());
+    expect(source, isNotNull);
+    expect(source.exists(), isFalse);
   }
 
   void test_resolveRelative_dart_fileName() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("dart:test"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("dart:test/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/lib.dart");
   }
 
   void test_resolveRelative_dart_filePath() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("dart:test"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("dart:test/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/c/lib.dart");
   }
 
   void test_resolveRelative_dart_filePathWithParent() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("dart:test/b/test.dart"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("dart:test/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "dart:test/c/lib.dart");
   }
 
   void test_resolveRelative_file_fileName() {
@@ -9773,10 +9609,10 @@
     }
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("file:///a/b/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "file:///a/b/lib.dart");
   }
 
   void test_resolveRelative_file_filePath() {
@@ -9788,11 +9624,11 @@
     }
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("file:///a/b/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "file:///a/b/c/lib.dart");
   }
 
   void test_resolveRelative_file_filePathWithParent() {
@@ -9803,86 +9639,84 @@
     }
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source = new FileBasedSource.con1(file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("file:///a/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "file:///a/c/lib.dart");
   }
 
   void test_resolveRelative_package_fileName() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("package:b/test.dart"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("package:b/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:b/lib.dart");
   }
 
   void test_resolveRelative_package_fileNameWithoutPackageName() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("package:test.dart"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative = source.resolveRelativeUri(parseUriWithException("lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("package:lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:lib.dart");
   }
 
   void test_resolveRelative_package_filePath() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("package:b/test.dart"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("package:b/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:b/c/lib.dart");
   }
 
   void test_resolveRelative_package_filePathWithParent() {
     JavaFile file = FileUtilities2.createFile("/a/b/test.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("package:a/b/test.dart"), file);
-    JUnitTestCase.assertNotNull(source);
+    expect(source, isNotNull);
     Uri relative =
         source.resolveRelativeUri(parseUriWithException("../c/lib.dart"));
-    JUnitTestCase.assertNotNull(relative);
-    JUnitTestCase.assertEquals("package:a/c/lib.dart", relative.toString());
+    expect(relative, isNotNull);
+    expect(relative.toString(), "package:a/c/lib.dart");
   }
 
   void test_system() {
     JavaFile file = FileUtilities2.createFile("/does/not/exist.dart");
     FileBasedSource source =
         new FileBasedSource.con2(parseUriWithException("dart:core"), file);
-    JUnitTestCase.assertNotNull(source);
-    JUnitTestCase.assertEquals(file.getAbsolutePath(), source.fullName);
-    JUnitTestCase.assertTrue(source.isInSystemLibrary);
+    expect(source, isNotNull);
+    expect(source.fullName, file.getAbsolutePath());
+    expect(source.isInSystemLibrary, isTrue);
   }
 }
 
 
-class FileUriResolverTest extends JUnitTestCase {
+class FileUriResolverTest {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new FileUriResolver());
+    expect(new FileUriResolver(), isNotNull);
   }
 
   void test_resolve_file() {
     UriResolver resolver = new FileUriResolver();
     Source result =
         resolver.resolveAbsolute(parseUriWithException("file:/does/not/exist.dart"));
-    JUnitTestCase.assertNotNull(result);
-    JUnitTestCase.assertEquals(
-        FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath(),
-        result.fullName);
+    expect(result, isNotNull);
+    expect(result.fullName, FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath());
   }
 
   void test_resolve_nonFile() {
     UriResolver resolver = new FileUriResolver();
     Source result =
         resolver.resolveAbsolute(parseUriWithException("dart:core"));
-    JUnitTestCase.assertNull(result);
+    expect(result, isNull);
   }
 }
 
@@ -9893,23 +9727,20 @@
    */
   static String _TAG_SCRIPT = "script";
   void fail_parse_scriptWithComment() {
-    String scriptBody = EngineTestCase.createSource(
-        [
-            "      /**",
-            "       *     <editable-label bind-value=\"dartAsignableValue\">",
-            "       *     </editable-label>",
-            "       */",
-            "      class Foo {}"]);
-    ht.HtmlUnit htmlUnit = parse(
-        EngineTestCase.createSource(
-            [
-                "  <html>",
-                "    <body>",
-                "      <script type=\"application/dart\">",
-                scriptBody,
-                "      </script>",
-                "    </body>",
-                "  </html>"]));
+    String scriptBody = r'''
+      /**
+       *     <editable-label bind-value="dartAsignableValue">
+       *     </editable-label>
+       */
+      class Foo {}''';
+    ht.HtmlUnit htmlUnit = parse("""
+<html>
+  <body>
+    <script type='application/dart'>
+$scriptBody
+    </script>
+  </body>
+</html>""");
     _validate(
         htmlUnit,
         [
@@ -9918,7 +9749,7 @@
                 [
                     _t4(
                         "body",
-                        [_t("script", _a(["type", "\"application/dart\""]), scriptBody, [])])])]);
+                        [_t("script", _a(["type", "'application/dart'"]), scriptBody, [])])])]);
   }
   ht.HtmlUnit parse(String contents) {
 //    TestSource source =
@@ -9940,7 +9771,7 @@
         [_t4("html", [_t("body", _a(["foo", "\"sdfsdf\""]), "", [])])]);
     ht.XmlTagNode htmlNode = htmlUnit.tagNodes[0];
     ht.XmlTagNode bodyNode = htmlNode.tagNodes[0];
-    JUnitTestCase.assertEquals("sdfsdf", bodyNode.attributes[0].text);
+    expect(bodyNode.attributes[0].text, "sdfsdf");
   }
   void test_parse_attribute_EOF() {
     ht.HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"");
@@ -9955,7 +9786,7 @@
         [_t4("html", [_t("body", _a(["foo", "\"sdfsd"]), "", [])])]);
     ht.XmlTagNode htmlNode = htmlUnit.tagNodes[0];
     ht.XmlTagNode bodyNode = htmlNode.tagNodes[0];
-    JUnitTestCase.assertEquals("sdfsd", bodyNode.attributes[0].text);
+    expect(bodyNode.attributes[0].text, "sdfsd");
   }
   void test_parse_attribute_extra_quote() {
     ht.HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"\"></body></html>");
@@ -9970,7 +9801,7 @@
         [_t4("html", [_t("body", _a(["foo", "'sdfsdf'"]), "", [])])]);
     ht.XmlTagNode htmlNode = htmlUnit.tagNodes[0];
     ht.XmlTagNode bodyNode = htmlNode.tagNodes[0];
-    JUnitTestCase.assertEquals("sdfsdf", bodyNode.attributes[0].text);
+    expect(bodyNode.attributes[0].text, "sdfsdf");
   }
   void test_parse_comment_embedded() {
     ht.HtmlUnit htmlUnit = parse("<html <!-- comment -->></html>");
@@ -10014,29 +9845,28 @@
     ht.HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"></body></html>");
     ht.XmlTagNode htmlNode = htmlUnit.tagNodes[0];
     ht.XmlTagNode bodyNode = htmlNode.tagNodes[0];
-    JUnitTestCase.assertEquals("sdfsdf", bodyNode.getAttribute("foo").text);
-    JUnitTestCase.assertEquals(null, bodyNode.getAttribute("bar"));
-    JUnitTestCase.assertEquals(null, bodyNode.getAttribute(null));
+    expect(bodyNode.getAttribute("foo").text, "sdfsdf");
+    expect(bodyNode.getAttribute("bar"), null);
+    expect(bodyNode.getAttribute(null), null);
   }
   void test_parse_getAttributeText() {
     ht.HtmlUnit htmlUnit = parse("<html><body foo=\"sdfsdf\"></body></html>");
     ht.XmlTagNode htmlNode = htmlUnit.tagNodes[0];
     ht.XmlTagNode bodyNode = htmlNode.tagNodes[0];
-    JUnitTestCase.assertEquals("sdfsdf", bodyNode.getAttributeText("foo"));
-    JUnitTestCase.assertEquals(null, bodyNode.getAttributeText("bar"));
-    JUnitTestCase.assertEquals(null, bodyNode.getAttributeText(null));
+    expect(bodyNode.getAttributeText("foo"), "sdfsdf");
+    expect(bodyNode.getAttributeText("bar"), null);
+    expect(bodyNode.getAttributeText(null), null);
   }
   void test_parse_headers() {
-    String code = EngineTestCase.createSource(
-        [
-            "<html>",
-            "  <body>",
-            "    <h2>000</h2>",
-            "    <div>",
-            "      111",
-            "    </div>",
-            "  </body>",
-            "</html>"]);
+    String code = r'''
+<html>
+  <body>
+    <h2>000</h2>
+    <div>
+      111
+    </div>
+  </body>
+</html>''';
     ht.HtmlUnit htmlUnit = parse(code);
     _validate(
         htmlUnit,
@@ -10080,24 +9910,22 @@
 class HtmlTagInfoBuilderTest extends HtmlParserTest {
   void test_builder() {
     HtmlTagInfoBuilder builder = new HtmlTagInfoBuilder();
-    ht.HtmlUnit unit = parse(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "  <body>",
-                "    <div id=\"x\"></div>",
-                "    <p class='c'></p>",
-                "    <div class='c'></div>",
-                "  </body>",
-                "</html>"]));
+    ht.HtmlUnit unit = parse(r'''
+<html>
+  <body>
+    <div id="x"></div>
+    <p class='c'></p>
+    <div class='c'></div>
+  </body>
+</html>''');
     unit.accept(builder);
     HtmlTagInfo info = builder.getTagInfo();
-    JUnitTestCase.assertNotNull(info);
+    expect(info, isNotNull);
     List<String> allTags = info.allTags;
-    EngineTestCase.assertLength(4, allTags);
-    JUnitTestCase.assertEquals("div", info.getTagWithId("x"));
+    expect(allTags, hasLength(4));
+    expect(info.getTagWithId("x"), "div");
     List<String> tagsWithClass = info.getTagsWithClass("c");
-    EngineTestCase.assertLength(2, tagsWithClass);
+    expect(tagsWithClass, hasLength(2));
   }
 }
 
@@ -10114,55 +9942,53 @@
     super.tearDown();
   }
   void test_embedded_script() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            ["<html>", "<script type=\"application/dart\">foo=2;</script>", "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart">foo=2;</script>
+</html>''');
     _validate(element, [_s(_l([_v("foo")]))]);
   }
   void test_embedded_script_no_content() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            ["<html>", "<script type=\"application/dart\"></script>", "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart"></script>
+</html>''');
     _validate(element, [_s(_l([]))]);
   }
   void test_external_script() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "<script type=\"application/dart\" src=\"other.dart\"/>",
-                "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart" src="other.dart"/>
+</html>''');
     _validate(element, [_s2("other.dart")]);
   }
   void test_external_script_no_source() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            ["<html>", "<script type=\"application/dart\"/>", "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart"/>
+</html>''');
     _validate(element, [_s2(null)]);
   }
   void test_external_script_with_content() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "<script type=\"application/dart\" src=\"other.dart\">blat=2;</script>",
-                "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart" src="other.dart">blat=2;</script>
+</html>''');
     _validate(element, [_s2("other.dart")]);
   }
   void test_no_scripts() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(["<!DOCTYPE html>", "<html><p></p></html>"]));
+    HtmlElementImpl element = _build(r'''
+<!DOCTYPE html>
+<html><p></p></html>''');
     _validate(element, []);
   }
   void test_two_dart_scripts() {
-    HtmlElementImpl element = _build(
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "<script type=\"application/dart\">bar=2;</script>",
-                "<script type=\"application/dart\" src=\"other.dart\"/>",
-                "<script src=\"dart.js\"/>",
-                "</html>"]));
+    HtmlElementImpl element = _build(r'''
+<html>
+<script type="application/dart">bar=2;</script>
+<script type="application/dart" src="other.dart"/>
+<script src="dart.js"/>
+</html>''');
     _validate(element, [_s(_l([_v("bar")])), _s2("other.dart")]);
   }
   HtmlElementImpl _build(String contents) {
@@ -10189,10 +10015,10 @@
       new HtmlUnitBuilderTest_ExpectedVariable(varName);
   void _validate(HtmlElementImpl element,
       List<_ExpectedScript> expectedScripts) {
-    JUnitTestCase.assertSame(_context, element.context);
+    expect(element.context, same(_context));
     List<HtmlScriptElement> scripts = element.scripts;
-    JUnitTestCase.assertNotNull(scripts);
-    EngineTestCase.assertLength(expectedScripts.length, scripts);
+    expect(scripts, isNotNull);
+    expect(scripts, hasLength(expectedScripts.length));
     for (int scriptIndex = 0; scriptIndex < scripts.length; scriptIndex++) {
       expectedScripts[scriptIndex]._validate(scriptIndex, scripts[scriptIndex]);
     }
@@ -10207,22 +10033,16 @@
       this._expectedVariables);
   void _validate(int scriptIndex, EmbeddedHtmlScriptElementImpl script) {
     LibraryElement library = script.scriptLibrary;
-    JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", library);
-    JUnitTestCase.assertSameMsg(
-        "script ${scriptIndex}",
-        HtmlUnitBuilderTest_this._context,
-        script.context);
+    expect(library, isNotNull, reason: "script $scriptIndex");
+    expect(script.context, same(HtmlUnitBuilderTest_this._context), reason: "script $scriptIndex");
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", unit);
+    expect(unit, isNotNull, reason: "script $scriptIndex");
     List<TopLevelVariableElement> variables = unit.topLevelVariables;
-    EngineTestCase.assertLength(_expectedVariables.length, variables);
+    expect(variables, hasLength(_expectedVariables.length));
     for (int index = 0; index < variables.length; index++) {
       _expectedVariables[index].validate(scriptIndex, variables[index]);
     }
-    JUnitTestCase.assertSameMsg(
-        "script ${scriptIndex}",
-        script,
-        library.enclosingElement);
+    expect(library.enclosingElement, same(script), reason: "script $scriptIndex");
   }
 }
 
@@ -10231,11 +10051,8 @@
   final String _expectedName;
   HtmlUnitBuilderTest_ExpectedVariable(this._expectedName);
   void validate(int scriptIndex, TopLevelVariableElement variable) {
-    JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", variable);
-    JUnitTestCase.assertEqualsMsg(
-        "script ${scriptIndex}",
-        _expectedName,
-        variable.name);
+    expect(variable, isNotNull, reason: "script $scriptIndex");
+    expect(variable.name, _expectedName, reason: "script $scriptIndex");
   }
 }
 
@@ -10280,31 +10097,27 @@
   }
 
   void test_invalidUri() {
-    _verify(
-        EngineTestCase.createSource(
-            ["<html>", "<script type='application/dart' src='ht:'/>", "</html>"]),
+    _verify(r'''
+<html>
+<script type='application/dart' src='ht:'/>
+</html>''',
         [HtmlWarningCode.INVALID_URI]);
     _assertErrorLocation2(_errors[0], "ht:");
   }
 
   void test_uriDoesNotExist() {
-    _verify(
-        EngineTestCase.createSource(
-            ["<html>", "<script type='application/dart' src='other.dart'/>", "</html>"]),
+    _verify(r'''
+<html>
+<script type='application/dart' src='other.dart'/>
+</html>''',
         [HtmlWarningCode.URI_DOES_NOT_EXIST]);
     _assertErrorLocation2(_errors[0], "other.dart");
   }
 
   void _assertErrorLocation(AnalysisError error, int expectedOffset,
       int expectedLength) {
-    JUnitTestCase.assertEqualsMsg(
-        error.toString(),
-        expectedOffset,
-        error.offset);
-    JUnitTestCase.assertEqualsMsg(
-        error.toString(),
-        expectedLength,
-        error.length);
+    expect(error.offset, expectedOffset, reason: error.toString());
+    expect(error.length, expectedLength, reason: error.toString());
   }
 
   void _assertErrorLocation2(AnalysisError error, String expectedString) {
@@ -10434,12 +10247,12 @@
   }
   void _assertNoArcs() {
     Set<AstNode> tails = _referenceGraph.getTails(_head);
-    EngineTestCase.assertSizeOfSet(0, tails);
+    expect(tails, hasLength(0));
   }
   void _assertOneArc(AstNode tail) {
     Set<AstNode> tails = _referenceGraph.getTails(_head);
-    EngineTestCase.assertSizeOfSet(1, tails);
-    JUnitTestCase.assertSame(tail, new JavaIterator(tails).next());
+    expect(tails, hasLength(1));
+    expect(tails.first, same(tail));
   }
   ReferenceFinder _createReferenceFinder(AstNode source) =>
       new ReferenceFinder(
@@ -10530,87 +10343,85 @@
     LibraryMap libraryMap = new SdkLibrariesReader(
         true).readFromFile(
             FileUtilities2.createFile("/libs.dart"),
-            EngineTestCase.createSource(
-                [
-                    "final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {",
-                    "  'first' : const LibraryInfo(",
-                    "    'first/first.dart',",
-                    "    category: 'First',",
-                    "    documented: true,",
-                    "    platforms: VM_PLATFORM,",
-                    "    dart2jsPath: 'first/first_dart2js.dart'),",
-                    "};"]));
-    JUnitTestCase.assertNotNull(libraryMap);
-    JUnitTestCase.assertEquals(1, libraryMap.size());
+            r'''
+final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
+  'first' : const LibraryInfo(
+    'first/first.dart',
+    category: 'First',
+    documented: true,
+    platforms: VM_PLATFORM,
+    dart2jsPath: 'first/first_dart2js.dart'),
+};''');
+    expect(libraryMap, isNotNull);
+    expect(libraryMap.size(), 1);
     SdkLibrary first = libraryMap.getLibrary("dart:first");
-    JUnitTestCase.assertNotNull(first);
-    JUnitTestCase.assertEquals("First", first.category);
-    JUnitTestCase.assertEquals("first/first_dart2js.dart", first.path);
-    JUnitTestCase.assertEquals("dart:first", first.shortName);
-    JUnitTestCase.assertEquals(false, first.isDart2JsLibrary);
-    JUnitTestCase.assertEquals(true, first.isDocumented);
-    JUnitTestCase.assertEquals(false, first.isImplementation);
-    JUnitTestCase.assertEquals(true, first.isVmLibrary);
+    expect(first, isNotNull);
+    expect(first.category, "First");
+    expect(first.path, "first/first_dart2js.dart");
+    expect(first.shortName, "dart:first");
+    expect(first.isDart2JsLibrary, false);
+    expect(first.isDocumented, true);
+    expect(first.isImplementation, false);
+    expect(first.isVmLibrary, true);
   }
   void test_readFrom_empty() {
     LibraryMap libraryMap = new SdkLibrariesReader(
         false).readFromFile(FileUtilities2.createFile("/libs.dart"), "");
-    JUnitTestCase.assertNotNull(libraryMap);
-    JUnitTestCase.assertEquals(0, libraryMap.size());
+    expect(libraryMap, isNotNull);
+    expect(libraryMap.size(), 0);
   }
   void test_readFrom_normal() {
     LibraryMap libraryMap = new SdkLibrariesReader(
         false).readFromFile(
             FileUtilities2.createFile("/libs.dart"),
-            EngineTestCase.createSource(
-                [
-                    "final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {",
-                    "  'first' : const LibraryInfo(",
-                    "    'first/first.dart',",
-                    "    category: 'First',",
-                    "    documented: true,",
-                    "    platforms: VM_PLATFORM),",
-                    "",
-                    "  'second' : const LibraryInfo(",
-                    "    'second/second.dart',",
-                    "    category: 'Second',",
-                    "    documented: false,",
-                    "    implementation: true,",
-                    "    platforms: 0),",
-                    "};"]));
-    JUnitTestCase.assertNotNull(libraryMap);
-    JUnitTestCase.assertEquals(2, libraryMap.size());
+            r'''
+final Map<String, LibraryInfo> LIBRARIES = const <String, LibraryInfo> {
+  'first' : const LibraryInfo(
+    'first/first.dart',
+    category: 'First',
+    documented: true,
+    platforms: VM_PLATFORM),
+
+  'second' : const LibraryInfo(
+    'second/second.dart',
+    category: 'Second',
+    documented: false,
+    implementation: true,
+    platforms: 0),
+};''');
+    expect(libraryMap, isNotNull);
+    expect(libraryMap.size(), 2);
     SdkLibrary first = libraryMap.getLibrary("dart:first");
-    JUnitTestCase.assertNotNull(first);
-    JUnitTestCase.assertEquals("First", first.category);
-    JUnitTestCase.assertEquals("first/first.dart", first.path);
-    JUnitTestCase.assertEquals("dart:first", first.shortName);
-    JUnitTestCase.assertEquals(false, first.isDart2JsLibrary);
-    JUnitTestCase.assertEquals(true, first.isDocumented);
-    JUnitTestCase.assertEquals(false, first.isImplementation);
-    JUnitTestCase.assertEquals(true, first.isVmLibrary);
+    expect(first, isNotNull);
+    expect(first.category, "First");
+    expect(first.path, "first/first.dart");
+    expect(first.shortName, "dart:first");
+    expect(first.isDart2JsLibrary, false);
+    expect(first.isDocumented, true);
+    expect(first.isImplementation, false);
+    expect(first.isVmLibrary, true);
     SdkLibrary second = libraryMap.getLibrary("dart:second");
-    JUnitTestCase.assertNotNull(second);
-    JUnitTestCase.assertEquals("Second", second.category);
-    JUnitTestCase.assertEquals("second/second.dart", second.path);
-    JUnitTestCase.assertEquals("dart:second", second.shortName);
-    JUnitTestCase.assertEquals(false, second.isDart2JsLibrary);
-    JUnitTestCase.assertEquals(false, second.isDocumented);
-    JUnitTestCase.assertEquals(true, second.isImplementation);
-    JUnitTestCase.assertEquals(false, second.isVmLibrary);
+    expect(second, isNotNull);
+    expect(second.category, "Second");
+    expect(second.path, "second/second.dart");
+    expect(second.shortName, "dart:second");
+    expect(second.isDart2JsLibrary, false);
+    expect(second.isDocumented, false);
+    expect(second.isImplementation, true);
+    expect(second.isVmLibrary, false);
   }
 }
 
 
-class SourceFactoryTest extends JUnitTestCase {
+class SourceFactoryTest {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new SourceFactory([]));
+    expect(new SourceFactory([]), isNotNull);
   }
   void test_fromEncoding_invalidUri() {
     SourceFactory factory = new SourceFactory([]);
     try {
       factory.fromEncoding("<:&%>");
-      JUnitTestCase.fail("Expected IllegalArgumentException");
+      fail("Expected IllegalArgumentException");
     } on IllegalArgumentException catch (exception) {
     }
   }
@@ -10618,7 +10429,7 @@
     SourceFactory factory = new SourceFactory([]);
     try {
       factory.fromEncoding("foo:/does/not/exist.dart");
-      JUnitTestCase.fail("Expected IllegalArgumentException");
+      fail("Expected IllegalArgumentException");
     } on IllegalArgumentException catch (exception) {
     }
   }
@@ -10626,14 +10437,14 @@
     String encoding = "file:///does/not/exist.dart";
     SourceFactory factory = new SourceFactory(
         [new UriResolver_SourceFactoryTest_test_fromEncoding_valid(encoding)]);
-    JUnitTestCase.assertNotNull(factory.fromEncoding(encoding));
+    expect(factory.fromEncoding(encoding), isNotNull);
   }
   void test_resolveUri_absolute() {
-    List<bool> invoked = [false];
+    UriResolver_absolute resolver = new UriResolver_absolute();
     SourceFactory factory =
-        new SourceFactory([new UriResolver_absolute(invoked)]);
+        new SourceFactory([resolver]);
     factory.resolveUri(null, "dart:core");
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(resolver.invoked, isTrue);
   }
   void test_resolveUri_nonAbsolute_absolute() {
     SourceFactory factory =
@@ -10642,9 +10453,7 @@
     Source containingSource =
         new FileBasedSource.con1(FileUtilities2.createFile("/does/not/exist.dart"));
     Source result = factory.resolveUri(containingSource, absolutePath);
-    JUnitTestCase.assertEquals(
-        FileUtilities2.createFile(absolutePath).getAbsolutePath(),
-        result.fullName);
+    expect(result.fullName, FileUtilities2.createFile(absolutePath).getAbsolutePath());
   }
   void test_resolveUri_nonAbsolute_relative() {
     SourceFactory factory =
@@ -10652,9 +10461,7 @@
     Source containingSource =
         new FileBasedSource.con1(FileUtilities2.createFile("/does/not/have.dart"));
     Source result = factory.resolveUri(containingSource, "exist.dart");
-    JUnitTestCase.assertEquals(
-        FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath(),
-        result.fullName);
+    expect(result.fullName, FileUtilities2.createFile("/does/not/exist.dart").getAbsolutePath());
   }
   void test_restoreUri() {
     JavaFile file1 = FileUtilities2.createFile("/some/file1.dart");
@@ -10664,8 +10471,8 @@
     Uri expected1 = parseUriWithException("file:///my_file.dart");
     SourceFactory factory =
         new SourceFactory([new UriResolver_restoreUri(source1, expected1)]);
-    JUnitTestCase.assertSame(expected1, factory.restoreUri(source1));
-    JUnitTestCase.assertSame(null, factory.restoreUri(source2));
+    expect(factory.restoreUri(source1), same(expected1));
+    expect(factory.restoreUri(source2), same(null));
   }
 }
 
@@ -10730,23 +10537,23 @@
   void _assertSource(String expectedSource, ht.XmlNode node) {
     PrintStringWriter writer = new PrintStringWriter();
     node.accept(new ht.ToSourceVisitor(writer));
-    JUnitTestCase.assertEquals(expectedSource, writer.toString());
+    expect(writer.toString(), expectedSource);
   }
 }
 
 
-class UriKindTest extends JUnitTestCase {
+class UriKindTest {
   void test_fromEncoding() {
-    JUnitTestCase.assertSame(UriKind.DART_URI, UriKind.fromEncoding(0x64));
-    JUnitTestCase.assertSame(UriKind.FILE_URI, UriKind.fromEncoding(0x66));
-    JUnitTestCase.assertSame(UriKind.PACKAGE_URI, UriKind.fromEncoding(0x70));
-    JUnitTestCase.assertSame(null, UriKind.fromEncoding(0x58));
+    expect(UriKind.fromEncoding(0x64), same(UriKind.DART_URI));
+    expect(UriKind.fromEncoding(0x66), same(UriKind.FILE_URI));
+    expect(UriKind.fromEncoding(0x70), same(UriKind.PACKAGE_URI));
+    expect(UriKind.fromEncoding(0x58), same(null));
   }
 
   void test_getEncoding() {
-    JUnitTestCase.assertEquals(0x64, UriKind.DART_URI.encoding);
-    JUnitTestCase.assertEquals(0x66, UriKind.FILE_URI.encoding);
-    JUnitTestCase.assertEquals(0x70, UriKind.PACKAGE_URI.encoding);
+    expect(UriKind.DART_URI.encoding, 0x64);
+    expect(UriKind.FILE_URI.encoding, 0x66);
+    expect(UriKind.PACKAGE_URI.encoding, 0x70);
   }
 }
 
@@ -10768,13 +10575,13 @@
 
 
 class UriResolver_absolute extends UriResolver {
-  List<bool> invoked;
+  bool invoked = false;
 
-  UriResolver_absolute(this.invoked);
+  UriResolver_absolute();
 
   @override
   Source resolveAbsolute(Uri uri) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -10835,8 +10642,7 @@
     // make sure we properly recorded the dependency.
     ConstructorDeclaration node = findConstructorDeclaration(constructor);
     if (node != null && referenceGraph.nodes.contains(node)) {
-      JUnitTestCase.assertTrue(
-          referenceGraph.containsPath(_nodeBeingEvaluated, node));
+      expect(referenceGraph.containsPath(_nodeBeingEvaluated, node), isTrue);
     }
   }
 
@@ -10855,7 +10661,7 @@
         break;
       }
     }
-    JUnitTestCase.assertTrue(parameterIndex < numParameters);
+    expect(parameterIndex < numParameters, isTrue);
     // If we are getting the default parameter for a constructor in the graph,
     // make sure we properly recorded the dependency on the parameter.
     ConstructorDeclaration constructorNode =
@@ -10863,9 +10669,8 @@
     if (constructorNode != null) {
       FormalParameter parameterNode =
           constructorNode.parameters.parameters[parameterIndex];
-      JUnitTestCase.assertTrue(referenceGraph.nodes.contains(parameterNode));
-      JUnitTestCase.assertTrue(
-          referenceGraph.containsPath(_nodeBeingEvaluated, parameterNode));
+      expect(referenceGraph.nodes.contains(parameterNode), isTrue);
+      expect(referenceGraph.containsPath(_nodeBeingEvaluated, parameterNode), isTrue);
     }
   }
 
@@ -10914,17 +10719,17 @@
     while (_expectedTagsIndex < _expectedTagsInOrderVisited.length) {
       String expectedTag =
           _expectedTagsInOrderVisited[_expectedTagsIndex++]._tag;
-      _errors.add("Expected to visit node with tag: ${expectedTag}");
+      _errors.add("Expected to visit node with tag: $expectedTag");
     }
     if (!_errors.isEmpty) {
-      PrintStringWriter writer = new PrintStringWriter();
-      writer.print("Invalid XML structure:");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("Invalid XML structure:");
       for (String message in _errors) {
-        writer.newLine();
-        writer.print("   ");
-        writer.print(message);
+        buffer.writeln();
+        buffer.write("   ");
+        buffer.write(message);
       }
-      JUnitTestCase.fail(writer.toString());
+      fail(buffer.toString());
     }
   }
   /**
@@ -10936,7 +10741,7 @@
     // Flatten the hierarchy into expected order in which the tags are visited
     List<XmlValidator_Tag> expected = new List<XmlValidator_Tag>();
     _expectTags(expected, expectedTags);
-    this._expectedTagsInOrderVisited = new List.from(expected);
+    this._expectedTagsInOrderVisited = expected;
   }
   @override
   Object visitHtmlUnit(ht.HtmlUnit node) {
@@ -10953,7 +10758,7 @@
   Object visitXmlAttributeNode(ht.XmlAttributeNode actual) {
     if (actual.parent is! ht.XmlTagNode) {
       _errors.add(
-          "Expected ${actual.runtimeType.toString()} to have parent of type XmlTagNode");
+          "Expected ${actual.runtimeType} to have parent of type XmlTagNode");
     }
     String actualName = actual.name;
     String actualValue = actual.valueToken.lexeme;
@@ -10962,17 +10767,17 @@
           _expectedAttributeKeyValuePairs[_expectedAttributeIndex];
       if (expectedName != actualName) {
         _errors.add(
-            "Expected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} to have name: ${expectedName} but found: ${actualName}");
+            "Expected ${_expectedTagsIndex - 1} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${_expectedAttributeIndex ~/ 2} to have name: $expectedName but found: $actualName");
       }
       String expectedValue =
           _expectedAttributeKeyValuePairs[_expectedAttributeIndex + 1];
       if (expectedValue != actualValue) {
         _errors.add(
-            "Expected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} to have value: ${expectedValue} but found: ${actualValue}");
+            "Expected ${_expectedTagsIndex - 1} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${_expectedAttributeIndex ~/ 2} to have value: $expectedValue but found: $actualValue");
       }
     } else {
       _errors.add(
-          "Unexpected ${(_expectedTagsIndex - 1)} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${(_expectedAttributeIndex ~/ 2)} name: ${actualName} value: ${actualValue}");
+          "Unexpected ${_expectedTagsIndex - 1} tag: ${_expectedTagsInOrderVisited[_expectedTagsIndex - 1]._tag} attribute ${_expectedAttributeIndex ~/ 2} name: $actualName value: $actualValue");
     }
     _expectedAttributeIndex += 2;
     _validateNode(actual);
@@ -10982,7 +10787,7 @@
   Object visitXmlTagNode(ht.XmlTagNode actual) {
     if (!(actual.parent is ht.HtmlUnit || actual.parent is ht.XmlTagNode)) {
       _errors.add(
-          "Expected ${actual.runtimeType.toString()} to have parent of type HtmlUnit or XmlTagNode");
+          "Expected ${actual.runtimeType} to have parent of type HtmlUnit or XmlTagNode");
     }
     if (_expectedTagsInOrderVisited != null) {
       String actualTag = actual.tag;
@@ -10991,7 +10796,7 @@
             _expectedTagsInOrderVisited[_expectedTagsIndex];
         if (expected._tag != actualTag) {
           _errors.add(
-              "Expected ${_expectedTagsIndex} tag: ${expected._tag} but found: ${actualTag}");
+              "Expected $_expectedTagsIndex tag: ${expected._tag} but found: $actualTag");
         }
         _expectedAttributeKeyValuePairs = expected._attributes._keyValuePairs;
         int expectedAttributeCount =
@@ -11000,54 +10805,52 @@
         int actualAttributeCount = actual.attributes.length;
         if (expectedAttributeCount != actualAttributeCount) {
           _errors.add(
-              "Expected ${_expectedTagsIndex} tag: ${expected._tag} to have ${expectedAttributeCount} attributes but found ${actualAttributeCount}");
+              "Expected $_expectedTagsIndex tag: ${expected._tag} to have $expectedAttributeCount attributes but found $actualAttributeCount");
         }
         _expectedAttributeIndex = 0;
         _expectedTagsIndex++;
-        JUnitTestCase.assertNotNull(actual.attributeEnd);
-        JUnitTestCase.assertNotNull(actual.contentEnd);
+        expect(actual.attributeEnd, isNotNull);
+        expect(actual.contentEnd, isNotNull);
         int count = 0;
         ht.Token token = actual.attributeEnd.next;
         ht.Token lastToken = actual.contentEnd;
         while (!identical(token, lastToken)) {
           token = token.next;
           if (++count > 1000) {
-            JUnitTestCase.fail(
-                "Expected ${_expectedTagsIndex} tag: ${expected._tag} to have a sequence of tokens from getAttributeEnd() to getContentEnd()");
+            fail("Expected $_expectedTagsIndex tag: ${expected._tag} to have a sequence of tokens from getAttributeEnd() to getContentEnd()");
             break;
           }
         }
         if (actual.attributeEnd.type == ht.TokenType.GT) {
           if (ht.HtmlParser.SELF_CLOSING.contains(actual.tag)) {
-            JUnitTestCase.assertNull(actual.closingTag);
+            expect(actual.closingTag, isNull);
           } else {
-            JUnitTestCase.assertNotNull(actual.closingTag);
+            expect(actual.closingTag, isNotNull);
           }
         } else if (actual.attributeEnd.type == ht.TokenType.SLASH_GT) {
-          JUnitTestCase.assertNull(actual.closingTag);
+          expect(actual.closingTag, isNull);
         } else {
-          JUnitTestCase.fail(
-              "Unexpected attribute end token: ${actual.attributeEnd.lexeme}");
+          fail("Unexpected attribute end token: ${actual.attributeEnd.lexeme}");
         }
         if (expected._content != null && expected._content != actual.content) {
           _errors.add(
-              "Expected ${_expectedTagsIndex} tag: ${expected._tag} to have content '${expected._content}' but found '${actual.content}'");
+              "Expected $_expectedTagsIndex tag: ${expected._tag} to have content '${expected._content}' but found '${actual.content}'");
         }
         if (expected._children.length != actual.tagNodes.length) {
           _errors.add(
-              "Expected ${_expectedTagsIndex} tag: ${expected._tag} to have ${expected._children.length} children but found ${actual.tagNodes.length}");
+              "Expected $_expectedTagsIndex tag: ${expected._tag} to have ${expected._children.length} children but found ${actual.tagNodes.length}");
         } else {
           for (int index = 0; index < expected._children.length; index++) {
             String expectedChildTag = expected._children[index]._tag;
             String actualChildTag = actual.tagNodes[index].tag;
             if (expectedChildTag != actualChildTag) {
               _errors.add(
-                  "Expected ${_expectedTagsIndex} tag: ${expected._tag} child ${index} to have tag: ${expectedChildTag} but found: ${actualChildTag}");
+                  "Expected $_expectedTagsIndex tag: ${expected._tag} child $index to have tag: $expectedChildTag but found: $actualChildTag");
             }
           }
         }
       } else {
-        _errors.add("Visited unexpected tag: ${actualTag}");
+        _errors.add("Visited unexpected tag: $actualTag");
       }
     }
     _validateNode(actual);
@@ -11068,15 +10871,15 @@
   }
   void _validateNode(ht.XmlNode node) {
     if (node.beginToken == null) {
-      _errors.add("No begin token for ${node.runtimeType.toString()}");
+      _errors.add("No begin token for ${node.runtimeType}");
     }
     if (node.endToken == null) {
-      _errors.add("No end token for ${node.runtimeType.toString()}");
+      _errors.add("No end token for ${node.runtimeType}");
     }
     int nodeStart = node.offset;
     int nodeLength = node.length;
     if (nodeStart < 0 || nodeLength < 0) {
-      _errors.add("No source info for ${node.runtimeType.toString()}");
+      _errors.add("No source info for ${node.runtimeType}");
     }
     ht.XmlNode parent = node.parent;
     if (parent != null) {
@@ -11085,11 +10888,11 @@
       int parentEnd = parentStart + parent.length;
       if (nodeStart < parentStart) {
         _errors.add(
-            "Invalid source start (${nodeStart}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+            "Invalid source start ($nodeStart) for ${node.runtimeType} inside ${parent.runtimeType} ($parentStart)");
       }
       if (nodeEnd > parentEnd) {
         _errors.add(
-            "Invalid source end (${nodeEnd}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+            "Invalid source end ($nodeEnd) for ${node.runtimeType} inside ${parent.runtimeType} ($parentStart)");
       }
     }
   }
@@ -11112,18 +10915,18 @@
 
 
 class _AngularTest_findElement extends GeneralizingElementVisitor<Object> {
-  ElementKind kind;
+  final ElementKind kind;
 
-  String name;
+  final String name;
 
-  List<Element> result;
+  Element result;
 
-  _AngularTest_findElement(this.kind, this.name, this.result);
+  _AngularTest_findElement(this.kind, this.name);
 
   @override
   Object visitElement(Element element) {
     if ((kind == null || element.kind == kind) && name == element.name) {
-      result[0] = element;
+      result = element;
     }
     return super.visitElement(element);
   }
@@ -11150,8 +10953,7 @@
   }
   void _validateEmbedded(int scriptIndex, HtmlScriptElement script) {
     if (script is! EmbeddedHtmlScriptElementImpl) {
-      JUnitTestCase.fail(
-          "Expected script ${scriptIndex} to be embedded, but found ${(script != null ? script.runtimeType : "null")}");
+      fail("Expected script $scriptIndex to be embedded, but found ${script != null ? script.runtimeType : "null"}");
     }
     EmbeddedHtmlScriptElementImpl embeddedScript =
         script as EmbeddedHtmlScriptElementImpl;
@@ -11159,21 +10961,17 @@
   }
   void _validateExternal(int scriptIndex, HtmlScriptElement script) {
     if (script is! ExternalHtmlScriptElementImpl) {
-      JUnitTestCase.fail(
-          "Expected script ${scriptIndex} to be external with src=${_expectedExternalScriptName} but found ${(script != null ? script.runtimeType : "null")}");
+      fail("Expected script $scriptIndex to be external with src=$_expectedExternalScriptName but found ${script != null ? script.runtimeType : "null"}");
     }
     ExternalHtmlScriptElementImpl externalScript =
         script as ExternalHtmlScriptElementImpl;
     Source scriptSource = externalScript.scriptSource;
     if (_expectedExternalScriptName == null) {
-      JUnitTestCase.assertNullMsg("script ${scriptIndex}", scriptSource);
+      expect(scriptSource, isNull, reason: "script $scriptIndex");
     } else {
-      JUnitTestCase.assertNotNullMsg("script ${scriptIndex}", scriptSource);
+      expect(scriptSource, isNotNull, reason: "script $scriptIndex");
       String actualExternalScriptName = scriptSource.shortName;
-      JUnitTestCase.assertEqualsMsg(
-          "script ${scriptIndex}",
-          _expectedExternalScriptName,
-          actualExternalScriptName);
+      expect(actualExternalScriptName, _expectedExternalScriptName, reason: "script $scriptIndex");
     }
   }
 }
diff --git a/pkg/analyzer/test/generated/ast_test.dart b/pkg/analyzer/test/generated/ast_test.dart
index 7d19f0c..3a13b38 100644
--- a/pkg/analyzer/test/generated/ast_test.dart
+++ b/pkg/analyzer/test/generated/ast_test.dart
@@ -9,11 +9,10 @@
 
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/java_engine.dart' show Predicate;
 import 'package:analyzer/src/generated/scanner.dart';
 import 'package:analyzer/src/generated/ast.dart';
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'parser_test.dart' show ParserTestCase;
 import 'test_support.dart';
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
@@ -60,30 +59,30 @@
 
 class BreadthFirstVisitorTest extends ParserTestCase {
   void test_it() {
-    String source = EngineTestCase.createSource([
-        "class A {",
-        "  bool get g => true;",
-        "}",
-        "class B {",
-        "  int f() {",
-        "    num q() {",
-        "      return 3;",
-        "    }",
-        "  return q() + 4;",
-        "  }",
-        "}",
-        "A f(var p) {",
-        "  if ((p as A).g) {",
-        "    return p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "}"]);
+    String source = r'''
+class A {
+  bool get g => true;
+}
+class B {
+  int f() {
+    num q() {
+      return 3;
+    }
+  return q() + 4;
+  }
+}
+A f(var p) {
+  if ((p as A).g) {
+    return p;
+  } else {
+    return null;
+  }
+}''';
     CompilationUnit unit = ParserTestCase.parseCompilationUnit(source, []);
     List<AstNode> nodes = new List<AstNode>();
     BreadthFirstVisitor<Object> visitor = new BreadthFirstVisitor_BreadthFirstVisitorTest_testIt(nodes);
     visitor.visitAllNodes(unit);
-    EngineTestCase.assertSizeOfList(59, nodes);
+    expect(nodes, hasLength(59));
     EngineTestCase.assertInstanceOf((obj) => obj is CompilationUnit, CompilationUnit, nodes[0]);
     EngineTestCase.assertInstanceOf((obj) => obj is ClassDeclaration, ClassDeclaration, nodes[2]);
     EngineTestCase.assertInstanceOf((obj) => obj is FunctionDeclaration, FunctionDeclaration, nodes[3]);
@@ -112,10 +111,10 @@
     ConstructorDeclaration aConstructor = AstFactory.constructorDeclaration(AstFactory.identifier3("Test"), "a", AstFactory.formalParameterList([]), initializers);
     ConstructorDeclaration bConstructor = AstFactory.constructorDeclaration(AstFactory.identifier3("Test"), "b", AstFactory.formalParameterList([]), initializers);
     ClassDeclaration clazz = AstFactory.classDeclaration(null, "Test", null, null, null, null, [defaultConstructor, aConstructor, bConstructor]);
-    JUnitTestCase.assertSame(defaultConstructor, clazz.getConstructor(null));
-    JUnitTestCase.assertSame(aConstructor, clazz.getConstructor("a"));
-    JUnitTestCase.assertSame(bConstructor, clazz.getConstructor("b"));
-    JUnitTestCase.assertSame(null, clazz.getConstructor("noSuchConstructor"));
+    expect(clazz.getConstructor(null), same(defaultConstructor));
+    expect(clazz.getConstructor("a"), same(aConstructor));
+    expect(clazz.getConstructor("b"), same(bConstructor));
+    expect(clazz.getConstructor("noSuchConstructor"), same(null));
   }
 
   void test_getField() {
@@ -125,345 +124,345 @@
     ClassDeclaration clazz = AstFactory.classDeclaration(null, "Test", null, null, null, null, [
         AstFactory.fieldDeclaration2(false, null, [aVar]),
         AstFactory.fieldDeclaration2(false, null, [bVar, cVar])]);
-    JUnitTestCase.assertSame(aVar, clazz.getField("a"));
-    JUnitTestCase.assertSame(bVar, clazz.getField("b"));
-    JUnitTestCase.assertSame(cVar, clazz.getField("c"));
-    JUnitTestCase.assertSame(null, clazz.getField("noSuchField"));
+    expect(clazz.getField("a"), same(aVar));
+    expect(clazz.getField("b"), same(bVar));
+    expect(clazz.getField("c"), same(cVar));
+    expect(clazz.getField("noSuchField"), same(null));
   }
 
   void test_getMethod() {
     MethodDeclaration aMethod = AstFactory.methodDeclaration(null, null, null, null, AstFactory.identifier3("a"), AstFactory.formalParameterList([]));
     MethodDeclaration bMethod = AstFactory.methodDeclaration(null, null, null, null, AstFactory.identifier3("b"), AstFactory.formalParameterList([]));
     ClassDeclaration clazz = AstFactory.classDeclaration(null, "Test", null, null, null, null, [aMethod, bMethod]);
-    JUnitTestCase.assertSame(aMethod, clazz.getMethod("a"));
-    JUnitTestCase.assertSame(bMethod, clazz.getMethod("b"));
-    JUnitTestCase.assertSame(null, clazz.getMethod("noSuchMethod"));
+    expect(clazz.getMethod("a"), same(aMethod));
+    expect(clazz.getMethod("b"), same(bMethod));
+    expect(clazz.getMethod("noSuchMethod"), same(null));
   }
 
   void test_isAbstract() {
-    JUnitTestCase.assertFalse(AstFactory.classDeclaration(null, "A", null, null, null, null, []).isAbstract);
-    JUnitTestCase.assertTrue(AstFactory.classDeclaration(Keyword.ABSTRACT, "B", null, null, null, null, []).isAbstract);
+    expect(AstFactory.classDeclaration(null, "A", null, null, null, null, []).isAbstract, isFalse);
+    expect(AstFactory.classDeclaration(Keyword.ABSTRACT, "B", null, null, null, null, []).isAbstract, isTrue);
   }
 }
 
 class ClassTypeAliasTest extends ParserTestCase {
   void test_isAbstract() {
-    JUnitTestCase.assertFalse(AstFactory.classTypeAlias("A", null, null, null, null, null).isAbstract);
-    JUnitTestCase.assertTrue(AstFactory.classTypeAlias("B", null, Keyword.ABSTRACT, null, null, null).isAbstract);
+    expect(AstFactory.classTypeAlias("A", null, null, null, null, null).isAbstract, isFalse);
+    expect(AstFactory.classTypeAlias("B", null, Keyword.ABSTRACT, null, null, null).isAbstract, isTrue);
   }
 }
 
 class ConstantEvaluatorTest extends ParserTestCase {
   void fail_constructor() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_class() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_function() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_static() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_staticMethod() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_topLevel() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void fail_identifier_typeParameter() {
     Object value = _getConstantValue("?");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void test_binary_bitAnd() {
     Object value = _getConstantValue("74 & 42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(74 & 42, value as int);
+    expect(value as int, 74 & 42);
   }
 
   void test_binary_bitOr() {
     Object value = _getConstantValue("74 | 42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(74 | 42, value as int);
+    expect(value as int, 74 | 42);
   }
 
   void test_binary_bitXor() {
     Object value = _getConstantValue("74 ^ 42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(74 ^ 42, value as int);
+    expect(value as int, 74 ^ 42);
   }
 
   void test_binary_divide_double() {
     Object value = _getConstantValue("3.2 / 2.3");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(3.2 / 2.3, value as double);
+    expect(value as double, 3.2 / 2.3);
   }
 
   void test_binary_divide_integer() {
     Object value = _getConstantValue("3 / 2");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(1, value as int);
+    expect(value as int, 1);
   }
 
   void test_binary_equal_boolean() {
     Object value = _getConstantValue("true == false");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_equal_integer() {
     Object value = _getConstantValue("2 == 3");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_equal_invalidLeft() {
     Object value = _getConstantValue("a == 3");
-    JUnitTestCase.assertEquals(ConstantEvaluator.NOT_A_CONSTANT, value);
+    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
   }
 
   void test_binary_equal_invalidRight() {
     Object value = _getConstantValue("2 == a");
-    JUnitTestCase.assertEquals(ConstantEvaluator.NOT_A_CONSTANT, value);
+    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
   }
 
   void test_binary_equal_string() {
     Object value = _getConstantValue("'a' == 'b'");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_greaterThan() {
     Object value = _getConstantValue("2 > 3");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_greaterThanOrEqual() {
     Object value = _getConstantValue("2 >= 3");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_leftShift() {
     Object value = _getConstantValue("16 << 2");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(64, value as int);
+    expect(value as int, 64);
   }
 
   void test_binary_lessThan() {
     Object value = _getConstantValue("2 < 3");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_lessThanOrEqual() {
     Object value = _getConstantValue("2 <= 3");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_logicalAnd() {
     Object value = _getConstantValue("true && false");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_binary_logicalOr() {
     Object value = _getConstantValue("true || false");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_minus_double() {
     Object value = _getConstantValue("3.2 - 2.3");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(3.2 - 2.3, value as double);
+    expect(value as double, 3.2 - 2.3);
   }
 
   void test_binary_minus_integer() {
     Object value = _getConstantValue("3 - 2");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(1, value as int);
+    expect(value as int, 1);
   }
 
   void test_binary_notEqual_boolean() {
     Object value = _getConstantValue("true != false");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_notEqual_integer() {
     Object value = _getConstantValue("2 != 3");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_notEqual_invalidLeft() {
     Object value = _getConstantValue("a != 3");
-    JUnitTestCase.assertEquals(ConstantEvaluator.NOT_A_CONSTANT, value);
+    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
   }
 
   void test_binary_notEqual_invalidRight() {
     Object value = _getConstantValue("2 != a");
-    JUnitTestCase.assertEquals(ConstantEvaluator.NOT_A_CONSTANT, value);
+    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
   }
 
   void test_binary_notEqual_string() {
     Object value = _getConstantValue("'a' != 'b'");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_binary_plus_double() {
     Object value = _getConstantValue("2.3 + 3.2");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(2.3 + 3.2, value as double);
+    expect(value as double, 2.3 + 3.2);
   }
 
   void test_binary_plus_integer() {
     Object value = _getConstantValue("2 + 3");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(5, value as int);
+    expect(value as int, 5);
   }
 
   void test_binary_remainder_double() {
     Object value = _getConstantValue("3.2 % 2.3");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(3.2 % 2.3, value as double);
+    expect(value as double, 3.2 % 2.3);
   }
 
   void test_binary_remainder_integer() {
     Object value = _getConstantValue("8 % 3");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(2, value as int);
+    expect(value as int, 2);
   }
 
   void test_binary_rightShift() {
     Object value = _getConstantValue("64 >> 2");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(16, value as int);
+    expect(value as int, 16);
   }
 
   void test_binary_times_double() {
     Object value = _getConstantValue("2.3 * 3.2");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(2.3 * 3.2, value as double);
+    expect(value as double, 2.3 * 3.2);
   }
 
   void test_binary_times_integer() {
     Object value = _getConstantValue("2 * 3");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(6, value as int);
+    expect(value as int, 6);
   }
 
   void test_binary_truncatingDivide_double() {
     Object value = _getConstantValue("3.2 ~/ 2.3");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(1, value as int);
+    expect(value as int, 1);
   }
 
   void test_binary_truncatingDivide_integer() {
     Object value = _getConstantValue("10 ~/ 3");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(3, value as int);
+    expect(value as int, 3);
   }
 
   void test_literal_boolean_false() {
     Object value = _getConstantValue("false");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_literal_boolean_true() {
     Object value = _getConstantValue("true");
-    JUnitTestCase.assertEquals(true, value);
+    expect(value, true);
   }
 
   void test_literal_list() {
     Object value = _getConstantValue("['a', 'b', 'c']");
     EngineTestCase.assertInstanceOf((obj) => obj is List, List, value);
     List list = value as List;
-    JUnitTestCase.assertEquals(3, list.length);
-    JUnitTestCase.assertEquals("a", list[0]);
-    JUnitTestCase.assertEquals("b", list[1]);
-    JUnitTestCase.assertEquals("c", list[2]);
+    expect(list.length, 3);
+    expect(list[0], "a");
+    expect(list[1], "b");
+    expect(list[2], "c");
   }
 
   void test_literal_map() {
     Object value = _getConstantValue("{'a' : 'm', 'b' : 'n', 'c' : 'o'}");
     EngineTestCase.assertInstanceOf((obj) => obj is Map, Map, value);
     Map map = value as Map;
-    JUnitTestCase.assertEquals(3, map.length);
-    JUnitTestCase.assertEquals("m", map["a"]);
-    JUnitTestCase.assertEquals("n", map["b"]);
-    JUnitTestCase.assertEquals("o", map["c"]);
+    expect(map.length, 3);
+    expect(map["a"], "m");
+    expect(map["b"], "n");
+    expect(map["c"], "o");
   }
 
   void test_literal_null() {
     Object value = _getConstantValue("null");
-    JUnitTestCase.assertEquals(null, value);
+    expect(value, null);
   }
 
   void test_literal_number_double() {
     Object value = _getConstantValue("3.45");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(3.45, value as double);
+    expect(value as double, 3.45);
   }
 
   void test_literal_number_integer() {
     Object value = _getConstantValue("42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(42, value as int);
+    expect(value as int, 42);
   }
 
   void test_literal_string_adjacent() {
     Object value = _getConstantValue("'abc' 'def'");
-    JUnitTestCase.assertEquals("abcdef", value);
+    expect(value, "abcdef");
   }
 
   void test_literal_string_interpolation_invalid() {
     Object value = _getConstantValue("'a\${f()}c'");
-    JUnitTestCase.assertEquals(ConstantEvaluator.NOT_A_CONSTANT, value);
+    expect(value, ConstantEvaluator.NOT_A_CONSTANT);
   }
 
   void test_literal_string_interpolation_valid() {
     Object value = _getConstantValue("'a\${3}c'");
-    JUnitTestCase.assertEquals("a3c", value);
+    expect(value, "a3c");
   }
 
   void test_literal_string_simple() {
     Object value = _getConstantValue("'abc'");
-    JUnitTestCase.assertEquals("abc", value);
+    expect(value, "abc");
   }
 
   void test_parenthesizedExpression() {
     Object value = _getConstantValue("('a')");
-    JUnitTestCase.assertEquals("a", value);
+    expect(value, "a");
   }
 
   void test_unary_bitNot() {
     Object value = _getConstantValue("~42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(~42, value as int);
+    expect(value as int, ~42);
   }
 
   void test_unary_logicalNot() {
     Object value = _getConstantValue("!true");
-    JUnitTestCase.assertEquals(false, value);
+    expect(value, false);
   }
 
   void test_unary_negated_double() {
     Object value = _getConstantValue("-42.3");
     EngineTestCase.assertInstanceOf((obj) => obj is double, double, value);
-    JUnitTestCase.assertEquals(-42.3, value as double);
+    expect(value as double, -42.3);
   }
 
   void test_unary_negated_integer() {
     Object value = _getConstantValue("-42");
     EngineTestCase.assertInstanceOf((obj) => obj is int, int, value);
-    JUnitTestCase.assertEquals(-42, value as int);
+    expect(value as int, -42);
   }
 
   Object _getConstantValue(String source) => ParserTestCase.parseExpression(source, []).accept(new ConstantEvaluator());
@@ -474,84 +473,84 @@
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // a[b] += c
     AstFactory.assignmentExpression(expression, TokenType.PLUS_EQ, AstFactory.identifier3("c"));
-    JUnitTestCase.assertTrue(expression.inGetterContext());
+    expect(expression.inGetterContext(), isTrue);
   }
 
   void test_inGetterContext_assignment_simple_left() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // a[b] = c
     AstFactory.assignmentExpression(expression, TokenType.EQ, AstFactory.identifier3("c"));
-    JUnitTestCase.assertFalse(expression.inGetterContext());
+    expect(expression.inGetterContext(), isFalse);
   }
 
   void test_inGetterContext_nonAssignment() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // a[b] + c
     AstFactory.binaryExpression(expression, TokenType.PLUS, AstFactory.identifier3("c"));
-    JUnitTestCase.assertTrue(expression.inGetterContext());
+    expect(expression.inGetterContext(), isTrue);
   }
 
   void test_inSetterContext_assignment_compound_left() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // a[b] += c
     AstFactory.assignmentExpression(expression, TokenType.PLUS_EQ, AstFactory.identifier3("c"));
-    JUnitTestCase.assertTrue(expression.inSetterContext());
+    expect(expression.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_assignment_compound_right() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // c += a[b]
     AstFactory.assignmentExpression(AstFactory.identifier3("c"), TokenType.PLUS_EQ, expression);
-    JUnitTestCase.assertFalse(expression.inSetterContext());
+    expect(expression.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_assignment_simple_left() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // a[b] = c
     AstFactory.assignmentExpression(expression, TokenType.EQ, AstFactory.identifier3("c"));
-    JUnitTestCase.assertTrue(expression.inSetterContext());
+    expect(expression.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_assignment_simple_right() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // c = a[b]
     AstFactory.assignmentExpression(AstFactory.identifier3("c"), TokenType.EQ, expression);
-    JUnitTestCase.assertFalse(expression.inSetterContext());
+    expect(expression.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_nonAssignment() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     AstFactory.binaryExpression(expression, TokenType.PLUS, AstFactory.identifier3("c"));
     // a[b] + cc
-    JUnitTestCase.assertFalse(expression.inSetterContext());
+    expect(expression.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_postfix() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     AstFactory.postfixExpression(expression, TokenType.PLUS_PLUS);
     // a[b]++
-    JUnitTestCase.assertTrue(expression.inSetterContext());
+    expect(expression.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_prefix_bang() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // !a[b]
     AstFactory.prefixExpression(TokenType.BANG, expression);
-    JUnitTestCase.assertFalse(expression.inSetterContext());
+    expect(expression.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext_prefix_minusMinus() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // --a[b]
     AstFactory.prefixExpression(TokenType.MINUS_MINUS, expression);
-    JUnitTestCase.assertTrue(expression.inSetterContext());
+    expect(expression.inSetterContext(), isTrue);
   }
 
   void test_inSetterContext_prefix_plusPlus() {
     IndexExpression expression = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     // ++a[b]
     AstFactory.prefixExpression(TokenType.PLUS_PLUS, expression);
-    JUnitTestCase.assertTrue(expression.inSetterContext());
+    expect(expression.inSetterContext(), isTrue);
   }
 }
 
@@ -563,27 +562,27 @@
     NodeList<AstNode> list = new NodeList<AstNode>(parent);
     list.insert(0, secondNode);
     list.insert(0, firstNode);
-    EngineTestCase.assertSizeOfList(2, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(secondNode, list[1]);
-    JUnitTestCase.assertSame(parent, firstNode.parent);
-    JUnitTestCase.assertSame(parent, secondNode.parent);
+    expect(list, hasLength(2));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(secondNode));
+    expect(firstNode.parent, same(parent));
+    expect(secondNode.parent, same(parent));
     AstNode thirdNode = AstFactory.booleanLiteral(false);
     list.insert(1, thirdNode);
-    EngineTestCase.assertSizeOfList(3, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(thirdNode, list[1]);
-    JUnitTestCase.assertSame(secondNode, list[2]);
-    JUnitTestCase.assertSame(parent, firstNode.parent);
-    JUnitTestCase.assertSame(parent, secondNode.parent);
-    JUnitTestCase.assertSame(parent, thirdNode.parent);
+    expect(list, hasLength(3));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(thirdNode));
+    expect(list[2], same(secondNode));
+    expect(firstNode.parent, same(parent));
+    expect(secondNode.parent, same(parent));
+    expect(thirdNode.parent, same(parent));
   }
 
   void test_add_negative() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list.insert(-1, AstFactory.booleanLiteral(true));
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -593,7 +592,7 @@
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list.insert(1, AstFactory.booleanLiteral(true));
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -608,49 +607,49 @@
     firstNodes.add(secondNode);
     NodeList<AstNode> list = new NodeList<AstNode>(parent);
     list.addAll(firstNodes);
-    EngineTestCase.assertSizeOfList(2, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(secondNode, list[1]);
-    JUnitTestCase.assertSame(parent, firstNode.parent);
-    JUnitTestCase.assertSame(parent, secondNode.parent);
+    expect(list, hasLength(2));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(secondNode));
+    expect(firstNode.parent, same(parent));
+    expect(secondNode.parent, same(parent));
     List<AstNode> secondNodes = new List<AstNode>();
     AstNode thirdNode = AstFactory.booleanLiteral(true);
     AstNode fourthNode = AstFactory.booleanLiteral(false);
     secondNodes.add(thirdNode);
     secondNodes.add(fourthNode);
     list.addAll(secondNodes);
-    EngineTestCase.assertSizeOfList(4, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(secondNode, list[1]);
-    JUnitTestCase.assertSame(thirdNode, list[2]);
-    JUnitTestCase.assertSame(fourthNode, list[3]);
-    JUnitTestCase.assertSame(parent, firstNode.parent);
-    JUnitTestCase.assertSame(parent, secondNode.parent);
-    JUnitTestCase.assertSame(parent, thirdNode.parent);
-    JUnitTestCase.assertSame(parent, fourthNode.parent);
+    expect(list, hasLength(4));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(secondNode));
+    expect(list[2], same(thirdNode));
+    expect(list[3], same(fourthNode));
+    expect(firstNode.parent, same(parent));
+    expect(secondNode.parent, same(parent));
+    expect(thirdNode.parent, same(parent));
+    expect(fourthNode.parent, same(parent));
   }
 
   void test_create() {
     AstNode owner = AstFactory.argumentList([]);
     NodeList<AstNode> list = NodeList.create(owner);
-    JUnitTestCase.assertNotNull(list);
-    EngineTestCase.assertSizeOfList(0, list);
-    JUnitTestCase.assertSame(owner, list.owner);
+    expect(list, isNotNull);
+    expect(list, hasLength(0));
+    expect(list.owner, same(owner));
   }
 
   void test_creation() {
     AstNode owner = AstFactory.argumentList([]);
     NodeList<AstNode> list = new NodeList<AstNode>(owner);
-    JUnitTestCase.assertNotNull(list);
-    EngineTestCase.assertSizeOfList(0, list);
-    JUnitTestCase.assertSame(owner, list.owner);
+    expect(list, isNotNull);
+    expect(list, hasLength(0));
+    expect(list.owner, same(owner));
   }
 
   void test_get_negative() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list[-1];
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -660,7 +659,7 @@
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list[1];
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -668,26 +667,26 @@
 
   void test_getBeginToken_empty() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
-    JUnitTestCase.assertNull(list.beginToken);
+    expect(list.beginToken, isNull);
   }
 
   void test_getBeginToken_nonEmpty() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     AstNode node = AstFactory.parenthesizedExpression(AstFactory.booleanLiteral(true));
     list.add(node);
-    JUnitTestCase.assertSame(node.beginToken, list.beginToken);
+    expect(list.beginToken, same(node.beginToken));
   }
 
   void test_getEndToken_empty() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
-    JUnitTestCase.assertNull(list.endToken);
+    expect(list.endToken, isNull);
   }
 
   void test_getEndToken_nonEmpty() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     AstNode node = AstFactory.parenthesizedExpression(AstFactory.booleanLiteral(true));
     list.add(node);
-    JUnitTestCase.assertSame(node.endToken, list.endToken);
+    expect(list.endToken, same(node.endToken));
   }
 
   void test_indexOf() {
@@ -701,12 +700,12 @@
     nodes.add(thirdNode);
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     list.addAll(nodes);
-    EngineTestCase.assertSizeOfList(3, list);
-    JUnitTestCase.assertEquals(0, list.indexOf(firstNode));
-    JUnitTestCase.assertEquals(1, list.indexOf(secondNode));
-    JUnitTestCase.assertEquals(2, list.indexOf(thirdNode));
-    JUnitTestCase.assertEquals(-1, list.indexOf(fourthNode));
-    JUnitTestCase.assertEquals(-1, list.indexOf(null));
+    expect(list, hasLength(3));
+    expect(list.indexOf(firstNode), 0);
+    expect(list.indexOf(secondNode), 1);
+    expect(list.indexOf(thirdNode), 2);
+    expect(list.indexOf(fourthNode), -1);
+    expect(list.indexOf(null), -1);
   }
 
   void test_remove() {
@@ -719,18 +718,18 @@
     nodes.add(thirdNode);
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     list.addAll(nodes);
-    EngineTestCase.assertSizeOfList(3, list);
-    JUnitTestCase.assertSame(secondNode, list.removeAt(1));
-    EngineTestCase.assertSizeOfList(2, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(thirdNode, list[1]);
+    expect(list, hasLength(3));
+    expect(list.removeAt(1), same(secondNode));
+    expect(list, hasLength(2));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(thirdNode));
   }
 
   void test_remove_negative() {
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list.removeAt(-1);
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -740,7 +739,7 @@
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       list.removeAt(1);
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -756,13 +755,13 @@
     nodes.add(thirdNode);
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     list.addAll(nodes);
-    EngineTestCase.assertSizeOfList(3, list);
+    expect(list, hasLength(3));
     AstNode fourthNode = AstFactory.integer(0);
-    JUnitTestCase.assertSame(secondNode, javaListSet(list, 1, fourthNode));
-    EngineTestCase.assertSizeOfList(3, list);
-    JUnitTestCase.assertSame(firstNode, list[0]);
-    JUnitTestCase.assertSame(fourthNode, list[1]);
-    JUnitTestCase.assertSame(thirdNode, list[2]);
+    expect(javaListSet(list, 1, fourthNode), same(secondNode));
+    expect(list, hasLength(3));
+    expect(list[0], same(firstNode));
+    expect(list[1], same(fourthNode));
+    expect(list[2], same(thirdNode));
   }
 
   void test_set_negative() {
@@ -770,7 +769,7 @@
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       javaListSet(list, -1, node);
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -781,7 +780,7 @@
     NodeList<AstNode> list = new NodeList<AstNode>(AstFactory.argumentList([]));
     try {
       javaListSet(list, 1, node);
-      JUnitTestCase.fail("Expected IndexOutOfBoundsException");
+      fail("Expected IndexOutOfBoundsException");
     } on RangeError catch (exception) {
       // Expected
     }
@@ -796,7 +795,7 @@
 
   void test_searchWithin_null() {
     NodeLocator locator = new NodeLocator.con2(0, 0);
-    JUnitTestCase.assertNull(locator.searchWithin(null));
+    expect(locator.searchWithin(null), isNull);
   }
 
   void test_searchWithin_offset() {
@@ -805,26 +804,30 @@
   }
 
   void test_searchWithin_offsetAfterNode() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class A {}", "class B {}"]), []);
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class A {}
+class B {}''', []);
     NodeLocator locator = new NodeLocator.con2(1024, 1024);
     AstNode node = locator.searchWithin(unit.declarations[0]);
-    JUnitTestCase.assertNull(node);
+    expect(node, isNull);
   }
 
   void test_searchWithin_offsetBeforeNode() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class A {}", "class B {}"]), []);
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class A {}
+class B {}''', []);
     NodeLocator locator = new NodeLocator.con2(0, 0);
     AstNode node = locator.searchWithin(unit.declarations[1]);
-    JUnitTestCase.assertNull(node);
+    expect(node, isNull);
   }
 
   void _assertLocate(CompilationUnit unit, int start, int end, Predicate<AstNode> predicate, Type expectedClass) {
     NodeLocator locator = new NodeLocator.con2(start, end);
     AstNode node = locator.searchWithin(unit);
-    JUnitTestCase.assertNotNull(node);
-    JUnitTestCase.assertSame(node, locator.foundNode);
-    JUnitTestCase.assertTrueMsg("Node starts after range", node.offset <= start);
-    JUnitTestCase.assertTrueMsg("Node ends before range", node.offset + node.length > end);
+    expect(node, isNotNull);
+    expect(locator.foundNode, same(node));
+    expect(node.offset <= start, isTrue, reason: "Node starts after range");
+    expect(node.offset + node.length > end, isTrue, reason: "Node ends before range");
     EngineTestCase.assertInstanceOf(predicate, expectedClass, node);
   }
 }
@@ -832,93 +835,105 @@
 class SimpleIdentifierTest extends ParserTestCase {
   void test_inDeclarationContext_catch_exception() {
     SimpleIdentifier identifier = AstFactory.catchClause("e", []).exceptionParameter;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_catch_stack() {
     SimpleIdentifier identifier = AstFactory.catchClause2("e", "s", []).stackTraceParameter;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_classDeclaration() {
     SimpleIdentifier identifier = AstFactory.classDeclaration(null, "C", null, null, null, null, []).name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_classTypeAlias() {
     SimpleIdentifier identifier = AstFactory.classTypeAlias("C", null, null, null, null, null).name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_constructorDeclaration() {
     SimpleIdentifier identifier = AstFactory.constructorDeclaration(AstFactory.identifier3("C"), "c", null, null).name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_declaredIdentifier() {
     DeclaredIdentifier declaredIdentifier = AstFactory.declaredIdentifier3("v");
     SimpleIdentifier identifier = declaredIdentifier.identifier;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
+  }
+
+  void test_inDeclarationContext_enumConstantDeclaration() {
+    EnumDeclaration enumDeclaration = AstFactory.enumDeclaration2('MyEnum', ['CONST']);
+    SimpleIdentifier identifier = enumDeclaration.constants[0].name;
+    expect(identifier.inDeclarationContext(), isTrue);
+  }
+
+  void test_inDeclarationContext_enumDeclaration() {
+    EnumDeclaration enumDeclaration = AstFactory.enumDeclaration2('MyEnum', ['A', 'B', 'C']);
+    SimpleIdentifier identifier = enumDeclaration.name;
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_fieldFormalParameter() {
     SimpleIdentifier identifier = AstFactory.fieldFormalParameter2("p").identifier;
-    JUnitTestCase.assertFalse(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isFalse);
   }
 
   void test_inDeclarationContext_functionDeclaration() {
     SimpleIdentifier identifier = AstFactory.functionDeclaration(null, null, "f", null).name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_functionTypeAlias() {
     SimpleIdentifier identifier = AstFactory.typeAlias(null, "F", null, null).name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_label_false() {
     SimpleIdentifier identifier = AstFactory.namedExpression2("l", AstFactory.integer(0)).name.label;
-    JUnitTestCase.assertFalse(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isFalse);
   }
 
   void test_inDeclarationContext_label_true() {
     Label label = AstFactory.label2("l");
     SimpleIdentifier identifier = label.label;
     AstFactory.labeledStatement(AstFactory.list([label]), AstFactory.emptyStatement());
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_methodDeclaration() {
     SimpleIdentifier identifier = AstFactory.identifier3("m");
     AstFactory.methodDeclaration2(null, null, null, null, identifier, null, null);
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_prefix() {
     SimpleIdentifier identifier = AstFactory.importDirective3("uri", "pref", []).prefix;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_simpleFormalParameter() {
     SimpleIdentifier identifier = AstFactory.simpleFormalParameter3("p").identifier;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_typeParameter_bound() {
     TypeName bound = AstFactory.typeName4("A", []);
     SimpleIdentifier identifier = bound.name as SimpleIdentifier;
     AstFactory.typeParameter2("E", bound);
-    JUnitTestCase.assertFalse(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isFalse);
   }
 
   void test_inDeclarationContext_typeParameter_name() {
     SimpleIdentifier identifier = AstFactory.typeParameter("E").name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inDeclarationContext_variableDeclaration() {
     SimpleIdentifier identifier = AstFactory.variableDeclaration("v").name;
-    JUnitTestCase.assertTrue(identifier.inDeclarationContext());
+    expect(identifier.inDeclarationContext(), isTrue);
   }
 
   void test_inGetterContext() {
@@ -927,11 +942,11 @@
         SimpleIdentifier identifier = _createIdentifier(wrapper, assignment);
         if (assignment == AssignmentKind.SIMPLE_LEFT && wrapper != WrapperKind.PREFIXED_LEFT && wrapper != WrapperKind.PROPERTY_LEFT) {
           if (identifier.inGetterContext()) {
-            JUnitTestCase.fail("Expected ${_topMostNode(identifier).toSource()} to be false");
+            fail("Expected ${_topMostNode(identifier).toSource()} to be false");
           }
         } else {
           if (!identifier.inGetterContext()) {
-            JUnitTestCase.fail("Expected ${_topMostNode(identifier).toSource()} to be true");
+            fail("Expected ${_topMostNode(identifier).toSource()} to be true");
           }
         }
       }
@@ -941,8 +956,8 @@
   void test_inReferenceContext() {
     SimpleIdentifier identifier = AstFactory.identifier3("id");
     AstFactory.namedExpression(AstFactory.label(identifier), AstFactory.identifier3("_"));
-    JUnitTestCase.assertFalse(identifier.inGetterContext());
-    JUnitTestCase.assertFalse(identifier.inSetterContext());
+    expect(identifier.inGetterContext(), isFalse);
+    expect(identifier.inSetterContext(), isFalse);
   }
 
   void test_inSetterContext() {
@@ -951,11 +966,11 @@
         SimpleIdentifier identifier = _createIdentifier(wrapper, assignment);
         if (wrapper == WrapperKind.PREFIXED_LEFT || wrapper == WrapperKind.PROPERTY_LEFT || assignment == AssignmentKind.BINARY || assignment == AssignmentKind.COMPOUND_RIGHT || assignment == AssignmentKind.PREFIX_NOT || assignment == AssignmentKind.SIMPLE_RIGHT || assignment == AssignmentKind.NONE) {
           if (identifier.inSetterContext()) {
-            JUnitTestCase.fail("Expected ${_topMostNode(identifier).toSource()} to be false");
+            fail("Expected ${_topMostNode(identifier).toSource()} to be false");
           }
         } else {
           if (!identifier.inSetterContext()) {
-            JUnitTestCase.fail("Expected ${_topMostNode(identifier).toSource()} to be true");
+            fail("Expected ${_topMostNode(identifier).toSource()} to be true");
           }
         }
       }
@@ -965,43 +980,43 @@
   void test_isQualified_inMethodInvocation_noTarget() {
     MethodInvocation invocation = AstFactory.methodInvocation2("test", [AstFactory.identifier3("arg0")]);
     SimpleIdentifier identifier = invocation.methodName;
-    JUnitTestCase.assertFalse(identifier.isQualified);
+    expect(identifier.isQualified, isFalse);
   }
 
   void test_isQualified_inMethodInvocation_withTarget() {
     MethodInvocation invocation = AstFactory.methodInvocation(AstFactory.identifier3("target"), "test", [AstFactory.identifier3("arg0")]);
     SimpleIdentifier identifier = invocation.methodName;
-    JUnitTestCase.assertTrue(identifier.isQualified);
+    expect(identifier.isQualified, isTrue);
   }
 
   void test_isQualified_inPrefixedIdentifier_name() {
     SimpleIdentifier identifier = AstFactory.identifier3("test");
     AstFactory.identifier4("prefix", identifier);
-    JUnitTestCase.assertTrue(identifier.isQualified);
+    expect(identifier.isQualified, isTrue);
   }
 
   void test_isQualified_inPrefixedIdentifier_prefix() {
     SimpleIdentifier identifier = AstFactory.identifier3("test");
     AstFactory.identifier(identifier, AstFactory.identifier3("name"));
-    JUnitTestCase.assertFalse(identifier.isQualified);
+    expect(identifier.isQualified, isFalse);
   }
 
   void test_isQualified_inPropertyAccess_name() {
     SimpleIdentifier identifier = AstFactory.identifier3("test");
     AstFactory.propertyAccess(AstFactory.identifier3("target"), identifier);
-    JUnitTestCase.assertTrue(identifier.isQualified);
+    expect(identifier.isQualified, isTrue);
   }
 
   void test_isQualified_inPropertyAccess_target() {
     SimpleIdentifier identifier = AstFactory.identifier3("test");
     AstFactory.propertyAccess(identifier, AstFactory.identifier3("name"));
-    JUnitTestCase.assertFalse(identifier.isQualified);
+    expect(identifier.isQualified, isFalse);
   }
 
   void test_isQualified_inReturnStatement() {
     SimpleIdentifier identifier = AstFactory.identifier3("test");
     AstFactory.returnStatement2(identifier);
-    JUnitTestCase.assertFalse(identifier.isQualified);
+    expect(identifier.isQualified, isFalse);
   }
 
   SimpleIdentifier _createIdentifier(WrapperKind wrapper, AssignmentKind assignment) {
@@ -1065,25 +1080,25 @@
 
 class SimpleStringLiteralTest extends ParserTestCase {
   void test_contentsOffset() {
-    JUnitTestCase.assertEquals(1, new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").contentsOffset);
-    JUnitTestCase.assertEquals(1, new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").contentsOffset);
-    JUnitTestCase.assertEquals(3, new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").contentsOffset);
-    JUnitTestCase.assertEquals(3, new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").contentsOffset);
-    JUnitTestCase.assertEquals(2, new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").contentsOffset);
-    JUnitTestCase.assertEquals(2, new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").contentsOffset);
-    JUnitTestCase.assertEquals(4, new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").contentsOffset);
-    JUnitTestCase.assertEquals(4, new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").contentsOffset);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").contentsOffset, 1);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").contentsOffset, 1);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").contentsOffset, 3);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").contentsOffset, 3);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").contentsOffset, 2);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").contentsOffset, 2);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").contentsOffset, 4);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").contentsOffset, 4);
   }
 
   void test_contentsEnd() {
-    JUnitTestCase.assertEquals(2, new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").contentsEnd);
-    JUnitTestCase.assertEquals(2, new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").contentsEnd);
-    JUnitTestCase.assertEquals(4, new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").contentsEnd);
-    JUnitTestCase.assertEquals(4, new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").contentsEnd);
-    JUnitTestCase.assertEquals(3, new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").contentsEnd);
-    JUnitTestCase.assertEquals(3, new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").contentsEnd);
-    JUnitTestCase.assertEquals(5, new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").contentsEnd);
-    JUnitTestCase.assertEquals(5, new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").contentsEnd);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").contentsEnd, 2);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").contentsEnd, 2);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").contentsEnd, 4);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").contentsEnd, 4);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").contentsEnd, 3);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").contentsEnd, 3);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").contentsEnd, 5);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").contentsEnd, 5);
   }
 
   void test_isSingleQuoted() {
@@ -1091,25 +1106,25 @@
     {
       var token = TokenFactory.tokenFromString("'X'");
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
     // '''
     {
       var token = TokenFactory.tokenFromString("'''X'''");
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
     // "
     {
       var token = TokenFactory.tokenFromString('"X"');
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
     // """
     {
       var token = TokenFactory.tokenFromString('"""X"""');
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
   }
 
@@ -1118,57 +1133,57 @@
     {
       var token = TokenFactory.tokenFromString("r'X'");
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
     // r'''
     {
       var token = TokenFactory.tokenFromString("r'''X'''");
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
     // r"
     {
       var token = TokenFactory.tokenFromString('r"X"');
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
     // r"""
     {
       var token = TokenFactory.tokenFromString('r"""X"""');
       var node = new SimpleStringLiteral(token, null);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
   }
 
   void test_isMultiline() {
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").isMultiline);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").isMultiline);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").isMultiline);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").isMultiline);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").isMultiline);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").isMultiline);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").isMultiline);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").isMultiline);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").isMultiline, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").isMultiline, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").isMultiline, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").isMultiline, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").isMultiline, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").isMultiline, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").isMultiline, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").isMultiline, isTrue);
   }
 
   void test_isRaw() {
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").isRaw);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").isRaw);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").isRaw);
-    JUnitTestCase.assertFalse(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").isRaw);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").isRaw);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").isRaw);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").isRaw);
-    JUnitTestCase.assertTrue(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").isRaw);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'X'"), "X").isRaw, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"X\""), "X").isRaw, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("\"\"\"X\"\"\""), "X").isRaw, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("'''X'''"), "X").isRaw, isFalse);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'X'"), "X").isRaw, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"X\""), "X").isRaw, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r\"\"\"X\"\"\""), "X").isRaw, isTrue);
+    expect(new SimpleStringLiteral(TokenFactory.tokenFromString("r'''X'''"), "X").isRaw, isTrue);
   }
 
   void test_simple() {
     Token token = TokenFactory.tokenFromString("'value'");
     SimpleStringLiteral stringLiteral = new SimpleStringLiteral(token, "value");
-    JUnitTestCase.assertSame(token, stringLiteral.literal);
-    JUnitTestCase.assertSame(token, stringLiteral.beginToken);
-    JUnitTestCase.assertSame(token, stringLiteral.endToken);
-    JUnitTestCase.assertEquals("value", stringLiteral.value);
+    expect(stringLiteral.literal, same(token));
+    expect(stringLiteral.beginToken, same(token));
+    expect(stringLiteral.endToken, same(token));
+    expect(stringLiteral.value, "value");
   }
 }
 
@@ -1181,8 +1196,8 @@
       var cToken = new StringToken(TokenType.STRING, "ccc'", 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(1, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 1);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
     // '''a${bb}ccc'''
     {
@@ -1190,8 +1205,8 @@
       var cToken = new StringToken(TokenType.STRING, "ccc'''", 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(3, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 3);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
     // """a${bb}ccc"""
     {
@@ -1199,8 +1214,8 @@
       var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(3, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 3);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
     // r'a${bb}ccc'
     {
@@ -1208,8 +1223,8 @@
       var cToken = new StringToken(TokenType.STRING, "ccc'", 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(2, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 2);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
     // r'''a${bb}ccc'''
     {
@@ -1217,8 +1232,8 @@
       var cToken = new StringToken(TokenType.STRING, "ccc'''", 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(4, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 4);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
     // r"""a${bb}ccc"""
     {
@@ -1226,8 +1241,8 @@
       var cToken = new StringToken(TokenType.STRING, 'ccc"""', 10);
       var cElement = new InterpolationString(cToken, 'ccc');
       StringInterpolation node = AstFactory.string([ae, ae, cElement]);
-      JUnitTestCase.assertEquals(4, node.contentsOffset);
-      JUnitTestCase.assertEquals(10 + 4 - 1, node.contentsEnd);
+      expect(node.contentsOffset, 4);
+      expect(node.contentsEnd, 10 + 4 - 1);
     }
   }
 
@@ -1238,28 +1253,28 @@
       var a = AstFactory.interpolationString("'a", "a");
       var c = AstFactory.interpolationString("ccc'", "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertFalse(node.isMultiline);
+      expect(node.isMultiline, isFalse);
     }
     // '''
     {
       var a = AstFactory.interpolationString("'''a", "a");
       var c = AstFactory.interpolationString("ccc'''", "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertTrue(node.isMultiline);
+      expect(node.isMultiline, isTrue);
     }
     // "
     {
       var a = AstFactory.interpolationString('"a', "a");
       var c = AstFactory.interpolationString('ccc"', "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertFalse(node.isMultiline);
+      expect(node.isMultiline, isFalse);
     }
     // """
     {
       var a = AstFactory.interpolationString('"""a', "a");
       var c = AstFactory.interpolationString('ccc"""', "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertTrue(node.isMultiline);
+      expect(node.isMultiline, isTrue);
     }
   }
 
@@ -1270,34 +1285,34 @@
       var a = AstFactory.interpolationString('"a', "a");
       var c = AstFactory.interpolationString('ccc"', "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
     // """
     {
       var a = AstFactory.interpolationString('"""a', "a");
       var c = AstFactory.interpolationString('ccc"""', "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertFalse(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isFalse);
     }
     // '
     {
       var a = AstFactory.interpolationString("'a", "a");
       var c = AstFactory.interpolationString("ccc'", "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
     // '''
     {
       var a = AstFactory.interpolationString("'''a", "a");
       var c = AstFactory.interpolationString("ccc'''", "ccc");
       StringInterpolation node = AstFactory.string([a, b, c]);
-      JUnitTestCase.assertTrue(node.isSingleQuoted);
+      expect(node.isSingleQuoted, isTrue);
     }
   }
 
   void test_isRaw() {
     StringInterpolation node = AstFactory.string([]);
-    JUnitTestCase.assertFalse(node.isRaw);
+    expect(node.isRaw, isFalse);
   }
 }
 
@@ -2543,7 +2558,7 @@
   void _assertSource(String expectedSource, AstNode node) {
     PrintStringWriter writer = new PrintStringWriter();
     node.accept(new ToSourceVisitor(writer));
-    JUnitTestCase.assertEquals(expectedSource, writer.toString());
+    expect(writer.toString(), expectedSource);
   }
 }
 
@@ -2552,17 +2567,17 @@
     VariableDeclaration varDecl = AstFactory.variableDeclaration("a");
     TopLevelVariableDeclaration decl = AstFactory.topLevelVariableDeclaration2(Keyword.VAR, [varDecl]);
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
-    JUnitTestCase.assertNull(varDecl.documentationComment);
+    expect(varDecl.documentationComment, isNull);
     decl.documentationComment = comment;
-    JUnitTestCase.assertNotNull(varDecl.documentationComment);
-    JUnitTestCase.assertNotNull(decl.documentationComment);
+    expect(varDecl.documentationComment, isNotNull);
+    expect(decl.documentationComment, isNotNull);
   }
 
   void test_getDocumentationComment_onNode() {
     VariableDeclaration decl = AstFactory.variableDeclaration("a");
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     decl.documentationComment = comment;
-    JUnitTestCase.assertNotNull(decl.documentationComment);
+    expect(decl.documentationComment, isNotNull);
   }
 }
 
@@ -2588,7 +2603,7 @@
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(ConstantEvaluatorTest);
   runReflectiveTests(NodeLocatorTest);
   runReflectiveTests(ToSourceVisitorTest);
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 444f03d..c72aea8 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -10,24 +10,24 @@
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:unittest/unittest.dart' as _ut;
 import 'resolver_test.dart';
-import 'test_support.dart';
 import '../reflective_tests.dart';
 
 
 class CompileTimeErrorCodeTest extends ResolverTestCase {
   void fail_compileTimeConstantRaisesException() {
-    Source source = addSource(EngineTestCase.createSource([]));
+    Source source = addSource(r'''
+''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.COMPILE_TIME_CONSTANT_RAISES_EXCEPTION]);
     verify([source]);
   }
 
   void fail_constEvalThrowsException() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  const C();",
-        "}",
-        "f() { return const C(); }"]));
+    Source source = addSource(r'''
+class C {
+  const C();
+}
+f() { return const C(); }''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTION]);
     verify([source]);
@@ -36,12 +36,12 @@
   void fail_invalidIdentifierInAsync_async() {
     // TODO(brianwilkerson) Report this error.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() async {",
-        "    int async;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int async;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
     verify([source]);
@@ -50,12 +50,12 @@
   void fail_invalidIdentifierInAsync_await() {
     // TODO(brianwilkerson) Report this error.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() async {",
-        "    int await;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int await;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
     verify([source]);
@@ -64,23 +64,23 @@
   void fail_invalidIdentifierInAsync_yield() {
     // TODO(brianwilkerson) Report this error.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() async {",
-        "    int yield;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() async {
+    int yield;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_IDENTIFIER_IN_ASYNC]);
     verify([source]);
   }
 
   void fail_mixinDeclaresConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends Object mixin A {}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends Object mixin A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]);
     verify([source]);
@@ -88,39 +88,45 @@
 
   void fail_mixinOfNonClass() {
     // TODO(brianwilkerson) Compare with MIXIN_WITH_NON_CLASS_SUPERCLASS.
-    Source source = addSource(EngineTestCase.createSource(["var A;", "class B extends Object mixin A {}"]));
+    Source source = addSource(r'''
+var A;
+class B extends Object mixin A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]);
     verify([source]);
   }
 
   void fail_objectCannotExtendAnotherClass() {
-    Source source = addSource(EngineTestCase.createSource([]));
+    Source source = addSource(r'''
+''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLASS]);
     verify([source]);
   }
 
   void fail_recursiveCompileTimeConstant() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  final m = const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  final m = const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
     verify([source]);
   }
 
   void fail_recursiveCompileTimeConstant_cycle() {
-    Source source = addSource(EngineTestCase.createSource(["const x = y + 1;", "const y = x + 1;"]));
+    Source source = addSource(r'''
+const x = y + 1;
+const y = x + 1;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT]);
     verify([source]);
   }
 
   void fail_superInitializerInObject() {
-    Source source = addSource(EngineTestCase.createSource([]));
+    Source source = addSource(r'''
+''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT]);
     verify([source]);
@@ -129,7 +135,10 @@
   void fail_yieldEachInNonGenerator_async() {
     // TODO(brianwilkerson) We are currently parsing the yield statement as a binary expression.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async {", "  yield* 0;", "}"]));
+    Source source = addSource(r'''
+f() async {
+  yield* 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
     verify([source]);
@@ -138,7 +147,10 @@
   void fail_yieldEachInNonGenerator_sync() {
     // TODO(brianwilkerson) We are currently parsing the yield statement as a binary expression.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  yield* 0;", "}"]));
+    Source source = addSource(r'''
+f() {
+  yield* 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
     verify([source]);
@@ -147,7 +159,10 @@
   void fail_yieldInNonGenerator_async() {
     // TODO(brianwilkerson) We are currently trying to parse the yield statement as a binary expression.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async {", "  yield 0;", "}"]));
+    Source source = addSource(r'''
+f() async {
+  yield 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.YIELD_IN_NON_GENERATOR]);
     verify([source]);
@@ -156,7 +171,10 @@
   void fail_yieldInNonGenerator_sync() {
     // TODO(brianwilkerson) We are currently trying to parse the yield statement as a binary expression.
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  yield 0;", "}"]));
+    Source source = addSource(r'''
+f() {
+  yield 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.YIELD_EACH_IN_NON_GENERATOR]);
     verify([source]);
@@ -166,30 +184,38 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { ONE }",
-        "String name(E e) {",
-        "  return e._name;",
-        "}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+String name(E e) {
+  return e._name;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.ACCESS_PRIVATE_ENUM_FIELD]);
     // Cannot verify because "_name" cannot be resolved.
   }
 
   void test_ambiguousExport() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "export 'lib1.dart';",
-        "export 'lib2.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';
+export 'lib2.dart';''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.AMBIGUOUS_EXPORT]);
     verify([source]);
   }
 
   void test_asyncForInWrongContext() {
-    Source source = addSource(EngineTestCase.createSource(["f(list) {", "  await for (var e in list) {", "  }", "}"]));
+    Source source = addSource(r'''
+f(list) {
+  await for (var e in list) {
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.ASYNC_FOR_IN_WRONG_CONTEXT]);
     verify([source]);
@@ -197,7 +223,10 @@
 
   void test_awaitInWrongContext_sync() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f(x) {", "  return await x;", "}"]));
+    Source source = addSource(r'''
+f(x) {
+  return await x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
     verify([source]);
@@ -205,186 +234,226 @@
 
   void test_awaitInWrongContext_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f(x) sync* {", "  yield await x;", "}"]));
+    Source source = addSource(r'''
+f(x) sync* {
+  yield await x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.AWAIT_IN_WRONG_CONTEXT]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsMixinName_classTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class B {}", "class as = A with B;"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class as = A with B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsType_formalParameter_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var x;", "  A(static this.x);", "}"]));
+    Source source = addSource(r'''
+class A {
+  var x;
+  A(static this.x);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsType_formalParameter_simple() {
-    Source source = addSource(EngineTestCase.createSource(["f(static x) {", "}"]));
+    Source source = addSource(r'''
+f(static x) {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsType_variableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  typedef x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  typedef x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsTypedefName_functionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["typedef bool as();"]));
+    Source source = addSource("typedef bool as();");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NAME]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsTypeName() {
-    Source source = addSource(EngineTestCase.createSource(["class as {}"]));
+    Source source = addSource("class as {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME]);
     verify([source]);
   }
 
   void test_builtInIdentifierAsTypeParameterName() {
-    Source source = addSource(EngineTestCase.createSource(["class A<as> {}"]));
+    Source source = addSource("class A<as> {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAMETER_NAME]);
     verify([source]);
   }
 
   void test_caseExpressionTypeImplementsEquals() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class IntWrapper {",
-        "  final int value;",
-        "  const IntWrapper(this.value);",
-        "  bool operator ==(IntWrapper x) {",
-        "    return value == x.value;",
-        "  }",
-        "  get hashCode => value;",
-        "}",
-        "",
-        "f(var a) {",
-        "  switch(a) {",
-        "    case(const IntWrapper(1)) : return 1;",
-        "    default: return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class IntWrapper {
+  final int value;
+  const IntWrapper(this.value);
+  bool operator ==(IntWrapper x) {
+    return value == x.value;
+  }
+  get hashCode => value;
+}
+
+f(var a) {
+  switch(a) {
+    case(const IntWrapper(1)) : return 1;
+    default: return 0;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
     verify([source]);
   }
 
   void test_conflictingConstructorNameAndMember_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A.x() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A.x() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_FIELD]);
     verify([source]);
   }
 
   void test_conflictingConstructorNameAndMember_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  const A.x();", "  void x() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.x();
+  void x() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_METHOD]);
     verify([source]);
   }
 
   void test_conflictingGetterAndMethod_field_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int m = 0;",
-        "}",
-        "class B extends A {",
-        "  m() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int m = 0;
+}
+class B extends A {
+  m() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD]);
     verify([source]);
   }
 
   void test_conflictingGetterAndMethod_getter_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get m => 0;",
-        "}",
-        "class B extends A {",
-        "  m() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get m => 0;
+}
+class B extends A {
+  m() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD]);
     verify([source]);
   }
 
   void test_conflictingGetterAndMethod_method_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  int m;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  int m;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER]);
     verify([source]);
   }
 
   void test_conflictingGetterAndMethod_method_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  get m => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  get m => 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndClass() {
-    Source source = addSource(EngineTestCase.createSource(["class T<T> {", "}"]));
+    Source source = addSource(r'''
+class T<T> {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLASS]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndMember_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  var T;", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  var T;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndMember_getter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  get T => null;", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  get T => null;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndMember_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  T() {}", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  T() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndMember_method_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  static T() {}", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  static T() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingTypeVariableAndMember_setter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  set T(x) {}", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  set T(x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEMBER]);
     verify([source]);
@@ -393,102 +462,102 @@
   void test_consistentCaseExpressionTypes_dynamic() {
     // Even though A.S and S have a static type of "dynamic", we should see
     // that they match 'abc', because they are constant strings.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static const S = 'A.S';",
-        "}",
-        "",
-        "const S = 'S';",
-        "",
-        "foo(var p) {",
-        "  switch (p) {",
-        "    case S:",
-        "      break;",
-        "    case A.S:",
-        "      break;",
-        "    case 'abc':",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static const S = 'A.S';
+}
+
+const S = 'S';
+
+foo(var p) {
+  switch (p) {
+    case S:
+      break;
+    case A.S:
+      break;
+    case 'abc':
+      break;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithFieldInitializedByNonConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int i = f();",
-        "  const A();",
-        "}",
-        "int f() {",
-        "  return 3;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int i = f();
+  const A();
+}
+int f() {
+  return 3;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_FIELD_INITIALIZED_BY_NON_CONST]);
     verify([source]);
   }
 
   void test_constConstructorWithFieldInitializedByNonConst_static() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static final int i = f();",
-        "  const A();",
-        "}",
-        "int f() {",
-        "  return 3;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static final int i = f();
+  const A();
+}
+int f() {
+  return 3;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithMixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class M {",
-        "}",
-        "class A extends Object with M {",
-        "  const A();",
-        "}"]));
+    Source source = addSource(r'''
+class M {
+}
+class A extends Object with M {
+  const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN]);
     verify([source]);
   }
 
   void test_constConstructorWithNonConstSuper_explicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A();",
-        "}",
-        "class B extends A {",
-        "  const B(): super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A();
+}
+class B extends A {
+  const B(): super();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER]);
     verify([source]);
   }
 
   void test_constConstructorWithNonConstSuper_implicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A();",
-        "}",
-        "class B extends A {",
-        "  const B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A();
+}
+class B extends A {
+  const B();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER]);
     verify([source]);
   }
 
   void test_constConstructorWithNonFinalField_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "class B extends Object with A {",
-        "  const B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+class B extends Object with A {
+  const B();
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN,
@@ -497,13 +566,13 @@
   }
 
   void test_constConstructorWithNonFinalField_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "class B extends A {",
-        "  const B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+class B extends A {
+  const B();
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD,
@@ -512,7 +581,11 @@
   }
 
   void test_constConstructorWithNonFinalField_this() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  const A();", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD]);
     verify([source]);
@@ -520,28 +593,40 @@
 
   void test_constDeferredClass() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {", "  const A();", "}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "main() {",
-        "  const a.A();",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {
+  const A();
+}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+main() {
+  const a.A();
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
   }
 
   void test_constDeferredClass_namedConstructor() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {", "  const A.b();", "}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "main() {",
-        "  const a.A.b();",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {
+  const A.b();
+}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+main() {
+  const a.A.b();
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_DEFERRED_CLASS]);
   }
 
   void test_constEval_newInstance_constConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  const A();", "}", "const a = new A();"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+const a = new A();''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE]);
     verify([source]);
@@ -550,24 +635,24 @@
   void test_constEval_newInstance_externalFactoryConstConstructor() {
     // We can't evaluate "const A()" because its constructor is external.  But
     // the code is correct--we shouldn't report an error.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  external factory const A();",
-        "}",
-        "const x = const A();"]));
+    Source source = addSource(r'''
+class A {
+  external factory const A();
+}
+const x = const A();''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constEval_propertyExtraction_targetNotConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  m() {}",
-        "}",
-        "final a = const A();",
-        "const C = a.m;"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  m() {}
+}
+final a = const A();
+const C = a.m;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE]);
     verify([source]);
@@ -627,28 +712,28 @@
   }
 
   void test_constEvalTypeBoolNumString_equal() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B {",
-        "  final a;",
-        "  const B(num p) : a = p == const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B {
+  final a;
+  const B(num p) : a = p == const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING]);
     verify([source]);
   }
 
   void test_constEvalTypeBoolNumString_notEqual() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B {",
-        "  final a;",
-        "  const B(String p) : a = p != const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B {
+  final a;
+  const B(String p) : a = p != const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING]);
     verify([source]);
@@ -676,21 +761,28 @@
   }
 
   void test_constFormalParameter_fieldFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var x;", "  A(const this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  var x;
+  A(const this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_FORMAL_PARAMETER]);
     verify([source]);
   }
 
   void test_constFormalParameter_simpleFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource(["f(const x) {}"]));
+    Source source = addSource("f(const x) {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_FORMAL_PARAMETER]);
     verify([source]);
   }
 
   void test_constInitializedWithNonConstValue() {
-    Source source = addSource(EngineTestCase.createSource(["f(p) {", "  const C = p;", "}"]));
+    Source source = addSource(r'''
+f(p) {
+  const C = p;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE]);
     verify([source]);
@@ -712,38 +804,45 @@
 
   void test_constInitializedWithNonConstValueFromDeferredClass() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const V = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "const B = a.V;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const V = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+const B = a.V;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_constInitializedWithNonConstValueFromDeferredClass_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const V = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "const B = a.V + 1;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const V = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+const B = a.V + 1;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_constInstanceField() {
-    Source source = addSource(EngineTestCase.createSource(["class C {", "  const int f = 0;", "}"]));
+    Source source = addSource(r'''
+class C {
+  const int f = 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_INSTANCE_FIELD]);
     verify([source]);
   }
 
   void test_constMapKeyTypeImplementsEquals_direct() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  operator ==(other) => false;",
-        "}",
-        "main() {",
-        "  const {const A() : 0};",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  operator ==(other) => false;
+}
+main() {
+  const {const A() : 0};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
     verify([source]);
@@ -753,134 +852,138 @@
     // Note: static type of B.a is "dynamic", but actual type of the const
     // object is A.  We need to make sure we examine the actual type when
     // deciding whether there is a problem with operator==.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  operator ==(other) => false;",
-        "}",
-        "class B {",
-        "  static const a = const A();",
-        "}",
-        "main() {",
-        "  const {B.a : 0};",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  operator ==(other) => false;
+}
+class B {
+  static const a = const A();
+}
+main() {
+  const {B.a : 0};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
     verify([source]);
   }
 
   void test_constMapKeyTypeImplementsEquals_factory() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A { const factory A() = B; }",
-        "",
-        "class B implements A {",
-        "  const B();",
-        "",
-        "  operator ==(o) => true;",
-        "}",
-        "",
-        "main() {",
-        "  var m = const { const A(): 42 };",
-        "}"]));
+    Source source = addSource(r'''
+class A { const factory A() = B; }
+
+class B implements A {
+  const B();
+
+  operator ==(o) => true;
+}
+
+main() {
+  var m = const { const A(): 42 };
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
     verify([source]);
   }
 
   void test_constMapKeyTypeImplementsEquals_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  operator ==(other) => false;",
-        "}",
-        "class B extends A {",
-        "  const B();",
-        "}",
-        "main() {",
-        "  const {const B() : 0};",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  operator ==(other) => false;
+}
+class B extends A {
+  const B();
+}
+main() {
+  const {const B() : 0};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMPLEMENTS_EQUALS]);
     verify([source]);
   }
 
   void test_constWithInvalidTypeParameters() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "f() { return const A<A>(); }"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+f() { return const A<A>(); }''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_constWithInvalidTypeParameters_tooFew() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<K, V> {",
-        "  const C();",
-        "}",
-        "f(p) {",
-        "  return const C<A>();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<K, V> {
+  const C();
+}
+f(p) {
+  return const C<A>();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_constWithInvalidTypeParameters_tooMany() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<E> {",
-        "  const C();",
-        "}",
-        "f(p) {",
-        "  return const C<A, A>();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<E> {
+  const C();
+}
+f(p) {
+  return const C<A, A>();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_constWithNonConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class T {",
-        "  T(a, b, {c, d}) {}",
-        "}",
-        "f() { return const T(0, 1, c: 2, d: 3); }"]));
+    Source source = addSource(r'''
+class T {
+  T(a, b, {c, d}) {}
+}
+f() { return const T(0, 1, c: 2, d: 3); }''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONST]);
     verify([source]);
   }
 
   void test_constWithNonConstantArgument_annotation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int p);",
-        "}",
-        "var v = 42;",
-        "@A(v)",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(int p);
+}
+var v = 42;
+@A(v)
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT]);
     verify([source]);
   }
 
   void test_constWithNonConstantArgument_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(a);",
-        "}",
-        "f(p) { return const A(p); }"]));
+    Source source = addSource(r'''
+class A {
+  const A(a);
+}
+f(p) { return const A(p); }''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT]);
     verify([source]);
   }
 
   void test_constWithNonType() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "f() {", "  return const A();", "}"]));
+    Source source = addSource(r'''
+int A;
+f() {
+  return const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_TYPE]);
     verify([source]);
@@ -888,11 +991,11 @@
 
   void test_constWithNonType_fromLibrary() {
     Source source1 = addNamedSource("lib.dart", "");
-    Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([
-        "import 'lib.dart' as lib;",
-        "void f() {",
-        "  const lib.A();",
-        "}"]));
+    Source source2 = addNamedSource("lib2.dart", r'''
+import 'lib.dart' as lib;
+void f() {
+  const lib.A();
+}''');
     resolve(source1);
     resolve(source2);
     assertErrors(source2, [CompileTimeErrorCode.CONST_WITH_NON_TYPE]);
@@ -900,11 +1003,11 @@
   }
 
   void test_constWithTypeParameters_direct() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  static const V = const A<T>();",
-        "  const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  static const V = const A<T>();
+  const A();
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS,
@@ -913,11 +1016,11 @@
   }
 
   void test_constWithTypeParameters_indirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  static const V = const A<List<T>>();",
-        "  const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  static const V = const A<List<T>>();
+  const A();
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS,
@@ -926,68 +1029,72 @@
   }
 
   void test_constWithUndefinedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "f() {",
-        "  return const A.noSuchConstructor();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+f() {
+  return const A.noSuchConstructor();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]);
     // no verify(), 'noSuchConstructor' is not resolved
   }
 
   void test_constWithUndefinedConstructorDefault() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.name();",
-        "}",
-        "f() {",
-        "  return const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.name();
+}
+f() {
+  return const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["typedef F([x = 0]);"]));
+    Source source = addSource("typedef F([x = 0]);");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_ALIAS]);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypedParameter_named() {
-    Source source = addSource(EngineTestCase.createSource(["f(g({p: null})) {}"]));
+    Source source = addSource("f(g({p: null})) {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER]);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypedParameter_optional() {
-    Source source = addSource(EngineTestCase.createSource(["f(g([p = null])) {}"]));
+    Source source = addSource("f(g([p = null])) {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_PARAMETER]);
     verify([source]);
   }
 
   void test_defaultValueInRedirectingFactoryConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A([int x = 0]) = B;",
-        "}",
-        "",
-        "class B implements A {",
-        "  B([int x = 1]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A([int x = 0]) = B;
+}
+
+class B implements A {
+  B([int x = 1]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACTORY_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_duplicateConstructorName_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A.a() {}", "  A.a() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A.a() {}
+  A.a() {}
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_NAME,
@@ -996,7 +1103,11 @@
   }
 
   void test_duplicateConstructorName_unnamed() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {}", "  A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+  A() {}
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_DEFAULT,
@@ -1005,164 +1116,202 @@
   }
 
   void test_duplicateDefinition() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  int m = 0;", "  m(a) {}", "}"]));
+    Source source = addSource(r'''
+f() {
+  int m = 0;
+  m(a) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_acrossLibraries() {
-    Source librarySource = addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "", "part 'a.dart';", "part 'b.dart';"]));
-    Source sourceA = addNamedSource("/a.dart", EngineTestCase.createSource(["part of lib;", "", "class A {}"]));
-    Source sourceB = addNamedSource("/b.dart", EngineTestCase.createSource(["part of lib;", "", "class A {}"]));
+    Source librarySource = addNamedSource("/lib.dart", r'''
+library lib;
+
+part 'a.dart';
+part 'b.dart';''');
+    Source sourceA = addNamedSource("/a.dart", r'''
+part of lib;
+
+class A {}''');
+    Source sourceB = addNamedSource("/b.dart", r'''
+part of lib;
+
+class A {}''');
     resolve(librarySource);
     assertErrors(sourceB, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([librarySource, sourceA, sourceB]);
   }
 
   void test_duplicateDefinition_classMembers_fields() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int a;", "  int a;", "}"]));
+    Source source = addSource(r'''
+class A {
+  int a;
+  int a;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_classMembers_fields_oneStatic() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  static int x;", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  static int x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_classMembers_methods() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m() {}", "  m() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+  m() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_localFields() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {",
-        "    int a;",
-        "    int a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {
+    int a;
+    int a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_parameterWithFunctionName_local() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  f(f) {}", "}"]));
+    Source source = addSource(r'''
+main() {
+  f(f) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinition_parameterWithFunctionName_topLevel() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  f(f) {}", "}"]));
+    Source source = addSource(r'''
+main() {
+  f(f) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceGetter_staticGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "}",
-        "class B extends A {",
-        "  static int get x => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+}
+class B extends A {
+  static int get x => 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceGetterAbstract_staticGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int get x;",
-        "}",
-        "class B extends A {",
-        "  static int get x => 0;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int get x;
+}
+class B extends A {
+  static int get x => 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceMethod_staticMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  x() {}",
-        "}",
-        "class B extends A {",
-        "  static x() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  x() {}
+}
+class B extends A {
+  static x() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceMethodAbstract_staticMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  x();",
-        "}",
-        "abstract class B extends A {",
-        "  static x() {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  x();
+}
+abstract class B extends A {
+  static x() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceSetter_staticSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set x(value) {}",
-        "}",
-        "class B extends A {",
-        "  static set x(value) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(value) {}
+}
+class B extends A {
+  static set x(value) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateDefinitionInheritance_instanceSetterAbstract_staticSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  set x(value);",
-        "}",
-        "class B extends A {",
-        "  static set x(value) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  set x(value);
+}
+class B extends A {
+  static set x(value) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]);
     verify([source]);
   }
 
   void test_duplicateNamedArgument() {
-    Source source = addSource(EngineTestCase.createSource(["f({a, b}) {}", "main() {", "  f(a: 1, a: 2);", "}"]));
+    Source source = addSource(r'''
+f({a, b}) {}
+main() {
+  f(a: 1, a: 2);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT]);
     verify([source]);
   }
 
   void test_exportInternalLibrary() {
-    Source source = addSource(EngineTestCase.createSource(["export 'dart:_interceptors';"]));
+    Source source = addSource("export 'dart:_interceptors';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY]);
     verify([source]);
   }
 
   void test_exportOfNonLibrary() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib1.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["part of lib;"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';''');
+    addNamedSource("/lib1.dart", "part of lib;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY]);
     verify([source]);
@@ -1170,25 +1319,29 @@
 
   void test_extendsDeferredClass() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class B extends a.A {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class B extends a.A {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
   }
 
   void test_extendsDeferredClass_classTypeAlias() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class M {}",
-        "class C = a.A with M;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class M {}
+class C = a.A with M;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.EXTENDS_DEFERRED_CLASS]);
   }
 
   void test_extendsDisallowedClass_class_bool() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends bool {}"]));
+    Source source = addSource("class A extends bool {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1197,7 +1350,7 @@
   }
 
   void test_extendsDisallowedClass_class_double() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends double {}"]));
+    Source source = addSource("class A extends double {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1206,7 +1359,7 @@
   }
 
   void test_extendsDisallowedClass_class_int() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends int {}"]));
+    Source source = addSource("class A extends int {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1215,7 +1368,7 @@
   }
 
   void test_extendsDisallowedClass_class_Null() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Null {}"]));
+    Source source = addSource("class A extends Null {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1224,7 +1377,7 @@
   }
 
   void test_extendsDisallowedClass_class_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends num {}"]));
+    Source source = addSource("class A extends num {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1233,7 +1386,7 @@
   }
 
   void test_extendsDisallowedClass_class_String() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends String {}"]));
+    Source source = addSource("class A extends String {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS,
@@ -1242,42 +1395,54 @@
   }
 
   void test_extendsDisallowedClass_classTypeAlias_bool() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = bool with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = bool with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_extendsDisallowedClass_classTypeAlias_double() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = double with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = double with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_extendsDisallowedClass_classTypeAlias_int() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = int with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = int with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_extendsDisallowedClass_classTypeAlias_Null() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = Null with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = Null with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_extendsDisallowedClass_classTypeAlias_num() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = num with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = num with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_extendsDisallowedClass_classTypeAlias_String() {
-    Source source = addSource(EngineTestCase.createSource(["class M {}", "class C = String with M;"]));
+    Source source = addSource(r'''
+class M {}
+class C = String with M;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS]);
     verify([source]);
@@ -1287,65 +1452,73 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource(["enum E { ONE }", "class A extends E {}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+class A extends E {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_ENUM]);
     verify([source]);
   }
 
   void test_extendsNonClass_class() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B extends A {}"]));
+    Source source = addSource(r'''
+int A;
+class B extends A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_NON_CLASS]);
     verify([source]);
   }
 
   void test_extendsNonClass_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["class B extends dynamic {}"]));
+    Source source = addSource("class B extends dynamic {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTENDS_NON_CLASS]);
     verify([source]);
   }
 
   void test_extraPositionalArguments_const() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "main() {",
-        "  const A(0);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+main() {
+  const A(0);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]);
     verify([source]);
   }
 
   void test_extraPositionalArguments_const_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B extends A {",
-        "  const B() : super(0);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B extends A {
+  const B() : super(0);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]);
     verify([source]);
   }
 
   void test_fieldInitializedByMultipleInitializers() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A() : x = 0, x = 1 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A() : x = 0, x = 1 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS]);
     verify([source]);
   }
 
   void test_fieldInitializedByMultipleInitializers_multipleInits() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  A() : x = 0, x = 1, x = 2 {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A() : x = 0, x = 1, x = 2 {}
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS,
@@ -1354,12 +1527,12 @@
   }
 
   void test_fieldInitializedByMultipleInitializers_multipleNames() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  int y;",
-        "  A() : x = 0, x = 1, y = 0, y = 1 {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  int y;
+  A() : x = 0, x = 1, y = 0, y = 1 {}
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS,
@@ -1368,14 +1541,22 @@
   }
 
   void test_fieldInitializedInParameterAndInitializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A(this.x) : x = 1 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A(this.x) : x = 1 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER]);
     verify([source]);
   }
 
   void test_fieldInitializerFactoryConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  factory A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  factory A(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRUCTOR]);
     verify([source]);
@@ -1383,7 +1564,11 @@
 
   void test_fieldInitializerOutsideConstructor() {
     // TODO(brianwilkerson) Fix the duplicate error messages.
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  m(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  m(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [
         ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
@@ -1392,50 +1577,58 @@
   }
 
   void test_fieldInitializerOutsideConstructor_defaultParameter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  m([this.x]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  m([this.x]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_fieldInitializerRedirectingConstructor_afterRedirection() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  A.named() {}",
-        "  A() : this.named(), x = 42;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A.named() {}
+  A() : this.named(), x = 42;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_fieldInitializerRedirectingConstructor_beforeRedirection() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  A.named() {}",
-        "  A() : x = 42, this.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A.named() {}
+  A() : x = 42, this.named();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_fieldInitializingFormalRedirectingConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  A.named() {}",
-        "  A(this.x) : this.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A.named() {}
+  A(this.x) : this.named();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_finalInitializedMultipleTimes_initializers() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x;", "  A() : x = 0, x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  A() : x = 0, x = 0 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS]);
     verify([source]);
@@ -1450,44 +1643,58 @@
    * FINAL_INITIALIZED_MULTIPLE_TIMES, since it more specific, we use it instead of the broader code
    */
   void test_finalInitializedMultipleTimes_initializingFormal_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x;", "  A(this.x) : x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  A(this.x) : x = 0 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER]);
     verify([source]);
   }
 
   void test_finalInitializedMultipleTimes_initializingFormals() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x;", "  A(this.x, this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  A(this.x, this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES]);
     verify([source]);
   }
 
   void test_finalNotInitialized_instanceField_const_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static const F;", "}"]));
+    Source source = addSource(r'''
+class A {
+  static const F;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_library_const() {
-    Source source = addSource(EngineTestCase.createSource(["const F;"]));
+    Source source = addSource("const F;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_local_const() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  const int x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  const int x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_fromEnvironment_bool_badArgs() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var b1 = const bool.fromEnvironment(1);",
-        "var b2 = const bool.fromEnvironment('x', defaultValue: 1);"]));
+    Source source = addSource(r'''
+var b1 = const bool.fromEnvironment(1);
+var b2 = const bool.fromEnvironment('x', defaultValue: 1);''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
@@ -1501,7 +1708,7 @@
     // The type of the defaultValue needs to be correct even when the default value
     // isn't used (because the variable is defined in the environment).
     analysisContext2.declaredVariables.define("x", "true");
-    Source source = addSource(EngineTestCase.createSource(["var b = const bool.fromEnvironment('x', defaultValue: 1);"]));
+    Source source = addSource("var b = const bool.fromEnvironment('x', defaultValue: 1);");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
@@ -1510,7 +1717,11 @@
   }
 
   void test_getterAndMethodWithSameName() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  x(y) {}", "  get x => 0;", "}"]));
+    Source source = addSource(r'''
+class A {
+  x(y) {}
+  get x => 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME]);
     verify([source]);
@@ -1518,68 +1729,72 @@
 
   void test_implementsDeferredClass() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class B implements a.A {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class B implements a.A {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
   }
 
   void test_implementsDeferredClass_classTypeAlias() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class B {}",
-        "class M {}",
-        "class C = B with M implements a.A;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class B {}
+class M {}
+class C = B with M implements a.A;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.IMPLEMENTS_DEFERRED_CLASS]);
   }
 
   void test_implementsDisallowedClass_class_bool() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements bool {}"]));
+    Source source = addSource("class A implements bool {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_double() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements double {}"]));
+    Source source = addSource("class A implements double {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_int() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements int {}"]));
+    Source source = addSource("class A implements int {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_Null() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements Null {}"]));
+    Source source = addSource("class A implements Null {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements num {}"]));
+    Source source = addSource("class A implements num {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_String() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements String {}"]));
+    Source source = addSource("class A implements String {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_class_String_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements String, num {}"]));
+    Source source = addSource("class A implements String, num {}");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS,
@@ -1588,70 +1803,70 @@
   }
 
   void test_implementsDisallowedClass_classTypeAlias_bool() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements bool;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements bool;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_double() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements double;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements double;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_int() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements int;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements int;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_Null() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements Null;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements Null;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_num() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements num;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements num;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_String() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements String;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements String;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_implementsDisallowedClass_classTypeAlias_String_num() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class C = A with M implements String, num;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class C = A with M implements String, num;''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS,
@@ -1660,7 +1875,7 @@
   }
 
   void test_implementsDynamic() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements dynamic {}"]));
+    Source source = addSource("class A implements dynamic {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DYNAMIC]);
     verify([source]);
@@ -1670,41 +1885,47 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource(["enum E { ONE }", "class A implements E {}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+class A implements E {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_ENUM]);
     verify([source]);
   }
 
   void test_implementsNonClass_class() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B implements A {}"]));
+    Source source = addSource(r'''
+int A;
+class B implements A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]);
     verify([source]);
   }
 
   void test_implementsNonClass_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "int B;",
-        "class C = A with M implements B;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+int B;
+class C = A with M implements B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]);
     verify([source]);
   }
 
   void test_implementsRepeated() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class B implements A, A {}"]));
+    Source source = addSource(r'''
+class A {}
+class B implements A, A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_REPEATED]);
     verify([source]);
   }
 
   void test_implementsRepeated_3times() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {} class C{}",
-        "class B implements A, A, A, A {}"]));
+    Source source = addSource(r'''
+class A {} class C{}
+class B implements A, A, A, A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.IMPLEMENTS_REPEATED,
@@ -1714,85 +1935,95 @@
   }
 
   void test_implementsSuperClass() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class B extends A implements A {}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A implements A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS]);
     verify([source]);
   }
 
   void test_implementsSuperClass_Object() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements Object {}"]));
+    Source source = addSource("class A implements Object {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f;",
-        "  var f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f;
+  var f;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_field2() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x = 0;", "  final y = x;", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x = 0;
+  final y = x;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_invocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f();",
-        "  f() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f();
+  f() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_invocationInStatic() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static var F = m();", "  m() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  static var F = m();
+  m() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_redirectingConstructorInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A(p) {}",
-        "  A.named() : this(f);",
-        "  var f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A(p) {}
+  A.named() : this(f);
+  var f;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_superConstructorInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A(p) {}",
-        "}",
-        "class B extends A {",
-        "  B() : super(f);",
-        "  var f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A(p) {}
+}
+class B extends A {
+  B() : super(f);
+  var f;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_importInternalLibrary() {
-    Source source = addSource(EngineTestCase.createSource(["import 'dart:_interceptors';"]));
+    Source source = addSource("import 'dart:_interceptors';");
     resolve(source);
     // Note, in these error cases we may generate an UNUSED_IMPORT hint, while we could prevent
     // the hint from being generated by testing the import directive for the error, this is such a
@@ -1805,7 +2036,7 @@
   }
 
   void test_importInternalLibrary_js_helper() {
-    Source source = addSource(EngineTestCase.createSource(["import 'dart:_js_helper';"]));
+    Source source = addSource("import 'dart:_js_helper';");
     resolve(source);
     // Note, in these error cases we may generate an UNUSED_IMPORT hint, while we could prevent
     // the hint from being generated by testing the import directive for the error, this is such a
@@ -1818,23 +2049,28 @@
   }
 
   void test_importOfNonLibrary() {
-    Source source = addSource(EngineTestCase.createSource(["library lib;", "import 'part.dart';", "A a;"]));
-    addNamedSource("/part.dart", EngineTestCase.createSource(["part of lib;", "class A{}"]));
+    Source source = addSource(r'''
+library lib;
+import 'part.dart';
+A a;''');
+    addNamedSource("/part.dart", r'''
+part of lib;
+class A{}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY]);
     verify([source]);
   }
 
   void test_inconsistentCaseExpressionTypes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var p) {",
-        "  switch (p) {",
-        "    case 1:",
-        "      break;",
-        "    case 'a':",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(var p) {
+  switch (p) {
+    case 1:
+      break;
+    case 'a':
+      break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES]);
     verify([source]);
@@ -1843,23 +2079,23 @@
   void test_inconsistentCaseExpressionTypes_dynamic() {
     // Even though A.S and S have a static type of "dynamic", we should see
     // that they fail to match 3, because they are constant strings.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static const S = 'A.S';",
-        "}",
-        "",
-        "const S = 'S';",
-        "",
-        "foo(var p) {",
-        "  switch (p) {",
-        "    case 3:",
-        "      break;",
-        "    case S:",
-        "      break;",
-        "    case A.S:",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static const S = 'A.S';
+}
+
+const S = 'S';
+
+foo(var p) {
+  switch (p) {
+    case 3:
+      break;
+    case S:
+      break;
+    case A.S:
+      break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES,
@@ -1868,17 +2104,17 @@
   }
 
   void test_inconsistentCaseExpressionTypes_repeated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var p) {",
-        "  switch (p) {",
-        "    case 1:",
-        "      break;",
-        "    case 'a':",
-        "      break;",
-        "    case 'b':",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(var p) {
+  switch (p) {
+    case 1:
+      break;
+    case 'a':
+      break;
+    case 'b':
+      break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES,
@@ -1889,133 +2125,154 @@
   void test_initializerForNonExistent_const() {
     // Check that the absence of a matching field doesn't cause a
     // crash during constant evaluation.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A() : x = 'foo';",
-        "}",
-        "A a = const A();"]));
+    Source source = addSource(r'''
+class A {
+  const A() : x = 'foo';
+}
+A a = const A();''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTENT_FIELD]);
   }
 
   void test_initializerForNonExistent_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() : x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() : x = 0 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTENT_FIELD]);
   }
 
   void test_initializerForStaticField() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static int x;", "  A() : x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+  A() : x = 0 {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD]);
     verify([source]);
   }
 
   void test_initializingFormalForNonExistentField() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD]);
     verify([source]);
   }
 
   void test_initializingFormalForNonExistentField_notInEnclosingClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "int x;",
-        "}",
-        "class B extends A {",
-        "  B(this.x) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+int x;
+}
+class B extends A {
+  B(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD]);
     verify([source]);
   }
 
   void test_initializingFormalForNonExistentField_optional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A([this.x]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A([this.x]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD]);
     verify([source]);
   }
 
   void test_initializingFormalForNonExistentField_synthetic() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int get x => 1;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 1;
+  A(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD]);
     verify([source]);
   }
 
   void test_initializingFormalForStaticField() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static int x;", "  A([this.x]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+  A([this.x]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD]);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromFactory_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "  A();",
-        "  factory A.make() {",
-        "    m();",
-        "    return new A();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+  A();
+  factory A.make() {
+    m();
+    return new A();
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_FACTORY]);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromFactory_unnamed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "  A._();",
-        "  factory A() {",
-        "    m();",
-        "    return new A._();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+  A._();
+  factory A() {
+    m();
+    return new A._();
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_FACTORY]);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromStatic_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int f;",
-        "  static foo() {",
-        "    f;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int f;
+  static foo() {
+    f;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC]);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromStatic_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get g => null;",
-        "  static foo() {",
-        "    g;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get g => null;
+  static foo() {
+    g;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC]);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromStatic_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "  static foo() {",
-        "    m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+  static foo() {
+    m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATIC]);
     verify([source]);
@@ -2025,11 +2282,11 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { ONE }",
-        "E e(String name) {",
-        "  return const E();",
-        "}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+E e(String name) {
+  return const E();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANTIATE_ENUM]);
     verify([source]);
@@ -2039,98 +2296,138 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { ONE }",
-        "E e(String name) {",
-        "  return new E();",
-        "}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+E e(String name) {
+  return new E();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INSTANTIATE_ENUM]);
     verify([source]);
   }
 
   void test_invalidAnnotation_getter() {
-    Source source = addSource(EngineTestCase.createSource(["get V => 0;", "@V", "main() {", "}"]));
+    Source source = addSource(r'''
+get V => 0;
+@V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_importWithPrefix_getter() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "get V => 0;"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.V", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+get V => 0;''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_importWithPrefix_notConstantVariable() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "final V = 0;"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.V", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+final V = 0;''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_importWithPrefix_notVariableOrConstructorInvocation() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "typedef V();"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.V", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+typedef V();''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_notConstantVariable() {
-    Source source = addSource(EngineTestCase.createSource(["final V = 0;", "@V", "main() {", "}"]));
+    Source source = addSource(r'''
+final V = 0;
+@V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_notVariableOrConstructorInvocation() {
-    Source source = addSource(EngineTestCase.createSource(["typedef V();", "@V", "main() {", "}"]));
+    Source source = addSource(r'''
+typedef V();
+@V
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_staticMethodReference() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static f() {}",
-        "}",
-        "@A.f",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static f() {}
+}
+@A.f
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
     verify([source]);
   }
 
   void test_invalidAnnotation_unresolved_identifier() {
-    Source source = addSource(EngineTestCase.createSource(["@unresolved", "main() {", "}"]));
+    Source source = addSource(r'''
+@unresolved
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
   }
 
   void test_invalidAnnotation_unresolved_invocation() {
-    Source source = addSource(EngineTestCase.createSource(["@Unresolved()", "main() {", "}"]));
+    Source source = addSource(r'''
+@Unresolved()
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
   }
 
   void test_invalidAnnotation_unresolved_prefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'dart:math' as p;",
-        "@p.unresolved",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+import 'dart:math' as p;
+@p.unresolved
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
   }
 
   void test_invalidAnnotation_useLibraryScope() {
-    Source source = addSource(EngineTestCase.createSource(["@foo", "class A {", "  static const foo = null;", "}"]));
+    Source source = addSource(r'''
+@foo
+class A {
+  static const foo = null;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]);
   }
@@ -2138,59 +2435,77 @@
   void test_invalidAnnotationFromDeferredLibrary() {
     // See test_invalidAnnotation_notConstantVariable
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource([
-        "library lib1;",
-        "class V { const V(); }",
-        "const v = const V();"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "@a.v main () {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+class V { const V(); }
+const v = const V();''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+@a.v main () {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_invalidAnnotationFromDeferredLibrary_constructor() {
     // See test_invalidAnnotation_notConstantVariable
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class C { const C(); }"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "@a.C() main () {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+class C { const C(); }''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+@a.C() main () {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_invalidAnnotationFromDeferredLibrary_namedConstructor() {
     // See test_invalidAnnotation_notConstantVariable
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class C { const C.name(); }"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "@a.C.name() main () {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+class C { const C.name(); }''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+@a.C.name() main () {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.INVALID_ANNOTATION_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_invalidConstructorName_notEnclosingClassName_defined() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  B() : super();", "}", "class B {}"]));
+    Source source = addSource(r'''
+class A {
+  B() : super();
+}
+class B {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME]);
     // no verify() call, "B" is not resolved
   }
 
   void test_invalidConstructorName_notEnclosingClassName_undefined() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  B() : super();", "}"]));
+    Source source = addSource(r'''
+class A {
+  B() : super();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME]);
     // no verify() call, "B" is not resolved
   }
 
   void test_invalidFactoryNameNotAClass_notClassName() {
-    Source source = addSource(EngineTestCase.createSource(["int B;", "class A {", "  factory B() {}", "}"]));
+    Source source = addSource(r'''
+int B;
+class A {
+  factory B() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS]);
     verify([source]);
   }
 
   void test_invalidFactoryNameNotAClass_notEnclosingClassName() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  factory B() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  factory B() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS]);
     // no verify() call, "B" is not resolved
@@ -2198,7 +2513,10 @@
 
   void test_invalidModifierOnConstructor_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() async {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() async {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR]);
     verify([source]);
@@ -2206,7 +2524,10 @@
 
   void test_invalidModifierOnConstructor_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() async* {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() async* {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR]);
     verify([source]);
@@ -2214,7 +2535,10 @@
 
   void test_invalidModifierOnConstructor_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() sync* {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() sync* {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_CONSTRUCTOR]);
     verify([source]);
@@ -2222,7 +2546,10 @@
 
   void test_invalidModifierOnSetter_member_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(v) async {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(v) async {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
@@ -2230,7 +2557,10 @@
 
   void test_invalidModifierOnSetter_member_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(v) async* {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(v) async* {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
@@ -2238,7 +2568,10 @@
 
   void test_invalidModifierOnSetter_member_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(v) sync* {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(v) sync* {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
@@ -2246,7 +2579,7 @@
 
   void test_invalidModifierOnSetter_topLevel_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["set x(v) async {}"]));
+    Source source = addSource("set x(v) async {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
@@ -2254,7 +2587,7 @@
 
   void test_invalidModifierOnSetter_topLevel_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["set x(v) async* {}"]));
+    Source source = addSource("set x(v) async* {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
@@ -2262,55 +2595,71 @@
 
   void test_invalidModifierOnSetter_topLevel_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["set x(v) sync* {}"]));
+    Source source = addSource("set x(v) sync* {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_factoryConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  factory A() { return this; }", "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() { return this; }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_instanceVariableInitializer_inConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var f;", "  A() : f = this;", "}"]));
+    Source source = addSource(r'''
+class A {
+  var f;
+  A() : f = this;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_instanceVariableInitializer_inDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var f = this;", "}"]));
+    Source source = addSource(r'''
+class A {
+  var f = this;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_staticMethod() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static m() { return this; }", "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() { return this; }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_staticVariableInitializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static A f = this;", "}"]));
+    Source source = addSource(r'''
+class A {
+  static A f = this;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_superInitializer() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A(var x) {}",
-        "}",
-        "class B extends A {",
-        "  B() : super(this);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A(var x) {}
+}
+class B extends A {
+  B() : super(this);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]);
     verify([source]);
@@ -2331,103 +2680,112 @@
   }
 
   void test_invalidTypeArgumentInConstList() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  m() {",
-        "    return const <E>[];",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  m() {
+    return const <E>[];
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LIST]);
     verify([source]);
   }
 
   void test_invalidTypeArgumentInConstMap() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  m() {",
-        "    return const <String, E>{};",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  m() {
+    return const <String, E>{};
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MAP]);
     verify([source]);
   }
 
   void test_invalidUri_export() {
-    Source source = addSource(EngineTestCase.createSource(["export 'ht:';"]));
+    Source source = addSource("export 'ht:';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_URI]);
   }
 
   void test_invalidUri_import() {
-    Source source = addSource(EngineTestCase.createSource(["import 'ht:';"]));
+    Source source = addSource("import 'ht:';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_URI]);
   }
 
   void test_invalidUri_part() {
-    Source source = addSource(EngineTestCase.createSource(["part 'ht:';"]));
+    Source source = addSource("part 'ht:';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.INVALID_URI]);
   }
 
   void test_labelInOuterScope() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m(int i) {",
-        "    l: while (i > 0) {",
-        "      void f() {",
-        "        break l;",
-        "      };",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m(int i) {
+    l: while (i > 0) {
+      void f() {
+        break l;
+      };
+    }
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE]);
     // We cannot verify resolution with unresolvable labels
   }
 
   void test_labelUndefined_break() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  x: while (true) {",
-        "    break y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  x: while (true) {
+    break y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.LABEL_UNDEFINED]);
     // We cannot verify resolution with undefined labels
   }
 
   void test_labelUndefined_continue() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  x: while (true) {",
-        "    continue y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  x: while (true) {
+    continue y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.LABEL_UNDEFINED]);
     // We cannot verify resolution with undefined labels
   }
 
   void test_memberWithClassName_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int A = 0;", "}"]));
+    Source source = addSource(r'''
+class A {
+  int A = 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]);
     verify([source]);
   }
 
   void test_memberWithClassName_field2() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int z, A, b = 0;", "}"]));
+    Source source = addSource(r'''
+class A {
+  int z, A, b = 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]);
     verify([source]);
   }
 
   void test_memberWithClassName_getter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  get A => 0;", "}"]));
+    Source source = addSource(r'''
+class A {
+  get A => 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]);
     verify([source]);
@@ -2438,7 +2796,11 @@
   }
 
   void test_methodAndGetterWithSameName() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  get x => 0;", "  x(y) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  get x => 0;
+  x(y) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME]);
     verify([source]);
@@ -2448,15 +2810,15 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { ONE, TWO, THREE, FOUR }",
-        "bool odd(E e) {",
-        "  switch (e) {",
-        "    case E.ONE:",
-        "    case E.THREE: return true;",
-        "  }",
-        "  return false;",
-        "}"]));
+    Source source = addSource(r'''
+enum E { ONE, TWO, THREE, FOUR }
+bool odd(E e) {
+  switch (e) {
+    case E.ONE:
+    case E.THREE: return true;
+  }
+  return false;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
@@ -2465,18 +2827,22 @@
   }
 
   void test_mixinDeclaresConstructor_classDeclaration() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends Object with A {}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends Object with A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_mixinDeclaresConstructor_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {}", "}", "class B = Object with A;"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B = Object with A;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]);
     verify([source]);
@@ -2484,149 +2850,167 @@
 
   void test_mixinDeferredClass() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class B extends Object with a.A {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class B extends Object with a.A {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
   }
 
   void test_mixinDeferredClass_classTypeAlias() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class B {}",
-        "class C = B with a.A;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class B {}
+class C = B with a.A;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.MIXIN_DEFERRED_CLASS]);
   }
 
   void test_mixinInheritsFromNotObject_classDeclaration_extends() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class C extends Object with B {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]);
     verify([source]);
   }
 
   void test_mixinInheritsFromNotObject_classDeclaration_with() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends Object with A {}",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends Object with A {}
+class C extends Object with B {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]);
     verify([source]);
   }
 
   void test_mixinInheritsFromNotObject_typeAlias_extends() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class C = Object with B;"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class C = Object with B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]);
     verify([source]);
   }
 
   void test_mixinInheritsFromNotObject_typeAlias_with() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends Object with A {}",
-        "class C = Object with B;"]));
+    Source source = addSource(r'''
+class A {}
+class B extends Object with A {}
+class C = Object with B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_bool() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with bool {}"]));
+    Source source = addSource("class A extends Object with bool {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_double() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with double {}"]));
+    Source source = addSource("class A extends Object with double {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_int() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with int {}"]));
+    Source source = addSource("class A extends Object with int {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_Null() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with Null {}"]));
+    Source source = addSource("class A extends Object with Null {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with num {}"]));
+    Source source = addSource("class A extends Object with num {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_class_String() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends Object with String {}"]));
+    Source source = addSource("class A extends Object with String {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_bool() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with bool;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with bool;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_double() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with double;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with double;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_int() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with int;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with int;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_Null() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with Null;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with Null;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with num;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with num;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_String() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with String;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with String;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfDisallowedClass_classTypeAlias_String_num() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class C = A with String, num;"]));
+    Source source = addSource(r'''
+class A {}
+class C = A with String, num;''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS,
@@ -2638,69 +3022,82 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource(["enum E { ONE }", "class A extends Object with E {}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+class A extends Object with E {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_ENUM]);
     verify([source]);
   }
 
   void test_mixinOfNonClass_class() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B extends Object with A {}"]));
+    Source source = addSource(r'''
+int A;
+class B extends Object with A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]);
     verify([source]);
   }
 
   void test_mixinOfNonClass_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "int B;", "class C = A with B;"]));
+    Source source = addSource(r'''
+class A {}
+int B;
+class C = A with B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]);
     verify([source]);
   }
 
   void test_mixinReferencesSuper() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  toString() => super.toString();",
-        "}",
-        "class B extends Object with A {}"]));
+    Source source = addSource(r'''
+class A {
+  toString() => super.toString();
+}
+class B extends Object with A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_REFERENCES_SUPER]);
     verify([source]);
   }
 
   void test_mixinWithNonClassSuperclass_class() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B {}", "class C extends A with B {}"]));
+    Source source = addSource(r'''
+int A;
+class B {}
+class C extends A with B {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS]);
     verify([source]);
   }
 
   void test_mixinWithNonClassSuperclass_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B {}", "class C = A with B;"]));
+    Source source = addSource(r'''
+int A;
+class B {}
+class C = A with B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS]);
     verify([source]);
   }
 
   void test_multipleRedirectingConstructorInvocations() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() : this.a(), this.b();",
-        "  A.a() {}",
-        "  A.b() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() : this.a(), this.b();
+  A.a() {}
+  A.b() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_INVOCATIONS]);
     verify([source]);
   }
 
   void test_multipleSuperInitializers() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  B() : super(), super() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  B() : super(), super() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS]);
     verify([source]);
@@ -2709,7 +3106,7 @@
   void test_nativeClauseInNonSDKCode() {
     // TODO(jwren) Move this test somewhere else: This test verifies a parser error code is generated
     // through the ErrorVerifier, it is not a CompileTimeErrorCode.
-    Source source = addSource(EngineTestCase.createSource(["class A native 'string' {}"]));
+    Source source = addSource("class A native 'string' {}");
     resolve(source);
     assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]);
     verify([source]);
@@ -2718,7 +3115,7 @@
   void test_nativeFunctionBodyInNonSDKCode_function() {
     // TODO(jwren) Move this test somewhere else: This test verifies a parser error code is generated
     // through the ErrorVerifier, it is not a CompileTimeErrorCode.
-    Source source = addSource(EngineTestCase.createSource(["int m(a) native 'string';"]));
+    Source source = addSource("int m(a) native 'string';");
     resolve(source);
     assertErrors(source, [ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE]);
     verify([source]);
@@ -2727,103 +3124,145 @@
   void test_nativeFunctionBodyInNonSDKCode_method() {
     // TODO(jwren) Move this test somewhere else: This test verifies a parser error code is generated
     // through the ErrorVerifier, it is not a CompileTimeErrorCode.
-    Source source = addSource(EngineTestCase.createSource(["class A{", "  static int m(a) native 'string';", "}"]));
+    Source source = addSource(r'''
+class A{
+  static int m(a) native 'string';
+}''');
     resolve(source);
     assertErrors(source, [ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE]);
     verify([source]);
   }
 
   void test_noAnnotationConstructorArguments() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  const A();", "}", "@A", "main() {", "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+@A
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMENTS]);
     verify([source]);
   }
 
   void test_noDefaultSuperConstructorExplicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A(p);",
-        "}",
-        "class B extends A {",
-        "  B() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A(p);
+}
+class B extends A {
+  B() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPLICIT]);
     verify([source]);
   }
 
   void test_noDefaultSuperConstructorImplicit_superHasParameters() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A(p);", "}", "class B extends A {", "}"]));
+    Source source = addSource(r'''
+class A {
+  A(p);
+}
+class B extends A {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]);
     verify([source]);
   }
 
   void test_noDefaultSuperConstructorImplicit_superOnlyNamed() {
-    Source source = addSource(EngineTestCase.createSource(["class A { A.named() {} }", "class B extends A {}"]));
+    Source source = addSource(r'''
+class A { A.named() {} }
+class B extends A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]);
     verify([source]);
   }
 
   void test_nonConstantAnnotationConstructor_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.fromInt() {}",
-        "}",
-        "@A.fromInt()",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.fromInt() {}
+}
+@A.fromInt()
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_nonConstantAnnotationConstructor_unnamed() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {}", "}", "@A()", "main() {", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+@A()
+main() {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_function_named() {
-    Source source = addSource(EngineTestCase.createSource(["int y;", "f({x : y}) {}"]));
+    Source source = addSource(r'''
+int y;
+f({x : y}) {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_function_positional() {
-    Source source = addSource(EngineTestCase.createSource(["int y;", "f([x = y]) {}"]));
+    Source source = addSource(r'''
+int y;
+f([x = y]) {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_inConstructor_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int y;", "  A({x : y}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int y;
+  A({x : y}) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_inConstructor_positional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int y;", "  A([x = y]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int y;
+  A([x = y]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_method_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int y;", "  m({x : y}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int y;
+  m({x : y}) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_method_positional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int y;", "  m([x = y]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int y;
+  m([x = y]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]);
     verify([source]);
@@ -2831,30 +3270,34 @@
 
   void test_nonConstantDefaultValueFromDeferredLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const V = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f({x : a.V}) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const V = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f({x : a.V}) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstantDefaultValueFromDeferredLibrary_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const V = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f({x : a.V + 1}) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const V = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f({x : a.V + 1}) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstCaseExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int p, int q) {",
-        "  switch (p) {",
-        "    case 3 + q:",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int p, int q) {
+  switch (p) {
+    case 3 + q:
+      break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION]);
     verify([source]);
@@ -2862,34 +3305,41 @@
 
   void test_nonConstCaseExpressionFromDeferredLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "main (int p) {",
-        "  switch (p) {",
-        "    case a.c:",
-        "      break;",
-        "  }",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+main (int p) {
+  switch (p) {
+    case a.c:
+      break;
+  }
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstCaseExpressionFromDeferredLibrary_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "main (int p) {",
-        "  switch (p) {",
-        "    case a.c + 1:",
-        "      break;",
-        "  }",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+main (int p) {
+  switch (p) {
+    case a.c + 1:
+      break;
+  }
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstListElement() {
-    Source source = addSource(EngineTestCase.createSource(["f(a) {", "  return const [a];", "}"]));
+    Source source = addSource(r'''
+f(a) {
+  return const [a];
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT]);
     verify([source]);
@@ -2897,42 +3347,55 @@
 
   void test_nonConstListElementFromDeferredLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const [a.c];",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const [a.c];
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstListElementFromDeferredLibrary_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const [a.c + 1];",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const [a.c + 1];
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstMapAsExpressionStatement_begin() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  {'a' : 0, 'b' : 1}.length;", "}"]));
+    Source source = addSource(r'''
+f() {
+  {'a' : 0, 'b' : 1}.length;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT]);
     verify([source]);
   }
 
   void test_nonConstMapAsExpressionStatement_only() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  {'a' : 0, 'b' : 1};", "}"]));
+    Source source = addSource(r'''
+f() {
+  {'a' : 0, 'b' : 1};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATEMENT]);
     verify([source]);
   }
 
   void test_nonConstMapKey() {
-    Source source = addSource(EngineTestCase.createSource(["f(a) {", "  return const {a : 0};", "}"]));
+    Source source = addSource(r'''
+f(a) {
+  return const {a : 0};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY]);
     verify([source]);
@@ -2940,28 +3403,35 @@
 
   void test_nonConstMapKeyFromDeferredLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const {a.c : 0};",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const {a.c : 0};
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstMapKeyFromDeferredLibrary_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const {a.c + 1 : 0};",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const {a.c + 1 : 0};
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstMapValue() {
-    Source source = addSource(EngineTestCase.createSource(["f(a) {", "  return const {'a' : a};", "}"]));
+    Source source = addSource(r'''
+f(a) {
+  return const {'a' : a};
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE]);
     verify([source]);
@@ -2969,32 +3439,36 @@
 
   void test_nonConstMapValueFromDeferredLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const {'a' : a.c};",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const {'a' : a.c};
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstMapValueFromDeferredLibrary_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f() {",
-        "  return const {'a' : a.c + 1};",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f() {
+  return const {'a' : a.c + 1};
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstValueInInitializer_binary_notBool_left() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final bool a;",
-        "  const A(String p) : a = p && true;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final bool a;
+  const A(String p) : a = p && true;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL,
@@ -3003,11 +3477,11 @@
   }
 
   void test_nonConstValueInInitializer_binary_notBool_right() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final bool a;",
-        "  const A(String p) : a = true && p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final bool a;
+  const A(String p) : a = true && p;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL,
@@ -3016,11 +3490,11 @@
   }
 
   void test_nonConstValueInInitializer_binary_notInt() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int a;",
-        "  const A(String p) : a = 5 & p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int a;
+  const A(String p) : a = 5 & p;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_INT,
@@ -3029,11 +3503,11 @@
   }
 
   void test_nonConstValueInInitializer_binary_notNum() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int a;",
-        "  const A(String p) : a = 5 + p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int a;
+  const A(String p) : a = 5 + p;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_NUM,
@@ -3042,53 +3516,53 @@
   }
 
   void test_nonConstValueInInitializer_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int C;",
-        "  final int a;",
-        "  const A() : a = C;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int C;
+  final int a;
+  const A() : a = C;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A();",
-        "}",
-        "class B {",
-        "  const B() : a = new A();",
-        "  final a;",
-        "}",
-        "var b = const B();"]));
+    Source source = addSource(r'''
+class A {
+  A();
+}
+class B {
+  const B() : a = new A();
+  final a;
+}
+var b = const B();''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_redirecting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static var C;",
-        "  const A.named(p);",
-        "  const A() : this.named(C);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static var C;
+  const A.named(p);
+  const A() : this.named(C);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER]);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(p);",
-        "}",
-        "class B extends A {",
-        "  static var C;",
-        "  const B() : super(C);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(p);
+}
+class B extends A {
+  static var C;
+  const B() : super(C);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER]);
     verify([source]);
@@ -3096,199 +3570,239 @@
 
   void test_nonConstValueInInitializerFromDeferredLibrary_field() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class A {",
-        "  final int x;",
-        "  const A() : x = a.c;",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class A {
+  final int x;
+  const A() : x = a.c;
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstValueInInitializerFromDeferredLibrary_field_nested() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class A {",
-        "  final int x;",
-        "  const A() : x = a.c + 1;",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class A {
+  final int x;
+  const A() : x = a.c + 1;
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstValueInInitializerFromDeferredLibrary_redirecting() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class A {",
-        "  const A.named(p);",
-        "  const A() : this.named(a.c);",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class A {
+  const A.named(p);
+  const A() : this.named(a.c);
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonConstValueInInitializerFromDeferredLibrary_super() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "const int c = 1;"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class A {",
-        "  const A(p);",
-        "}",
-        "class B extends A {",
-        "  const B() : super(a.c);",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
+        r'''
+library lib1;
+const int c = 1;''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class A {
+  const A(p);
+}
+class B extends A {
+  const B() : super(a.c);
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER_FROM_DEFERRED_LIBRARY]);
   }
 
   void test_nonGenerativeConstructor_explicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A.named() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A.named() {}
+}
+class B extends A {
+  B() : super.named();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_nonGenerativeConstructor_implicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A() {}",
-        "}",
-        "class B extends A {",
-        "  B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() {}
+}
+class B extends A {
+  B();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_nonGenerativeConstructor_implicit2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A() {}",
-        "}",
-        "class B extends A {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() {}
+}
+class B extends A {
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_notEnoughRequiredArguments_const() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int p);",
-        "}",
-        "main() {",
-        "  const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(int p);
+}
+main() {
+  const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_notEnoughRequiredArguments_const_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int p);",
-        "}",
-        "class B extends A {",
-        "  const B() : super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(int p);
+}
+class B extends A {
+  const B() : super();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_optionalParameterInOperator_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator +({p}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator +({p}) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR]);
     verify([source]);
   }
 
   void test_optionalParameterInOperator_positional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator +([p]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator +([p]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR]);
     verify([source]);
   }
 
   void test_partOfNonPart() {
-    Source source = addSource(EngineTestCase.createSource(["library l1;", "part 'l2.dart';"]));
-    addNamedSource("/l2.dart", EngineTestCase.createSource(["library l2;"]));
+    Source source = addSource(r'''
+library l1;
+part 'l2.dart';''');
+    addNamedSource("/l2.dart", "library l2;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PART_OF_NON_PART]);
     verify([source]);
   }
 
   void test_prefixCollidesWithTopLevelMembers_functionTypeAlias() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A{}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "typedef p();", "p.A a;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A{}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+typedef p();
+p.A a;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER]);
     verify([source]);
   }
 
   void test_prefixCollidesWithTopLevelMembers_topLevelFunction() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A{}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "p() {}", "p.A a;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A{}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+p() {}
+p.A a;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER]);
     verify([source]);
   }
 
   void test_prefixCollidesWithTopLevelMembers_topLevelVariable() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A{}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "var p = null;", "p.A a;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A{}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+var p = null;
+p.A a;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER]);
     verify([source]);
   }
 
   void test_prefixCollidesWithTopLevelMembers_type() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A{}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "class p {}", "p.A a;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A{}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+class p {}
+p.A a;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER]);
     verify([source]);
   }
 
   void test_privateOptionalParameter() {
-    Source source = addSource(EngineTestCase.createSource(["f({var _p}) {}"]));
+    Source source = addSource("f({var _p}) {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]);
     verify([source]);
   }
 
   void test_privateOptionalParameter_fieldFormal() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var _p;", "  A({this._p: 0});", "}"]));
+    Source source = addSource(r'''
+class A {
+  var _p;
+  A({this._p: 0});
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]);
     verify([source]);
   }
 
   void test_privateOptionalParameter_withDefaultValue() {
-    Source source = addSource(EngineTestCase.createSource(["f({_p : 0}) {}"]));
+    Source source = addSource("f({_p : 0}) {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]);
     verify([source]);
   }
 
   void test_recursiveConstructorRedirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.a() : this.b();",
-        "  A.b() : this.a();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.a() : this.b();
+  A.b() : this.a();
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT,
@@ -3297,23 +3811,26 @@
   }
 
   void test_recursiveConstructorRedirect_directSelfReference() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() : this();", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() : this();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT]);
     verify([source]);
   }
 
   void test_recursiveFactoryRedirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B {",
-        "  factory A() = C;",
-        "}",
-        "class B implements C {",
-        "  factory B() = A;",
-        "}",
-        "class C implements A {",
-        "  factory C() = B;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B {
+  factory A() = C;
+}
+class B implements C {
+  factory B() = A;
+}
+class C implements A {
+  factory C() = B;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT,
@@ -3326,23 +3843,26 @@
   }
 
   void test_recursiveFactoryRedirect_directSelfReference() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  factory A() = A;", "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() = A;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT]);
     verify([source]);
   }
 
   void test_recursiveFactoryRedirect_generic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> implements B<T> {",
-        "  factory A() = C;",
-        "}",
-        "class B<T> implements C<T> {",
-        "  factory B() = A;",
-        "}",
-        "class C<T> implements A<T> {",
-        "  factory C() = B;",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> implements B<T> {
+  factory A() = C;
+}
+class B<T> implements C<T> {
+  factory B() = A;
+}
+class C<T> implements A<T> {
+  factory C() = B;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT,
@@ -3355,16 +3875,16 @@
   }
 
   void test_recursiveFactoryRedirect_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B {",
-        "  factory A.nameA() = C.nameC;",
-        "}",
-        "class B implements C {",
-        "  factory B.nameB() = A.nameA;",
-        "}",
-        "class C implements A {",
-        "  factory C.nameC() = B.nameB;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B {
+  factory A.nameA() = C.nameC;
+}
+class B implements C {
+  factory B.nameB() = A.nameA;
+}
+class C implements A {
+  factory C.nameC() = B.nameB;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT,
@@ -3381,16 +3901,16 @@
    * not the part of a cycle.
    */
   void test_recursiveFactoryRedirect_outsideCycle() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A() = C;",
-        "}",
-        "class B implements C {",
-        "  factory B() = C;",
-        "}",
-        "class C implements A, B {",
-        "  factory C() = B;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() = C;
+}
+class B implements C {
+  factory B() = C;
+}
+class C implements A, B {
+  factory C() = B;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT,
@@ -3401,7 +3921,9 @@
   }
 
   void test_recursiveInterfaceInheritance_extends() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends B {}", "class B extends A {}"]));
+    Source source = addSource(r'''
+class A extends B {}
+class B extends A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3410,7 +3932,9 @@
   }
 
   void test_recursiveInterfaceInheritance_extends_implements() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends B {}", "class B implements A {}"]));
+    Source source = addSource(r'''
+class A extends B {}
+class B implements A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3419,7 +3943,9 @@
   }
 
   void test_recursiveInterfaceInheritance_implements() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements B {}", "class B implements A {}"]));
+    Source source = addSource(r'''
+class A implements B {}
+class B implements A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3428,9 +3954,9 @@
   }
 
   void test_recursiveInterfaceInheritance_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class M1 = Object with M2;",
-        "class M2 = Object with M1;"]));
+    Source source = addSource(r'''
+class M1 = Object with M2;
+class M2 = Object with M1;''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3439,19 +3965,19 @@
   }
 
   void test_recursiveInterfaceInheritance_tail() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements A {}",
-        "class B implements A {}"]));
+    Source source = addSource(r'''
+abstract class A implements A {}
+class B implements A {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS]);
     verify([source]);
   }
 
   void test_recursiveInterfaceInheritance_tail2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements B {}",
-        "abstract class B implements A {}",
-        "class C implements A {}"]));
+    Source source = addSource(r'''
+abstract class A implements B {}
+abstract class B implements A {}
+class C implements A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3460,11 +3986,11 @@
   }
 
   void test_recursiveInterfaceInheritance_tail3() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements B {}",
-        "abstract class B implements C {}",
-        "abstract class C implements A {}",
-        "class D implements A {}"]));
+    Source source = addSource(r'''
+abstract class A implements B {}
+abstract class B implements C {}
+abstract class C implements A {}
+class D implements A {}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE,
@@ -3474,168 +4000,193 @@
   }
 
   void test_recursiveInterfaceInheritanceBaseCaseExtends() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends A {}"]));
+    Source source = addSource("class A extends A {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_EXTENDS]);
     verify([source]);
   }
 
   void test_recursiveInterfaceInheritanceBaseCaseImplements() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements A {}"]));
+    Source source = addSource("class A implements A {}");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS]);
     verify([source]);
   }
 
   void test_recursiveInterfaceInheritanceBaseCaseImplements_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class B = A with M implements B;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class B = A with M implements B;''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_IMPLEMENTS]);
     verify([source]);
   }
 
   void test_recursiveInterfaceInheritanceBaseCaseWith() {
-    Source source = addSource(EngineTestCase.createSource(["class M = Object with M;"]));
+    Source source = addSource("class M = Object with M;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_BASE_CASE_WITH]);
     verify([source]);
   }
 
   void test_redirectGenerativeToMissingConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() : this.noSuchConstructor();", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() : this.noSuchConstructor();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_redirectGenerativeToNonGenerativeConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() : this.x();",
-        "  factory A.x() => null;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() : this.x();
+  factory A.x() => null;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_GENERATIVE_TO_NON_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_redirectToMissingConstructor_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B{",
-        "  A() {}",
-        "}",
-        "class B {",
-        "  const factory B() = A.name;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B{
+  A() {}
+}
+class B {
+  const factory B() = A.name;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_redirectToMissingConstructor_unnamed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B{",
-        "  A.name() {}",
-        "}",
-        "class B {",
-        "  const factory B() = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B{
+  A.name() {}
+}
+class B {
+  const factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_redirectToNonClass_notAType() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B {", "  const factory B() = A;", "}"]));
+    Source source = addSource(r'''
+int A;
+class B {
+  const factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_NON_CLASS]);
     verify([source]);
   }
 
   void test_redirectToNonClass_undefinedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource(["class B {", "  const factory B() = A;", "}"]));
+    Source source = addSource(r'''
+class B {
+  const factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_NON_CLASS]);
     verify([source]);
   }
 
   void test_redirectToNonConstConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.a() {}",
-        "  const factory A.b() = A.a;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.a() {}
+  const factory A.b() = A.a;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_referencedBeforeDeclaration_hideInBlock_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var v = 1;",
-        "main() {",
-        "  print(v);",
-        "  v() {}",
-        "}",
-        "print(x) {}"]));
+    Source source = addSource(r'''
+var v = 1;
+main() {
+  print(v);
+  v() {}
+}
+print(x) {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   void test_referencedBeforeDeclaration_hideInBlock_local() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var v = 1;",
-        "main() {",
-        "  print(v);",
-        "  var v = 2;",
-        "}",
-        "print(x) {}"]));
+    Source source = addSource(r'''
+var v = 1;
+main() {
+  print(v);
+  var v = 2;
+}
+print(x) {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   void test_referencedBeforeDeclaration_hideInBlock_subBlock() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var v = 1;",
-        "main() {",
-        "  {",
-        "    print(v);",
-        "  }",
-        "  var v = 2;",
-        "}",
-        "print(x) {}"]));
+    Source source = addSource(r'''
+var v = 1;
+main() {
+  {
+    print(v);
+  }
+  var v = 2;
+}
+print(x) {}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   void test_referencedBeforeDeclaration_inInitializer_closure() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  var v = () => v;", "}"]));
+    Source source = addSource(r'''
+main() {
+  var v = () => v;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   void test_referencedBeforeDeclaration_inInitializer_directly() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  var v = v;", "}"]));
+    Source source = addSource(r'''
+main() {
+  var v = v;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]);
   }
 
   void test_rethrowOutsideCatch() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  rethrow;", "}"]));
+    Source source = addSource(r'''
+f() {
+  rethrow;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH]);
     verify([source]);
   }
 
   void test_returnInGenerativeConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() { return 0; }", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() { return 0; }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_returnInGenerativeConstructor_expressionFunctionBody() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() => null;", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() => null;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR]);
     verify([source]);
@@ -3643,7 +4194,10 @@
 
   void test_returnInGenerator_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async* {", "  return 0;", "}"]));
+    Source source = addSource(r'''
+f() async* {
+  return 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATOR]);
     verify([source]);
@@ -3651,7 +4205,10 @@
 
   void test_returnInGenerator_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() sync* {", "  return 0;", "}"]));
+    Source source = addSource(r'''
+f() sync* {
+  return 0;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATOR]);
     verify([source]);
@@ -3659,135 +4216,142 @@
 
   void test_sharedDeferredPrefix() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "f1() {}"]),
-        EngineTestCase.createSource(["library lib2;", "f2() {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as lib;",
-        "import 'lib2.dart' as lib;",
-        "main() { lib.f1(); lib.f2(); }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX]);
+        r'''
+library lib1;
+f1() {}''',
+        r'''
+library lib2;
+f2() {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as lib;
+import 'lib2.dart' as lib;
+main() { lib.f1(); lib.f2(); }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX]);
   }
 
   void test_superInInvalidContext_binaryExpression() {
-    Source source = addSource(EngineTestCase.createSource(["var v = super + 0;"]));
+    Source source = addSource("var v = super + 0;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.v' is not resolved
   }
 
   void test_superInInvalidContext_constructorFieldInitializer() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  var f;",
-        "  B() : f = super.m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  var f;
+  B() : f = super.m();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.m' is not resolved
   }
 
   void test_superInInvalidContext_factoryConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  factory B() {",
-        "    super.m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  factory B() {
+    super.m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.m' is not resolved
   }
 
   void test_superInInvalidContext_instanceVariableInitializer() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "class B extends A {",
-        " var b = super.a;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+class B extends A {
+ var b = super.a;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.a' is not resolved
   }
 
   void test_superInInvalidContext_staticMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static m() {}",
-        "}",
-        "class B extends A {",
-        "  static n() { return super.m(); }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() {}
+}
+class B extends A {
+  static n() { return super.m(); }
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.m' is not resolved
   }
 
   void test_superInInvalidContext_staticVariableInitializer() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int a = 0;",
-        "}",
-        "class B extends A {",
-        "  static int b = super.a;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int a = 0;
+}
+class B extends A {
+  static int b = super.a;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.a' is not resolved
   }
 
   void test_superInInvalidContext_topLevelFunction() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  super.f();", "}"]));
+    Source source = addSource(r'''
+f() {
+  super.f();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.f' is not resolved
   }
 
   void test_superInInvalidContext_topLevelVariableInitializer() {
-    Source source = addSource(EngineTestCase.createSource(["var v = super.y;"]));
+    Source source = addSource("var v = super.y;");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]);
     // no verify(), 'super.y' is not resolved
   }
 
   void test_superInRedirectingConstructor_redirectionSuper() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {",
-        "  B() : this.name(), super();",
-        "  B.name() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {
+  B() : this.name(), super();
+  B.name() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_superInRedirectingConstructor_superRedirection() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {",
-        "  B() : super(), this.name();",
-        "  B.name() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {
+  B() : super(), this.name();
+  B.name() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_symbol_constructor_badArgs() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var s1 = const Symbol('3');",
-        "var s2 = const Symbol(3);",
-        "var s3 = const Symbol();",
-        "var s4 = const Symbol('x', 'y');",
-        "var s5 = const Symbol('x', foo: 'x');"]));
+    Source source = addSource(r'''
+var s1 = const Symbol('3');
+var s2 = const Symbol(3);
+var s3 = const Symbol();
+var s4 = const Symbol('x', 'y');
+var s5 = const Symbol('x', foo: 'x');''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
@@ -3800,12 +4364,12 @@
   }
 
   void test_typeAliasCannotReferenceItself_11987() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef void F(List<G> l);",
-        "typedef void G(List<F> l);",
-        "main() {",
-        "  F foo(G g) => g;",
-        "}"]));
+    Source source = addSource(r'''
+typedef void F(List<G> l);
+typedef void G(List<F> l);
+main() {
+  F foo(G g) => g;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF,
@@ -3815,54 +4379,56 @@
   }
 
   void test_typeAliasCannotReferenceItself_parameterType_named() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A({A a});"]));
+    Source source = addSource("typedef A({A a});");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_parameterType_positional() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A([A a]);"]));
+    Source source = addSource("typedef A([A a]);");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_parameterType_required() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A(A a);"]));
+    Source source = addSource("typedef A(A a);");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_parameterType_typeArgument() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A(List<A> a);"]));
+    Source source = addSource("typedef A(List<A> a);");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_returnClass_withTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef C A();",
-        "typedef A B();",
-        "class C {",
-        "  B a;",
-        "}"]));
+    Source source = addSource(r'''
+typedef C A();
+typedef A B();
+class C {
+  B a;
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_returnType() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A A();"]));
+    Source source = addSource("typedef A A();");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_returnType_indirect() {
-    Source source = addSource(EngineTestCase.createSource(["typedef B A();", "typedef A B();"]));
+    Source source = addSource(r'''
+typedef B A();
+typedef A B();''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF,
@@ -3871,102 +4437,105 @@
   }
 
   void test_typeAliasCannotReferenceItself_typeVariableBounds() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A<T extends A>();"]));
+    Source source = addSource("typedef A<T extends A>();");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_const() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {",
-        "  const G();",
-        "}",
-        "f() { return const G<B>(); }"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {
+  const G();
+}
+f() { return const G<B>(); }''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_undefinedClass_const() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  return const A();", "}"]));
+    Source source = addSource(r'''
+f() {
+  return const A();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CLASS]);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_explicit_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  B() : super.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  B() : super.named();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER]);
     // no verify(), "super.named()" is not resolved
   }
 
   void test_undefinedConstructorInInitializer_explicit_unnamed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.named() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.named() {}
+}
+class B extends A {
+  B() : super();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT]);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_implicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.named() {}",
-        "}",
-        "class B extends A {",
-        "  B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.named() {}
+}
+class B extends A {
+  B();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT]);
     verify([source]);
   }
 
   void test_undefinedNamedParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "main() {",
-        "  const A(p: 0);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+main() {
+  const A(p: 0);
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER]);
     // no verify(), 'p' is not resolved
   }
 
   void test_uriDoesNotExist_export() {
-    Source source = addSource(EngineTestCase.createSource(["export 'unknown.dart';"]));
+    Source source = addSource("export 'unknown.dart';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
   }
 
   void test_uriDoesNotExist_import() {
-    Source source = addSource(EngineTestCase.createSource(["import 'unknown.dart';"]));
+    Source source = addSource("import 'unknown.dart';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
   }
 
   void test_uriDoesNotExist_part() {
-    Source source = addSource(EngineTestCase.createSource(["part 'unknown.dart';"]));
+    Source source = addSource("part 'unknown.dart';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
   }
 
   void test_uriWithInterpolation_constant() {
-    Source source = addSource(EngineTestCase.createSource(["import 'stuff_\$platform.dart';"]));
+    Source source = addSource("import 'stuff_\$platform.dart';");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.URI_WITH_INTERPOLATION,
@@ -3975,14 +4544,19 @@
   }
 
   void test_uriWithInterpolation_nonConstant() {
-    Source source = addSource(EngineTestCase.createSource(["library lib;", "part '\${'a'}.dart';"]));
+    Source source = addSource(r'''
+library lib;
+part '${'a'}.dart';''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.URI_WITH_INTERPOLATION]);
     // We cannot verify resolution with an unresolvable URI: '${'a'}.dart'
   }
 
   void test_wrongNumberOfParametersForOperator_minus() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator -(a, b) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator -(a, b) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS]);
     verify([source]);
@@ -4041,35 +4615,47 @@
   }
 
   void test_wrongNumberOfParametersForSetter_method_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x({p}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x({p}) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER]);
     verify([source]);
   }
 
   void test_wrongNumberOfParametersForSetter_method_optional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x([p]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x([p]) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER]);
     verify([source]);
   }
 
   void test_wrongNumberOfParametersForSetter_method_tooFew() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x() {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER]);
     verify([source]);
   }
 
   void test_wrongNumberOfParametersForSetter_method_tooMany() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(a, b) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(a, b) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER]);
     verify([source]);
   }
 
   void _check_constEvalThrowsException_binary_null(String expr, bool resolved) {
-    Source source = addSource("const C = ${expr};");
+    Source source = addSource("const C = $expr;");
     resolve(source);
     if (resolved) {
       assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]);
@@ -4082,11 +4668,11 @@
   }
 
   void _check_constEvalTypeBool_withParameter_binary(String expr) {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final a;",
-        "  const A(bool p) : a = ${expr};",
-        "}"]));
+    Source source = addSource('''
+class A {
+  final a;
+  const A(bool p) : a = $expr;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL,
@@ -4096,11 +4682,11 @@
   }
 
   void _check_constEvalTypeInt_withParameter_binary(String expr) {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final a;",
-        "  const A(int p) : a = ${expr};",
-        "}"]));
+    Source source = addSource('''
+class A {
+  final a;
+  const A(int p) : a = $expr;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_INT,
@@ -4110,11 +4696,11 @@
   }
 
   void _check_constEvalTypeNum_withParameter_binary(String expr) {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final a;",
-        "  const A(num p) : a = ${expr};",
-        "}"]));
+    Source source = addSource('''
+class A {
+  final a;
+  const A(num p) : a = $expr;
+}''');
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.CONST_EVAL_TYPE_NUM,
@@ -4124,7 +4710,10 @@
   }
 
   void _check_wrongNumberOfParametersForOperator(String name, String parameters) {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator ${name}(${parameters}) {}", "}"]));
+    Source source = addSource('''
+class A {
+  operator $name($parameters) {}
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR]);
     verify([source]);
diff --git a/pkg/analyzer/test/generated/element_test.dart b/pkg/analyzer/test/generated/element_test.dart
index a6c1bf1..7a85c93 100644
--- a/pkg/analyzer/test/generated/element_test.dart
+++ b/pkg/analyzer/test/generated/element_test.dart
@@ -8,12 +8,11 @@
 library engine.element_test;
 
 import 'package:analyzer/src/generated/java_core.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/generated/ast.dart';
 import 'package:analyzer/src/generated/element.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisContext, AnalysisContextImpl;
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'test_support.dart';
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
@@ -25,32 +24,32 @@
 class AngularPropertyKindTest extends EngineTestCase {
   void test_ATTR() {
     AngularPropertyKind kind = AngularPropertyKind.ATTR;
-    JUnitTestCase.assertFalse(kind.callsGetter());
-    JUnitTestCase.assertTrue(kind.callsSetter());
+    expect(kind.callsGetter(), isFalse);
+    expect(kind.callsSetter(), isTrue);
   }
 
   void test_CALLBACK() {
     AngularPropertyKind kind = AngularPropertyKind.CALLBACK;
-    JUnitTestCase.assertFalse(kind.callsGetter());
-    JUnitTestCase.assertTrue(kind.callsSetter());
+    expect(kind.callsGetter(), isFalse);
+    expect(kind.callsSetter(), isTrue);
   }
 
   void test_ONE_WAY() {
     AngularPropertyKind kind = AngularPropertyKind.ONE_WAY;
-    JUnitTestCase.assertFalse(kind.callsGetter());
-    JUnitTestCase.assertTrue(kind.callsSetter());
+    expect(kind.callsGetter(), isFalse);
+    expect(kind.callsSetter(), isTrue);
   }
 
   void test_ONE_WAY_ONE_TIME() {
     AngularPropertyKind kind = AngularPropertyKind.ONE_WAY_ONE_TIME;
-    JUnitTestCase.assertFalse(kind.callsGetter());
-    JUnitTestCase.assertTrue(kind.callsSetter());
+    expect(kind.callsGetter(), isFalse);
+    expect(kind.callsSetter(), isTrue);
   }
 
   void test_TWO_WAY() {
     AngularPropertyKind kind = AngularPropertyKind.TWO_WAY;
-    JUnitTestCase.assertTrue(kind.callsGetter());
-    JUnitTestCase.assertTrue(kind.callsSetter());
+    expect(kind.callsGetter(), isTrue);
+    expect(kind.callsSetter(), isTrue);
   }
 }
 
@@ -67,10 +66,10 @@
     List<InterfaceType> supers = elementC.allSupertypes;
     List<InterfaceType> types = new List<InterfaceType>();
     types.addAll(supers);
-    JUnitTestCase.assertTrue(types.contains(typeA));
-    JUnitTestCase.assertTrue(types.contains(typeB));
-    JUnitTestCase.assertTrue(types.contains(typeObject));
-    JUnitTestCase.assertFalse(types.contains(typeC));
+    expect(types.contains(typeA), isTrue);
+    expect(types.contains(typeB), isTrue);
+    expect(types.contains(typeObject), isTrue);
+    expect(types.contains(typeC), isFalse);
   }
 
   void test_getAllSupertypes_mixins() {
@@ -85,10 +84,10 @@
     List<InterfaceType> supers = classC.allSupertypes;
     List<InterfaceType> types = new List<InterfaceType>();
     types.addAll(supers);
-    JUnitTestCase.assertFalse(types.contains(typeA));
-    JUnitTestCase.assertTrue(types.contains(typeB));
-    JUnitTestCase.assertTrue(types.contains(typeObject));
-    JUnitTestCase.assertFalse(types.contains(typeC));
+    expect(types.contains(typeA), isFalse);
+    expect(types.contains(typeB), isTrue);
+    expect(types.contains(typeObject), isTrue);
+    expect(types.contains(typeC), isFalse);
   }
 
   void test_getAllSupertypes_recursive() {
@@ -96,7 +95,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     List<InterfaceType> supers = classB.allSupertypes;
-    EngineTestCase.assertLength(1, supers);
+    expect(supers, hasLength(1));
   }
 
   void test_getField() {
@@ -104,9 +103,9 @@
     String fieldName = "f";
     FieldElementImpl field = ElementFactory.fieldElement(fieldName, false, false, false, null);
     classA.fields = <FieldElement> [field];
-    JUnitTestCase.assertSame(field, classA.getField(fieldName));
+    expect(classA.getField(fieldName), same(field));
     // no such field
-    JUnitTestCase.assertSame(null, classA.getField("noSuchField"));
+    expect(classA.getField("noSuchField"), same(null));
   }
 
   void test_getMethod_declared() {
@@ -114,7 +113,7 @@
     String methodName = "m";
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
-    JUnitTestCase.assertSame(method, classA.getMethod(methodName));
+    expect(classA.getMethod(methodName), same(method));
   }
 
   void test_getMethod_undeclared() {
@@ -122,13 +121,15 @@
     String methodName = "m";
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
-    JUnitTestCase.assertNull(classA.getMethod("${methodName}x"));
+    expect(classA.getMethod("${methodName}x"), isNull);
   }
 
   void test_getNode() {
     AnalysisContextHelper contextHelper = new AnalysisContextHelper();
     AnalysisContext context = contextHelper.context;
-    Source source = contextHelper.addSource("/test.dart", EngineTestCase.createSource(["class A {}", "class B {}"]));
+    Source source = contextHelper.addSource("/test.dart", r'''
+class A {}
+class B {}''');
     // prepare CompilationUnitElement
     LibraryElement libraryElement = context.computeLibraryElement(source);
     CompilationUnitElement unitElement = libraryElement.definingCompilationUnit;
@@ -136,70 +137,70 @@
     {
       ClassElement elementA = unitElement.getType("A");
       ClassDeclaration nodeA = elementA.node;
-      JUnitTestCase.assertNotNull(nodeA);
-      JUnitTestCase.assertEquals("A", nodeA.name.name);
-      JUnitTestCase.assertSame(elementA, nodeA.element);
+      expect(nodeA, isNotNull);
+      expect(nodeA.name.name, "A");
+      expect(nodeA.element, same(elementA));
     }
     // B
     {
       ClassElement elementB = unitElement.getType("B");
       ClassDeclaration nodeB = elementB.node;
-      JUnitTestCase.assertNotNull(nodeB);
-      JUnitTestCase.assertEquals("B", nodeB.name.name);
-      JUnitTestCase.assertSame(elementB, nodeB.element);
+      expect(nodeB, isNotNull);
+      expect(nodeB.name.name, "B");
+      expect(nodeB.element, same(elementB));
     }
   }
 
   void test_hasNonFinalField_false_const() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, true, classA.type)];
-    JUnitTestCase.assertFalse(classA.hasNonFinalField);
+    expect(classA.hasNonFinalField, isFalse);
   }
 
   void test_hasNonFinalField_false_final() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, true, false, classA.type)];
-    JUnitTestCase.assertFalse(classA.hasNonFinalField);
+    expect(classA.hasNonFinalField, isFalse);
   }
 
   void test_hasNonFinalField_false_recursive() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
-    JUnitTestCase.assertFalse(classA.hasNonFinalField);
+    expect(classA.hasNonFinalField, isFalse);
   }
 
   void test_hasNonFinalField_true_immediate() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, false, classA.type)];
-    JUnitTestCase.assertTrue(classA.hasNonFinalField);
+    expect(classA.hasNonFinalField, isTrue);
   }
 
   void test_hasNonFinalField_true_inherited() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, false, classA.type)];
-    JUnitTestCase.assertTrue(classB.hasNonFinalField);
+    expect(classB.hasNonFinalField, isTrue);
   }
 
   void test_hasStaticMember_false_empty() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     // no members
-    JUnitTestCase.assertFalse(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isFalse);
   }
 
   void test_hasStaticMember_false_instanceMethod() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     MethodElement method = ElementFactory.methodElement("foo", null, []);
     classA.methods = <MethodElement> [method];
-    JUnitTestCase.assertFalse(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isFalse);
   }
 
   void test_hasStaticMember_instanceGetter() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     PropertyAccessorElement getter = ElementFactory.getterElement("foo", false, null);
     classA.accessors = <PropertyAccessorElement> [getter];
-    JUnitTestCase.assertFalse(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isFalse);
   }
 
   void test_hasStaticMember_true_getter() {
@@ -208,7 +209,7 @@
     classA.accessors = <PropertyAccessorElement> [getter];
     // "foo" is static
     getter.static = true;
-    JUnitTestCase.assertTrue(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isTrue);
   }
 
   void test_hasStaticMember_true_method() {
@@ -217,7 +218,7 @@
     classA.methods = <MethodElement> [method];
     // "foo" is static
     method.static = true;
-    JUnitTestCase.assertTrue(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isTrue);
   }
 
   void test_hasStaticMember_true_setter() {
@@ -226,7 +227,7 @@
     classA.accessors = <PropertyAccessorElement> [setter];
     // "foo" is static
     setter.static = true;
-    JUnitTestCase.assertTrue(classA.hasStaticMember);
+    expect(classA.hasStaticMember, isTrue);
   }
 
   void test_lookUpConcreteMethod_declared() {
@@ -239,7 +240,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(method, classA.lookUpConcreteMethod(methodName, library));
+    expect(classA.lookUpConcreteMethod(methodName, library), same(method));
   }
 
   void test_lookUpConcreteMethod_declaredAbstract() {
@@ -253,7 +254,7 @@
     method.abstract = true;
     classA.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpConcreteMethod(methodName, library));
+    expect(classA.lookUpConcreteMethod(methodName, library), isNull);
   }
 
   void test_lookUpConcreteMethod_declaredAbstractAndInherited() {
@@ -273,7 +274,7 @@
     method.abstract = true;
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpConcreteMethod(methodName, library));
+    expect(classB.lookUpConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpConcreteMethod_declaredAndInherited() {
@@ -292,7 +293,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(method, classB.lookUpConcreteMethod(methodName, library));
+    expect(classB.lookUpConcreteMethod(methodName, library), same(method));
   }
 
   void test_lookUpConcreteMethod_declaredAndInheritedAbstract() {
@@ -313,7 +314,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(method, classB.lookUpConcreteMethod(methodName, library));
+    expect(classB.lookUpConcreteMethod(methodName, library), same(method));
   }
 
   void test_lookUpConcreteMethod_inherited() {
@@ -329,7 +330,7 @@
     classA.methods = <MethodElement> [inheritedMethod];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpConcreteMethod(methodName, library));
+    expect(classB.lookUpConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpConcreteMethod_undeclared() {
@@ -338,7 +339,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpConcreteMethod("m", library));
+    expect(classA.lookUpConcreteMethod("m", library), isNull);
   }
 
   void test_lookUpGetter_declared() {
@@ -351,7 +352,7 @@
     PropertyAccessorElement getter = ElementFactory.getterElement(getterName, false, null);
     classA.accessors = <PropertyAccessorElement> [getter];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library));
+    expect(classA.lookUpGetter(getterName, library), same(getter));
   }
 
   void test_lookUpGetter_inherited() {
@@ -367,7 +368,7 @@
     classA.accessors = <PropertyAccessorElement> [getter];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library));
+    expect(classB.lookUpGetter(getterName, library), same(getter));
   }
 
   void test_lookUpGetter_undeclared() {
@@ -376,7 +377,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpGetter("g", library));
+    expect(classA.lookUpGetter("g", library), isNull);
   }
 
   void test_lookUpGetter_undeclared_recursive() {
@@ -389,7 +390,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classA.lookUpGetter("g", library));
+    expect(classA.lookUpGetter("g", library), isNull);
   }
 
   void test_lookUpInheritedConcreteGetter_declared() {
@@ -402,7 +403,7 @@
     PropertyAccessorElement getter = ElementFactory.getterElement(getterName, false, null);
     classA.accessors = <PropertyAccessorElement> [getter];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteGetter(getterName, library));
+    expect(classA.lookUpInheritedConcreteGetter(getterName, library), isNull);
   }
 
   void test_lookUpInheritedConcreteGetter_inherited() {
@@ -418,7 +419,7 @@
     classA.accessors = <PropertyAccessorElement> [inheritedGetter];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedGetter, classB.lookUpInheritedConcreteGetter(getterName, library));
+    expect(classB.lookUpInheritedConcreteGetter(getterName, library), same(inheritedGetter));
   }
 
   void test_lookUpInheritedConcreteGetter_undeclared() {
@@ -427,7 +428,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteGetter("g", library));
+    expect(classA.lookUpInheritedConcreteGetter("g", library), isNull);
   }
 
   void test_lookUpInheritedConcreteGetter_undeclared_recursive() {
@@ -440,7 +441,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteGetter("g", library));
+    expect(classA.lookUpInheritedConcreteGetter("g", library), isNull);
   }
 
   void test_lookUpInheritedConcreteMethod_declared() {
@@ -453,7 +454,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classA.lookUpInheritedConcreteMethod(methodName, library), isNull);
   }
 
   void test_lookUpInheritedConcreteMethod_declaredAbstractAndInherited() {
@@ -473,7 +474,7 @@
     method.abstract = true;
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classB.lookUpInheritedConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedConcreteMethod_declaredAndInherited() {
@@ -492,7 +493,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classB.lookUpInheritedConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedConcreteMethod_declaredAndInheritedAbstract() {
@@ -513,7 +514,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classB.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classB.lookUpInheritedConcreteMethod(methodName, library), isNull);
   }
 
   void test_lookUpInheritedConcreteMethod_declaredAndInheritedWithAbstractBetween() {
@@ -539,7 +540,7 @@
     MethodElementImpl method = ElementFactory.methodElement(methodName, null, []);
     classC.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB, classC];
-    JUnitTestCase.assertSame(inheritedMethod, classC.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classC.lookUpInheritedConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedConcreteMethod_inherited() {
@@ -555,7 +556,7 @@
     classA.methods = <MethodElement> [inheritedMethod];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpInheritedConcreteMethod(methodName, library));
+    expect(classB.lookUpInheritedConcreteMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedConcreteMethod_undeclared() {
@@ -564,7 +565,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteMethod("m", library));
+    expect(classA.lookUpInheritedConcreteMethod("m", library), isNull);
   }
 
   void test_lookUpInheritedConcreteSetter_declared() {
@@ -577,7 +578,7 @@
     PropertyAccessorElement setter = ElementFactory.setterElement(setterName, false, null);
     classA.accessors = <PropertyAccessorElement> [setter];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteSetter(setterName, library));
+    expect(classA.lookUpInheritedConcreteSetter(setterName, library), isNull);
   }
 
   void test_lookUpInheritedConcreteSetter_inherited() {
@@ -593,7 +594,7 @@
     classA.accessors = <PropertyAccessorElement> [setter];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(setter, classB.lookUpInheritedConcreteSetter(setterName, library));
+    expect(classB.lookUpInheritedConcreteSetter(setterName, library), same(setter));
   }
 
   void test_lookUpInheritedConcreteSetter_undeclared() {
@@ -602,7 +603,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteSetter("s", library));
+    expect(classA.lookUpInheritedConcreteSetter("s", library), isNull);
   }
 
   void test_lookUpInheritedConcreteSetter_undeclared_recursive() {
@@ -615,7 +616,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classA.lookUpInheritedConcreteSetter("s", library));
+    expect(classA.lookUpInheritedConcreteSetter("s", library), isNull);
   }
 
   void test_lookUpInheritedMethod_declared() {
@@ -628,7 +629,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedMethod(methodName, library));
+    expect(classA.lookUpInheritedMethod(methodName, library), isNull);
   }
 
   void test_lookUpInheritedMethod_declaredAndInherited() {
@@ -647,7 +648,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classB.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpInheritedMethod(methodName, library));
+    expect(classB.lookUpInheritedMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedMethod_inherited() {
@@ -663,7 +664,7 @@
     classA.methods = <MethodElement> [inheritedMethod];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(inheritedMethod, classB.lookUpInheritedMethod(methodName, library));
+    expect(classB.lookUpInheritedMethod(methodName, library), same(inheritedMethod));
   }
 
   void test_lookUpInheritedMethod_undeclared() {
@@ -672,7 +673,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpInheritedMethod("m", library));
+    expect(classA.lookUpInheritedMethod("m", library), isNull);
   }
 
   void test_lookUpMethod_declared() {
@@ -682,7 +683,7 @@
     MethodElement method = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [method];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library));
+    expect(classA.lookUpMethod(methodName, library), same(method));
   }
 
   void test_lookUpMethod_inherited() {
@@ -693,14 +694,14 @@
     classA.methods = <MethodElement> [method];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library));
+    expect(classB.lookUpMethod(methodName, library), same(method));
   }
 
   void test_lookUpMethod_undeclared() {
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpMethod("m", library));
+    expect(classA.lookUpMethod("m", library), isNull);
   }
 
   void test_lookUpMethod_undeclared_recursive() {
@@ -709,7 +710,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classA.lookUpMethod("m", library));
+    expect(classA.lookUpMethod("m", library), isNull);
   }
 
   void test_lookUpSetter_declared() {
@@ -722,7 +723,7 @@
     PropertyAccessorElement setter = ElementFactory.setterElement(setterName, false, null);
     classA.accessors = <PropertyAccessorElement> [setter];
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library));
+    expect(classA.lookUpSetter(setterName, library), same(setter));
   }
 
   void test_lookUpSetter_inherited() {
@@ -738,7 +739,7 @@
     classA.accessors = <PropertyAccessorElement> [setter];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library));
+    expect(classB.lookUpSetter(setterName, library), same(setter));
   }
 
   void test_lookUpSetter_undeclared() {
@@ -747,7 +748,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(classA.lookUpSetter("s", library));
+    expect(classA.lookUpSetter("s", library), isNull);
   }
 
   void test_lookUpSetter_undeclared_recursive() {
@@ -760,7 +761,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(classA.lookUpSetter("s", library));
+    expect(classA.lookUpSetter("s", library), isNull);
   }
 }
 
@@ -771,7 +772,7 @@
     String enumName = "E";
     ClassElement enumElement = ElementFactory.enumElement(typeProvider, enumName, []);
     unit.enums = <ClassElement> [enumElement];
-    JUnitTestCase.assertSame(enumElement, unit.getEnum(enumName));
+    expect(unit.getEnum(enumName), same(enumElement));
   }
 
   void test_getEnum_undeclared() {
@@ -780,7 +781,7 @@
     String enumName = "E";
     ClassElement enumElement = ElementFactory.enumElement(typeProvider, enumName, []);
     unit.enums = <ClassElement> [enumElement];
-    JUnitTestCase.assertNull(unit.getEnum("${enumName}x"));
+    expect(unit.getEnum("${enumName}x"), isNull);
   }
 
   void test_getType_declared() {
@@ -788,7 +789,7 @@
     String className = "C";
     ClassElement classElement = ElementFactory.classElement2(className, []);
     unit.types = <ClassElement> [classElement];
-    JUnitTestCase.assertSame(classElement, unit.getType(className));
+    expect(unit.getType(className), same(classElement));
   }
 
   void test_getType_undeclared() {
@@ -796,7 +797,7 @@
     String className = "C";
     ClassElement classElement = ElementFactory.classElement2(className, []);
     unit.types = <ClassElement> [classElement];
-    JUnitTestCase.assertNull(unit.getType("${className}x"));
+    expect(unit.getType("${className}x"), isNull);
   }
 }
 
@@ -807,10 +808,10 @@
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
     FieldElement field = ElementFactory.fieldElement("next", false, false, false, classElement.type);
     classElement.fields = <FieldElement> [field];
-    JUnitTestCase.assertTrue(field == field);
-    JUnitTestCase.assertFalse(field == field.getter);
-    JUnitTestCase.assertFalse(field == field.setter);
-    JUnitTestCase.assertFalse(field.getter == field.setter);
+    expect(field == field, isTrue);
+    expect(field == field.getter, isFalse);
+    expect(field == field.setter, isFalse);
+    expect(field.getter == field.setter, isFalse);
   }
 
   void test_isAccessibleIn_private_differentLibrary() {
@@ -819,14 +820,14 @@
     ClassElement classElement = ElementFactory.classElement2("_C", []);
     (library1.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
     LibraryElementImpl library2 = ElementFactory.library(context, "lib2");
-    JUnitTestCase.assertFalse(classElement.isAccessibleIn(library2));
+    expect(classElement.isAccessibleIn(library2), isFalse);
   }
 
   void test_isAccessibleIn_private_sameLibrary() {
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElement classElement = ElementFactory.classElement2("_C", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
-    JUnitTestCase.assertTrue(classElement.isAccessibleIn(library));
+    expect(classElement.isAccessibleIn(library), isTrue);
   }
 
   void test_isAccessibleIn_public_differentLibrary() {
@@ -835,44 +836,44 @@
     ClassElement classElement = ElementFactory.classElement2("C", []);
     (library1.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
     LibraryElementImpl library2 = ElementFactory.library(context, "lib2");
-    JUnitTestCase.assertTrue(classElement.isAccessibleIn(library2));
+    expect(classElement.isAccessibleIn(library2), isTrue);
   }
 
   void test_isAccessibleIn_public_sameLibrary() {
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     ClassElement classElement = ElementFactory.classElement2("C", []);
     (library.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [classElement];
-    JUnitTestCase.assertTrue(classElement.isAccessibleIn(library));
+    expect(classElement.isAccessibleIn(library), isTrue);
   }
 
   void test_isPrivate_false() {
     Element element = ElementFactory.classElement2("C", []);
-    JUnitTestCase.assertFalse(element.isPrivate);
+    expect(element.isPrivate, isFalse);
   }
 
   void test_isPrivate_null() {
     Element element = ElementFactory.classElement2(null, []);
-    JUnitTestCase.assertTrue(element.isPrivate);
+    expect(element.isPrivate, isTrue);
   }
 
   void test_isPrivate_true() {
     Element element = ElementFactory.classElement2("_C", []);
-    JUnitTestCase.assertTrue(element.isPrivate);
+    expect(element.isPrivate, isTrue);
   }
 
   void test_isPublic_false() {
     Element element = ElementFactory.classElement2("_C", []);
-    JUnitTestCase.assertFalse(element.isPublic);
+    expect(element.isPublic, isFalse);
   }
 
   void test_isPublic_null() {
     Element element = ElementFactory.classElement2(null, []);
-    JUnitTestCase.assertFalse(element.isPublic);
+    expect(element.isPublic, isFalse);
   }
 
   void test_isPublic_true() {
     Element element = ElementFactory.classElement2("C", []);
-    JUnitTestCase.assertTrue(element.isPublic);
+    expect(element.isPublic, isTrue);
   }
 
   void test_SORT_BY_OFFSET() {
@@ -880,19 +881,19 @@
     classElementA.nameOffset = 1;
     ClassElementImpl classElementB = ElementFactory.classElement2("B", []);
     classElementB.nameOffset = 2;
-    JUnitTestCase.assertEquals(0, Element.SORT_BY_OFFSET(classElementA, classElementA));
-    JUnitTestCase.assertTrue(Element.SORT_BY_OFFSET(classElementA, classElementB) < 0);
-    JUnitTestCase.assertTrue(Element.SORT_BY_OFFSET(classElementB, classElementA) > 0);
+    expect(Element.SORT_BY_OFFSET(classElementA, classElementA), 0);
+    expect(Element.SORT_BY_OFFSET(classElementA, classElementB) < 0, isTrue);
+    expect(Element.SORT_BY_OFFSET(classElementB, classElementA) > 0, isTrue);
   }
 }
 
 class ElementKindTest extends EngineTestCase {
   void test_of_nonNull() {
-    JUnitTestCase.assertSame(ElementKind.CLASS, ElementKind.of(ElementFactory.classElement2("A", [])));
+    expect(ElementKind.of(ElementFactory.classElement2("A", [])), same(ElementKind.CLASS));
   }
 
   void test_of_null() {
-    JUnitTestCase.assertSame(ElementKind.ERROR, ElementKind.of(null));
+    expect(ElementKind.of(null), same(ElementKind.ERROR));
   }
 }
 
@@ -900,7 +901,7 @@
   void test_create_encoding() {
     String encoding = "a;b;c";
     ElementLocationImpl location = new ElementLocationImpl.con2(encoding);
-    JUnitTestCase.assertEquals(encoding, location.encoding);
+    expect(location.encoding, encoding);
   }
 
   /**
@@ -909,78 +910,78 @@
   void test_create_encoding_emptyLast() {
     String encoding = "a;b;c;";
     ElementLocationImpl location = new ElementLocationImpl.con2(encoding);
-    JUnitTestCase.assertEquals(encoding, location.encoding);
+    expect(location.encoding, encoding);
   }
 
   void test_equals_equal() {
     String encoding = "a;b;c";
     ElementLocationImpl first = new ElementLocationImpl.con2(encoding);
     ElementLocationImpl second = new ElementLocationImpl.con2(encoding);
-    JUnitTestCase.assertTrue(first == second);
+    expect(first == second, isTrue);
   }
 
   void test_equals_notEqual_differentLengths() {
     ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c");
     ElementLocationImpl second = new ElementLocationImpl.con2("a;b;c;d");
-    JUnitTestCase.assertFalse(first == second);
+    expect(first == second, isFalse);
   }
 
   void test_equals_notEqual_notLocation() {
     ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c");
-    JUnitTestCase.assertFalse(first == "a;b;d");
+    expect(first == "a;b;d", isFalse);
   }
 
   void test_equals_notEqual_sameLengths() {
     ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c");
     ElementLocationImpl second = new ElementLocationImpl.con2("a;b;d");
-    JUnitTestCase.assertFalse(first == second);
+    expect(first == second, isFalse);
   }
 
   void test_getComponents() {
     String encoding = "a;b;c";
     ElementLocationImpl location = new ElementLocationImpl.con2(encoding);
     List<String> components = location.components;
-    EngineTestCase.assertLength(3, components);
-    JUnitTestCase.assertEquals("a", components[0]);
-    JUnitTestCase.assertEquals("b", components[1]);
-    JUnitTestCase.assertEquals("c", components[2]);
+    expect(components, hasLength(3));
+    expect(components[0], "a");
+    expect(components[1], "b");
+    expect(components[2], "c");
   }
 
   void test_getEncoding() {
     String encoding = "a;b;c;;d";
     ElementLocationImpl location = new ElementLocationImpl.con2(encoding);
-    JUnitTestCase.assertEquals(encoding, location.encoding);
+    expect(location.encoding, encoding);
   }
 
   void test_hashCode_equal() {
     String encoding = "a;b;c";
     ElementLocationImpl first = new ElementLocationImpl.con2(encoding);
     ElementLocationImpl second = new ElementLocationImpl.con2(encoding);
-    JUnitTestCase.assertTrue(first.hashCode == second.hashCode);
+    expect(first.hashCode == second.hashCode, isTrue);
   }
 }
 
 class FunctionTypeImplTest extends EngineTestCase {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f"))));
+    expect(new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f"))), isNotNull);
   }
 
   void test_getElement() {
     FunctionElementImpl typeElement = new FunctionElementImpl.forNode(AstFactory.identifier3("f"));
     FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(typeElement, type.element);
+    expect(type.element, typeElement);
   }
 
   void test_getNamedParameterTypes() {
     FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
     Map<String, DartType> types = type.namedParameterTypes;
-    EngineTestCase.assertSizeOfMap(0, types);
+    expect(types, hasLength(0));
   }
 
   void test_getNormalParameterTypes() {
     FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
     List<DartType> types = type.normalParameterTypes;
-    EngineTestCase.assertLength(0, types);
+    expect(types, hasLength(0));
   }
 
   void test_getReturnType() {
@@ -989,13 +990,13 @@
     functionElement.returnType = expectedReturnType;
     FunctionTypeImpl type = new FunctionTypeImpl.con1(functionElement);
     DartType returnType = type.returnType;
-    JUnitTestCase.assertEquals(expectedReturnType, returnType);
+    expect(returnType, expectedReturnType);
   }
 
   void test_getTypeArguments() {
     FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
     List<DartType> types = type.typeArguments;
-    EngineTestCase.assertLength(0, types);
+    expect(types, hasLength(0));
   }
 
   void test_hashCode_element() {
@@ -1013,11 +1014,11 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isFalse);
     // assignable iff subtype
-    JUnitTestCase.assertTrue(t.isAssignableTo(s));
-    JUnitTestCase.assertFalse(s.isAssignableTo(t));
+    expect(t.isAssignableTo(s), isTrue);
+    expect(s.isAssignableTo(t), isFalse);
   }
 
   void test_isSubtypeOf_baseCase_classFunction() {
@@ -1025,7 +1026,7 @@
     ClassElementImpl functionElement = ElementFactory.classElement2("Function", []);
     InterfaceTypeImpl functionType = new InterfaceTypeImpl_FunctionTypeImplTest_test_isSubtypeOf_baseCase_classFunction(functionElement);
     FunctionType f = ElementFactory.functionElement("f").type;
-    JUnitTestCase.assertTrue(f.isSubtypeOf(functionType));
+    expect(f.isSubtypeOf(functionType), isTrue);
   }
 
   void test_isSubtypeOf_baseCase_notFunctionType() {
@@ -1033,19 +1034,19 @@
     // ! () -> void <: C
     FunctionType f = ElementFactory.functionElement("f").type;
     InterfaceType t = ElementFactory.classElement2("C", []).type;
-    JUnitTestCase.assertFalse(f.isSubtypeOf(t));
+    expect(f.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_baseCase_null() {
     // ! () -> void <: null
     FunctionType f = ElementFactory.functionElement("f").type;
-    JUnitTestCase.assertFalse(f.isSubtypeOf(null));
+    expect(f.isSubtypeOf(null), isFalse);
   }
 
   void test_isSubtypeOf_baseCase_self() {
     // () -> void <: () -> void
     FunctionType f = ElementFactory.functionElement("f").type;
-    JUnitTestCase.assertTrue(f.isSubtypeOf(f));
+    expect(f.isSubtypeOf(f), isTrue);
   }
 
   void test_isSubtypeOf_namedParameters_isAssignable() {
@@ -1056,15 +1057,15 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertTrue(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isTrue);
   }
 
   void test_isSubtypeOf_namedParameters_isNotAssignable() {
     // ! ({name: A}) -> void <: ({name: B}) -> void
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [ElementFactory.classElement2("A", [])]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [ElementFactory.classElement2("B", [])]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_namedParameters_namesDifferent() {
@@ -1077,8 +1078,8 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["diff"], <ClassElement> [b]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isFalse);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_namedParameters_orderOfParams() {
@@ -1088,7 +1089,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["A", "B"], <ClassElement> [a, b]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B", "A"], <ClassElement> [b, a]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isTrue);
   }
 
   void test_isSubtypeOf_namedParameters_orderOfParams2() {
@@ -1098,7 +1099,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["B"], <ClassElement> [b]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B", "A"], <ClassElement> [b, a]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_namedParameters_orderOfParams3() {
@@ -1108,7 +1109,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["A", "B"], <ClassElement> [a, b]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B"], <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isTrue);
   }
 
   void test_isSubtypeOf_namedParameters_sHasMoreParams() {
@@ -1118,7 +1119,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name", "name2"], <ClassElement> [b, b]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_namedParameters_tHasMoreParams() {
@@ -1128,7 +1129,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name", "name2"], <ClassElement> [a, a]).type;
     FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isTrue);
   }
 
   void test_isSubtypeOf_normalAndPositionalArgs_1() {
@@ -1136,8 +1137,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_normalAndPositionalArgs_2() {
@@ -1145,8 +1146,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", <ClassElement> [a], <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_normalAndPositionalArgs_3() {
@@ -1154,8 +1155,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement("s").type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_normalAndPositionalArgs_4() {
@@ -1167,8 +1168,8 @@
     ClassElement e = ElementFactory.classElement2("E", []);
     FunctionType t = ElementFactory.functionElement6("t", <ClassElement> [a, b], <ClassElement> [c, d, e]).type;
     FunctionType s = ElementFactory.functionElement6("s", <ClassElement> [a, b, c], <ClassElement> [d]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_normalParameters_isAssignable() {
@@ -1179,15 +1180,15 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertTrue(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isTrue);
   }
 
   void test_isSubtypeOf_normalParameters_isNotAssignable() {
     // ! (a) -> void <: (b) -> void
     FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [ElementFactory.classElement2("A", [])]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [ElementFactory.classElement2("B", [])]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_normalParameters_sHasMoreParams() {
@@ -1197,7 +1198,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b, b]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_normalParameters_tHasMoreParams() {
@@ -1209,14 +1210,14 @@
     FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).type;
     // note, this is a different assertion from the other "tHasMoreParams" tests, this is
     // intentional as it is a difference of the "normal parameters"
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_Object() {
     // () -> void <: Object
     FunctionType f = ElementFactory.functionElement("f").type;
     InterfaceType t = ElementFactory.object.type;
-    JUnitTestCase.assertTrue(f.isSubtypeOf(t));
+    expect(f.isSubtypeOf(t), isTrue);
   }
 
   void test_isSubtypeOf_positionalParameters_isAssignable() {
@@ -1227,15 +1228,15 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertTrue(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isTrue);
   }
 
   void test_isSubtypeOf_positionalParameters_isNotAssignable() {
     // ! ([a]) -> void <: ([b]) -> void
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [ElementFactory.classElement2("A", [])]).type;
     FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [ElementFactory.classElement2("B", [])]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_positionalParameters_sHasMoreParams() {
@@ -1245,7 +1246,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b, b]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_positionalParameters_tHasMoreParams() {
@@ -1255,7 +1256,7 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a, a]).type;
     FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b]).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isTrue);
   }
 
   void test_isSubtypeOf_returnType_sIsVoid() {
@@ -1263,8 +1264,8 @@
     FunctionType t = ElementFactory.functionElement("t").type;
     FunctionType s = ElementFactory.functionElement("s").type;
     // function s has the implicit return type of void, we assert it here
-    JUnitTestCase.assertTrue(VoidTypeImpl.instance == s.returnType);
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
+    expect(VoidTypeImpl.instance == s.returnType, isTrue);
+    expect(t.isSubtypeOf(s), isTrue);
   }
 
   void test_isSubtypeOf_returnType_tAssignableToS() {
@@ -1275,15 +1276,15 @@
     ClassElement b = ElementFactory.classElement("B", a.type, []);
     FunctionType t = ElementFactory.functionElement2("t", a).type;
     FunctionType s = ElementFactory.functionElement2("s", b).type;
-    JUnitTestCase.assertTrue(t.isSubtypeOf(s));
-    JUnitTestCase.assertTrue(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isTrue);
+    expect(s.isSubtypeOf(t), isTrue);
   }
 
   void test_isSubtypeOf_returnType_tNotAssignableToS() {
     // ! () -> A <: () -> B
     FunctionType t = ElementFactory.functionElement2("t", ElementFactory.classElement2("A", [])).type;
     FunctionType s = ElementFactory.functionElement2("s", ElementFactory.classElement2("B", [])).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
+    expect(t.isSubtypeOf(s), isFalse);
   }
 
   void test_isSubtypeOf_typeParameters_matchesBounds() {
@@ -1310,7 +1311,7 @@
     functionElement.returnType = provider.dynamicType;
     FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
     functionElement.type = functionType;
-    JUnitTestCase.assertTrue(functionType.isAssignableTo(functionAliasType));
+    expect(functionType.isAssignableTo(functionAliasType), isTrue);
   }
 
   void test_isSubtypeOf_wrongFunctionType_normal_named() {
@@ -1319,8 +1320,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"], <ClassElement> [a]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isFalse);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_isSubtypeOf_wrongFunctionType_optional_named() {
@@ -1329,8 +1330,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"], <ClassElement> [a]).type;
-    JUnitTestCase.assertFalse(t.isSubtypeOf(s));
-    JUnitTestCase.assertFalse(s.isSubtypeOf(t));
+    expect(t.isSubtypeOf(s), isFalse);
+    expect(s.isSubtypeOf(t), isFalse);
   }
 
   void test_setTypeArguments() {
@@ -1341,8 +1342,8 @@
     DartType expectedType = enclosingClass.typeParameters[0].type;
     type.typeArguments = <DartType> [expectedType];
     List<DartType> arguments = type.typeArguments;
-    EngineTestCase.assertLength(1, arguments);
-    JUnitTestCase.assertEquals(expectedType, arguments[0]);
+    expect(arguments, hasLength(1));
+    expect(arguments[0], expectedType);
   }
 
   void test_substitute2_equal() {
@@ -1360,16 +1361,16 @@
     functionType.typeArguments = <DartType> [parameterType];
     InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl.forNode(AstFactory.identifier3("D")));
     FunctionType result = functionType.substitute2(<DartType> [argumentType], <DartType> [parameterType]);
-    JUnitTestCase.assertEquals(argumentType, result.returnType);
+    expect(result.returnType, argumentType);
     List<DartType> normalParameters = result.normalParameterTypes;
-    EngineTestCase.assertLength(1, normalParameters);
-    JUnitTestCase.assertEquals(argumentType, normalParameters[0]);
+    expect(normalParameters, hasLength(1));
+    expect(normalParameters[0], argumentType);
     List<DartType> optionalParameters = result.optionalParameterTypes;
-    EngineTestCase.assertLength(1, optionalParameters);
-    JUnitTestCase.assertEquals(argumentType, optionalParameters[0]);
+    expect(optionalParameters, hasLength(1));
+    expect(optionalParameters[0], argumentType);
     Map<String, DartType> namedParameters = result.namedParameterTypes;
-    EngineTestCase.assertSizeOfMap(1, namedParameters);
-    JUnitTestCase.assertEquals(argumentType, namedParameters[namedParameterName]);
+    expect(namedParameters, hasLength(1));
+    expect(namedParameters[namedParameterName], argumentType);
   }
 
   void test_substitute2_notEqual() {
@@ -1388,16 +1389,16 @@
     InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl.forNode(AstFactory.identifier3("D")));
     TypeParameterTypeImpl parameterType = new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("E")));
     FunctionType result = functionType.substitute2(<DartType> [argumentType], <DartType> [parameterType]);
-    JUnitTestCase.assertEquals(returnType, result.returnType);
+    expect(result.returnType, returnType);
     List<DartType> normalParameters = result.normalParameterTypes;
-    EngineTestCase.assertLength(1, normalParameters);
-    JUnitTestCase.assertEquals(normalParameterType, normalParameters[0]);
+    expect(normalParameters, hasLength(1));
+    expect(normalParameters[0], normalParameterType);
     List<DartType> optionalParameters = result.optionalParameterTypes;
-    EngineTestCase.assertLength(1, optionalParameters);
-    JUnitTestCase.assertEquals(optionalParameterType, optionalParameters[0]);
+    expect(optionalParameters, hasLength(1));
+    expect(optionalParameters[0], optionalParameterType);
     Map<String, DartType> namedParameters = result.namedParameterTypes;
-    EngineTestCase.assertSizeOfMap(1, namedParameters);
-    JUnitTestCase.assertEquals(namedParameterType, namedParameters[namedParameterName]);
+    expect(namedParameters, hasLength(1));
+    expect(namedParameters[namedParameterName], namedParameterType);
   }
 }
 
@@ -1406,26 +1407,26 @@
     AnalysisContextImpl context = createAnalysisContext();
     HtmlElementImpl elementA = ElementFactory.htmlUnit(context, "indexA.html");
     HtmlElementImpl elementB = ElementFactory.htmlUnit(context, "indexB.html");
-    JUnitTestCase.assertFalse(elementA == elementB);
+    expect(elementA == elementB, isFalse);
   }
 
   void test_equals_null() {
     AnalysisContextImpl context = createAnalysisContext();
     HtmlElementImpl element = ElementFactory.htmlUnit(context, "index.html");
-    JUnitTestCase.assertFalse(element == null);
+    expect(element == null, isFalse);
   }
 
   void test_equals_sameSource() {
     AnalysisContextImpl context = createAnalysisContext();
     HtmlElementImpl elementA = ElementFactory.htmlUnit(context, "index.html");
     HtmlElementImpl elementB = ElementFactory.htmlUnit(context, "index.html");
-    JUnitTestCase.assertTrue(elementA == elementB);
+    expect(elementA == elementB, isTrue);
   }
 
   void test_equals_self() {
     AnalysisContextImpl context = createAnalysisContext();
     HtmlElementImpl element = ElementFactory.htmlUnit(context, "index.html");
-    JUnitTestCase.assertTrue(element == element);
+    expect(element == element, isTrue);
   }
 }
 
@@ -1463,8 +1464,8 @@
     classE.interfaces = <InterfaceType> [classB.type, classD.type];
     // assertion: even though the longest path to Object for typeB is 2, and typeE implements typeB,
     // the longest path for typeE is 4 since it also implements typeD
-    JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type));
-    JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePathToObject(classE.type));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type), 2);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classE.type), 4);
   }
 
   void test_computeLongestInheritancePathToObject_multipleSuperclassPaths() {
@@ -1487,8 +1488,8 @@
     classE.interfaces = <InterfaceType> [classD.type];
     // assertion: even though the longest path to Object for typeB is 2, and typeE extends typeB,
     // the longest path for typeE is 4 since it also implements typeD
-    JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type));
-    JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePathToObject(classE.type));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type), 2);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classE.type), 4);
   }
 
   void test_computeLongestInheritancePathToObject_object() {
@@ -1499,14 +1500,14 @@
     //
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType object = classA.supertype;
-    JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePathToObject(object));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(object), 0);
   }
 
   void test_computeLongestInheritancePathToObject_recursion() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
-    JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type), 2);
   }
 
   void test_computeLongestInheritancePathToObject_singleInterfacePath() {
@@ -1524,9 +1525,9 @@
     ClassElementImpl classC = ElementFactory.classElement2("C", []);
     classB.interfaces = <InterfaceType> [classA.type];
     classC.interfaces = <InterfaceType> [classB.type];
-    JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type));
-    JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type));
-    JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePathToObject(classC.type));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type), 1);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type), 2);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classC.type), 3);
   }
 
   void test_computeLongestInheritancePathToObject_singleSuperclassPath() {
@@ -1542,9 +1543,9 @@
     ClassElement classA = ElementFactory.classElement2("A", []);
     ClassElement classB = ElementFactory.classElement("B", classA.type, []);
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
-    JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type));
-    JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type));
-    JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePathToObject(classC.type));
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type), 1);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classB.type), 2);
+    expect(InterfaceTypeImpl.computeLongestInheritancePathToObject(classC.type), 3);
   }
 
   void test_computeSuperinterfaceSet_genericInterfacePath() {
@@ -1569,24 +1570,24 @@
     classC.interfaces = <InterfaceType> [typeBT];
     // A
     Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(typeA);
-    EngineTestCase.assertSizeOfSet(1, superinterfacesOfA);
+    expect(superinterfacesOfA, hasLength(1));
     InterfaceType typeObject = ElementFactory.object.type;
-    JUnitTestCase.assertTrue(superinterfacesOfA.contains(typeObject));
+    expect(superinterfacesOfA.contains(typeObject), isTrue);
     // B<D>
     InterfaceTypeImpl typeBD = new InterfaceTypeImpl.con1(classB);
     typeBD.typeArguments = <DartType> [classD.type];
     Set<InterfaceType> superinterfacesOfBD = InterfaceTypeImpl.computeSuperinterfaceSet(typeBD);
-    EngineTestCase.assertSizeOfSet(2, superinterfacesOfBD);
-    JUnitTestCase.assertTrue(superinterfacesOfBD.contains(typeObject));
-    JUnitTestCase.assertTrue(superinterfacesOfBD.contains(typeA));
+    expect(superinterfacesOfBD, hasLength(2));
+    expect(superinterfacesOfBD.contains(typeObject), isTrue);
+    expect(superinterfacesOfBD.contains(typeA), isTrue);
     // C<D>
     InterfaceTypeImpl typeCD = new InterfaceTypeImpl.con1(classC);
     typeCD.typeArguments = <DartType> [classD.type];
     Set<InterfaceType> superinterfacesOfCD = InterfaceTypeImpl.computeSuperinterfaceSet(typeCD);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfCD);
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeObject));
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeA));
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeBD));
+    expect(superinterfacesOfCD, hasLength(3));
+    expect(superinterfacesOfCD.contains(typeObject), isTrue);
+    expect(superinterfacesOfCD.contains(typeA), isTrue);
+    expect(superinterfacesOfCD.contains(typeBD), isTrue);
   }
 
   void test_computeSuperinterfaceSet_genericSuperclassPath() {
@@ -1610,24 +1611,24 @@
     ClassElement classD = ElementFactory.classElement2("D", []);
     // A
     Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(typeA);
-    EngineTestCase.assertSizeOfSet(1, superinterfacesOfA);
+    expect(superinterfacesOfA, hasLength(1));
     InterfaceType typeObject = ElementFactory.object.type;
-    JUnitTestCase.assertTrue(superinterfacesOfA.contains(typeObject));
+    expect(superinterfacesOfA.contains(typeObject), isTrue);
     // B<D>
     InterfaceTypeImpl typeBD = new InterfaceTypeImpl.con1(classB);
     typeBD.typeArguments = <DartType> [classD.type];
     Set<InterfaceType> superinterfacesOfBD = InterfaceTypeImpl.computeSuperinterfaceSet(typeBD);
-    EngineTestCase.assertSizeOfSet(2, superinterfacesOfBD);
-    JUnitTestCase.assertTrue(superinterfacesOfBD.contains(typeObject));
-    JUnitTestCase.assertTrue(superinterfacesOfBD.contains(typeA));
+    expect(superinterfacesOfBD, hasLength(2));
+    expect(superinterfacesOfBD.contains(typeObject), isTrue);
+    expect(superinterfacesOfBD.contains(typeA), isTrue);
     // C<D>
     InterfaceTypeImpl typeCD = new InterfaceTypeImpl.con1(classC);
     typeCD.typeArguments = <DartType> [classD.type];
     Set<InterfaceType> superinterfacesOfCD = InterfaceTypeImpl.computeSuperinterfaceSet(typeCD);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfCD);
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeObject));
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeA));
-    JUnitTestCase.assertTrue(superinterfacesOfCD.contains(typeBD));
+    expect(superinterfacesOfCD, hasLength(3));
+    expect(superinterfacesOfCD.contains(typeObject), isTrue);
+    expect(superinterfacesOfCD.contains(typeA), isTrue);
+    expect(superinterfacesOfCD.contains(typeBD), isTrue);
   }
 
   void test_computeSuperinterfaceSet_multipleInterfacePaths() {
@@ -1642,18 +1643,18 @@
     classE.interfaces = <InterfaceType> [classB.type, classD.type];
     // D
     Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(classD.type);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfD);
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
+    expect(superinterfacesOfD, hasLength(3));
+    expect(superinterfacesOfD.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfD.contains(classA.type), isTrue);
+    expect(superinterfacesOfD.contains(classC.type), isTrue);
     // E
     Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(classE.type);
-    EngineTestCase.assertSizeOfSet(5, superinterfacesOfE);
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
+    expect(superinterfacesOfE, hasLength(5));
+    expect(superinterfacesOfE.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfE.contains(classA.type), isTrue);
+    expect(superinterfacesOfE.contains(classB.type), isTrue);
+    expect(superinterfacesOfE.contains(classC.type), isTrue);
+    expect(superinterfacesOfE.contains(classD.type), isTrue);
   }
 
   void test_computeSuperinterfaceSet_multipleSuperclassPaths() {
@@ -1665,18 +1666,18 @@
     classE.interfaces = <InterfaceType> [classD.type];
     // D
     Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(classD.type);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfD);
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
+    expect(superinterfacesOfD, hasLength(3));
+    expect(superinterfacesOfD.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfD.contains(classA.type), isTrue);
+    expect(superinterfacesOfD.contains(classC.type), isTrue);
     // E
     Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(classE.type);
-    EngineTestCase.assertSizeOfSet(5, superinterfacesOfE);
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
-    JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
+    expect(superinterfacesOfE, hasLength(5));
+    expect(superinterfacesOfE.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfE.contains(classA.type), isTrue);
+    expect(superinterfacesOfE.contains(classB.type), isTrue);
+    expect(superinterfacesOfE.contains(classC.type), isTrue);
+    expect(superinterfacesOfE.contains(classD.type), isTrue);
   }
 
   void test_computeSuperinterfaceSet_recursion() {
@@ -1684,7 +1685,7 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     classA.supertype = classB.type;
     Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
-    EngineTestCase.assertSizeOfSet(2, superinterfacesOfB);
+    expect(superinterfacesOfB, hasLength(2));
   }
 
   void test_computeSuperinterfaceSet_singleInterfacePath() {
@@ -1695,19 +1696,19 @@
     classC.interfaces = <InterfaceType> [classB.type];
     // A
     Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(classA.type);
-    EngineTestCase.assertSizeOfSet(1, superinterfacesOfA);
-    JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type));
+    expect(superinterfacesOfA, hasLength(1));
+    expect(superinterfacesOfA.contains(ElementFactory.object.type), isTrue);
     // B
     Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
-    EngineTestCase.assertSizeOfSet(2, superinterfacesOfB);
-    JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
+    expect(superinterfacesOfB, hasLength(2));
+    expect(superinterfacesOfB.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfB.contains(classA.type), isTrue);
     // C
     Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(classC.type);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfC);
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
+    expect(superinterfacesOfC, hasLength(3));
+    expect(superinterfacesOfC.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfC.contains(classA.type), isTrue);
+    expect(superinterfacesOfC.contains(classB.type), isTrue);
   }
 
   void test_computeSuperinterfaceSet_singleSuperclassPath() {
@@ -1723,23 +1724,23 @@
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
     // A
     Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(classA.type);
-    EngineTestCase.assertSizeOfSet(1, superinterfacesOfA);
-    JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type));
+    expect(superinterfacesOfA, hasLength(1));
+    expect(superinterfacesOfA.contains(ElementFactory.object.type), isTrue);
     // B
     Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
-    EngineTestCase.assertSizeOfSet(2, superinterfacesOfB);
-    JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
+    expect(superinterfacesOfB, hasLength(2));
+    expect(superinterfacesOfB.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfB.contains(classA.type), isTrue);
     // C
     Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(classC.type);
-    EngineTestCase.assertSizeOfSet(3, superinterfacesOfC);
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type));
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
-    JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
+    expect(superinterfacesOfC, hasLength(3));
+    expect(superinterfacesOfC.contains(ElementFactory.object.type), isTrue);
+    expect(superinterfacesOfC.contains(classA.type), isTrue);
+    expect(superinterfacesOfC.contains(classB.type), isTrue);
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(ElementFactory.classElement2("A", [])));
+    expect(new InterfaceTypeImpl.con1(ElementFactory.classElement2("A", [])), isNotNull);
   }
 
   void test_getAccessors() {
@@ -1748,19 +1749,19 @@
     PropertyAccessorElement getterH = ElementFactory.getterElement("h", false, null);
     typeElement.accessors = <PropertyAccessorElement> [getterG, getterH];
     InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(2, type.accessors.length);
+    expect(type.accessors.length, 2);
   }
 
   void test_getAccessors_empty() {
     ClassElementImpl typeElement = ElementFactory.classElement2("A", []);
     InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(0, type.accessors.length);
+    expect(type.accessors.length, 0);
   }
 
   void test_getElement() {
     ClassElementImpl typeElement = ElementFactory.classElement2("A", []);
     InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(typeElement, type.element);
+    expect(type.element, typeElement);
   }
 
   void test_getGetter_implemented() {
@@ -1772,7 +1773,7 @@
     PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, false, null);
     classA.accessors = <PropertyAccessorElement> [getterG];
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertSame(getterG, typeA.getGetter(getterName));
+    expect(typeA.getGetter(getterName), same(getterG));
   }
 
   void test_getGetter_parameterized() {
@@ -1792,9 +1793,9 @@
     InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
     typeAI.typeArguments = <DartType> [typeI];
     PropertyAccessorElement getter = typeAI.getGetter(getterName);
-    JUnitTestCase.assertNotNull(getter);
+    expect(getter, isNotNull);
     FunctionType getterType = getter.type;
-    JUnitTestCase.assertSame(typeI, getterType.returnType);
+    expect(getterType.returnType, same(typeI));
   }
 
   void test_getGetter_unimplemented() {
@@ -1803,7 +1804,7 @@
     //
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertNull(typeA.getGetter("g"));
+    expect(typeA.getGetter("g"), isNull);
   }
 
   void test_getInterfaces_nonParameterized() {
@@ -1817,12 +1818,12 @@
     ClassElementImpl classC = ElementFactory.classElement2("C", []);
     classC.interfaces = <InterfaceType> [typeA, typeB];
     List<InterfaceType> interfaces = classC.type.interfaces;
-    EngineTestCase.assertLength(2, interfaces);
+    expect(interfaces, hasLength(2));
     if (identical(interfaces[0], typeA)) {
-      JUnitTestCase.assertSame(typeB, interfaces[1]);
+      expect(interfaces[1], same(typeB));
     } else {
-      JUnitTestCase.assertSame(typeB, interfaces[0]);
-      JUnitTestCase.assertSame(typeA, interfaces[1]);
+      expect(interfaces[0], same(typeB));
+      expect(interfaces[1], same(typeA));
     }
   }
 
@@ -1844,10 +1845,10 @@
     InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
     typeBI.typeArguments = <DartType> [typeI];
     List<InterfaceType> interfaces = typeBI.interfaces;
-    EngineTestCase.assertLength(1, interfaces);
+    expect(interfaces, hasLength(1));
     InterfaceType result = interfaces[0];
-    JUnitTestCase.assertSame(classA, result.element);
-    JUnitTestCase.assertSame(typeI, result.typeArguments[0]);
+    expect(result.element, same(classA));
+    expect(result.typeArguments[0], same(typeI));
   }
 
   void test_getLeastUpperBound_directInterfaceCase() {
@@ -1864,8 +1865,8 @@
     InterfaceType typeC = classC.type;
     classB.interfaces = <InterfaceType> [typeA];
     classC.interfaces = <InterfaceType> [typeB];
-    JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeB);
+    expect(typeC.getLeastUpperBound(typeB), typeB);
   }
 
   void test_getLeastUpperBound_directSubclassCase() {
@@ -1879,14 +1880,14 @@
     ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []);
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeB);
+    expect(typeC.getLeastUpperBound(typeB), typeB);
   }
 
   void test_getLeastUpperBound_functionType() {
     DartType interfaceType = ElementFactory.classElement2("A", []).type;
     FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElementImpl.forNode(AstFactory.identifier3("f")));
-    JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(functionType));
+    expect(interfaceType.getLeastUpperBound(functionType), isNull);
   }
 
   void test_getLeastUpperBound_mixinCase() {
@@ -1908,13 +1909,13 @@
         ElementFactory.classElement2("N", []).type,
         ElementFactory.classElement2("O", []).type,
         ElementFactory.classElement2("P", []).type];
-    JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeD));
+    expect(typeD.getLeastUpperBound(typeC), typeA);
+    expect(typeC.getLeastUpperBound(typeD), typeA);
   }
 
   void test_getLeastUpperBound_null() {
     DartType interfaceType = ElementFactory.classElement2("A", []).type;
-    JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(null));
+    expect(interfaceType.getLeastUpperBound(null), isNull);
   }
 
   void test_getLeastUpperBound_object() {
@@ -1924,17 +1925,17 @@
     InterfaceType typeB = classB.type;
     DartType typeObject = typeA.element.supertype;
     // assert that object does not have a super type
-    JUnitTestCase.assertNull((typeObject.element as ClassElement).supertype);
+    expect((typeObject.element as ClassElement).supertype, isNull);
     // assert that both A and B have the same super type of Object
-    JUnitTestCase.assertEquals(typeObject, typeB.element.supertype);
+    expect(typeB.element.supertype, typeObject);
     // finally, assert that the only least upper bound of A and B is Object
-    JUnitTestCase.assertEquals(typeObject, typeA.getLeastUpperBound(typeB));
+    expect(typeA.getLeastUpperBound(typeB), typeObject);
   }
 
   void test_getLeastUpperBound_self() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertEquals(typeA, typeA.getLeastUpperBound(typeA));
+    expect(typeA.getLeastUpperBound(typeA), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperclass1() {
@@ -1944,8 +1945,8 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeA);
+    expect(typeC.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperclass2() {
@@ -1956,8 +1957,8 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
     InterfaceType typeD = classD.type;
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD));
-    JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeD), typeA);
+    expect(typeD.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperclass3() {
@@ -1968,8 +1969,8 @@
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
     InterfaceType typeD = classD.type;
-    JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD));
-    JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC));
+    expect(typeC.getLeastUpperBound(typeD), typeB);
+    expect(typeD.getLeastUpperBound(typeC), typeB);
   }
 
   void test_getLeastUpperBound_sharedSuperclass4() {
@@ -1985,8 +1986,8 @@
     InterfaceType typeC = classC.type;
     classB.interfaces = <InterfaceType> [typeA2];
     classC.interfaces = <InterfaceType> [typeA3];
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeA);
+    expect(typeC.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperinterface1() {
@@ -1998,8 +1999,8 @@
     InterfaceType typeC = classC.type;
     classB.interfaces = <InterfaceType> [typeA];
     classC.interfaces = <InterfaceType> [typeA];
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeA);
+    expect(typeC.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperinterface2() {
@@ -2014,8 +2015,8 @@
     classB.interfaces = <InterfaceType> [typeA];
     classC.interfaces = <InterfaceType> [typeA];
     classD.interfaces = <InterfaceType> [typeC];
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD));
-    JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeD), typeA);
+    expect(typeD.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_sharedSuperinterface3() {
@@ -2030,8 +2031,8 @@
     classB.interfaces = <InterfaceType> [typeA];
     classC.interfaces = <InterfaceType> [typeB];
     classD.interfaces = <InterfaceType> [typeB];
-    JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD));
-    JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC));
+    expect(typeC.getLeastUpperBound(typeD), typeB);
+    expect(typeD.getLeastUpperBound(typeC), typeB);
   }
 
   void test_getLeastUpperBound_sharedSuperinterface4() {
@@ -2047,14 +2048,14 @@
     InterfaceType typeC = classC.type;
     classB.interfaces = <InterfaceType> [typeA, typeA2];
     classC.interfaces = <InterfaceType> [typeA, typeA3];
-    JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
-    JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
+    expect(typeB.getLeastUpperBound(typeC), typeA);
+    expect(typeC.getLeastUpperBound(typeB), typeA);
   }
 
   void test_getLeastUpperBound_twoComparables() {
     InterfaceType string = _typeProvider.stringType;
     InterfaceType num = _typeProvider.numType;
-    JUnitTestCase.assertEquals(_typeProvider.objectType, string.getLeastUpperBound(num));
+    expect(string.getLeastUpperBound(num), _typeProvider.objectType);
   }
 
   void test_getLeastUpperBound_typeParameters_different() {
@@ -2067,7 +2068,7 @@
     InterfaceType doubleType = _typeProvider.doubleType;
     InterfaceType listOfIntType = listType.substitute4(<DartType> [intType]);
     InterfaceType listOfDoubleType = listType.substitute4(<DartType> [doubleType]);
-    JUnitTestCase.assertEquals(_typeProvider.objectType, listOfIntType.getLeastUpperBound(listOfDoubleType));
+    expect(listOfIntType.getLeastUpperBound(listOfDoubleType), _typeProvider.objectType);
   }
 
   void test_getLeastUpperBound_typeParameters_same() {
@@ -2078,7 +2079,7 @@
     InterfaceType listType = _typeProvider.listType;
     InterfaceType intType = _typeProvider.intType;
     InterfaceType listOfIntType = listType.substitute4(<DartType> [intType]);
-    JUnitTestCase.assertEquals(listOfIntType, listOfIntType.getLeastUpperBound(listOfIntType));
+    expect(listOfIntType.getLeastUpperBound(listOfIntType), listOfIntType);
   }
 
   void test_getMethod_implemented() {
@@ -2090,7 +2091,7 @@
     MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, []);
     classA.methods = <MethodElement> [methodM];
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertSame(methodM, typeA.getMethod(methodName));
+    expect(typeA.getMethod(methodName), same(methodM));
   }
 
   void test_getMethod_parameterized() {
@@ -2110,12 +2111,12 @@
     InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
     typeAI.typeArguments = <DartType> [typeI];
     MethodElement method = typeAI.getMethod(methodName);
-    JUnitTestCase.assertNotNull(method);
+    expect(method, isNotNull);
     FunctionType methodType = method.type;
-    JUnitTestCase.assertSame(typeI, methodType.returnType);
+    expect(methodType.returnType, same(typeI));
     List<DartType> parameterTypes = methodType.normalParameterTypes;
-    EngineTestCase.assertLength(1, parameterTypes);
-    JUnitTestCase.assertSame(typeI, parameterTypes[0]);
+    expect(parameterTypes, hasLength(1));
+    expect(parameterTypes[0], same(typeI));
   }
 
   void test_getMethod_unimplemented() {
@@ -2124,7 +2125,7 @@
     //
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertNull(typeA.getMethod("m"));
+    expect(typeA.getMethod("m"), isNull);
   }
 
   void test_getMethods() {
@@ -2133,13 +2134,13 @@
     MethodElementImpl methodTwo = ElementFactory.methodElement("two", null, []);
     typeElement.methods = <MethodElement> [methodOne, methodTwo];
     InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(2, type.methods.length);
+    expect(type.methods.length, 2);
   }
 
   void test_getMethods_empty() {
     ClassElementImpl typeElement = ElementFactory.classElement2("A", []);
     InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
-    JUnitTestCase.assertEquals(0, type.methods.length);
+    expect(type.methods.length, 0);
   }
 
   void test_getMixins_nonParameterized() {
@@ -2153,12 +2154,12 @@
     ClassElementImpl classC = ElementFactory.classElement2("C", []);
     classC.mixins = <InterfaceType> [typeA, typeB];
     List<InterfaceType> interfaces = classC.type.mixins;
-    EngineTestCase.assertLength(2, interfaces);
+    expect(interfaces, hasLength(2));
     if (identical(interfaces[0], typeA)) {
-      JUnitTestCase.assertSame(typeB, interfaces[1]);
+      expect(interfaces[1], same(typeB));
     } else {
-      JUnitTestCase.assertSame(typeB, interfaces[0]);
-      JUnitTestCase.assertSame(typeA, interfaces[1]);
+      expect(interfaces[0], same(typeB));
+      expect(interfaces[1], same(typeA));
     }
   }
 
@@ -2180,10 +2181,10 @@
     InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
     typeBI.typeArguments = <DartType> [typeI];
     List<InterfaceType> interfaces = typeBI.mixins;
-    EngineTestCase.assertLength(1, interfaces);
+    expect(interfaces, hasLength(1));
     InterfaceType result = interfaces[0];
-    JUnitTestCase.assertSame(classA, result.element);
-    JUnitTestCase.assertSame(typeI, result.typeArguments[0]);
+    expect(result.element, same(classA));
+    expect(result.typeArguments[0], same(typeI));
   }
 
   void test_getSetter_implemented() {
@@ -2195,7 +2196,7 @@
     PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, false, null);
     classA.accessors = <PropertyAccessorElement> [setterS];
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertSame(setterS, typeA.getSetter(setterName));
+    expect(typeA.getSetter(setterName), same(setterS));
   }
 
   void test_getSetter_parameterized() {
@@ -2215,11 +2216,11 @@
     InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
     typeAI.typeArguments = <DartType> [typeI];
     PropertyAccessorElement setter = typeAI.getSetter(setterName);
-    JUnitTestCase.assertNotNull(setter);
+    expect(setter, isNotNull);
     FunctionType setterType = setter.type;
     List<DartType> parameterTypes = setterType.normalParameterTypes;
-    EngineTestCase.assertLength(1, parameterTypes);
-    JUnitTestCase.assertSame(typeI, parameterTypes[0]);
+    expect(parameterTypes, hasLength(1));
+    expect(parameterTypes[0], same(typeI));
   }
 
   void test_getSetter_unimplemented() {
@@ -2228,7 +2229,7 @@
     //
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertNull(typeA.getSetter("s"));
+    expect(typeA.getSetter("s"), isNull);
   }
 
   void test_getSuperclass_nonParameterized() {
@@ -2239,7 +2240,7 @@
     InterfaceType typeA = classA.type;
     ClassElementImpl classB = ElementFactory.classElement("B", typeA, []);
     InterfaceType typeB = classB.type;
-    JUnitTestCase.assertSame(typeA, typeB.superclass);
+    expect(typeB.superclass, same(typeA));
   }
 
   void test_getSuperclass_parameterized() {
@@ -2260,19 +2261,19 @@
     InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
     typeBI.typeArguments = <DartType> [typeI];
     InterfaceType superclass = typeBI.superclass;
-    JUnitTestCase.assertSame(classA, superclass.element);
-    JUnitTestCase.assertSame(typeI, superclass.typeArguments[0]);
+    expect(superclass.element, same(classA));
+    expect(superclass.typeArguments[0], same(typeI));
   }
 
   void test_getTypeArguments_empty() {
     InterfaceType type = ElementFactory.classElement2("A", []).type;
-    EngineTestCase.assertLength(0, type.typeArguments);
+    expect(type.typeArguments, hasLength(0));
   }
 
   void test_hashCode() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertFalse(0 == typeA.hashCode);
+    expect(0 == typeA.hashCode, isFalse);
   }
 
   void test_isAssignableTo_typeVariables() {
@@ -2291,11 +2292,11 @@
     typeAF.typeArguments = <DartType> [classB.typeParameters[0].type];
     InterfaceTypeImpl typeAG = new InterfaceTypeImpl.con1(classA);
     typeAG.typeArguments = <DartType> [classB.typeParameters[1].type];
-    JUnitTestCase.assertFalse(typeAG.isAssignableTo(typeAF));
+    expect(typeAG.isAssignableTo(typeAF), isFalse);
   }
 
   void test_isAssignableTo_void() {
-    JUnitTestCase.assertFalse(VoidTypeImpl.instance.isAssignableTo(_typeProvider.intType));
+    expect(VoidTypeImpl.instance.isAssignableTo(_typeProvider.intType), isFalse);
   }
 
   void test_isDirectSupertypeOf_extends() {
@@ -2303,7 +2304,7 @@
     ClassElement classB = ElementFactory.classElement("B", classA.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
-    JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
+    expect(typeA.isDirectSupertypeOf(typeB), isTrue);
   }
 
   void test_isDirectSupertypeOf_false() {
@@ -2312,7 +2313,7 @@
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertFalse(typeA.isDirectSupertypeOf(typeC));
+    expect(typeA.isDirectSupertypeOf(typeC), isFalse);
   }
 
   void test_isDirectSupertypeOf_implements() {
@@ -2321,7 +2322,7 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
     classB.interfaces = <InterfaceType> [typeA];
-    JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
+    expect(typeA.isDirectSupertypeOf(typeB), isTrue);
   }
 
   void test_isDirectSupertypeOf_with() {
@@ -2330,12 +2331,12 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
     classB.mixins = <InterfaceType> [typeA];
-    JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
+    expect(typeA.isDirectSupertypeOf(typeB), isTrue);
   }
 
   void test_isMoreSpecificThan_bottom() {
     DartType type = ElementFactory.classElement2("A", []).type;
-    JUnitTestCase.assertTrue(BottomTypeImpl.instance.isMoreSpecificThan(type));
+    expect(BottomTypeImpl.instance.isMoreSpecificThan(type), isTrue);
   }
 
   void test_isMoreSpecificThan_covariance() {
@@ -2346,8 +2347,8 @@
     InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA);
     typeAI.typeArguments = <DartType> [classI.type];
     typeAJ.typeArguments = <DartType> [classJ.type];
-    JUnitTestCase.assertTrue(typeAJ.isMoreSpecificThan(typeAI));
-    JUnitTestCase.assertFalse(typeAI.isMoreSpecificThan(typeAJ));
+    expect(typeAJ.isMoreSpecificThan(typeAI), isTrue);
+    expect(typeAI.isMoreSpecificThan(typeAJ), isFalse);
   }
 
   void test_isMoreSpecificThan_directSupertype() {
@@ -2355,14 +2356,14 @@
     ClassElement classB = ElementFactory.classElement("B", classA.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
-    JUnitTestCase.assertTrue(typeB.isMoreSpecificThan(typeA));
+    expect(typeB.isMoreSpecificThan(typeA), isTrue);
     // the opposite test tests a different branch in isMoreSpecificThan()
-    JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeB));
+    expect(typeA.isMoreSpecificThan(typeB), isFalse);
   }
 
   void test_isMoreSpecificThan_dynamic() {
     InterfaceType type = ElementFactory.classElement2("A", []).type;
-    JUnitTestCase.assertTrue(type.isMoreSpecificThan(DynamicTypeImpl.instance));
+    expect(type.isMoreSpecificThan(DynamicTypeImpl.instance), isTrue);
   }
 
   void test_isMoreSpecificThan_generic() {
@@ -2371,13 +2372,13 @@
     DartType dynamicType = DynamicTypeImpl.instance;
     InterfaceType typeAOfDynamic = classA.type.substitute4(<DartType> [dynamicType]);
     InterfaceType typeAOfB = classA.type.substitute4(<DartType> [classB.type]);
-    JUnitTestCase.assertFalse(typeAOfDynamic.isMoreSpecificThan(typeAOfB));
-    JUnitTestCase.assertTrue(typeAOfB.isMoreSpecificThan(typeAOfDynamic));
+    expect(typeAOfDynamic.isMoreSpecificThan(typeAOfB), isFalse);
+    expect(typeAOfB.isMoreSpecificThan(typeAOfDynamic), isTrue);
   }
 
   void test_isMoreSpecificThan_self() {
     InterfaceType type = ElementFactory.classElement2("A", []).type;
-    JUnitTestCase.assertTrue(type.isMoreSpecificThan(type));
+    expect(type.isMoreSpecificThan(type), isTrue);
   }
 
   void test_isMoreSpecificThan_transitive_interface() {
@@ -2392,7 +2393,7 @@
     classC.interfaces = <InterfaceType> [classB.type];
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
+    expect(typeC.isMoreSpecificThan(typeA), isTrue);
   }
 
   void test_isMoreSpecificThan_transitive_mixin() {
@@ -2407,7 +2408,7 @@
     classC.mixins = <InterfaceType> [classB.type];
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
+    expect(typeC.isMoreSpecificThan(typeA), isTrue);
   }
 
   void test_isMoreSpecificThan_transitive_recursive() {
@@ -2422,7 +2423,7 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
     classA.supertype = classB.type;
-    JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeC));
+    expect(typeA.isMoreSpecificThan(typeC), isFalse);
   }
 
   void test_isMoreSpecificThan_transitive_superclass() {
@@ -2436,7 +2437,7 @@
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
+    expect(typeC.isMoreSpecificThan(typeA), isTrue);
   }
 
   void test_isMoreSpecificThan_typeParameterType() {
@@ -2447,8 +2448,8 @@
     InterfaceType typeA = classA.type;
     TypeParameterType parameterType = classA.typeParameters[0].type;
     DartType objectType = _typeProvider.objectType;
-    JUnitTestCase.assertTrue(parameterType.isMoreSpecificThan(objectType));
-    JUnitTestCase.assertFalse(parameterType.isMoreSpecificThan(typeA));
+    expect(parameterType.isMoreSpecificThan(objectType), isTrue);
+    expect(parameterType.isMoreSpecificThan(typeA), isFalse);
   }
 
   void test_isMoreSpecificThan_typeParameterType_withBound() {
@@ -2464,7 +2465,7 @@
     parameterEA.bound = typeA;
     parameterEA.type = parameterAEType;
     classB.typeParameters = <TypeParameterElementImpl> [parameterEA];
-    JUnitTestCase.assertTrue(parameterAEType.isMoreSpecificThan(typeA));
+    expect(parameterAEType.isMoreSpecificThan(typeA), isTrue);
   }
 
   void test_isSubtypeOf_directSubtype() {
@@ -2472,16 +2473,16 @@
     ClassElement classB = ElementFactory.classElement("B", classA.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
-    JUnitTestCase.assertTrue(typeB.isSubtypeOf(typeA));
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeB));
+    expect(typeB.isSubtypeOf(typeA), isTrue);
+    expect(typeA.isSubtypeOf(typeB), isFalse);
   }
 
   void test_isSubtypeOf_dynamic() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
     DartType dynamicType = DynamicTypeImpl.instance;
-    JUnitTestCase.assertTrue(dynamicType.isSubtypeOf(typeA));
-    JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType));
+    expect(dynamicType.isSubtypeOf(typeA), isTrue);
+    expect(typeA.isSubtypeOf(dynamicType), isTrue);
   }
 
   void test_isSubtypeOf_function() {
@@ -2495,7 +2496,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.methods = <MethodElement> [ElementFactory.methodElement("call", VoidTypeImpl.instance, [stringType])];
     FunctionType functionType = ElementFactory.functionElement5("f", <ClassElement> [stringType.element]).type;
-    JUnitTestCase.assertTrue(classA.type.isSubtypeOf(functionType));
+    expect(classA.type.isSubtypeOf(functionType), isTrue);
   }
 
   void test_isSubtypeOf_generic() {
@@ -2504,8 +2505,8 @@
     DartType dynamicType = DynamicTypeImpl.instance;
     InterfaceType typeAOfDynamic = classA.type.substitute4(<DartType> [dynamicType]);
     InterfaceType typeAOfB = classA.type.substitute4(<DartType> [classB.type]);
-    JUnitTestCase.assertTrue(typeAOfDynamic.isSubtypeOf(typeAOfB));
-    JUnitTestCase.assertTrue(typeAOfB.isSubtypeOf(typeAOfDynamic));
+    expect(typeAOfDynamic.isSubtypeOf(typeAOfB), isTrue);
+    expect(typeAOfB.isSubtypeOf(typeAOfDynamic), isTrue);
   }
 
   void test_isSubtypeOf_interface() {
@@ -2517,10 +2518,10 @@
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
     classC.interfaces = <InterfaceType> [typeB];
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB));
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject));
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
+    expect(typeC.isSubtypeOf(typeB), isTrue);
+    expect(typeC.isSubtypeOf(typeObject), isTrue);
+    expect(typeC.isSubtypeOf(typeA), isTrue);
+    expect(typeA.isSubtypeOf(typeC), isFalse);
   }
 
   void test_isSubtypeOf_mixins() {
@@ -2537,24 +2538,24 @@
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
     classC.mixins = <InterfaceType> [typeB];
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB));
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject));
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
+    expect(typeC.isSubtypeOf(typeB), isTrue);
+    expect(typeC.isSubtypeOf(typeObject), isTrue);
+    expect(typeC.isSubtypeOf(typeA), isTrue);
+    expect(typeA.isSubtypeOf(typeC), isFalse);
   }
 
   void test_isSubtypeOf_object() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
     InterfaceType typeObject = classA.supertype;
-    JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeObject));
-    JUnitTestCase.assertFalse(typeObject.isSubtypeOf(typeA));
+    expect(typeA.isSubtypeOf(typeObject), isTrue);
+    expect(typeObject.isSubtypeOf(typeA), isFalse);
   }
 
   void test_isSubtypeOf_self() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA));
+    expect(typeA.isSubtypeOf(typeA), isTrue);
   }
 
   void test_isSubtypeOf_transitive_recursive() {
@@ -2569,7 +2570,7 @@
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
     classA.supertype = classB.type;
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
+    expect(typeA.isSubtypeOf(typeC), isFalse);
   }
 
   void test_isSubtypeOf_transitive_superclass() {
@@ -2578,8 +2579,8 @@
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
+    expect(typeC.isSubtypeOf(typeA), isTrue);
+    expect(typeA.isSubtypeOf(typeC), isFalse);
   }
 
   void test_isSubtypeOf_typeArguments() {
@@ -2597,19 +2598,19 @@
     typeAJ.typeArguments = <DartType> [classJ.type];
     typeAK.typeArguments = <DartType> [classK.type];
     // A<J> <: A<I> since J <: I
-    JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeAI));
-    JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAJ));
+    expect(typeAJ.isSubtypeOf(typeAI), isTrue);
+    expect(typeAI.isSubtypeOf(typeAJ), isFalse);
     // A<I> <: A<I> since I <: I
-    JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeAI));
+    expect(typeAI.isSubtypeOf(typeAI), isTrue);
     // A <: A<I> and A <: A<J>
-    JUnitTestCase.assertTrue(typeA_dynamic.isSubtypeOf(typeAI));
-    JUnitTestCase.assertTrue(typeA_dynamic.isSubtypeOf(typeAJ));
+    expect(typeA_dynamic.isSubtypeOf(typeAI), isTrue);
+    expect(typeA_dynamic.isSubtypeOf(typeAJ), isTrue);
     // A<I> <: A and A<J> <: A
-    JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeA_dynamic));
-    JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeA_dynamic));
+    expect(typeAI.isSubtypeOf(typeA_dynamic), isTrue);
+    expect(typeAJ.isSubtypeOf(typeA_dynamic), isTrue);
     // A<I> !<: A<K> and A<K> !<: A<I>
-    JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAK));
-    JUnitTestCase.assertFalse(typeAK.isSubtypeOf(typeAI));
+    expect(typeAI.isSubtypeOf(typeAK), isFalse);
+    expect(typeAK.isSubtypeOf(typeAI), isFalse);
   }
 
   void test_isSubtypeOf_typeParameter() {
@@ -2619,7 +2620,7 @@
     ClassElement classA = ElementFactory.classElement2("A", ["E"]);
     InterfaceType typeA = classA.type;
     TypeParameterType parameterType = classA.typeParameters[0].type;
-    JUnitTestCase.assertFalse(typeA.isSubtypeOf(parameterType));
+    expect(typeA.isSubtypeOf(parameterType), isFalse);
   }
 
   void test_isSupertypeOf_directSupertype() {
@@ -2627,16 +2628,16 @@
     ClassElement classB = ElementFactory.classElement("B", classA.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeB = classB.type;
-    JUnitTestCase.assertFalse(typeB.isSupertypeOf(typeA));
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeB));
+    expect(typeB.isSupertypeOf(typeA), isFalse);
+    expect(typeA.isSupertypeOf(typeB), isTrue);
   }
 
   void test_isSupertypeOf_dynamic() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
     DartType dynamicType = DynamicTypeImpl.instance;
-    JUnitTestCase.assertTrue(dynamicType.isSupertypeOf(typeA));
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(dynamicType));
+    expect(dynamicType.isSupertypeOf(typeA), isTrue);
+    expect(typeA.isSupertypeOf(dynamicType), isTrue);
   }
 
   void test_isSupertypeOf_indirectSupertype() {
@@ -2645,8 +2646,8 @@
     ClassElement classC = ElementFactory.classElement("C", classB.type, []);
     InterfaceType typeA = classA.type;
     InterfaceType typeC = classC.type;
-    JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
+    expect(typeC.isSupertypeOf(typeA), isFalse);
+    expect(typeA.isSupertypeOf(typeC), isTrue);
   }
 
   void test_isSupertypeOf_interface() {
@@ -2658,10 +2659,10 @@
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
     classC.interfaces = <InterfaceType> [typeB];
-    JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC));
-    JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC));
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
-    JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
+    expect(typeB.isSupertypeOf(typeC), isTrue);
+    expect(typeObject.isSupertypeOf(typeC), isTrue);
+    expect(typeA.isSupertypeOf(typeC), isTrue);
+    expect(typeC.isSupertypeOf(typeA), isFalse);
   }
 
   void test_isSupertypeOf_mixins() {
@@ -2678,24 +2679,24 @@
     InterfaceType typeB = classB.type;
     InterfaceType typeC = classC.type;
     classC.mixins = <InterfaceType> [typeB];
-    JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC));
-    JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC));
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
-    JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
+    expect(typeB.isSupertypeOf(typeC), isTrue);
+    expect(typeObject.isSupertypeOf(typeC), isTrue);
+    expect(typeA.isSupertypeOf(typeC), isTrue);
+    expect(typeC.isSupertypeOf(typeA), isFalse);
   }
 
   void test_isSupertypeOf_object() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
     InterfaceType typeObject = classA.supertype;
-    JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeObject));
-    JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeA));
+    expect(typeA.isSupertypeOf(typeObject), isFalse);
+    expect(typeObject.isSupertypeOf(typeA), isTrue);
   }
 
   void test_isSupertypeOf_self() {
     ClassElement classA = ElementFactory.classElement2("A", []);
     InterfaceType typeA = classA.type;
-    JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeA));
+    expect(typeA.isSupertypeOf(typeA), isTrue);
   }
 
   void test_lookUpGetter_implemented() {
@@ -2710,7 +2711,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(getterG, typeA.lookUpGetter(getterName, library));
+    expect(typeA.lookUpGetter(getterName, library), same(getterG));
   }
 
   void test_lookUpGetter_inherited() {
@@ -2727,7 +2728,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(getterG, typeB.lookUpGetter(getterName, library));
+    expect(typeB.lookUpGetter(getterName, library), same(getterG));
   }
 
   void test_lookUpGetter_recursive() {
@@ -2742,7 +2743,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(typeA.lookUpGetter("g", library));
+    expect(typeA.lookUpGetter("g", library), isNull);
   }
 
   void test_lookUpGetter_unimplemented() {
@@ -2754,7 +2755,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(typeA.lookUpGetter("g", library));
+    expect(typeA.lookUpGetter("g", library), isNull);
   }
 
   void test_lookUpMethod_implemented() {
@@ -2769,7 +2770,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(methodM, typeA.lookUpMethod(methodName, library));
+    expect(typeA.lookUpMethod(methodName, library), same(methodM));
   }
 
   void test_lookUpMethod_inherited() {
@@ -2786,7 +2787,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(methodM, typeB.lookUpMethod(methodName, library));
+    expect(typeB.lookUpMethod(methodName, library), same(methodM));
   }
 
   void test_lookUpMethod_parameterized() {
@@ -2815,12 +2816,12 @@
     InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
     typeBI.typeArguments = <DartType> [typeI];
     MethodElement method = typeBI.lookUpMethod(methodName, library);
-    JUnitTestCase.assertNotNull(method);
+    expect(method, isNotNull);
     FunctionType methodType = method.type;
-    JUnitTestCase.assertSame(typeI, methodType.returnType);
+    expect(methodType.returnType, same(typeI));
     List<DartType> parameterTypes = methodType.normalParameterTypes;
-    EngineTestCase.assertLength(1, parameterTypes);
-    JUnitTestCase.assertSame(typeI, parameterTypes[0]);
+    expect(parameterTypes, hasLength(1));
+    expect(parameterTypes[0], same(typeI));
   }
 
   void test_lookUpMethod_recursive() {
@@ -2835,7 +2836,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(typeA.lookUpMethod("m", library));
+    expect(typeA.lookUpMethod("m", library), isNull);
   }
 
   void test_lookUpMethod_unimplemented() {
@@ -2847,7 +2848,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(typeA.lookUpMethod("m", library));
+    expect(typeA.lookUpMethod("m", library), isNull);
   }
 
   void test_lookUpSetter_implemented() {
@@ -2862,7 +2863,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertSame(setterS, typeA.lookUpSetter(setterName, library));
+    expect(typeA.lookUpSetter(setterName, library), same(setterS));
   }
 
   void test_lookUpSetter_inherited() {
@@ -2879,7 +2880,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertSame(setterS, typeB.lookUpSetter(setterName, library));
+    expect(typeB.lookUpSetter(setterName, library), same(setterS));
   }
 
   void test_lookUpSetter_recursive() {
@@ -2894,7 +2895,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA, classB];
-    JUnitTestCase.assertNull(typeA.lookUpSetter("s", library));
+    expect(typeA.lookUpSetter("s", library), isNull);
   }
 
   void test_lookUpSetter_unimplemented() {
@@ -2906,7 +2907,7 @@
     LibraryElementImpl library = ElementFactory.library(createAnalysisContext(), "lib");
     CompilationUnitElement unit = library.definingCompilationUnit;
     (unit as CompilationUnitElementImpl).types = <ClassElement> [classA];
-    JUnitTestCase.assertNull(typeA.lookUpSetter("s", library));
+    expect(typeA.lookUpSetter("s", library), isNull);
   }
 
   void test_setTypeArguments() {
@@ -2915,7 +2916,7 @@
         ElementFactory.classElement2("B", []).type,
         ElementFactory.classElement2("C", []).type];
     type.typeArguments = typeArguments;
-    JUnitTestCase.assertEquals(typeArguments, type.typeArguments);
+    expect(type.typeArguments, typeArguments);
   }
 
   void test_substitute_equal() {
@@ -2925,10 +2926,10 @@
     List<DartType> args = [argumentType];
     List<DartType> params = [classAE.typeParameters[0].type];
     InterfaceType typeAESubbed = typeAE.substitute2(args, params);
-    JUnitTestCase.assertEquals(classAE, typeAESubbed.element);
+    expect(typeAESubbed.element, classAE);
     List<DartType> resultArguments = typeAESubbed.typeArguments;
-    EngineTestCase.assertLength(1, resultArguments);
-    JUnitTestCase.assertEquals(argumentType, resultArguments[0]);
+    expect(resultArguments, hasLength(1));
+    expect(resultArguments[0], argumentType);
   }
 
   void test_substitute_exception() {
@@ -2937,7 +2938,7 @@
       InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA);
       InterfaceType argumentType = ElementFactory.classElement2("B", []).type;
       type.substitute2(<DartType> [argumentType], <DartType> []);
-      JUnitTestCase.fail("Expected to encounter exception, argument and parameter type array lengths not equal.");
+      fail("Expected to encounter exception, argument and parameter type array lengths not equal.");
     } catch (e) {
       // Expected result
     }
@@ -2953,10 +2954,10 @@
     InterfaceType argumentType = ElementFactory.classElement2("B", []).type;
     TypeParameterTypeImpl parameterType = new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("F")));
     InterfaceType result = type.substitute2(<DartType> [argumentType], <DartType> [parameterType]);
-    JUnitTestCase.assertEquals(classA, result.element);
+    expect(result.element, classA);
     List<DartType> resultArguments = result.typeArguments;
-    EngineTestCase.assertLength(1, resultArguments);
-    JUnitTestCase.assertEquals(parameter, resultArguments[0]);
+    expect(resultArguments, hasLength(1));
+    expect(resultArguments[0], parameter);
   }
 }
 
@@ -2969,7 +2970,7 @@
 
 class LibraryElementImplTest extends EngineTestCase {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new LibraryElementImpl.forNode(createAnalysisContext(), AstFactory.libraryIdentifier2(["l"])));
+    expect(new LibraryElementImpl.forNode(createAnalysisContext(), AstFactory.libraryIdentifier2(["l"])), isNotNull);
   }
 
   void test_getImportedLibraries() {
@@ -2989,7 +2990,7 @@
         ElementFactory.importFor(library4, prefixA, [])];
     library1.imports = imports;
     List<LibraryElement> libraries = library1.importedLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library2, library3, library4], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library2, library3, library4]));
   }
 
   void test_getPrefixes() {
@@ -3005,12 +3006,12 @@
         ElementFactory.importFor(ElementFactory.library(context, "l6"), prefixB, [])];
     library.imports = imports;
     List<PrefixElement> prefixes = library.prefixes;
-    EngineTestCase.assertLength(2, prefixes);
+    expect(prefixes, hasLength(2));
     if (identical(prefixA, prefixes[0])) {
-      JUnitTestCase.assertSame(prefixB, prefixes[1]);
+      expect(prefixes[1], same(prefixB));
     } else {
-      JUnitTestCase.assertSame(prefixB, prefixes[0]);
-      JUnitTestCase.assertSame(prefixA, prefixes[1]);
+      expect(prefixes[0], same(prefixB));
+      expect(prefixes[1], same(prefixA));
     }
   }
 
@@ -3021,7 +3022,7 @@
     CompilationUnitElementImpl unitA = ElementFactory.compilationUnit("unit_a.dart");
     CompilationUnitElementImpl unitB = ElementFactory.compilationUnit("unit_b.dart");
     library.parts = <CompilationUnitElement> [unitA, unitB];
-    EngineTestCase.assertEqualsIgnoreOrder(<CompilationUnitElement> [unitLib, unitA, unitB], library.units);
+    expect(library.units, unorderedEquals(<CompilationUnitElement> [unitLib, unitA, unitB]));
   }
 
   void test_getVisibleLibraries_cycle() {
@@ -3031,7 +3032,7 @@
     libraryA.imports = <ImportElementImpl> [ElementFactory.importFor(library, null, [])];
     library.imports = <ImportElementImpl> [ElementFactory.importFor(libraryA, null, [])];
     List<LibraryElement> libraries = library.visibleLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library, libraryA], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library, libraryA]));
   }
 
   void test_getVisibleLibraries_directExports() {
@@ -3040,7 +3041,7 @@
     LibraryElementImpl libraryA = ElementFactory.library(context, "A");
     library.exports = <ExportElementImpl> [ElementFactory.exportFor(libraryA, [])];
     List<LibraryElement> libraries = library.visibleLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library]));
   }
 
   void test_getVisibleLibraries_directImports() {
@@ -3049,7 +3050,7 @@
     LibraryElementImpl libraryA = ElementFactory.library(context, "A");
     library.imports = <ImportElementImpl> [ElementFactory.importFor(libraryA, null, [])];
     List<LibraryElement> libraries = library.visibleLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library, libraryA], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library, libraryA]));
   }
 
   void test_getVisibleLibraries_indirectExports() {
@@ -3060,7 +3061,7 @@
     libraryA.exports = <ExportElementImpl> [ElementFactory.exportFor(libraryAA, [])];
     library.imports = <ImportElementImpl> [ElementFactory.importFor(libraryA, null, [])];
     List<LibraryElement> libraries = library.visibleLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library, libraryA, libraryAA], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library, libraryA, libraryAA]));
   }
 
   void test_getVisibleLibraries_indirectImports() {
@@ -3074,13 +3075,13 @@
         ElementFactory.importFor(libraryA, null, []),
         ElementFactory.importFor(libraryB, null, [])];
     List<LibraryElement> libraries = library.visibleLibraries;
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library, libraryA, libraryAA, libraryB], libraries);
+    expect(libraries, unorderedEquals(<LibraryElement> [library, libraryA, libraryAA, libraryB]));
   }
 
   void test_getVisibleLibraries_noImports() {
     AnalysisContext context = createAnalysisContext();
     LibraryElementImpl library = ElementFactory.library(context, "app");
-    EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library], library.visibleLibraries);
+    expect(library.visibleLibraries, unorderedEquals(<LibraryElement> [library]));
   }
 
   void test_isUpToDate() {
@@ -3089,9 +3090,9 @@
     LibraryElement library = ElementFactory.library(context, "foo");
     context.setContents(library.definingCompilationUnit.source, "sdfsdff");
     // Assert that we are not up to date if the target has an old time stamp.
-    JUnitTestCase.assertFalse(library.isUpToDate(0));
+    expect(library.isUpToDate(0), isFalse);
     // Assert that we are up to date with a target modification time in the future.
-    JUnitTestCase.assertTrue(library.isUpToDate(JavaSystem.currentTimeMillis() + 1000));
+    expect(library.isUpToDate(JavaSystem.currentTimeMillis() + 1000), isTrue);
   }
 
   void test_setImports() {
@@ -3102,9 +3103,9 @@
         ElementFactory.importFor(ElementFactory.library(context, "l3"), null, [])];
     library.imports = expectedImports;
     List<ImportElement> actualImports = library.imports;
-    EngineTestCase.assertLength(expectedImports.length, actualImports);
+    expect(actualImports, hasLength(expectedImports.length));
     for (int i = 0; i < actualImports.length; i++) {
-      JUnitTestCase.assertSame(expectedImports[i], actualImports[i]);
+      expect(actualImports[i], same(expectedImports[i]));
     }
   }
 }
@@ -3116,7 +3117,7 @@
     Element result = MultiplyDefinedElementImpl.fromElements(null, firstElement, secondElement);
     EngineTestCase.assertInstanceOf((obj) => obj is MultiplyDefinedElement, MultiplyDefinedElement, result);
     List<Element> elements = (result as MultiplyDefinedElement).conflictingElements;
-    EngineTestCase.assertLength(2, elements);
+    expect(elements, hasLength(2));
     for (int i = 0; i < elements.length; i++) {
       EngineTestCase.assertInstanceOf((obj) => obj is LocalVariableElement, LocalVariableElement, elements[i]);
     }
@@ -3129,7 +3130,7 @@
     Element result = MultiplyDefinedElementImpl.fromElements(null, MultiplyDefinedElementImpl.fromElements(null, firstElement, secondElement), thirdElement);
     EngineTestCase.assertInstanceOf((obj) => obj is MultiplyDefinedElement, MultiplyDefinedElement, result);
     List<Element> elements = (result as MultiplyDefinedElement).conflictingElements;
-    EngineTestCase.assertLength(3, elements);
+    expect(elements, hasLength(3));
     for (int i = 0; i < elements.length; i++) {
       EngineTestCase.assertInstanceOf((obj) => obj is LocalVariableElement, LocalVariableElement, elements[i]);
     }
@@ -3137,33 +3138,33 @@
 
   void test_fromElements_nonConflicting() {
     Element element = ElementFactory.localVariableElement2("xx");
-    JUnitTestCase.assertSame(element, MultiplyDefinedElementImpl.fromElements(null, element, element));
+    expect(MultiplyDefinedElementImpl.fromElements(null, element, element), same(element));
   }
 }
 
 class TypeParameterTypeImplTest extends EngineTestCase {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"))));
+    expect(new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"))), isNotNull);
   }
 
   void test_getElement() {
     TypeParameterElementImpl element = new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
-    JUnitTestCase.assertEquals(element, type.element);
+    expect(type.element, element);
   }
 
   void test_isMoreSpecificThan_typeArguments_dynamic() {
     TypeParameterElementImpl element = new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
     // E << dynamic
-    JUnitTestCase.assertTrue(type.isMoreSpecificThan(DynamicTypeImpl.instance));
+    expect(type.isMoreSpecificThan(DynamicTypeImpl.instance), isTrue);
   }
 
   void test_isMoreSpecificThan_typeArguments_object() {
     TypeParameterElementImpl element = new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
     // E << Object
-    JUnitTestCase.assertTrue(type.isMoreSpecificThan(ElementFactory.object.type));
+    expect(type.isMoreSpecificThan(ElementFactory.object.type), isTrue);
   }
 
   void test_isMoreSpecificThan_typeArguments_resursive() {
@@ -3176,14 +3177,14 @@
     typeParameterU.bound = typeParameterTypeU;
     // <T extends U> and <U extends T>
     // T << S
-    JUnitTestCase.assertFalse(typeParameterTypeT.isMoreSpecificThan(classS.type));
+    expect(typeParameterTypeT.isMoreSpecificThan(classS.type), isFalse);
   }
 
   void test_isMoreSpecificThan_typeArguments_self() {
     TypeParameterElementImpl element = new TypeParameterElementImpl.forNode(AstFactory.identifier3("E"));
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
     // E << E
-    JUnitTestCase.assertTrue(type.isMoreSpecificThan(type));
+    expect(type.isMoreSpecificThan(type), isTrue);
   }
 
   void test_isMoreSpecificThan_typeArguments_transitivity_interfaceTypes() {
@@ -3199,7 +3200,7 @@
     TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typeParameterT);
     // <T extends B>
     // T << A
-    JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(typeA));
+    expect(typeParameterTypeT.isMoreSpecificThan(typeA), isTrue);
   }
 
   void test_isMoreSpecificThan_typeArguments_transitivity_typeParameters() {
@@ -3212,7 +3213,7 @@
     TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typeParameterT);
     // <T extends U> and <U extends S>
     // T << S
-    JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(classS.type));
+    expect(typeParameterTypeT.isMoreSpecificThan(classS.type), isTrue);
   }
 
   void test_isMoreSpecificThan_typeArguments_upperBound() {
@@ -3222,7 +3223,7 @@
     TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typeParameterT);
     // <T extends S>
     // T << S
-    JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(classS.type));
+    expect(typeParameterTypeT.isMoreSpecificThan(classS.type), isTrue);
   }
 
   void test_substitute_equal() {
@@ -3230,14 +3231,14 @@
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(element);
     InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl.forNode(AstFactory.identifier3("A")));
     TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(element);
-    JUnitTestCase.assertSame(argument, type.substitute2(<DartType> [argument], <DartType> [parameter]));
+    expect(type.substitute2(<DartType> [argument], <DartType> [parameter]), same(argument));
   }
 
   void test_substitute_notEqual() {
     TypeParameterTypeImpl type = new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("E")));
     InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl.forNode(AstFactory.identifier3("A")));
     TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(new TypeParameterElementImpl.forNode(AstFactory.identifier3("F")));
-    JUnitTestCase.assertSame(type, type.substitute2(<DartType> [argument], <DartType> [parameter]));
+    expect(type.substitute2(<DartType> [argument], <DartType> [parameter]), same(type));
   }
 }
 
@@ -3266,104 +3267,104 @@
     } on IllegalArgumentException catch (e) {
       return;
     }
-    JUnitTestCase.fail("Expected illegal argument exception.");
+    fail("Expected illegal argument exception.");
   }
 
   void test_equality_beingASubtypeOfAnElementIsNotSufficient() {
     // Non-equal if some elements are different
-    JUnitTestCase.assertFalse(_uAB == _uA);
+    expect(_uAB == _uA, isFalse);
   }
 
   void test_equality_insertionOrderDoesntMatter() {
     // Insertion order doesn't matter, only sets of elements
-    JUnitTestCase.assertTrue(_uAB == _uBA);
-    JUnitTestCase.assertTrue(_uBA == _uAB);
+    expect(_uAB == _uBA, isTrue);
+    expect(_uBA == _uAB, isTrue);
   }
 
   void test_equality_reflexivity() {
     for (DartType u in _us) {
-      JUnitTestCase.assertTrue(u == u);
+      expect(u == u, isTrue);
     }
   }
 
   void test_equality_singletonsCollapse() {
-    JUnitTestCase.assertTrue(_typeA == _uA);
-    JUnitTestCase.assertTrue(_uA == _typeA);
+    expect(_typeA == _uA, isTrue);
+    expect(_uA == _typeA, isTrue);
   }
 
   void test_isMoreSpecificThan_allElementsOnLHSAreSubtypesOfSomeElementOnRHS() {
     // Unions are subtypes when all elements are subtypes
-    JUnitTestCase.assertTrue(_uAB.isMoreSpecificThan(_uA));
-    JUnitTestCase.assertTrue(_uAB.isMoreSpecificThan(_typeA));
+    expect(_uAB.isMoreSpecificThan(_uA), isTrue);
+    expect(_uAB.isMoreSpecificThan(_typeA), isTrue);
   }
 
   void test_isMoreSpecificThan_element() {
     // Elements of union are sub types
-    JUnitTestCase.assertTrue(_typeA.isMoreSpecificThan(_uAB));
-    JUnitTestCase.assertTrue(_typeB.isMoreSpecificThan(_uAB));
+    expect(_typeA.isMoreSpecificThan(_uAB), isTrue);
+    expect(_typeB.isMoreSpecificThan(_uAB), isTrue);
   }
 
   void test_isMoreSpecificThan_notSubtypeOfAnyElement() {
     // Types that are not subtypes of elements are not subtypes
-    JUnitTestCase.assertFalse(_typeA.isMoreSpecificThan(_uB));
+    expect(_typeA.isMoreSpecificThan(_uB), isFalse);
   }
 
   void test_isMoreSpecificThan_reflexivity() {
     for (DartType u in _us) {
-      JUnitTestCase.assertTrue(u.isMoreSpecificThan(u));
+      expect(u.isMoreSpecificThan(u), isTrue);
     }
   }
 
   void test_isMoreSpecificThan_someElementOnLHSIsNotASubtypeOfAnyElementOnRHS() {
     // Unions are subtypes when some element is a subtype
-    JUnitTestCase.assertTrue(_uAB.isMoreSpecificThan(_uB));
-    JUnitTestCase.assertTrue(_uAB.isMoreSpecificThan(_typeB));
+    expect(_uAB.isMoreSpecificThan(_uB), isTrue);
+    expect(_uAB.isMoreSpecificThan(_typeB), isTrue);
   }
 
   void test_isMoreSpecificThan_subtypeOfSomeElement() {
     // Subtypes of elements are sub types
-    JUnitTestCase.assertTrue(_typeB.isMoreSpecificThan(_uA));
+    expect(_typeB.isMoreSpecificThan(_uA), isTrue);
   }
 
   void test_isSubtypeOf_allElementsOnLHSAreSubtypesOfSomeElementOnRHS() {
     // Unions are subtypes when all elements are subtypes
-    JUnitTestCase.assertTrue(_uAB.isSubtypeOf(_uA));
-    JUnitTestCase.assertTrue(_uAB.isSubtypeOf(_typeA));
+    expect(_uAB.isSubtypeOf(_uA), isTrue);
+    expect(_uAB.isSubtypeOf(_typeA), isTrue);
   }
 
   void test_isSubtypeOf_element() {
     // Elements of union are sub types
-    JUnitTestCase.assertTrue(_typeA.isSubtypeOf(_uAB));
-    JUnitTestCase.assertTrue(_typeB.isSubtypeOf(_uAB));
+    expect(_typeA.isSubtypeOf(_uAB), isTrue);
+    expect(_typeB.isSubtypeOf(_uAB), isTrue);
   }
 
   void test_isSubtypeOf_notSubtypeOfAnyElement() {
     // Types that are not subtypes of elements are not subtypes
-    JUnitTestCase.assertFalse(_typeA.isSubtypeOf(_uB));
+    expect(_typeA.isSubtypeOf(_uB), isFalse);
   }
 
   void test_isSubtypeOf_reflexivity() {
     for (DartType u in _us) {
-      JUnitTestCase.assertTrue(u.isSubtypeOf(u));
+      expect(u.isSubtypeOf(u), isTrue);
     }
   }
 
   void test_isSubtypeOf_someElementOnLHSIsNotASubtypeOfAnyElementOnRHS() {
     // Unions are subtypes when some element is a subtype
-    JUnitTestCase.assertTrue(_uAB.isSubtypeOf(_uB));
-    JUnitTestCase.assertTrue(_uAB.isSubtypeOf(_typeB));
+    expect(_uAB.isSubtypeOf(_uB), isTrue);
+    expect(_uAB.isSubtypeOf(_typeB), isTrue);
   }
 
   void test_isSubtypeOf_subtypeOfSomeElement() {
     // Subtypes of elements are sub types
-    JUnitTestCase.assertTrue(_typeB.isSubtypeOf(_uA));
+    expect(_typeB.isSubtypeOf(_uA), isTrue);
   }
 
   void test_nestedUnionsCollapse() {
     UnionType u = UnionTypeImpl.union([_uAB, _typeA]) as UnionType;
     for (DartType t in u.elements) {
       if (t is UnionType) {
-        JUnitTestCase.fail("Expected only non-union types but found ${t}!");
+        fail("Expected only non-union types but found $t!");
       }
     }
   }
@@ -3371,9 +3372,9 @@
   void test_noLossage() {
     UnionType u = UnionTypeImpl.union([_typeA, _typeB, _typeB, _typeA, _typeB, _typeB]) as UnionType;
     Set<DartType> elements = u.elements;
-    JUnitTestCase.assertTrue(elements.contains(_typeA));
-    JUnitTestCase.assertTrue(elements.contains(_typeB));
-    JUnitTestCase.assertTrue(elements.length == 2);
+    expect(elements.contains(_typeA), isTrue);
+    expect(elements.contains(_typeB), isTrue);
+    expect(elements.length == 2, isTrue);
   }
 
   void test_substitute() {
@@ -3383,19 +3384,19 @@
     List<DartType> args = [_typeB];
     List<DartType> params = [classAE.typeParameters[0].type];
     DartType typeAESubbed = typeAE.substitute2(args, params);
-    JUnitTestCase.assertFalse(typeAE == typeAESubbed);
-    JUnitTestCase.assertEquals(UnionTypeImpl.union([_typeA, typeAE]).substitute2(args, params), UnionTypeImpl.union([_typeA, typeAESubbed]));
+    expect(typeAE == typeAESubbed, isFalse);
+    expect(UnionTypeImpl.union([_typeA, typeAESubbed]), UnionTypeImpl.union([_typeA, typeAE]).substitute2(args, params));
   }
 
   void test_toString_pair() {
     String s = _uAB.toString();
-    JUnitTestCase.assertTrue(s == "{A,B}" || s == "{B,A}");
-    JUnitTestCase.assertEquals(s, _uAB.displayName);
+    expect(s == "{A,B}" || s == "{B,A}", isTrue);
+    expect(_uAB.displayName, s);
   }
 
   void test_toString_singleton() {
     // Singleton unions collapse to the the single type.
-    JUnitTestCase.assertEquals("A", _uA.toString());
+    expect(_uA.toString(), "A");
   }
 
   void test_unionTypeIsLessSpecificThan_function() {
@@ -3403,8 +3404,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     DartType uAT = UnionTypeImpl.union([_uA, t]);
-    JUnitTestCase.assertTrue(t.isMoreSpecificThan(uAT));
-    JUnitTestCase.assertFalse(t.isMoreSpecificThan(_uAB));
+    expect(t.isMoreSpecificThan(uAT), isTrue);
+    expect(t.isMoreSpecificThan(_uAB), isFalse);
   }
 
   void test_unionTypeIsSuperTypeOf_function() {
@@ -3412,8 +3413,8 @@
     ClassElement a = ElementFactory.classElement2("A", []);
     FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type;
     DartType uAT = UnionTypeImpl.union([_uA, t]);
-    JUnitTestCase.assertTrue(t.isSubtypeOf(uAT));
-    JUnitTestCase.assertFalse(t.isSubtypeOf(_uAB));
+    expect(t.isSubtypeOf(uAT), isTrue);
+    expect(t.isSubtypeOf(_uAB), isFalse);
   }
 
   @override
@@ -3439,37 +3440,37 @@
 
   void test_isMoreSpecificThan_void_A() {
     ClassElement classA = ElementFactory.classElement2("A", []);
-    JUnitTestCase.assertFalse(_voidType.isMoreSpecificThan(classA.type));
+    expect(_voidType.isMoreSpecificThan(classA.type), isFalse);
   }
 
   void test_isMoreSpecificThan_void_dynamic() {
-    JUnitTestCase.assertTrue(_voidType.isMoreSpecificThan(DynamicTypeImpl.instance));
+    expect(_voidType.isMoreSpecificThan(DynamicTypeImpl.instance), isTrue);
   }
 
   void test_isMoreSpecificThan_void_void() {
-    JUnitTestCase.assertTrue(_voidType.isMoreSpecificThan(_voidType));
+    expect(_voidType.isMoreSpecificThan(_voidType), isTrue);
   }
 
   void test_isSubtypeOf_void_A() {
     ClassElement classA = ElementFactory.classElement2("A", []);
-    JUnitTestCase.assertFalse(_voidType.isSubtypeOf(classA.type));
+    expect(_voidType.isSubtypeOf(classA.type), isFalse);
   }
 
   void test_isSubtypeOf_void_dynamic() {
-    JUnitTestCase.assertTrue(_voidType.isSubtypeOf(DynamicTypeImpl.instance));
+    expect(_voidType.isSubtypeOf(DynamicTypeImpl.instance), isTrue);
   }
 
   void test_isSubtypeOf_void_void() {
-    JUnitTestCase.assertTrue(_voidType.isSubtypeOf(_voidType));
+    expect(_voidType.isSubtypeOf(_voidType), isTrue);
   }
 
   void test_isVoid() {
-    JUnitTestCase.assertTrue(_voidType.isVoid);
+    expect(_voidType.isVoid, isTrue);
   }
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(AngularPropertyKindTest);
   runReflectiveTests(ElementKindTest);
   runReflectiveTests(FunctionTypeImplTest);
diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart
index 845636e..fdbf762 100644
--- a/pkg/analyzer/test/generated/engine_test.dart
+++ b/pkg/analyzer/test/generated/engine_test.dart
@@ -18,7 +18,6 @@
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/java_engine_io.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/parser.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/scanner.dart';
@@ -30,7 +29,7 @@
 import 'package:analyzer/src/generated/utilities_collection.dart';
 import 'package:analyzer/src/task/task_dart.dart';
 import 'package:typed_mock/typed_mock.dart';
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 
 import 'all_the_rest.dart';
 import 'resolver_test.dart';
@@ -39,7 +38,7 @@
 
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(AnalysisCacheTest);
   runReflectiveTests(AnalysisContextImplTest);
   runReflectiveTests(AnalysisTaskTest);
@@ -67,13 +66,13 @@
 
 class AnalysisCacheTest extends EngineTestCase {
   void test_creation() {
-    JUnitTestCase.assertNotNull(new AnalysisCache(new List<CachePartition>(0)));
+    expect(new AnalysisCache(new List<CachePartition>(0)), isNotNull);
   }
 
   void test_get() {
     AnalysisCache cache = new AnalysisCache(new List<CachePartition>(0));
     TestSource source = new TestSource();
-    JUnitTestCase.assertNull(cache.get(source));
+    expect(cache.get(source), isNull);
   }
 
   void test_iterator() {
@@ -84,10 +83,10 @@
     DartEntry entry = new DartEntry();
     cache.put(source, entry);
     MapIterator<Source, SourceEntry> iterator = cache.iterator();
-    JUnitTestCase.assertTrue(iterator.moveNext());
-    JUnitTestCase.assertSame(source, iterator.key);
-    JUnitTestCase.assertSame(entry, iterator.value);
-    JUnitTestCase.assertFalse(iterator.moveNext());
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.key, same(source));
+    expect(iterator.value, same(entry));
+    expect(iterator.moveNext(), isFalse);
   }
 
   void test_put_noFlush() {
@@ -97,7 +96,7 @@
     TestSource source = new TestSource();
     DartEntry entry = new DartEntry();
     cache.put(source, entry);
-    JUnitTestCase.assertSame(entry, cache.get(source));
+    expect(cache.get(source), same(entry));
   }
 
   void test_setMaxCacheSize() {
@@ -108,7 +107,7 @@
     AnalysisCache cache = new AnalysisCache(<CachePartition>[partition]);
     int size = 6;
     for (int i = 0; i < size; i++) {
-      Source source = new TestSource("/test${i}.dart");
+      Source source = new TestSource("/test$i.dart");
       DartEntry entry = new DartEntry();
       entry.setValue(DartEntry.PARSED_UNIT, null);
       cache.put(source, entry);
@@ -126,11 +125,11 @@
     AnalysisCache cache = new AnalysisCache(<CachePartition>[partition]);
     int size = 4;
     for (int i = 0; i < size; i++) {
-      Source source = new TestSource("/test${i}.dart");
+      Source source = new TestSource("/test$i.dart");
       cache.put(source, new DartEntry());
       cache.accessedAst(source);
     }
-    JUnitTestCase.assertEquals(size, cache.size());
+    expect(cache.size(), size);
   }
 
   void _assertNonFlushedCount(int expectedCount, AnalysisCache cache) {
@@ -142,7 +141,7 @@
         nonFlushedCount++;
       }
     }
-    JUnitTestCase.assertEquals(expectedCount, nonFlushedCount);
+    expect(nonFlushedCount, expectedCount);
   }
 }
 
@@ -159,47 +158,36 @@
   SourceFactory _sourceFactory;
 
   void fail_extractContext() {
-    JUnitTestCase.fail("Implement this");
+    fail("Implement this");
   }
 
   void fail_mergeContext() {
-    JUnitTestCase.fail("Implement this");
+    fail("Implement this");
   }
 
   void fail_performAnalysisTask_importedLibraryDelete_html() {
     Source htmlSource = _addSource(
         "/page.html",
-        EngineTestCase.createSource(
-            [
-                "<html><body><script type=\"application/dart\">",
-                "  import 'libB.dart';",
-                "  main() {print('hello dart');}",
-                "</script></body></html>"]));
+        r'''
+<html><body><script type="application/dart">
+  import 'libB.dart';
+  main() {print('hello dart');}
+</script></body></html>''');
     Source libBSource = _addSource("/libB.dart", "library libB;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "htmlUnit resolved 1",
-        _context.getResolvedHtmlUnit(htmlSource));
-    JUnitTestCase.assertNotNullMsg(
-        "libB resolved 1",
-        _context.getResolvedCompilationUnit2(libBSource, libBSource));
-    JUnitTestCase.assertTrueMsg(
-        "htmlSource doesn't have errors",
-        !_hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)));
+    expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull, reason: "htmlUnit resolved 1");
+    expect(_context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, reason: "libB resolved 1");
+    expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)), isTrue, reason: "htmlSource doesn't have errors");
     // remove libB.dart content and analyze
     _context.setContents(libBSource, null);
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "htmlUnit resolved 1",
-        _context.getResolvedHtmlUnit(htmlSource));
+    expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull, reason: "htmlUnit resolved 1");
     AnalysisErrorInfo errors = _context.getErrors(htmlSource);
-    JUnitTestCase.assertTrueMsg(
-        "htmlSource has an error",
-        _hasAnalysisErrorWithErrorSeverity(errors));
+    expect(_hasAnalysisErrorWithErrorSeverity(errors), isTrue, reason: "htmlSource has an error");
   }
 
   void fail_recordLibraryElements() {
-    JUnitTestCase.fail("Implement this");
+    fail("Implement this");
   }
 
   @override
@@ -211,6 +199,8 @@
     AnalysisOptionsImpl options =
         new AnalysisOptionsImpl.con1(_context.analysisOptions);
     options.cacheSize = 256;
+    options.enableAsync = true;
+    options.enableEnum = true;
     _context.analysisOptions = options;
   }
 
@@ -222,10 +212,9 @@
   }
 
   void test_applyChanges_add() {
-    JUnitTestCase.assertTrue(_context.sourcesNeedingProcessing.isEmpty);
+    expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
     Source source = _addSource("/test.dart", "main() {}");
-    JUnitTestCase.assertTrue(
-        _context.sourcesNeedingProcessing.contains(source));
+    expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
   }
 
   void test_applyChanges_change_flush_element() {
@@ -233,12 +222,16 @@
     _sourceFactory = _context.sourceFactory;
     Source librarySource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["library lib;", "int a = 0;"]));
-    JUnitTestCase.assertNotNull(_context.computeLibraryElement(librarySource));
+        r'''
+library lib;
+int a = 0;''');
+    expect(_context.computeLibraryElement(librarySource), isNotNull);
     _context.setContents(
         librarySource,
-        EngineTestCase.createSource(["library lib;", "int aa = 0;"]));
-    JUnitTestCase.assertNull(_context.getLibraryElement(librarySource));
+        r'''
+library lib;
+int aa = 0;''');
+    expect(_context.getLibraryElement(librarySource), isNull);
   }
 
   void test_applyChanges_change_multiple() {
@@ -246,19 +239,27 @@
     _sourceFactory = _context.sourceFactory;
     Source librarySource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "int a = 0;"]));
+        r'''
+library lib;
+part 'part.dart';
+int a = 0;''');
     Source partSource = _addSource(
         "/part.dart",
-        EngineTestCase.createSource(["part of lib;", "int b = a;"]));
+        r'''
+part of lib;
+int b = a;''');
     _context.computeLibraryElement(librarySource);
     _context.setContents(
         librarySource,
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "int aa = 0;"]));
+        r'''
+library lib;
+part 'part.dart';
+int aa = 0;''');
     _context.setContents(
         partSource,
-        EngineTestCase.createSource(["part of lib;", "int b = aa;"]));
+        r'''
+part of lib;
+int b = aa;''');
     _context.computeLibraryElement(librarySource);
     CompilationUnit libraryUnit =
         _context.resolveCompilationUnit2(librarySource, librarySource);
@@ -271,14 +272,12 @@
         partUnit.declarations[0] as TopLevelVariableDeclaration;
     Element useElement =
         (use.variables.variables[0].initializer as SimpleIdentifier).staticElement;
-    JUnitTestCase.assertSame(
-        declarationElement,
-        (useElement as PropertyAccessorElement).variable);
+    expect((useElement as PropertyAccessorElement).variable, same(declarationElement));
   }
 
   void test_applyChanges_empty() {
     _context.applyChanges(new ChangeSet());
-    JUnitTestCase.assertNull(_context.performAnalysisTask().changeNotices);
+    expect(_context.performAnalysisTask().changeNotices, isNull);
   }
 
   void test_applyChanges_overriddenSource() {
@@ -293,7 +292,7 @@
     ChangeSet changeSet = new ChangeSet();
     changeSet.changedSource(source);
     _context.applyChanges(changeSet);
-    EngineTestCase.assertSizeOfList(0, _context.sourcesNeedingProcessing);
+    expect(_context.sourcesNeedingProcessing, hasLength(0));
   }
 
   void test_applyChanges_remove() {
@@ -301,23 +300,25 @@
     _sourceFactory = _context.sourceFactory;
     Source libA = _addSource(
         "/libA.dart",
-        EngineTestCase.createSource(["library libA;", "import 'libB.dart';"]));
+        r'''
+library libA;
+import 'libB.dart';''');
     Source libB =
-        _addSource("/libB.dart", EngineTestCase.createSource(["library libB;"]));
+        _addSource("/libB.dart", "library libB;");
     LibraryElement libAElement = _context.computeLibraryElement(libA);
     List<LibraryElement> importedLibraries = libAElement.importedLibraries;
-    EngineTestCase.assertLength(2, importedLibraries);
+    expect(importedLibraries, hasLength(2));
     _context.computeErrors(libA);
     _context.computeErrors(libB);
-    EngineTestCase.assertSizeOfList(0, _context.sourcesNeedingProcessing);
+    expect(_context.sourcesNeedingProcessing, hasLength(0));
     _context.setContents(libB, null);
     _removeSource(libB);
     List<Source> sources = _context.sourcesNeedingProcessing;
-    EngineTestCase.assertSizeOfList(1, sources);
-    JUnitTestCase.assertSame(libA, sources[0]);
+    expect(sources, hasLength(1));
+    expect(sources[0], same(libA));
     libAElement = _context.computeLibraryElement(libA);
     importedLibraries = libAElement.importedLibraries;
-    EngineTestCase.assertLength(1, importedLibraries);
+    expect(importedLibraries, hasLength(1));
   }
 
   void test_applyChanges_removeContainer() {
@@ -325,20 +326,22 @@
     _sourceFactory = _context.sourceFactory;
     Source libA = _addSource(
         "/libA.dart",
-        EngineTestCase.createSource(["library libA;", "import 'libB.dart';"]));
+        r'''
+library libA;
+import 'libB.dart';''');
     Source libB =
-        _addSource("/libB.dart", EngineTestCase.createSource(["library libB;"]));
+        _addSource("/libB.dart", "library libB;");
     _context.computeLibraryElement(libA);
     _context.computeErrors(libA);
     _context.computeErrors(libB);
-    EngineTestCase.assertSizeOfList(0, _context.sourcesNeedingProcessing);
+    expect(_context.sourcesNeedingProcessing, hasLength(0));
     ChangeSet changeSet = new ChangeSet();
     changeSet.removedContainer(
         new _AnalysisContextImplTest_test_applyChanges_removeContainer(libB));
     _context.applyChanges(changeSet);
     List<Source> sources = _context.sourcesNeedingProcessing;
-    EngineTestCase.assertSizeOfList(1, sources);
-    JUnitTestCase.assertSame(libA, sources[0]);
+    expect(sources, hasLength(1));
+    expect(sources[0], same(libA));
   }
 
   void test_computeDocumentationComment_block() {
@@ -346,31 +349,30 @@
     _sourceFactory = _context.sourceFactory;
     String comment = "/** Comment */";
     Source source =
-        _addSource("/test.dart", EngineTestCase.createSource([comment, "class A {}"]));
+        _addSource("/test.dart", """
+$comment
+class A {}""");
     LibraryElement libraryElement = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
-    JUnitTestCase.assertNotNull(libraryElement);
-    JUnitTestCase.assertEquals(
-        comment,
-        _context.computeDocumentationComment(classElement));
+    expect(libraryElement, isNotNull);
+    expect(_context.computeDocumentationComment(classElement), comment);
   }
 
   void test_computeDocumentationComment_none() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     Source source =
-        _addSource("/test.dart", EngineTestCase.createSource(["class A {}"]));
+        _addSource("/test.dart", "class A {}");
     LibraryElement libraryElement = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
-    JUnitTestCase.assertNotNull(libraryElement);
-    JUnitTestCase.assertNull(
-        _context.computeDocumentationComment(classElement));
+    expect(libraryElement, isNotNull);
+    expect(_context.computeDocumentationComment(classElement), isNull);
   }
 
   void test_computeDocumentationComment_null() {
-    JUnitTestCase.assertNull(_context.computeDocumentationComment(null));
+    expect(_context.computeDocumentationComment(null), isNull);
   }
 
   void test_computeDocumentationComment_singleLine_multiple_EOL_n() {
@@ -379,11 +381,11 @@
     String comment = "/// line 1\n/// line 2\n/// line 3\n";
     Source source = _addSource("/test.dart", "${comment}class A {}");
     LibraryElement libraryElement = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     String actual = _context.computeDocumentationComment(classElement);
-    JUnitTestCase.assertEquals("/// line 1\n/// line 2\n/// line 3", actual);
+    expect(actual, "/// line 1\n/// line 2\n/// line 3");
   }
 
   void test_computeDocumentationComment_singleLine_multiple_EOL_rn() {
@@ -392,17 +394,17 @@
     String comment = "/// line 1\r\n/// line 2\r\n/// line 3\r\n";
     Source source = _addSource("/test.dart", "${comment}class A {}");
     LibraryElement libraryElement = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     ClassElement classElement = libraryElement.definingCompilationUnit.types[0];
-    JUnitTestCase.assertNotNull(libraryElement);
+    expect(libraryElement, isNotNull);
     String actual = _context.computeDocumentationComment(classElement);
-    JUnitTestCase.assertEquals("/// line 1\n/// line 2\n/// line 3", actual);
+    expect(actual, "/// line 1\n/// line 2\n/// line 3");
   }
 
   void test_computeErrors_dart_none() {
     Source source = _addSource("/lib.dart", "library lib;");
     List<AnalysisError> errors = _context.computeErrors(source);
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
   }
 
   void test_computeErrors_dart_part() {
@@ -411,26 +413,26 @@
     Source partSource = _addSource("/part.dart", "part of 'lib';");
     _context.parseCompilationUnit(librarySource);
     List<AnalysisError> errors = _context.computeErrors(partSource);
-    JUnitTestCase.assertNotNull(errors);
-    JUnitTestCase.assertTrue(errors.length > 0);
+    expect(errors, isNotNull);
+    expect(errors.length > 0, isTrue);
   }
 
   void test_computeErrors_dart_some() {
     Source source = _addSource("/lib.dart", "library 'lib';");
     List<AnalysisError> errors = _context.computeErrors(source);
-    JUnitTestCase.assertNotNull(errors);
-    JUnitTestCase.assertTrue(errors.length > 0);
+    expect(errors, isNotNull);
+    expect(errors.length > 0, isTrue);
   }
 
   void test_computeErrors_html_none() {
     Source source = _addSource("/test.html", "<html></html>");
     List<AnalysisError> errors = _context.computeErrors(source);
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
   }
 
   void test_computeExportedLibraries_none() {
     Source source = _addSource("/test.dart", "library test;");
-    EngineTestCase.assertLength(0, _context.computeExportedLibraries(source));
+    expect(_context.computeExportedLibraries(source), hasLength(0));
   }
 
   void test_computeExportedLibraries_some() {
@@ -439,24 +441,24 @@
     Source source = _addSource(
         "/test.dart",
         "library test; export 'lib1.dart'; export 'lib2.dart';");
-    EngineTestCase.assertLength(2, _context.computeExportedLibraries(source));
+    expect(_context.computeExportedLibraries(source), hasLength(2));
   }
 
   void test_computeHtmlElement_nonHtml() {
     Source source = _addSource("/test.dart", "library test;");
-    JUnitTestCase.assertNull(_context.computeHtmlElement(source));
+    expect(_context.computeHtmlElement(source), isNull);
   }
 
   void test_computeHtmlElement_valid() {
     Source source = _addSource("/test.html", "<html></html>");
     HtmlElement element = _context.computeHtmlElement(source);
-    JUnitTestCase.assertNotNull(element);
-    JUnitTestCase.assertSame(element, _context.computeHtmlElement(source));
+    expect(element, isNotNull);
+    expect(_context.computeHtmlElement(source), same(element));
   }
 
   void test_computeImportedLibraries_none() {
     Source source = _addSource("/test.dart", "library test;");
-    EngineTestCase.assertLength(0, _context.computeImportedLibraries(source));
+    expect(_context.computeImportedLibraries(source), hasLength(0));
   }
 
   void test_computeImportedLibraries_some() {
@@ -465,31 +467,27 @@
     Source source = _addSource(
         "/test.dart",
         "library test; import 'lib1.dart'; import 'lib2.dart';");
-    EngineTestCase.assertLength(2, _context.computeImportedLibraries(source));
+    expect(_context.computeImportedLibraries(source), hasLength(2));
   }
 
   void test_computeKindOf_html() {
     Source source = _addSource("/test.html", "");
-    JUnitTestCase.assertSame(SourceKind.HTML, _context.computeKindOf(source));
+    expect(_context.computeKindOf(source), same(SourceKind.HTML));
   }
 
   void test_computeKindOf_library() {
     Source source = _addSource("/test.dart", "library lib;");
-    JUnitTestCase.assertSame(
-        SourceKind.LIBRARY,
-        _context.computeKindOf(source));
+    expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
   }
 
   void test_computeKindOf_libraryAndPart() {
     Source source = _addSource("/test.dart", "library lib; part of lib;");
-    JUnitTestCase.assertSame(
-        SourceKind.LIBRARY,
-        _context.computeKindOf(source));
+    expect(_context.computeKindOf(source), same(SourceKind.LIBRARY));
   }
 
   void test_computeKindOf_part() {
     Source source = _addSource("/test.dart", "part of lib;");
-    JUnitTestCase.assertSame(SourceKind.PART, _context.computeKindOf(source));
+    expect(_context.computeKindOf(source), same(SourceKind.PART));
   }
 
   void test_computeLibraryElement() {
@@ -497,31 +495,38 @@
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/test.dart", "library lib;");
     LibraryElement element = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
   }
 
   void test_computeLineInfo_dart() {
     Source source = _addSource(
         "/test.dart",
-        EngineTestCase.createSource(["library lib;", "", "main() {}"]));
+        r'''
+library lib;
+
+main() {}''');
     LineInfo info = _context.computeLineInfo(source);
-    JUnitTestCase.assertNotNull(info);
+    expect(info, isNotNull);
   }
 
   void test_computeLineInfo_html() {
     Source source = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            ["<html>", "  <body>", "    <h1>A</h1>", "  </body>", "</html>"]));
+        r'''
+<html>
+  <body>
+    <h1>A</h1>
+  </body>
+</html>''');
     LineInfo info = _context.computeLineInfo(source);
-    JUnitTestCase.assertNotNull(info);
+    expect(info, isNotNull);
   }
 
   void test_computeResolvableCompilationUnit_dart_exception() {
     TestSource source = _addSourceWithException("/test.dart");
     try {
       _context.computeResolvableCompilationUnit(source);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -531,7 +536,7 @@
     Source source = _addSource("/lib.html", "<html></html>");
     try {
       _context.computeResolvableCompilationUnit(source);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -540,49 +545,48 @@
   void test_computeResolvableCompilationUnit_valid() {
     Source source = _addSource("/lib.dart", "library lib;");
     CompilationUnit parsedUnit = _context.parseCompilationUnit(source);
-    JUnitTestCase.assertNotNull(parsedUnit);
+    expect(parsedUnit, isNotNull);
     CompilationUnit resolvedUnit =
         _context.computeResolvableCompilationUnit(source);
-    JUnitTestCase.assertNotNull(resolvedUnit);
-    JUnitTestCase.assertSame(parsedUnit, resolvedUnit);
+    expect(resolvedUnit, isNotNull);
+    expect(resolvedUnit, same(parsedUnit));
   }
 
   void test_dispose() {
-    JUnitTestCase.assertFalse(_context.isDisposed);
+    expect(_context.isDisposed, isFalse);
     _context.dispose();
-    JUnitTestCase.assertTrue(_context.isDisposed);
+    expect(_context.isDisposed, isTrue);
   }
 
   void test_exists_false() {
     TestSource source = new TestSource();
     source.exists2 = false;
-    JUnitTestCase.assertFalse(_context.exists(source));
+    expect(_context.exists(source), isFalse);
   }
 
   void test_exists_null() {
-    JUnitTestCase.assertFalse(_context.exists(null));
+    expect(_context.exists(null), isFalse);
   }
 
   void test_exists_overridden() {
     Source source = new TestSource();
     _context.setContents(source, "");
-    JUnitTestCase.assertTrue(_context.exists(source));
+    expect(_context.exists(source), isTrue);
   }
 
   void test_exists_true() {
-    JUnitTestCase.assertTrue(
-        _context.exists(new AnalysisContextImplTest_Source_exists_true()));
+    expect(_context.exists(new AnalysisContextImplTest_Source_exists_true()), isTrue);
   }
 
   void test_getAnalysisOptions() {
-    JUnitTestCase.assertNotNull(_context.analysisOptions);
+    expect(_context.analysisOptions, isNotNull);
   }
 
   void test_getContents_fromSource() {
     String content = "library lib;";
     TimestampedData<String> contents =
         _context.getContents(new TestSource('/test.dart', content));
-    JUnitTestCase.assertEquals(content, contents.data.toString());
+    expect(contents.data.toString(), content);
   }
 
   void test_getContents_overridden() {
@@ -590,7 +594,7 @@
     Source source = new TestSource();
     _context.setContents(source, content);
     TimestampedData<String> contents = _context.getContents(source);
-    JUnitTestCase.assertEquals(content, contents.data.toString());
+    expect(contents.data.toString(), content);
   }
 
   void test_getContents_unoverridden() {
@@ -599,12 +603,12 @@
     _context.setContents(source, "part of lib;");
     _context.setContents(source, null);
     TimestampedData<String> contents = _context.getContents(source);
-    JUnitTestCase.assertEquals(content, contents.data.toString());
+    expect(contents.data.toString(), content);
   }
 
   void test_getDeclaredVariables() {
     _context = AnalysisContextFactory.contextWithCore();
-    JUnitTestCase.assertNotNull(_context.declaredVariables);
+    expect(_context.declaredVariables, isNotNull);
   }
 
   void test_getElement() {
@@ -612,97 +616,112 @@
     _sourceFactory = _context.sourceFactory;
     LibraryElement core =
         _context.computeLibraryElement(_sourceFactory.forUri("dart:core"));
-    JUnitTestCase.assertNotNull(core);
+    expect(core, isNotNull);
     ClassElement classObject =
         _findClass(core.definingCompilationUnit, "Object");
-    JUnitTestCase.assertNotNull(classObject);
+    expect(classObject, isNotNull);
     ElementLocation location = classObject.location;
     Element element = _context.getElement(location);
-    JUnitTestCase.assertSame(classObject, element);
+    expect(element, same(classObject));
   }
 
   void test_getElement_constructor_named() {
     Source source = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["class A {", "  A.named() {}", "}"]));
+        r'''
+class A {
+  A.named() {}
+}''');
     _analyzeAll_assertFinished();
     LibraryElement library = _context.computeLibraryElement(source);
     ClassElement classA = _findClass(library.definingCompilationUnit, "A");
     ConstructorElement constructor = classA.constructors[0];
     ElementLocation location = constructor.location;
     Element element = _context.getElement(location);
-    JUnitTestCase.assertSame(constructor, element);
+    expect(element, same(constructor));
   }
 
   void test_getElement_constructor_unnamed() {
     Source source = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["class A {", "  A() {}", "}"]));
+        r'''
+class A {
+  A() {}
+}''');
     _analyzeAll_assertFinished();
     LibraryElement library = _context.computeLibraryElement(source);
     ClassElement classA = _findClass(library.definingCompilationUnit, "A");
     ConstructorElement constructor = classA.constructors[0];
     ElementLocation location = constructor.location;
     Element element = _context.getElement(location);
-    JUnitTestCase.assertSame(constructor, element);
+    expect(element, same(constructor));
+  }
+
+  void test_getElement_enum() {
+    Source source = _addSource('/test.dart', 'enum MyEnum {A, B, C}');
+    _analyzeAll_assertFinished();
+    LibraryElement library = _context.computeLibraryElement(source);
+    ClassElement myEnum = library.definingCompilationUnit.getEnum('MyEnum');
+    ElementLocation location = myEnum.location;
+    Element element = _context.getElement(location);
+    expect(element, same(myEnum));
   }
 
   void test_getErrors_dart_none() {
     Source source = _addSource("/lib.dart", "library lib;");
     List<AnalysisError> errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
     _context.computeErrors(source);
     errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
   }
 
   void test_getErrors_dart_some() {
     Source source = _addSource("/lib.dart", "library 'lib';");
     List<AnalysisError> errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
     _context.computeErrors(source);
     errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(1, errors);
+    expect(errors, hasLength(1));
   }
 
   void test_getErrors_html_none() {
     Source source = _addSource("/test.html", "<html></html>");
     List<AnalysisError> errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
     _context.computeErrors(source);
     errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
   }
 
   void test_getErrors_html_some() {
     Source source = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.dart'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.dart'/>
+</head></html>''');
     List<AnalysisError> errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(0, errors);
+    expect(errors, hasLength(0));
     _context.computeErrors(source);
     errors = _context.getErrors(source).errors;
-    EngineTestCase.assertLength(1, errors);
+    expect(errors, hasLength(1));
   }
 
   void test_getHtmlElement_dart() {
     Source source = _addSource("/test.dart", "");
-    JUnitTestCase.assertNull(_context.getHtmlElement(source));
-    JUnitTestCase.assertNull(_context.computeHtmlElement(source));
-    JUnitTestCase.assertNull(_context.getHtmlElement(source));
+    expect(_context.getHtmlElement(source), isNull);
+    expect(_context.computeHtmlElement(source), isNull);
+    expect(_context.getHtmlElement(source), isNull);
   }
 
   void test_getHtmlElement_html() {
     Source source = _addSource("/test.html", "<html></html>");
     HtmlElement element = _context.getHtmlElement(source);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
     _context.computeHtmlElement(source);
     element = _context.getHtmlElement(source);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
   }
 
   void test_getHtmlFilesReferencing_html() {
@@ -710,38 +729,36 @@
     _sourceFactory = _context.sourceFactory;
     Source htmlSource = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.dart'/>",
-                "<script type='application/dart' src='test.js'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.dart'/>
+<script type='application/dart' src='test.js'/>
+</head></html>''');
     Source librarySource = _addSource("/test.dart", "library lib;");
     Source secondHtmlSource = _addSource("/test.html", "<html></html>");
     _context.computeLibraryElement(librarySource);
     List<Source> result = _context.getHtmlFilesReferencing(secondHtmlSource);
-    EngineTestCase.assertLength(0, result);
+    expect(result, hasLength(0));
     _context.parseHtmlUnit(htmlSource);
     result = _context.getHtmlFilesReferencing(secondHtmlSource);
-    EngineTestCase.assertLength(0, result);
+    expect(result, hasLength(0));
   }
 
   void test_getHtmlFilesReferencing_library() {
     Source htmlSource = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.dart'/>",
-                "<script type='application/dart' src='test.js'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.dart'/>
+<script type='application/dart' src='test.js'/>
+</head></html>''');
     Source librarySource = _addSource("/test.dart", "library lib;");
     List<Source> result = _context.getHtmlFilesReferencing(librarySource);
-    EngineTestCase.assertLength(0, result);
+    expect(result, hasLength(0));
     _context.parseHtmlUnit(htmlSource);
     result = _context.getHtmlFilesReferencing(librarySource);
-    EngineTestCase.assertLength(1, result);
-    JUnitTestCase.assertEquals(htmlSource, result[0]);
+    expect(result, hasLength(1));
+    expect(result[0], htmlSource);
   }
 
   void test_getHtmlFilesReferencing_part() {
@@ -749,80 +766,81 @@
     _sourceFactory = _context.sourceFactory;
     Source htmlSource = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.dart'/>",
-                "<script type='application/dart' src='test.js'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.dart'/>
+<script type='application/dart' src='test.js'/>
+</head></html>''');
     Source librarySource =
         _addSource("/test.dart", "library lib; part 'part.dart';");
     Source partSource = _addSource("/part.dart", "part of lib;");
     _context.computeLibraryElement(librarySource);
     List<Source> result = _context.getHtmlFilesReferencing(partSource);
-    EngineTestCase.assertLength(0, result);
+    expect(result, hasLength(0));
     _context.parseHtmlUnit(htmlSource);
     result = _context.getHtmlFilesReferencing(partSource);
-    EngineTestCase.assertLength(1, result);
-    JUnitTestCase.assertEquals(htmlSource, result[0]);
+    expect(result, hasLength(1));
+    expect(result[0], htmlSource);
   }
 
   void test_getHtmlSources() {
     List<Source> sources = _context.htmlSources;
-    EngineTestCase.assertLength(0, sources);
+    expect(sources, hasLength(0));
     Source source = _addSource("/test.html", "");
     _context.computeKindOf(source);
     sources = _context.htmlSources;
-    EngineTestCase.assertLength(1, sources);
-    JUnitTestCase.assertEquals(source, sources[0]);
+    expect(sources, hasLength(1));
+    expect(sources[0], source);
   }
 
   void test_getKindOf_html() {
     Source source = _addSource("/test.html", "");
-    JUnitTestCase.assertSame(SourceKind.HTML, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.HTML));
   }
 
   void test_getKindOf_library() {
     Source source = _addSource("/test.dart", "library lib;");
-    JUnitTestCase.assertSame(SourceKind.UNKNOWN, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
     _context.computeKindOf(source);
-    JUnitTestCase.assertSame(SourceKind.LIBRARY, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.LIBRARY));
   }
 
   void test_getKindOf_part() {
     Source source = _addSource("/test.dart", "part of lib;");
-    JUnitTestCase.assertSame(SourceKind.UNKNOWN, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
     _context.computeKindOf(source);
-    JUnitTestCase.assertSame(SourceKind.PART, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.PART));
   }
 
   void test_getKindOf_unknown() {
     Source source = _addSource("/test.css", "");
-    JUnitTestCase.assertSame(SourceKind.UNKNOWN, _context.getKindOf(source));
+    expect(_context.getKindOf(source), same(SourceKind.UNKNOWN));
   }
 
   void test_getLaunchableClientLibrarySources() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     List<Source> sources = _context.launchableClientLibrarySources;
-    EngineTestCase.assertLength(0, sources);
+    expect(sources, hasLength(0));
     Source source = _addSource(
         "/test.dart",
-        EngineTestCase.createSource(["import 'dart:html';", "main() {}"]));
+        r'''
+import 'dart:html';
+main() {}''');
     _context.computeLibraryElement(source);
     sources = _context.launchableClientLibrarySources;
-    EngineTestCase.assertLength(1, sources);
+    expect(sources, hasLength(1));
   }
 
   void test_getLaunchableServerLibrarySources() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     List<Source> sources = _context.launchableServerLibrarySources;
-    EngineTestCase.assertLength(0, sources);
+    expect(sources, hasLength(0));
     Source source = _addSource("/test.dart", "main() {}");
     _context.computeLibraryElement(source);
     sources = _context.launchableServerLibrarySources;
-    EngineTestCase.assertLength(1, sources);
+    expect(sources, hasLength(1));
   }
 
   void test_getLibrariesContaining() {
@@ -830,15 +848,17 @@
     _sourceFactory = _context.sourceFactory;
     Source librarySource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["library lib;", "part 'part.dart';"]));
+        r'''
+library lib;
+part 'part.dart';''');
     Source partSource = _addSource("/part.dart", "part of lib;");
     _context.computeLibraryElement(librarySource);
     List<Source> result = _context.getLibrariesContaining(librarySource);
-    EngineTestCase.assertLength(1, result);
-    JUnitTestCase.assertEquals(librarySource, result[0]);
+    expect(result, hasLength(1));
+    expect(result[0], librarySource);
     result = _context.getLibrariesContaining(partSource);
-    EngineTestCase.assertLength(1, result);
-    JUnitTestCase.assertEquals(librarySource, result[0]);
+    expect(result, hasLength(1));
+    expect(result[0], librarySource);
   }
 
   void test_getLibrariesDependingOn() {
@@ -848,16 +868,20 @@
     _addSource("/libB.dart", "library libB;");
     Source lib1Source = _addSource(
         "/lib1.dart",
-        EngineTestCase.createSource(
-            ["library lib1;", "import 'libA.dart';", "export 'libB.dart';"]));
+        r'''
+library lib1;
+import 'libA.dart';
+export 'libB.dart';''');
     Source lib2Source = _addSource(
         "/lib2.dart",
-        EngineTestCase.createSource(
-            ["library lib2;", "import 'libB.dart';", "export 'libA.dart';"]));
+        r'''
+library lib2;
+import 'libB.dart';
+export 'libA.dart';''');
     _context.computeLibraryElement(lib1Source);
     _context.computeLibraryElement(lib2Source);
     List<Source> result = _context.getLibrariesDependingOn(libASource);
-    EngineTestCase.assertContains(result, [lib1Source, lib2Source]);
+    expect(result, unorderedEquals([lib1Source, lib2Source]));
   }
 
   void test_getLibrariesReferencedFromHtml() {
@@ -865,18 +889,17 @@
     _sourceFactory = _context.sourceFactory;
     Source htmlSource = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.dart'/>",
-                "<script type='application/dart' src='test.js'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.dart'/>
+<script type='application/dart' src='test.js'/>
+</head></html>''');
     Source librarySource = _addSource("/test.dart", "library lib;");
     _context.computeLibraryElement(librarySource);
     _context.parseHtmlUnit(htmlSource);
     List<Source> result = _context.getLibrariesReferencedFromHtml(htmlSource);
-    EngineTestCase.assertLength(1, result);
-    JUnitTestCase.assertEquals(librarySource, result[0]);
+    expect(result, hasLength(1));
+    expect(result[0], librarySource);
   }
 
   void test_getLibrariesReferencedFromHtml_no() {
@@ -884,15 +907,14 @@
     _sourceFactory = _context.sourceFactory;
     Source htmlSource = _addSource(
         "/test.html",
-        EngineTestCase.createSource(
-            [
-                "<html><head>",
-                "<script type='application/dart' src='test.js'/>",
-                "</head></html>"]));
+        r'''
+<html><head>
+<script type='application/dart' src='test.js'/>
+</head></html>''');
     _addSource("/test.dart", "library lib;");
     _context.parseHtmlUnit(htmlSource);
     List<Source> result = _context.getLibrariesReferencedFromHtml(htmlSource);
-    EngineTestCase.assertLength(0, result);
+    expect(result, hasLength(0));
   }
 
   void test_getLibraryElement() {
@@ -900,10 +922,10 @@
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/test.dart", "library lib;");
     LibraryElement element = _context.getLibraryElement(source);
-    JUnitTestCase.assertNull(element);
+    expect(element, isNull);
     _context.computeLibraryElement(source);
     element = _context.getLibraryElement(source);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
   }
 
   void test_getLibrarySources() {
@@ -912,33 +934,33 @@
     Source source = _addSource("/test.dart", "library lib;");
     _context.computeKindOf(source);
     sources = _context.librarySources;
-    EngineTestCase.assertLength(originalLength + 1, sources);
+    expect(sources, hasLength(originalLength + 1));
     for (Source returnedSource in sources) {
       if (returnedSource == source) {
         return;
       }
     }
-    JUnitTestCase.fail(
-        "The added source was not in the list of library sources");
+    fail("The added source was not in the list of library sources");
   }
 
   void test_getLineInfo() {
     Source source = _addSource(
         "/test.dart",
-        EngineTestCase.createSource(["library lib;", "", "main() {}"]));
+        r'''
+library lib;
+
+main() {}''');
     LineInfo info = _context.getLineInfo(source);
-    JUnitTestCase.assertNull(info);
+    expect(info, isNull);
     _context.parseCompilationUnit(source);
     info = _context.getLineInfo(source);
-    JUnitTestCase.assertNotNull(info);
+    expect(info, isNotNull);
   }
 
   void test_getModificationStamp_fromSource() {
     int stamp = 42;
-    JUnitTestCase.assertEquals(
-        stamp,
-        _context.getModificationStamp(
-            new AnalysisContextImplTest_Source_getModificationStamp_fromSource(stamp)));
+    expect(_context.getModificationStamp(
+            new AnalysisContextImplTest_Source_getModificationStamp_fromSource(stamp)), stamp);
   }
 
   void test_getModificationStamp_overridden() {
@@ -946,7 +968,7 @@
     Source source =
         new AnalysisContextImplTest_Source_getModificationStamp_overridden(stamp);
     _context.setContents(source, "");
-    JUnitTestCase.assertTrue(stamp != _context.getModificationStamp(source));
+    expect(stamp != _context.getModificationStamp(source), isTrue);
   }
 
   void test_getPublicNamespace_element() {
@@ -955,7 +977,7 @@
     Source source = _addSource("/test.dart", "class A {}");
     LibraryElement library = _context.computeLibraryElement(source);
     Namespace namespace = _context.getPublicNamespace(library);
-    JUnitTestCase.assertNotNull(namespace);
+    expect(namespace, isNotNull);
     EngineTestCase.assertInstanceOf(
         (obj) => obj is ClassElement,
         ClassElement,
@@ -965,16 +987,16 @@
   void test_getRefactoringUnsafeSources() {
     // not sources initially
     List<Source> sources = _context.refactoringUnsafeSources;
-    EngineTestCase.assertLength(0, sources);
+    expect(sources, hasLength(0));
     // add new source, unresolved
     Source source = _addSource("/test.dart", "library lib;");
     sources = _context.refactoringUnsafeSources;
-    EngineTestCase.assertLength(1, sources);
-    JUnitTestCase.assertEquals(source, sources[0]);
+    expect(sources, hasLength(1));
+    expect(sources[0], source);
     // resolve source
     _context.computeLibraryElement(source);
     sources = _context.refactoringUnsafeSources;
-    EngineTestCase.assertLength(0, sources);
+    expect(sources, hasLength(0));
   }
 
   void test_getResolvedCompilationUnit_library() {
@@ -982,58 +1004,52 @@
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/lib.dart", "library libb;");
     LibraryElement library = _context.computeLibraryElement(source);
-    JUnitTestCase.assertNotNull(
-        _context.getResolvedCompilationUnit(source, library));
+    expect(_context.getResolvedCompilationUnit(source, library), isNotNull);
     _context.setContents(source, "library lib;");
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit(source, library));
+    expect(_context.getResolvedCompilationUnit(source, library), isNull);
   }
 
   void test_getResolvedCompilationUnit_library_null() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/lib.dart", "library lib;");
-    JUnitTestCase.assertNull(_context.getResolvedCompilationUnit(source, null));
+    expect(_context.getResolvedCompilationUnit(source, null), isNull);
   }
 
   void test_getResolvedCompilationUnit_source_dart() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/lib.dart", "library lib;");
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(source, source));
+    expect(_context.getResolvedCompilationUnit2(source, source), isNull);
     _context.resolveCompilationUnit2(source, source);
-    JUnitTestCase.assertNotNull(
-        _context.getResolvedCompilationUnit2(source, source));
+    expect(_context.getResolvedCompilationUnit2(source, source), isNotNull);
   }
 
   void test_getResolvedCompilationUnit_source_html() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/test.html", "<html></html>");
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(source, source));
-    JUnitTestCase.assertNull(_context.resolveCompilationUnit2(source, source));
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(source, source));
+    expect(_context.getResolvedCompilationUnit2(source, source), isNull);
+    expect(_context.resolveCompilationUnit2(source, source), isNull);
+    expect(_context.getResolvedCompilationUnit2(source, source), isNull);
   }
 
   void test_getResolvedHtmlUnit() {
     _context = AnalysisContextFactory.contextWithCore();
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource("/test.html", "<html></html>");
-    JUnitTestCase.assertNull(_context.getResolvedHtmlUnit(source));
+    expect(_context.getResolvedHtmlUnit(source), isNull);
     _context.resolveHtmlUnit(source);
-    JUnitTestCase.assertNotNull(_context.getResolvedHtmlUnit(source));
+    expect(_context.getResolvedHtmlUnit(source), isNotNull);
   }
 
   void test_getSourceFactory() {
-    JUnitTestCase.assertSame(_sourceFactory, _context.sourceFactory);
+    expect(_context.sourceFactory, same(_sourceFactory));
   }
 
   void test_getStatistics() {
     AnalysisContextStatistics statistics = _context.statistics;
-    JUnitTestCase.assertNotNull(statistics);
+    expect(statistics, isNotNull);
     // The following lines are fragile.
     // The values depend on the number of libraries in the SDK.
 //    assertLength(0, statistics.getCacheRows());
@@ -1046,17 +1062,20 @@
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource(
         "/test.dart",
-        EngineTestCase.createSource(["import 'dart:html';", "", "main() {}"]));
-    JUnitTestCase.assertFalse(_context.isClientLibrary(source));
-    JUnitTestCase.assertFalse(_context.isServerLibrary(source));
+        r'''
+import 'dart:html';
+
+main() {}''');
+    expect(_context.isClientLibrary(source), isFalse);
+    expect(_context.isServerLibrary(source), isFalse);
     _context.computeLibraryElement(source);
-    JUnitTestCase.assertTrue(_context.isClientLibrary(source));
-    JUnitTestCase.assertFalse(_context.isServerLibrary(source));
+    expect(_context.isClientLibrary(source), isTrue);
+    expect(_context.isServerLibrary(source), isFalse);
   }
 
   void test_isClientLibrary_html() {
     Source source = _addSource("/test.html", "<html></html>");
-    JUnitTestCase.assertFalse(_context.isClientLibrary(source));
+    expect(_context.isClientLibrary(source), isFalse);
   }
 
   void test_isServerLibrary_dart() {
@@ -1064,33 +1083,36 @@
     _sourceFactory = _context.sourceFactory;
     Source source = _addSource(
         "/test.dart",
-        EngineTestCase.createSource(["library lib;", "", "main() {}"]));
-    JUnitTestCase.assertFalse(_context.isClientLibrary(source));
-    JUnitTestCase.assertFalse(_context.isServerLibrary(source));
+        r'''
+library lib;
+
+main() {}''');
+    expect(_context.isClientLibrary(source), isFalse);
+    expect(_context.isServerLibrary(source), isFalse);
     _context.computeLibraryElement(source);
-    JUnitTestCase.assertFalse(_context.isClientLibrary(source));
-    JUnitTestCase.assertTrue(_context.isServerLibrary(source));
+    expect(_context.isClientLibrary(source), isFalse);
+    expect(_context.isServerLibrary(source), isTrue);
   }
 
   void test_isServerLibrary_html() {
     Source source = _addSource("/test.html", "<html></html>");
-    JUnitTestCase.assertFalse(_context.isServerLibrary(source));
+    expect(_context.isServerLibrary(source), isFalse);
   }
 
   void test_parseCompilationUnit_errors() {
     Source source = _addSource("/lib.dart", "library {");
     CompilationUnit compilationUnit = _context.parseCompilationUnit(source);
-    JUnitTestCase.assertNotNull(compilationUnit);
+    expect(compilationUnit, isNotNull);
     List<AnalysisError> errors = _context.getErrors(source).errors;
-    JUnitTestCase.assertNotNull(errors);
-    JUnitTestCase.assertTrue(errors.length > 0);
+    expect(errors, isNotNull);
+    expect(errors.length > 0, isTrue);
   }
 
   void test_parseCompilationUnit_exception() {
     Source source = _addSourceWithException("/test.dart");
     try {
       _context.parseCompilationUnit(source);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -1098,14 +1120,14 @@
 
   void test_parseCompilationUnit_html() {
     Source source = _addSource("/test.html", "<html></html>");
-    JUnitTestCase.assertNull(_context.parseCompilationUnit(source));
+    expect(_context.parseCompilationUnit(source), isNull);
   }
 
   void test_parseCompilationUnit_noErrors() {
     Source source = _addSource("/lib.dart", "library lib;");
     CompilationUnit compilationUnit = _context.parseCompilationUnit(source);
-    JUnitTestCase.assertNotNull(compilationUnit);
-    EngineTestCase.assertLength(0, _context.getErrors(source).errors);
+    expect(compilationUnit, isNotNull);
+    expect(_context.getErrors(source).errors, hasLength(0));
   }
 
   void test_parseCompilationUnit_nonExistentSource() {
@@ -1113,8 +1135,7 @@
         new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
     try {
       _context.parseCompilationUnit(source);
-      JUnitTestCase.fail(
-          "Expected AnalysisException because file does not exist");
+      fail("Expected AnalysisException because file does not exist");
     } on AnalysisException catch (exception) {
       // Expected result
     }
@@ -1123,27 +1144,28 @@
   void test_parseHtmlUnit_noErrors() {
     Source source = _addSource("/lib.html", "<html></html>");
     ht.HtmlUnit unit = _context.parseHtmlUnit(source);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_parseHtmlUnit_resolveDirectives() {
     Source libSource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["library lib;", "class ClassA {}"]));
+        r'''
+library lib;
+class ClassA {}''');
     Source source = _addSource(
         "/lib.html",
-        EngineTestCase.createSource(
-            [
-                "<html>",
-                "<head>",
-                "  <script type='application/dart'>",
-                "    import 'lib.dart';",
-                "    ClassA v = null;",
-                "  </script>",
-                "</head>",
-                "<body>",
-                "</body>",
-                "</html>"]));
+        r'''
+<html>
+<head>
+  <script type='application/dart'>
+    import 'lib.dart';
+    ClassA v = null;
+  </script>
+</head>
+<body>
+</body>
+</html>''');
     ht.HtmlUnit unit = _context.parseHtmlUnit(source);
     // import directive should be resolved
     ht.XmlTagNode htmlNode = unit.tagNodes[0];
@@ -1151,8 +1173,8 @@
     ht.HtmlScriptTagNode scriptNode = headNode.tagNodes[0];
     CompilationUnit script = scriptNode.script;
     ImportDirective importNode = script.directives[0] as ImportDirective;
-    JUnitTestCase.assertNotNull(importNode.uriContent);
-    JUnitTestCase.assertEquals(libSource, importNode.source);
+    expect(importNode.uriContent, isNotNull);
+    expect(importNode.source, libSource);
   }
 
   void test_performAnalysisTask_IOException() {
@@ -1160,7 +1182,7 @@
     int oldTimestamp = _context.getModificationStamp(source);
     source.generateExceptionOnRead = false;
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertEquals(1, source.readCount);
+    expect(source.readCount, 1);
     source.generateExceptionOnRead = true;
     do {
       _changeSource(source, "");
@@ -1168,23 +1190,27 @@
       // so that analysis engine notices the change
     } while (oldTimestamp == _context.getModificationStamp(source));
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertEquals(2, source.readCount);
+    expect(source.readCount, 2);
   }
 
   void test_performAnalysisTask_addPart() {
     Source libSource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["library lib;", "part 'part.dart';"]));
+        r'''
+library lib;
+part 'part.dart';''');
     // run all tasks without part
     _analyzeAll_assertFinished();
     // add part and run all tasks
     Source partSource =
-        _addSource("/part.dart", EngineTestCase.createSource(["part of lib;", ""]));
+        _addSource("/part.dart", r'''
+part of lib;
+''');
     _analyzeAll_assertFinished();
     // "libSource" should be here
     List<Source> librariesWithPart =
         _context.getLibrariesContaining(partSource);
-    EngineTestCase.assertContains(librariesWithPart, [libSource]);
+    expect(librariesWithPart, unorderedEquals([libSource]));
   }
 
   void test_performAnalysisTask_changeLibraryContents() {
@@ -1192,42 +1218,22 @@
         _addSource("/test.dart", "library lib; part 'test-part.dart';");
     Source partSource = _addSource("/test-part.dart", "part of lib;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 1",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 1",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 1");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 1");
     // update and analyze #1
     _context.setContents(libSource, "library lib;");
-    JUnitTestCase.assertNullMsg(
-        "library changed 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 2");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part resolved 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part resolved 2");
     // update and analyze #2
     _context.setContents(libSource, "library lib; part 'test-part.dart';");
-    JUnitTestCase.assertNullMsg(
-        "library changed 3",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 3");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 3");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 3");
   }
 
   void test_performAnalysisTask_changeLibraryThenPartContents() {
@@ -1235,80 +1241,52 @@
         _addSource("/test.dart", "library lib; part 'test-part.dart';");
     Source partSource = _addSource("/test-part.dart", "part of lib;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 1",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 1",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 1");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 1");
     // update and analyze #1
     _context.setContents(libSource, "library lib;");
-    JUnitTestCase.assertNullMsg(
-        "library changed 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 2");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part resolved 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part resolved 2");
     // update and analyze #2
     _context.setContents(partSource, "part of lib; // 1");
     // Assert that changing the part's content does not effect the library
     // now that it is no longer part of that library
-    JUnitTestCase.assertNotNullMsg(
-        "library changed 3",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library changed 3");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 3");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 3",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part resolved 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 3");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part resolved 3");
   }
 
   void test_performAnalysisTask_changePartContents_makeItAPart() {
     Source libSource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "void f(x) {}"]));
+        r'''
+library lib;
+part 'part.dart';
+void f(x) {}''');
     Source partSource = _addSource(
         "/part.dart",
-        EngineTestCase.createSource(["void g() { f(null); }"]));
+        "void g() { f(null); }");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 1",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 1",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 1");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 1");
     // update and analyze
     _context.setContents(
         partSource,
-        EngineTestCase.createSource(["part of lib;", "void g() { f(null); }"]));
-    JUnitTestCase.assertNullMsg(
-        "library changed 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+        r'''
+part of lib;
+void g() { f(null); }''');
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 2");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
-    EngineTestCase.assertLength(0, _context.getErrors(libSource).errors);
-    EngineTestCase.assertLength(0, _context.getErrors(partSource).errors);
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 2");
+    expect(_context.getErrors(libSource).errors, hasLength(0));
+    expect(_context.getErrors(partSource).errors, hasLength(0));
   }
 
   /**
@@ -1317,20 +1295,26 @@
   void test_performAnalysisTask_changePartContents_makeItNotPart() {
     Source libSource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "void f(x) {}"]));
+        r'''
+library lib;
+part 'part.dart';
+void f(x) {}''');
     Source partSource = _addSource(
         "/part.dart",
-        EngineTestCase.createSource(["part of lib;", "void g() { f(null); }"]));
+        r'''
+part of lib;
+void g() { f(null); }''');
     _analyzeAll_assertFinished();
-    EngineTestCase.assertLength(0, _context.getErrors(libSource).errors);
-    EngineTestCase.assertLength(0, _context.getErrors(partSource).errors);
+    expect(_context.getErrors(libSource).errors, hasLength(0));
+    expect(_context.getErrors(partSource).errors, hasLength(0));
     // Remove 'part' directive, which should make "f(null)" an error.
     _context.setContents(
         partSource,
-        EngineTestCase.createSource(["//part of lib;", "void g() { f(null); }"]));
+        r'''
+//part of lib;
+void g() { f(null); }''');
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertTrue(_context.getErrors(libSource).errors.length != 0);
+    expect(_context.getErrors(libSource).errors.length != 0, isTrue);
   }
 
   void test_performAnalysisTask_changePartContents_noSemanticChanges() {
@@ -1338,97 +1322,56 @@
         _addSource("/test.dart", "library lib; part 'test-part.dart';");
     Source partSource = _addSource("/test-part.dart", "part of lib;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 1",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 1",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 1");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 1");
     // update and analyze #1
     _context.setContents(partSource, "part of lib; // 1");
-    JUnitTestCase.assertNullMsg(
-        "library changed 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 2");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 2",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 2",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 2");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 2");
     // update and analyze #2
     _context.setContents(partSource, "part of lib; // 12");
-    JUnitTestCase.assertNullMsg(
-        "library changed 3",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNullMsg(
-        "part changed 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNull, reason: "library changed 3");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNull, reason: "part changed 3");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "library resolved 3",
-        _context.getResolvedCompilationUnit2(libSource, libSource));
-    JUnitTestCase.assertNotNullMsg(
-        "part resolved 3",
-        _context.getResolvedCompilationUnit2(partSource, libSource));
+    expect(_context.getResolvedCompilationUnit2(libSource, libSource), isNotNull, reason: "library resolved 3");
+    expect(_context.getResolvedCompilationUnit2(partSource, libSource), isNotNull, reason: "part resolved 3");
   }
 
   void test_performAnalysisTask_importedLibraryAdd() {
     Source libASource =
         _addSource("/libA.dart", "library libA; import 'libB.dart';");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "libA resolved 1",
-        _context.getResolvedCompilationUnit2(libASource, libASource));
-    JUnitTestCase.assertTrueMsg(
-        "libA has an error",
-        _hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)));
+    expect(_context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, reason: "libA resolved 1");
+    expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)), isTrue, reason: "libA has an error");
     // add libB.dart and analyze
     Source libBSource = _addSource("/libB.dart", "library libB;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "libA resolved 2",
-        _context.getResolvedCompilationUnit2(libASource, libASource));
-    JUnitTestCase.assertNotNullMsg(
-        "libB resolved 2",
-        _context.getResolvedCompilationUnit2(libBSource, libBSource));
-    JUnitTestCase.assertTrueMsg(
-        "libA doesn't have errors",
-        !_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)));
+    expect(_context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, reason: "libA resolved 2");
+    expect(_context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, reason: "libB resolved 2");
+    expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)), isTrue, reason: "libA doesn't have errors");
   }
 
   void test_performAnalysisTask_importedLibraryAdd_html() {
     Source htmlSource = _addSource(
         "/page.html",
-        EngineTestCase.createSource(
-            [
-                "<html><body><script type=\"application/dart\">",
-                "  import '/libB.dart';",
-                "  main() {print('hello dart');}",
-                "</script></body></html>"]));
+        r'''
+<html><body><script type="application/dart">
+  import '/libB.dart';
+  main() {print('hello dart');}
+</script></body></html>''');
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "htmlUnit resolved 1",
-        _context.getResolvedHtmlUnit(htmlSource));
-    JUnitTestCase.assertTrueMsg(
-        "htmlSource has an error",
-        _hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)));
+    expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull, reason: "htmlUnit resolved 1");
+    expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(htmlSource)), isTrue, reason: "htmlSource has an error");
     // add libB.dart and analyze
     Source libBSource = _addSource("/libB.dart", "library libB;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "htmlUnit resolved 1",
-        _context.getResolvedHtmlUnit(htmlSource));
-    JUnitTestCase.assertNotNullMsg(
-        "libB resolved 2",
-        _context.getResolvedCompilationUnit2(libBSource, libBSource));
+    expect(_context.getResolvedHtmlUnit(htmlSource), isNotNull, reason: "htmlUnit resolved 1");
+    expect(_context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, reason: "libB resolved 2");
     AnalysisErrorInfo errors = _context.getErrors(htmlSource);
-    JUnitTestCase.assertTrueMsg(
-        "htmlSource doesn't have errors",
-        !_hasAnalysisErrorWithErrorSeverity(errors));
+    expect(!_hasAnalysisErrorWithErrorSeverity(errors), isTrue, reason: "htmlSource doesn't have errors");
   }
 
   void test_performAnalysisTask_importedLibraryDelete() {
@@ -1436,33 +1379,21 @@
         _addSource("/libA.dart", "library libA; import 'libB.dart';");
     Source libBSource = _addSource("/libB.dart", "library libB;");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "libA resolved 1",
-        _context.getResolvedCompilationUnit2(libASource, libASource));
-    JUnitTestCase.assertNotNullMsg(
-        "libB resolved 1",
-        _context.getResolvedCompilationUnit2(libBSource, libBSource));
-    JUnitTestCase.assertTrueMsg(
-        "libA doesn't have errors",
-        !_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)));
+    expect(_context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, reason: "libA resolved 1");
+    expect(_context.getResolvedCompilationUnit2(libBSource, libBSource), isNotNull, reason: "libB resolved 1");
+    expect(!_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)), isTrue, reason: "libA doesn't have errors");
     // remove libB.dart content and analyze
     _context.setContents(libBSource, null);
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "libA resolved 2",
-        _context.getResolvedCompilationUnit2(libASource, libASource));
-    JUnitTestCase.assertTrueMsg(
-        "libA has an error",
-        _hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)));
+    expect(_context.getResolvedCompilationUnit2(libASource, libASource), isNotNull, reason: "libA resolved 2");
+    expect(_hasAnalysisErrorWithErrorSeverity(_context.getErrors(libASource)), isTrue, reason: "libA has an error");
   }
 
   void test_performAnalysisTask_missingPart() {
     Source source =
         _addSource("/test.dart", "library lib; part 'no-such-file.dart';");
     _analyzeAll_assertFinished();
-    JUnitTestCase.assertNotNullMsg(
-        "performAnalysisTask failed to compute an element model",
-        _context.getLibraryElement(source));
+    expect(_context.getLibraryElement(source), isNotNull, reason: "performAnalysisTask failed to compute an element model");
   }
 
   void test_performAnalysisTask_modifiedAfterParse() {
@@ -1518,8 +1449,8 @@
     LibraryElement library = _context.computeLibraryElement(source);
     CompilationUnit compilationUnit =
         _context.resolveCompilationUnit(source, library);
-    JUnitTestCase.assertNotNull(compilationUnit);
-    JUnitTestCase.assertNotNull(compilationUnit.element);
+    expect(compilationUnit, isNotNull);
+    expect(compilationUnit.element, isNotNull);
   }
 
   void test_resolveCompilationUnit_source() {
@@ -1528,7 +1459,7 @@
     Source source = _addSource("/lib.dart", "library lib;");
     CompilationUnit compilationUnit =
         _context.resolveCompilationUnit2(source, source);
-    JUnitTestCase.assertNotNull(compilationUnit);
+    expect(compilationUnit, isNotNull);
   }
 
   void test_resolveCompilationUnit_sourceChangeDuringResolution() {
@@ -1538,14 +1469,14 @@
     Source source = _addSource("/lib.dart", "library lib;");
     CompilationUnit compilationUnit =
         _context.resolveCompilationUnit2(source, source);
-    JUnitTestCase.assertNotNull(compilationUnit);
-    JUnitTestCase.assertNotNull(_context.getLineInfo(source));
+    expect(compilationUnit, isNotNull);
+    expect(_context.getLineInfo(source), isNotNull);
   }
 
   void test_resolveHtmlUnit() {
     Source source = _addSource("/lib.html", "<html></html>");
     ht.HtmlUnit unit = _context.resolveHtmlUnit(source);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_setAnalysisOptions() {
@@ -1555,9 +1486,9 @@
     options.hint = false;
     _context.analysisOptions = options;
     AnalysisOptions result = _context.analysisOptions;
-    JUnitTestCase.assertEquals(options.cacheSize, result.cacheSize);
-    JUnitTestCase.assertEquals(options.dart2jsHint, result.dart2jsHint);
-    JUnitTestCase.assertEquals(options.hint, result.hint);
+    expect(result.cacheSize, options.cacheSize);
+    expect(result.dart2jsHint, options.dart2jsHint);
+    expect(result.hint, options.hint);
   }
 
   void test_setAnalysisOptions_reduceAnalysisPriorityOrder() {
@@ -1565,14 +1496,13 @@
         new AnalysisOptionsImpl.con1(_context.analysisOptions);
     List<Source> sources = new List<Source>();
     for (int index = 0; index < options.cacheSize; index++) {
-      sources.add(_addSource("/lib.dart${index}", ""));
+      sources.add(_addSource("/lib.dart$index", ""));
     }
     _context.analysisPriorityOrder = sources;
     int oldPriorityOrderSize = _getPriorityOrder(_context).length;
     options.cacheSize = options.cacheSize - 10;
     _context.analysisOptions = options;
-    JUnitTestCase.assertTrue(
-        oldPriorityOrderSize > _getPriorityOrder(_context).length);
+    expect(oldPriorityOrderSize > _getPriorityOrder(_context).length, isTrue);
   }
 
   void test_setAnalysisPriorityOrder_empty() {
@@ -1583,11 +1513,10 @@
     AnalysisOptions options = _context.analysisOptions;
     List<Source> sources = new List<Source>();
     for (int index = 0; index < options.cacheSize; index++) {
-      sources.add(_addSource("/lib.dart${index}", ""));
+      sources.add(_addSource("/lib.dart$index", ""));
     }
     _context.analysisPriorityOrder = sources;
-    JUnitTestCase.assertTrue(
-        options.cacheSize > _getPriorityOrder(_context).length);
+    expect(options.cacheSize > _getPriorityOrder(_context).length, isTrue);
   }
 
   void test_setAnalysisPriorityOrder_nonEmpty() {
@@ -1601,31 +1530,34 @@
     options.incremental = true;
     _context = AnalysisContextFactory.contextWithCoreAndOptions(options);
     _sourceFactory = _context.sourceFactory;
-    String oldCode = EngineTestCase.createSource(
-        ["library lib;", "part 'part.dart';", "int a = 0;"]);
+    String oldCode = r'''
+library lib;
+part 'part.dart';
+int a = 0;''';
     Source librarySource = _addSource("/lib.dart", oldCode);
     Source partSource = _addSource(
         "/part.dart",
-        EngineTestCase.createSource(["part of lib;", "int b = a;"]));
+        r'''
+part of lib;
+int b = a;''');
     LibraryElement element = _context.computeLibraryElement(librarySource);
     CompilationUnit unit =
         _context.getResolvedCompilationUnit(librarySource, element);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     int offset = oldCode.indexOf("int a") + 4;
-    String newCode = EngineTestCase.createSource(
-        ["library lib;", "part 'part.dart';", "int ya = 0;"]);
-    JUnitTestCase.assertNull(_getIncrementalAnalysisCache(_context));
+    String newCode = r'''
+library lib;
+part 'part.dart';
+int ya = 0;''';
+    expect(_getIncrementalAnalysisCache(_context), isNull);
     _context.setChangedContents(librarySource, newCode, offset, 0, 1);
-    JUnitTestCase.assertEquals(
-        newCode,
-        _context.getContents(librarySource).data);
+    expect(_context.getContents(librarySource).data, newCode);
     IncrementalAnalysisCache incrementalCache =
         _getIncrementalAnalysisCache(_context);
-    JUnitTestCase.assertEquals(librarySource, incrementalCache.librarySource);
-    JUnitTestCase.assertSame(unit, incrementalCache.resolvedUnit);
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(partSource, librarySource));
-    JUnitTestCase.assertEquals(newCode, incrementalCache.newContents);
+    expect(incrementalCache.librarySource, librarySource);
+    expect(incrementalCache.resolvedUnit, same(unit));
+    expect(_context.getResolvedCompilationUnit2(partSource, librarySource), isNull);
+    expect(incrementalCache.newContents, newCode);
   }
 
   void test_setChangedContents_notResolved() {
@@ -1636,16 +1568,18 @@
     _context.analysisOptions = options;
     _sourceFactory = _context.sourceFactory;
     String oldCode =
-        EngineTestCase.createSource(["library lib;", "int a = 0;"]);
+        r'''
+library lib;
+int a = 0;''';
     Source librarySource = _addSource("/lib.dart", oldCode);
     int offset = oldCode.indexOf("int a") + 4;
     String newCode =
-        EngineTestCase.createSource(["library lib;", "int ya = 0;"]);
+        r'''
+library lib;
+int ya = 0;''';
     _context.setChangedContents(librarySource, newCode, offset, 0, 1);
-    JUnitTestCase.assertEquals(
-        newCode,
-        _context.getContents(librarySource).data);
-    JUnitTestCase.assertNull(_getIncrementalAnalysisCache(_context));
+    expect(_context.getContents(librarySource).data, newCode);
+    expect(_getIncrementalAnalysisCache(_context), isNull);
   }
 
   void test_setContents_libraryWithPart() {
@@ -1653,11 +1587,15 @@
     _sourceFactory = _context.sourceFactory;
     Source librarySource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "int a = 0;"]));
+        r'''
+library lib;
+part 'part.dart';
+int a = 0;''');
     Source partSource = _addSource(
         "/part.dart",
-        EngineTestCase.createSource(["part of lib;", "int b = a;"]));
+        r'''
+part of lib;
+int b = a;''');
     _context.computeLibraryElement(librarySource);
     IncrementalAnalysisCache incrementalCache = new IncrementalAnalysisCache(
         librarySource,
@@ -1669,16 +1607,15 @@
         0,
         0);
     _setIncrementalAnalysisCache(_context, incrementalCache);
-    JUnitTestCase.assertSame(
-        incrementalCache,
-        _getIncrementalAnalysisCache(_context));
+    expect(_getIncrementalAnalysisCache(_context), same(incrementalCache));
     _context.setContents(
         librarySource,
-        EngineTestCase.createSource(
-            ["library lib;", "part 'part.dart';", "int aa = 0;"]));
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(partSource, librarySource));
-    JUnitTestCase.assertNull(_getIncrementalAnalysisCache(_context));
+        r'''
+library lib;
+part 'part.dart';
+int aa = 0;''');
+    expect(_context.getResolvedCompilationUnit2(partSource, librarySource), isNull);
+    expect(_getIncrementalAnalysisCache(_context), isNull);
   }
 
   void test_setContents_null() {
@@ -1686,7 +1623,9 @@
     _sourceFactory = _context.sourceFactory;
     Source librarySource = _addSource(
         "/lib.dart",
-        EngineTestCase.createSource(["library lib;", "int a = 0;"]));
+        r'''
+library lib;
+int a = 0;''');
     _context.computeLibraryElement(librarySource);
     IncrementalAnalysisCache incrementalCache = new IncrementalAnalysisCache(
         librarySource,
@@ -1698,20 +1637,17 @@
         0,
         0);
     _setIncrementalAnalysisCache(_context, incrementalCache);
-    JUnitTestCase.assertSame(
-        incrementalCache,
-        _getIncrementalAnalysisCache(_context));
+    expect(_getIncrementalAnalysisCache(_context), same(incrementalCache));
     _context.setContents(librarySource, null);
-    JUnitTestCase.assertNull(
-        _context.getResolvedCompilationUnit2(librarySource, librarySource));
-    JUnitTestCase.assertNull(_getIncrementalAnalysisCache(_context));
+    expect(_context.getResolvedCompilationUnit2(librarySource, librarySource), isNull);
+    expect(_getIncrementalAnalysisCache(_context), isNull);
   }
 
   void test_setSourceFactory() {
-    JUnitTestCase.assertEquals(_sourceFactory, _context.sourceFactory);
+    expect(_context.sourceFactory, _sourceFactory);
     SourceFactory factory = new SourceFactory([]);
     _context.sourceFactory = factory;
-    JUnitTestCase.assertEquals(factory, _context.sourceFactory);
+    expect(_context.sourceFactory, factory);
   }
 
   void test_unreadableSource() {
@@ -1719,34 +1655,36 @@
     _sourceFactory = _context.sourceFactory;
     Source test1 = _addSource(
         "/test1.dart",
-        EngineTestCase.createSource(["import 'test2.dart';", "library test1;"]));
+        r'''
+import 'test2.dart';
+library test1;''');
     Source test2 = _addSource(
         "/test2.dart",
-        EngineTestCase.createSource(
-            ["import 'test1.dart';", "import 'test3.dart';", "library test2;"]));
+        r'''
+import 'test1.dart';
+import 'test3.dart';
+library test2;''');
     Source test3 = _addSourceWithException("/test3.dart");
     _analyzeAll_assertFinished();
     // test1 and test2 should have been successfully analyzed
     // despite the fact that test3 couldn't be read.
-    JUnitTestCase.assertNotNull(_context.computeLibraryElement(test1));
-    JUnitTestCase.assertNotNull(_context.computeLibraryElement(test2));
-    JUnitTestCase.assertNull(_context.computeLibraryElement(test3));
+    expect(_context.computeLibraryElement(test1), isNotNull);
+    expect(_context.computeLibraryElement(test2), isNotNull);
+    expect(_context.computeLibraryElement(test3), isNull);
   }
 
   void test_updateAnalysis() {
-    JUnitTestCase.assertTrue(_context.sourcesNeedingProcessing.isEmpty);
+    expect(_context.sourcesNeedingProcessing.isEmpty, isTrue);
     Source source =
         new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
     AnalysisDelta delta = new AnalysisDelta();
     delta.setAnalysisLevel(source, AnalysisLevel.ALL);
     _context.applyAnalysisDelta(delta);
-    JUnitTestCase.assertTrue(
-        _context.sourcesNeedingProcessing.contains(source));
+    expect(_context.sourcesNeedingProcessing.contains(source), isTrue);
     delta = new AnalysisDelta();
     delta.setAnalysisLevel(source, AnalysisLevel.NONE);
     _context.applyAnalysisDelta(delta);
-    JUnitTestCase.assertFalse(
-        _context.sourcesNeedingProcessing.contains(source));
+    expect(_context.sourcesNeedingProcessing.contains(source), isFalse);
   }
 
   void xtest_performAnalysisTask_stress() {
@@ -1759,7 +1697,7 @@
     List<Source> sources = new List<Source>();
     ChangeSet changeSet = new ChangeSet();
     for (int i = 0; i < sourceCount; i++) {
-      Source source = _addSource("/lib${i}.dart", "library lib${i};");
+      Source source = _addSource("/lib$i.dart", "library lib$i;");
       sources.add(source);
       changeSet.addedSource(source);
     }
@@ -1774,8 +1712,7 @@
     }
     List<ChangeNotice> notice = _context.performAnalysisTask().changeNotices;
     if (notice != null) {
-      JUnitTestCase.fail(
-          "performAnalysisTask failed to terminate after analyzing all sources");
+      fail("performAnalysisTask failed to terminate after analyzing all sources");
     }
   }
 
@@ -1821,8 +1758,7 @@
         return;
       }
     }
-    JUnitTestCase.fail(
-        "performAnalysisTask failed to terminate after analyzing all sources");
+    fail("performAnalysisTask failed to terminate after analyzing all sources");
   }
 
   void _changeSource(TestSource source, String contents) {
@@ -1925,26 +1861,18 @@
       options.incremental = booleanValue;
       options.preserveComments = booleanValue;
       AnalysisOptionsImpl copy = new AnalysisOptionsImpl.con1(options);
-      JUnitTestCase.assertEquals(options.analyzeAngular, copy.analyzeAngular);
-      JUnitTestCase.assertEquals(
-          options.analyzeFunctionBodies,
-          copy.analyzeFunctionBodies);
-      JUnitTestCase.assertEquals(options.analyzePolymer, copy.analyzePolymer);
-      JUnitTestCase.assertEquals(options.cacheSize, copy.cacheSize);
-      JUnitTestCase.assertEquals(options.dart2jsHint, copy.dart2jsHint);
-      JUnitTestCase.assertEquals(options.enableAsync, copy.enableAsync);
-      JUnitTestCase.assertEquals(
-          options.enableDeferredLoading,
-          copy.enableDeferredLoading);
-      JUnitTestCase.assertEquals(options.enableEnum, copy.enableEnum);
-      JUnitTestCase.assertEquals(
-          options.generateSdkErrors,
-          copy.generateSdkErrors);
-      JUnitTestCase.assertEquals(options.hint, copy.hint);
-      JUnitTestCase.assertEquals(options.incremental, copy.incremental);
-      JUnitTestCase.assertEquals(
-          options.preserveComments,
-          copy.preserveComments);
+      expect(copy.analyzeAngular, options.analyzeAngular);
+      expect(copy.analyzeFunctionBodies, options.analyzeFunctionBodies);
+      expect(copy.analyzePolymer, options.analyzePolymer);
+      expect(copy.cacheSize, options.cacheSize);
+      expect(copy.dart2jsHint, options.dart2jsHint);
+      expect(copy.enableAsync, options.enableAsync);
+      expect(copy.enableDeferredLoading, options.enableDeferredLoading);
+      expect(copy.enableEnum, options.enableEnum);
+      expect(copy.generateSdkErrors, options.generateSdkErrors);
+      expect(copy.hint, options.hint);
+      expect(copy.incremental, options.incremental);
+      expect(copy.preserveComments, options.preserveComments);
     }
   }
 
@@ -1952,96 +1880,88 @@
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.analyzeAngular;
     options.analyzeAngular = value;
-    JUnitTestCase.assertEquals(value, options.analyzeAngular);
+    expect(options.analyzeAngular, value);
   }
 
   void test_getAnalyzeFunctionBodies() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.analyzeFunctionBodies;
     options.analyzeFunctionBodies = value;
-    JUnitTestCase.assertEquals(value, options.analyzeFunctionBodies);
+    expect(options.analyzeFunctionBodies, value);
   }
 
   void test_getAnalyzePolymer() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.analyzePolymer;
     options.analyzePolymer = value;
-    JUnitTestCase.assertEquals(value, options.analyzePolymer);
+    expect(options.analyzePolymer, value);
   }
 
   void test_getCacheSize() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    JUnitTestCase.assertEquals(
-        AnalysisOptionsImpl.DEFAULT_CACHE_SIZE,
-        options.cacheSize);
+    expect(options.cacheSize, AnalysisOptionsImpl.DEFAULT_CACHE_SIZE);
     int value = options.cacheSize + 1;
     options.cacheSize = value;
-    JUnitTestCase.assertEquals(value, options.cacheSize);
+    expect(options.cacheSize, value);
   }
 
   void test_getDart2jsHint() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.dart2jsHint;
     options.dart2jsHint = value;
-    JUnitTestCase.assertEquals(value, options.dart2jsHint);
+    expect(options.dart2jsHint, value);
   }
 
   void test_getEnableAsync() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    JUnitTestCase.assertEquals(
-        AnalysisOptionsImpl.DEFAULT_ENABLE_ASYNC,
-        options.enableAsync);
+    expect(options.enableAsync, AnalysisOptionsImpl.DEFAULT_ENABLE_ASYNC);
     bool value = !options.enableAsync;
     options.enableAsync = value;
-    JUnitTestCase.assertEquals(value, options.enableAsync);
+    expect(options.enableAsync, value);
   }
 
   void test_getEnableDeferredLoading() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    JUnitTestCase.assertEquals(
-        AnalysisOptionsImpl.DEFAULT_ENABLE_DEFERRED_LOADING,
-        options.enableDeferredLoading);
+    expect(options.enableDeferredLoading, AnalysisOptionsImpl.DEFAULT_ENABLE_DEFERRED_LOADING);
     bool value = !options.enableDeferredLoading;
     options.enableDeferredLoading = value;
-    JUnitTestCase.assertEquals(value, options.enableDeferredLoading);
+    expect(options.enableDeferredLoading, value);
   }
 
   void test_getEnableEnum() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    JUnitTestCase.assertEquals(
-        AnalysisOptionsImpl.DEFAULT_ENABLE_ENUM,
-        options.enableEnum);
+    expect(options.enableEnum, AnalysisOptionsImpl.DEFAULT_ENABLE_ENUM);
     bool value = !options.enableEnum;
     options.enableEnum = value;
-    JUnitTestCase.assertEquals(value, options.enableEnum);
+    expect(options.enableEnum, value);
   }
 
   void test_getGenerateSdkErrors() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.generateSdkErrors;
     options.generateSdkErrors = value;
-    JUnitTestCase.assertEquals(value, options.generateSdkErrors);
+    expect(options.generateSdkErrors, value);
   }
 
   void test_getHint() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.hint;
     options.hint = value;
-    JUnitTestCase.assertEquals(value, options.hint);
+    expect(options.hint, value);
   }
 
   void test_getIncremental() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.incremental;
     options.incremental = value;
-    JUnitTestCase.assertEquals(value, options.incremental);
+    expect(options.incremental, value);
   }
 
   void test_getPreserveComments() {
     AnalysisOptionsImpl options = new AnalysisOptionsImpl();
     bool value = !options.preserveComments;
     options.preserveComments = value;
-    JUnitTestCase.assertEquals(value, options.preserveComments);
+    expect(options.preserveComments, value);
   }
 }
 
@@ -2063,7 +1983,7 @@
   String get taskDescription => null;
   @override
   accept(AnalysisTaskVisitor visitor) {
-    JUnitTestCase.assertNotNull(exception);
+    expect(exception, isNotNull);
     return null;
   }
   @override
@@ -2081,86 +2001,46 @@
 class DartEntryTest extends EngineTestCase {
   void set state2(DataDescriptor descriptor) {
     DartEntry entry = new DartEntry();
-    JUnitTestCase.assertNotSame(CacheState.FLUSHED, entry.getState(descriptor));
+    expect(entry.getState(descriptor), isNot(same(CacheState.FLUSHED)));
     entry.setState(descriptor, CacheState.FLUSHED);
-    JUnitTestCase.assertSame(CacheState.FLUSHED, entry.getState(descriptor));
+    expect(entry.getState(descriptor), same(CacheState.FLUSHED));
   }
 
   void set state3(DataDescriptor descriptor) {
     Source source = new TestSource();
     DartEntry entry = new DartEntry();
-    JUnitTestCase.assertNotSame(
-        CacheState.FLUSHED,
-        entry.getStateInLibrary(descriptor, source));
+    expect(entry.getStateInLibrary(descriptor, source), isNot(same(CacheState.FLUSHED)));
     entry.setStateInLibrary(descriptor, source, CacheState.FLUSHED);
-    JUnitTestCase.assertSame(
-        CacheState.FLUSHED,
-        entry.getStateInLibrary(descriptor, source));
+    expect(entry.getStateInLibrary(descriptor, source), same(CacheState.FLUSHED));
   }
 
   void test_creation() {
     Source librarySource = new TestSource();
     DartEntry entry = new DartEntry();
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.HINTS, librarySource));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, librarySource));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, librarySource));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, librarySource));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.HINTS, librarySource), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, librarySource), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, librarySource), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, librarySource), same(CacheState.INVALID));
   }
 
   void test_getAllErrors() {
     Source source = new TestSource();
     DartEntry entry = new DartEntry();
-    EngineTestCase.assertLength(0, entry.allErrors);
+    expect(entry.allErrors, hasLength(0));
     entry.setValue(
         DartEntry.SCAN_ERRORS,
         <AnalysisError>[
@@ -2192,12 +2072,12 @@
         DartEntry.HINTS,
         source,
         <AnalysisError>[new AnalysisError.con1(source, HintCode.DEAD_CODE, [])]);
-    EngineTestCase.assertLength(5, entry.allErrors);
+    expect(entry.allErrors, hasLength(5));
   }
 
   void test_getResolvableCompilationUnit_none() {
     DartEntry entry = new DartEntry();
-    JUnitTestCase.assertNull(entry.resolvableCompilationUnit);
+    expect(entry.resolvableCompilationUnit, isNull);
   }
 
   void test_getResolvableCompilationUnit_parsed_accessed() {
@@ -2225,27 +2105,27 @@
     entry.setValue(DartEntry.PARSED_UNIT, unit);
     entry.getValue(DartEntry.PARSED_UNIT);
     CompilationUnit result = entry.resolvableCompilationUnit;
-    JUnitTestCase.assertSame(unit, result);
+    expect(result, same(unit));
     entry.setValueInLibrary(DartEntry.RESOLVED_UNIT, librarySource, unit);
     result = entry.resolvableCompilationUnit;
-    JUnitTestCase.assertNotSame(unit, result);
+    expect(result, isNot(same(unit)));
     NodeList<Directive> directives = result.directives;
     ImportDirective resultImportDirective = directives[0] as ImportDirective;
-    JUnitTestCase.assertEquals(importUri, resultImportDirective.uriContent);
-    JUnitTestCase.assertSame(importSource, resultImportDirective.source);
+    expect(resultImportDirective.uriContent, importUri);
+    expect(resultImportDirective.source, same(importSource));
     ExportDirective resultExportDirective = directives[1] as ExportDirective;
-    JUnitTestCase.assertEquals(exportUri, resultExportDirective.uriContent);
-    JUnitTestCase.assertSame(exportSource, resultExportDirective.source);
+    expect(resultExportDirective.uriContent, exportUri);
+    expect(resultExportDirective.source, same(exportSource));
     PartDirective resultPartDirective = directives[2] as PartDirective;
-    JUnitTestCase.assertEquals(partUri, resultPartDirective.uriContent);
-    JUnitTestCase.assertSame(partSource, resultPartDirective.source);
+    expect(resultPartDirective.uriContent, partUri);
+    expect(resultPartDirective.source, same(partSource));
   }
 
   void test_getResolvableCompilationUnit_parsed_notAccessed() {
     CompilationUnit unit = AstFactory.compilationUnit();
     DartEntry entry = new DartEntry();
     entry.setValue(DartEntry.PARSED_UNIT, unit);
-    JUnitTestCase.assertSame(unit, entry.resolvableCompilationUnit);
+    expect(entry.resolvableCompilationUnit, same(unit));
   }
 
   void test_getResolvableCompilationUnit_resolved() {
@@ -2274,24 +2154,24 @@
         new TestSource("lib.dart"),
         unit);
     CompilationUnit result = entry.resolvableCompilationUnit;
-    JUnitTestCase.assertNotSame(unit, result);
+    expect(result, isNot(same(unit)));
     NodeList<Directive> directives = result.directives;
     ImportDirective resultImportDirective = directives[0] as ImportDirective;
-    JUnitTestCase.assertEquals(importUri, resultImportDirective.uriContent);
-    JUnitTestCase.assertSame(importSource, resultImportDirective.source);
+    expect(resultImportDirective.uriContent, importUri);
+    expect(resultImportDirective.source, same(importSource));
     ExportDirective resultExportDirective = directives[1] as ExportDirective;
-    JUnitTestCase.assertEquals(exportUri, resultExportDirective.uriContent);
-    JUnitTestCase.assertSame(exportSource, resultExportDirective.source);
+    expect(resultExportDirective.uriContent, exportUri);
+    expect(resultExportDirective.source, same(exportSource));
     PartDirective resultPartDirective = directives[2] as PartDirective;
-    JUnitTestCase.assertEquals(partUri, resultPartDirective.uriContent);
-    JUnitTestCase.assertSame(partSource, resultPartDirective.source);
+    expect(resultPartDirective.uriContent, partUri);
+    expect(resultPartDirective.source, same(partSource));
   }
 
   void test_getStateInLibrary_invalid_element() {
     DartEntry entry = new DartEntry();
     try {
       entry.getStateInLibrary(DartEntry.ELEMENT, new TestSource());
-      JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT");
+      fail("Expected IllegalArgumentException for ELEMENT");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2301,8 +2181,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.getState(DartEntry.RESOLUTION_ERRORS);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for RESOLUTION_ERRORS");
+      fail("Expected IllegalArgumentException for RESOLUTION_ERRORS");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2312,8 +2191,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.getState(DartEntry.VERIFICATION_ERRORS);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for VERIFICATION_ERRORS");
+      fail("Expected IllegalArgumentException for VERIFICATION_ERRORS");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2323,21 +2201,21 @@
     Source testSource = new TestSource();
     DartEntry entry = new DartEntry();
     List<Source> value = entry.containingLibraries;
-    EngineTestCase.assertLength(0, value);
+    expect(value, hasLength(0));
     entry.addContainingLibrary(testSource);
     value = entry.containingLibraries;
-    EngineTestCase.assertLength(1, value);
-    JUnitTestCase.assertEquals(testSource, value[0]);
+    expect(value, hasLength(1));
+    expect(value[0], testSource);
     entry.removeContainingLibrary(testSource);
     value = entry.containingLibraries;
-    EngineTestCase.assertLength(0, value);
+    expect(value, hasLength(0));
   }
 
   void test_getValueInLibrary_invalid_element() {
     DartEntry entry = new DartEntry();
     try {
       entry.getValueInLibrary(DartEntry.ELEMENT, new TestSource());
-      JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT");
+      fail("Expected IllegalArgumentException for ELEMENT");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2362,7 +2240,7 @@
         AstFactory.compilationUnit());
     try {
       entry.getValueInLibrary(DartEntry.ELEMENT, source3);
-      JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT");
+      fail("Expected IllegalArgumentException for ELEMENT");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2372,8 +2250,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.getValue(DartEntry.RESOLUTION_ERRORS);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for RESOLUTION_ERRORS");
+      fail("Expected IllegalArgumentException for RESOLUTION_ERRORS");
     } on ArgumentError catch (exception) {
     }
   }
@@ -2382,8 +2259,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.getValue(DartEntry.VERIFICATION_ERRORS);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for VERIFICATION_ERRORS");
+      fail("Expected IllegalArgumentException for VERIFICATION_ERRORS");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -2392,200 +2268,117 @@
   void test_hasInvalidData_false() {
     DartEntry entry = new DartEntry();
     entry.recordScanError(new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.ELEMENT));
-    JUnitTestCase.assertFalse(
-        entry.hasInvalidData(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.HINTS));
-    JUnitTestCase.assertFalse(
-        entry.hasInvalidData(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertFalse(
-        entry.hasInvalidData(DartEntry.RESOLUTION_ERRORS));
-    JUnitTestCase.assertFalse(entry.hasInvalidData(DartEntry.RESOLVED_UNIT));
-    JUnitTestCase.assertFalse(
-        entry.hasInvalidData(DartEntry.VERIFICATION_ERRORS));
+    expect(entry.hasInvalidData(DartEntry.ELEMENT), isFalse);
+    expect(entry.hasInvalidData(DartEntry.EXPORTED_LIBRARIES), isFalse);
+    expect(entry.hasInvalidData(DartEntry.HINTS), isFalse);
+    expect(entry.hasInvalidData(DartEntry.IMPORTED_LIBRARIES), isFalse);
+    expect(entry.hasInvalidData(DartEntry.INCLUDED_PARTS), isFalse);
+    expect(entry.hasInvalidData(DartEntry.IS_CLIENT), isFalse);
+    expect(entry.hasInvalidData(DartEntry.IS_LAUNCHABLE), isFalse);
+    expect(entry.hasInvalidData(SourceEntry.LINE_INFO), isFalse);
+    expect(entry.hasInvalidData(DartEntry.PARSE_ERRORS), isFalse);
+    expect(entry.hasInvalidData(DartEntry.PARSED_UNIT), isFalse);
+    expect(entry.hasInvalidData(DartEntry.PUBLIC_NAMESPACE), isFalse);
+    expect(entry.hasInvalidData(DartEntry.SOURCE_KIND), isFalse);
+    expect(entry.hasInvalidData(DartEntry.RESOLUTION_ERRORS), isFalse);
+    expect(entry.hasInvalidData(DartEntry.RESOLVED_UNIT), isFalse);
+    expect(entry.hasInvalidData(DartEntry.VERIFICATION_ERRORS), isFalse);
   }
 
   void test_hasInvalidData_true() {
     DartEntry entry = new DartEntry();
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.ELEMENT));
-    JUnitTestCase.assertTrue(
-        entry.hasInvalidData(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.HINTS));
-    JUnitTestCase.assertTrue(
-        entry.hasInvalidData(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.RESOLUTION_ERRORS));
-    JUnitTestCase.assertTrue(entry.hasInvalidData(DartEntry.RESOLVED_UNIT));
-    JUnitTestCase.assertTrue(
-        entry.hasInvalidData(DartEntry.VERIFICATION_ERRORS));
+    expect(entry.hasInvalidData(DartEntry.ELEMENT), isTrue);
+    expect(entry.hasInvalidData(DartEntry.EXPORTED_LIBRARIES), isTrue);
+    expect(entry.hasInvalidData(DartEntry.HINTS), isTrue);
+    expect(entry.hasInvalidData(DartEntry.IMPORTED_LIBRARIES), isTrue);
+    expect(entry.hasInvalidData(DartEntry.INCLUDED_PARTS), isTrue);
+    expect(entry.hasInvalidData(DartEntry.IS_CLIENT), isTrue);
+    expect(entry.hasInvalidData(DartEntry.IS_LAUNCHABLE), isTrue);
+    expect(entry.hasInvalidData(SourceEntry.LINE_INFO), isTrue);
+    expect(entry.hasInvalidData(DartEntry.PARSE_ERRORS), isTrue);
+    expect(entry.hasInvalidData(DartEntry.PARSED_UNIT), isTrue);
+    expect(entry.hasInvalidData(DartEntry.PUBLIC_NAMESPACE), isTrue);
+    expect(entry.hasInvalidData(DartEntry.SOURCE_KIND), isTrue);
+    expect(entry.hasInvalidData(DartEntry.RESOLUTION_ERRORS), isTrue);
+    expect(entry.hasInvalidData(DartEntry.RESOLVED_UNIT), isTrue);
+    expect(entry.hasInvalidData(DartEntry.VERIFICATION_ERRORS), isTrue);
   }
 
   void test_invalidateAllInformation() {
     DartEntry entry = _entryWithValidState();
     entry.invalidateAllInformation();
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
   }
 
   void test_invalidateAllResolutionInformation() {
     DartEntry entry = _entryWithValidState();
     entry.invalidateAllResolutionInformation(false);
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.VALID));
   }
 
   void test_invalidateAllResolutionInformation_includingUris() {
     DartEntry entry = _entryWithValidState();
     entry.invalidateAllResolutionInformation(true);
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
   }
 
   void test_isClient() {
     DartEntry entry = new DartEntry();
     // true
     entry.setValue(DartEntry.IS_CLIENT, true);
-    JUnitTestCase.assertTrue(entry.getValue(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_CLIENT));
+    expect(entry.getValue(DartEntry.IS_CLIENT), isTrue);
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.VALID));
     // invalidate
     entry.setState(DartEntry.IS_CLIENT, CacheState.INVALID);
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
     // false
     entry.setValue(DartEntry.IS_CLIENT, false);
-    JUnitTestCase.assertFalse(entry.getValue(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_CLIENT));
+    expect(entry.getValue(DartEntry.IS_CLIENT), isFalse);
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.VALID));
   }
 
   void test_isLaunchable() {
     DartEntry entry = new DartEntry();
     // true
     entry.setValue(DartEntry.IS_LAUNCHABLE, true);
-    JUnitTestCase.assertTrue(entry.getValue(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
+    expect(entry.getValue(DartEntry.IS_LAUNCHABLE), isTrue);
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.VALID));
     // invalidate
     entry.setState(DartEntry.IS_LAUNCHABLE, CacheState.INVALID);
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
     // false
     entry.setValue(DartEntry.IS_LAUNCHABLE, false);
-    JUnitTestCase.assertFalse(entry.getValue(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
+    expect(entry.getValue(DartEntry.IS_LAUNCHABLE), isFalse);
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.VALID));
   }
 
   void test_recordBuildElementError() {
@@ -2597,114 +2390,46 @@
     entry.recordBuildElementErrorInLibrary(
         source,
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.BUILT_ELEMENT, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.BUILT_UNIT, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.HINTS, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.BUILT_ELEMENT, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.BUILT_UNIT, source), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.HINTS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source), same(CacheState.ERROR));
   }
 
   void test_recordContentError() {
     DartEntry entry = new DartEntry();
     entry.recordContentError(
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.TOKEN_STREAM));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.ERROR));
     // The following lines are commented out because we don't currently have
     // any way of setting the state for data associated with a library we
     // don't know anything about.
@@ -2725,107 +2450,43 @@
     entry.recordHintErrorInLibrary(
         source,
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.HINTS, source));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.HINTS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source), same(CacheState.INVALID));
   }
 
   void test_recordParseError() {
     DartEntry entry = new DartEntry();
     entry.recordParseError(new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
     // The following lines are commented out because we don't currently have
     // any way of setting the state for data associated with a library we
     // don't know anything about.
@@ -2842,48 +2503,20 @@
     DartEntry entry = new DartEntry();
     entry.recordResolutionError(
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
     // The following lines are commented out because we don't currently have
     // any way of setting the state for data associated with a library we
     // don't know anything about.
@@ -2904,108 +2537,44 @@
     entry.recordResolutionErrorInLibrary(
         source,
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.HINTS, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.HINTS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source), same(CacheState.ERROR));
   }
 
   void test_recordScanError() {
 //    Source source = new TestSource();
     DartEntry entry = new DartEntry();
     entry.recordScanError(new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getState(DartEntry.TOKEN_STREAM));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.ERROR));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.ERROR));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.ERROR));
     // The following lines are commented out because we don't currently have
     // any way of setting the state for data associated with a library we
     // don't know anything about.
@@ -3026,60 +2595,24 @@
     entry.recordVerificationErrorInLibrary(
         source,
         new CaughtException(new AnalysisException(), null));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.CONTENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SCAN_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.SOURCE_KIND));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(DartEntry.TOKEN_STREAM));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.HINTS, source));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source));
-    JUnitTestCase.assertSame(
-        CacheState.ERROR,
-        entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source));
+    expect(entry.getState(SourceEntry.CONTENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SCAN_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.SOURCE_KIND), same(CacheState.INVALID));
+    expect(entry.getState(DartEntry.TOKEN_STREAM), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.HINTS, source), same(CacheState.ERROR));
+    expect(entry.getStateInLibrary(DartEntry.RESOLUTION_ERRORS, source), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.RESOLVED_UNIT, source), same(CacheState.INVALID));
+    expect(entry.getStateInLibrary(DartEntry.VERIFICATION_ERRORS, source), same(CacheState.ERROR));
   }
 
   void test_removeResolution_multiple_first() {
@@ -3176,7 +2709,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.setStateInLibrary(DartEntry.ELEMENT, null, CacheState.FLUSHED);
-      JUnitTestCase.fail("Expected IllegalArgumentException for ELEMENT");
+      fail("Expected IllegalArgumentException for ELEMENT");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -3186,8 +2719,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.setState(DartEntry.RESOLUTION_ERRORS, CacheState.FLUSHED);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for RESOLUTION_ERRORS");
+      fail("Expected IllegalArgumentException for RESOLUTION_ERRORS");
     } on ArgumentError catch (exception) {
       // Expected
     }
@@ -3197,8 +2729,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.setState(SourceEntry.LINE_INFO, CacheState.VALID);
-      JUnitTestCase.fail(
-          "Expected ArgumentError for a state of VALID");
+      fail("Expected ArgumentError for a state of VALID");
     } on ArgumentError catch (exception) {
     }
   }
@@ -3207,8 +2738,7 @@
     DartEntry entry = new DartEntry();
     try {
       entry.setState(DartEntry.VERIFICATION_ERRORS, CacheState.FLUSHED);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for VERIFICATION_ERRORS");
+      fail("Expected IllegalArgumentException for VERIFICATION_ERRORS");
     } on ArgumentError catch (exception) {
       // Expected
      }
@@ -3366,60 +2896,36 @@
     entry.setValue(DartEntry.PARSE_ERRORS, null);
     entry.setValue(DartEntry.PARSED_UNIT, null);
     entry.setValue(DartEntry.PUBLIC_NAMESPACE, null);
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.EXPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IMPORTED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.INCLUDED_PARTS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_CLIENT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.IS_LAUNCHABLE));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(DartEntry.PUBLIC_NAMESPACE));
+    expect(entry.getState(DartEntry.ELEMENT), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.EXPORTED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.IMPORTED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.INCLUDED_PARTS), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.IS_CLIENT), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.IS_LAUNCHABLE), same(CacheState.VALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(DartEntry.PUBLIC_NAMESPACE), same(CacheState.VALID));
     return entry;
   }
 
   void _setValue2(DataDescriptor descriptor, Object newValue) {
     DartEntry entry = new DartEntry();
     Object value = entry.getValue(descriptor);
-    JUnitTestCase.assertNotSame(value, newValue);
+    expect(newValue, isNot(same(value)));
     entry.setValue(descriptor, newValue);
-    JUnitTestCase.assertSame(CacheState.VALID, entry.getState(descriptor));
-    JUnitTestCase.assertSame(newValue, entry.getValue(descriptor));
+    expect(entry.getState(descriptor), same(CacheState.VALID));
+    expect(entry.getValue(descriptor), same(newValue));
   }
 
   void _setValue3(DataDescriptor descriptor, Object newValue) {
     Source source = new TestSource();
     DartEntry entry = new DartEntry();
     Object value = entry.getValueInLibrary(descriptor, source);
-    JUnitTestCase.assertNotSame(value, newValue);
+    expect(newValue, isNot(same(value)));
     entry.setValueInLibrary(descriptor, source, newValue);
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getStateInLibrary(descriptor, source));
-    JUnitTestCase.assertSame(
-        newValue,
-        entry.getValueInLibrary(descriptor, source));
+    expect(entry.getStateInLibrary(descriptor, source), same(CacheState.VALID));
+    expect(entry.getValueInLibrary(descriptor, source), same(newValue));
   }
 }
 
@@ -3428,14 +2934,13 @@
   void test_accept() {
     GenerateDartErrorsTask task =
         new GenerateDartErrorsTask(null, null, null, null);
-    JUnitTestCase.assertTrue(
-        task.accept(new GenerateDartErrorsTaskTestTV_accept()));
+    expect(task.accept(new GenerateDartErrorsTaskTestTV_accept()), isTrue);
   }
 
   void test_getException() {
     GenerateDartErrorsTask task =
         new GenerateDartErrorsTask(null, null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getLibraryElement() {
@@ -3443,7 +2948,7 @@
     LibraryElement element = ElementFactory.library(context, "lib");
     GenerateDartErrorsTask task =
         new GenerateDartErrorsTask(context, null, null, element);
-    JUnitTestCase.assertSame(element, task.libraryElement);
+    expect(task.libraryElement, same(element));
   }
 
   void test_getSource() {
@@ -3451,7 +2956,7 @@
         new FileBasedSource.con1(FileUtilities2.createFile("/test.dart"));
     GenerateDartErrorsTask task =
         new GenerateDartErrorsTask(null, source, null, null);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform() {
@@ -3463,8 +2968,11 @@
     context.applyChanges(changeSet);
     context.setContents(
         source,
-        EngineTestCase.createSource(
-            ["library lib;", "class A {", "  int f = new A();", "}"]));
+        r'''
+library lib;
+class A {
+  int f = new A();
+}''');
     LibraryElement libraryElement = context.computeLibraryElement(source);
     CompilationUnit unit =
         context.getResolvedCompilationUnit(source, libraryElement);
@@ -3493,8 +3001,10 @@
 //        "class A {}"]));
     context.setContents(
         source,
-        EngineTestCase.createSource(
-            ["library lib;", "part '/does/not/exist.dart';", "class A {}"]));
+        r'''
+library lib;
+part '/does/not/exist.dart';
+class A {}''');
     LibraryElement libraryElement = context.computeLibraryElement(source);
     CompilationUnit unit =
         context.getResolvedCompilationUnit(source, libraryElement);
@@ -3527,10 +3037,10 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertSame(libraryElement, task.libraryElement);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.libraryElement, same(libraryElement));
+    expect(task.source, same(source));
     List<AnalysisError> errors = task.errors;
-    EngineTestCase.assertLength(1, errors);
+    expect(errors, hasLength(1));
     return true;
   }
 }
@@ -3548,13 +3058,11 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertSame(libraryElement, task.libraryElement);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.libraryElement, same(libraryElement));
+    expect(task.source, same(source));
     List<AnalysisError> errors = task.errors;
-    EngineTestCase.assertLength(1, errors);
-    JUnitTestCase.assertSame(
-        CompileTimeErrorCode.URI_DOES_NOT_EXIST,
-        errors[0].errorCode);
+    expect(errors, hasLength(1));
+    expect(errors[0].errorCode, same(CompileTimeErrorCode.URI_DOES_NOT_EXIST));
     return true;
   }
 }
@@ -3562,23 +3070,22 @@
 class GenerateDartHintsTaskTest extends EngineTestCase {
   void test_accept() {
     GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
-    JUnitTestCase.assertTrue(
-        task.accept(new GenerateDartHintsTaskTestTV_accept()));
+    expect(task.accept(new GenerateDartHintsTaskTestTV_accept()), isTrue);
   }
   void test_getException() {
     GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
   void test_getHintMap() {
     GenerateDartHintsTask task = new GenerateDartHintsTask(null, null, null);
-    JUnitTestCase.assertNull(task.hintMap);
+    expect(task.hintMap, isNull);
   }
   void test_getLibraryElement() {
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     LibraryElement element = ElementFactory.library(context, "lib");
     GenerateDartHintsTask task =
         new GenerateDartHintsTask(context, null, element);
-    JUnitTestCase.assertSame(element, task.libraryElement);
+    expect(task.libraryElement, same(element));
   }
   void test_perform() {
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
@@ -3595,14 +3102,16 @@
     context.applyChanges(changeSet);
     context.setContents(
         librarySource,
-        EngineTestCase.createSource(
-            ["library lib;", "import 'unused.dart';", "part 'part.dart';"]));
+        r'''
+library lib;
+import 'unused.dart';
+part 'part.dart';''');
     context.setContents(
         unusedSource,
-        EngineTestCase.createSource(["library unused;"]));
+        "library unused;");
     context.setContents(
         partSource,
-        EngineTestCase.createSource(["part of lib;"]));
+        "part of lib;");
     List<TimestampedData<CompilationUnit>> units = new List<TimestampedData>(2);
     units[0] = new TimestampedData<CompilationUnit>(
         context.getModificationStamp(librarySource),
@@ -3636,11 +3145,11 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.libraryElement);
+    expect(task.libraryElement, isNotNull);
     HashMap<Source, List<AnalysisError>> hintMap = task.hintMap;
-    EngineTestCase.assertSizeOfMap(2, hintMap);
-    EngineTestCase.assertLength(1, hintMap[librarySource]);
-    EngineTestCase.assertLength(0, hintMap[partSource]);
+    expect(hintMap, hasLength(2));
+    expect(hintMap[librarySource], hasLength(1));
+    expect(hintMap[partSource], hasLength(0));
     return true;
   }
 }
@@ -3650,25 +3159,25 @@
   void test_accept() {
     Source source = new TestSource('/test.dart', '');
     GetContentTask task = new GetContentTask(null, source);
-    JUnitTestCase.assertTrue(task.accept(new GetContentTaskTestTV_accept()));
+    expect(task.accept(new GetContentTaskTestTV_accept()), isTrue);
   }
 
   void test_getException() {
     Source source = new TestSource('/test.dart', '');
     GetContentTask task = new GetContentTask(null, source);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getModificationTime() {
     Source source = new TestSource('/test.dart', '');
     GetContentTask task = new GetContentTask(null, source);
-    JUnitTestCase.assertEquals(-1, task.modificationTime);
+    expect(task.modificationTime, -1);
   }
 
   void test_getSource() {
     Source source = new TestSource('/test.dart', '');
     GetContentTask task = new GetContentTask(null, source);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform_exception() {
@@ -3699,7 +3208,7 @@
 class GetContentTaskTestTV_perform_exception extends TestTaskVisitor<bool> {
   @override
   bool visitGetContentTask(GetContentTask task) {
-    JUnitTestCase.assertNotNull(task.exception);
+    expect(task.exception, isNotNull);
     return true;
   }
 }
@@ -3715,10 +3224,8 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertEquals(
-        context.getModificationStamp(source),
-        task.modificationTime);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.modificationTime, context.getModificationStamp(source));
+    expect(task.source, same(source));
     return true;
   }
 }
@@ -3727,20 +3234,20 @@
 class HtmlEntryTest extends EngineTestCase {
   void set state(DataDescriptor descriptor) {
     HtmlEntry entry = new HtmlEntry();
-    JUnitTestCase.assertNotSame(CacheState.FLUSHED, entry.getState(descriptor));
+    expect(entry.getState(descriptor), isNot(same(CacheState.FLUSHED)));
     entry.setState(descriptor, CacheState.FLUSHED);
-    JUnitTestCase.assertSame(CacheState.FLUSHED, entry.getState(descriptor));
+    expect(entry.getState(descriptor), same(CacheState.FLUSHED));
   }
 
   void test_creation() {
     HtmlEntry entry = new HtmlEntry();
-    JUnitTestCase.assertNotNull(entry);
+    expect(entry, isNotNull);
   }
 
   void test_getAllErrors() {
     Source source = new TestSource();
     HtmlEntry entry = new HtmlEntry();
-    EngineTestCase.assertLength(0, entry.allErrors);
+    expect(entry.allErrors, hasLength(0));
     entry.setValue(
         HtmlEntry.PARSE_ERRORS,
         <AnalysisError>[
@@ -3764,95 +3271,43 @@
     entry.setValue(
         HtmlEntry.HINTS,
         <AnalysisError>[new AnalysisError.con1(source, HintCode.DEAD_CODE, [])]);
-    EngineTestCase.assertLength(6, entry.allErrors);
+    expect(entry.allErrors, hasLength(6));
   }
 
   void test_invalidateAllResolutionInformation() {
     HtmlEntry entry = _entryWithValidState();
     entry.invalidateAllResolutionInformation(false);
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ANGULAR_APPLICATION));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ANGULAR_COMPONENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ANGULAR_ENTRY));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ANGULAR_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.HINTS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.REFERENCED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.RESOLUTION_ERRORS));
+    expect(entry.getState(HtmlEntry.ANGULAR_APPLICATION), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_COMPONENT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_ENTRY), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.HINTS), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.REFERENCED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.RESOLUTION_ERRORS), same(CacheState.INVALID));
   }
 
   void test_invalidateAllResolutionInformation_includingUris() {
     HtmlEntry entry = _entryWithValidState();
     entry.invalidateAllResolutionInformation(true);
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ANGULAR_APPLICATION));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ANGULAR_COMPONENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ANGULAR_ENTRY));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ANGULAR_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.ELEMENT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.HINTS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.REFERENCED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.INVALID,
-        entry.getState(HtmlEntry.RESOLUTION_ERRORS));
+    expect(entry.getState(HtmlEntry.ANGULAR_APPLICATION), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_COMPONENT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_ENTRY), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.ANGULAR_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.ELEMENT), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.HINTS), same(CacheState.INVALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.REFERENCED_LIBRARIES), same(CacheState.INVALID));
+    expect(entry.getState(HtmlEntry.RESOLUTION_ERRORS), same(CacheState.INVALID));
   }
 
   void test_setState_angularErrors() {
@@ -3916,8 +3371,7 @@
     HtmlEntry entry = new HtmlEntry();
     try {
       entry.setValue(DartEntry.ELEMENT, null);
-      JUnitTestCase.fail(
-          "Expected IllegalArgumentException for DartEntry.ELEMENT");
+      fail("Expected IllegalArgumentException for DartEntry.ELEMENT");
     } on ArgumentError catch (exception) {
     }
   }
@@ -3976,54 +3430,35 @@
     entry.setValue(HtmlEntry.POLYMER_RESOLUTION_ERRORS, null);
     entry.setValue(HtmlEntry.REFERENCED_LIBRARIES, null);
     entry.setValue(HtmlEntry.RESOLUTION_ERRORS, null);
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ANGULAR_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.ELEMENT));
-    JUnitTestCase.assertSame(CacheState.VALID, entry.getState(HtmlEntry.HINTS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(SourceEntry.LINE_INFO));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSE_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.PARSED_UNIT));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.REFERENCED_LIBRARIES));
-    JUnitTestCase.assertSame(
-        CacheState.VALID,
-        entry.getState(HtmlEntry.RESOLUTION_ERRORS));
+    expect(entry.getState(HtmlEntry.ANGULAR_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.ELEMENT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.HINTS), same(CacheState.VALID));
+    expect(entry.getState(SourceEntry.LINE_INFO), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSE_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.PARSED_UNIT), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.POLYMER_BUILD_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.POLYMER_RESOLUTION_ERRORS), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.REFERENCED_LIBRARIES), same(CacheState.VALID));
+    expect(entry.getState(HtmlEntry.RESOLUTION_ERRORS), same(CacheState.VALID));
     return entry;
   }
 
   void _setValue(DataDescriptor descriptor, Object newValue) {
     HtmlEntry entry = new HtmlEntry();
     Object value = entry.getValue(descriptor);
-    JUnitTestCase.assertNotSame(value, newValue);
+    expect(newValue, isNot(same(value)));
     entry.setValue(descriptor, newValue);
-    JUnitTestCase.assertSame(CacheState.VALID, entry.getState(descriptor));
-    JUnitTestCase.assertSame(newValue, entry.getValue(descriptor));
+    expect(entry.getState(descriptor), same(CacheState.VALID));
+    expect(entry.getValue(descriptor), same(newValue));
   }
 }
 
 
-class IncrementalAnalysisCacheTest extends JUnitTestCase {
+class IncrementalAnalysisCacheTest {
   Source _source = new TestSource();
   DartEntry _entry = new DartEntry();
   CompilationUnit _unit = new CompilationUnitMock();
   IncrementalAnalysisCache _result;
-  @override
   void setUp() {
     _entry.setValueInLibrary(DartEntry.RESOLVED_UNIT, _source, _unit);
   }
@@ -4039,26 +3474,26 @@
         _entry);
     CompilationUnit newUnit = new CompilationUnitMock();
     _result = IncrementalAnalysisCache.cacheResult(cache, newUnit);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(newUnit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hbazlo", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazlo", _result.newContents);
-    JUnitTestCase.assertEquals(0, _result.offset);
-    JUnitTestCase.assertEquals(0, _result.oldLength);
-    JUnitTestCase.assertEquals(0, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(newUnit));
+    expect(_result.oldContents, "hbazlo");
+    expect(_result.newContents, "hbazlo");
+    expect(_result.offset, 0);
+    expect(_result.oldLength, 0);
+    expect(_result.newLength, 0);
   }
   void test_cacheResult_noCache() {
     IncrementalAnalysisCache cache = null;
     CompilationUnit newUnit = new CompilationUnitMock();
     _result = IncrementalAnalysisCache.cacheResult(cache, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_cacheResult_noCacheNoResult() {
     IncrementalAnalysisCache cache = null;
     CompilationUnit newUnit = null;
     _result = IncrementalAnalysisCache.cacheResult(cache, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_cacheResult_noResult() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4072,7 +3507,7 @@
         _entry);
     CompilationUnit newUnit = null;
     _result = IncrementalAnalysisCache.cacheResult(cache, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_clear_differentSource() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4086,12 +3521,12 @@
         _entry);
     Source otherSource = new TestSource("blat.dart", "blat");
     _result = IncrementalAnalysisCache.clear(cache, otherSource);
-    JUnitTestCase.assertSame(cache, _result);
+    expect(_result, same(cache));
   }
   void test_clear_nullCache() {
     IncrementalAnalysisCache cache = null;
     _result = IncrementalAnalysisCache.clear(cache, _source);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_clear_sameSource() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4104,7 +3539,7 @@
         3,
         _entry);
     _result = IncrementalAnalysisCache.clear(cache, _source);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_append() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4126,14 +3561,14 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazxlo", _result.newContents);
-    JUnitTestCase.assertEquals(1, _result.offset);
-    JUnitTestCase.assertEquals(2, _result.oldLength);
-    JUnitTestCase.assertEquals(4, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hbazxlo");
+    expect(_result.offset, 1);
+    expect(_result.oldLength, 2);
+    expect(_result.newLength, 4);
   }
   void test_update_appendToCachedResult() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4147,7 +3582,7 @@
         _entry);
     CompilationUnit newUnit = new CompilationUnitMock();
     cache = IncrementalAnalysisCache.cacheResult(cache, newUnit);
-    JUnitTestCase.assertNotNull(cache);
+    expect(cache, isNotNull);
     DartEntry newEntry = new DartEntry();
     _result = IncrementalAnalysisCache.update(
         cache,
@@ -4158,14 +3593,14 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(newUnit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hbazlo", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazxlo", _result.newContents);
-    JUnitTestCase.assertEquals(4, _result.offset);
-    JUnitTestCase.assertEquals(0, _result.oldLength);
-    JUnitTestCase.assertEquals(1, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(newUnit));
+    expect(_result.oldContents, "hbazlo");
+    expect(_result.newContents, "hbazxlo");
+    expect(_result.offset, 4);
+    expect(_result.oldLength, 0);
+    expect(_result.newLength, 1);
   }
   void test_update_appendWithNewResolvedUnit() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4189,14 +3624,14 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(newUnit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hbazlo", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazxlo", _result.newContents);
-    JUnitTestCase.assertEquals(4, _result.offset);
-    JUnitTestCase.assertEquals(0, _result.oldLength);
-    JUnitTestCase.assertEquals(1, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(newUnit));
+    expect(_result.oldContents, "hbazlo");
+    expect(_result.newContents, "hbazxlo");
+    expect(_result.offset, 4);
+    expect(_result.oldLength, 0);
+    expect(_result.newLength, 1);
   }
   void test_update_appendWithNoNewResolvedUnit() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4218,14 +3653,14 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazxlo", _result.newContents);
-    JUnitTestCase.assertEquals(1, _result.offset);
-    JUnitTestCase.assertEquals(2, _result.oldLength);
-    JUnitTestCase.assertEquals(4, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hbazxlo");
+    expect(_result.offset, 1);
+    expect(_result.oldLength, 2);
+    expect(_result.newLength, 4);
   }
   void test_update_delete() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4247,14 +3682,14 @@
         2,
         0,
         newEntry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hzlo", _result.newContents);
-    JUnitTestCase.assertEquals(1, _result.offset);
-    JUnitTestCase.assertEquals(2, _result.oldLength);
-    JUnitTestCase.assertEquals(1, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hzlo");
+    expect(_result.offset, 1);
+    expect(_result.oldLength, 2);
+    expect(_result.newLength, 1);
   }
   void test_update_insert_nonContiguous_after() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4276,7 +3711,7 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_insert_nonContiguous_before() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4298,7 +3733,7 @@
         0,
         1,
         newEntry);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_newSource_entry() {
     Source oldSource = new TestSource("blat.dart", "blat");
@@ -4314,8 +3749,8 @@
         2,
         3,
         oldEntry);
-    JUnitTestCase.assertSame(oldSource, cache.source);
-    JUnitTestCase.assertSame(oldUnit, cache.resolvedUnit);
+    expect(cache.source, same(oldSource));
+    expect(cache.resolvedUnit, same(oldUnit));
     _result = IncrementalAnalysisCache.update(
         cache,
         _source,
@@ -4325,14 +3760,14 @@
         0,
         2,
         _entry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("foo", _result.oldContents);
-    JUnitTestCase.assertEquals("foobz", _result.newContents);
-    JUnitTestCase.assertEquals(3, _result.offset);
-    JUnitTestCase.assertEquals(0, _result.oldLength);
-    JUnitTestCase.assertEquals(2, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "foo");
+    expect(_result.newContents, "foobz");
+    expect(_result.offset, 3);
+    expect(_result.oldLength, 0);
+    expect(_result.newLength, 2);
   }
   void test_update_newSource_noEntry() {
     Source oldSource = new TestSource("blat.dart", "blat");
@@ -4348,8 +3783,8 @@
         2,
         3,
         oldEntry);
-    JUnitTestCase.assertSame(oldSource, cache.source);
-    JUnitTestCase.assertSame(oldUnit, cache.resolvedUnit);
+    expect(cache.source, same(oldSource));
+    expect(cache.resolvedUnit, same(oldUnit));
     _result = IncrementalAnalysisCache.update(
         cache,
         _source,
@@ -4359,7 +3794,7 @@
         0,
         3,
         null);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_noCache_entry() {
     _result = IncrementalAnalysisCache.update(
@@ -4371,15 +3806,15 @@
         2,
         3,
         _entry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hbazlo", _result.newContents);
-    JUnitTestCase.assertEquals(1, _result.offset);
-    JUnitTestCase.assertEquals(2, _result.oldLength);
-    JUnitTestCase.assertEquals(3, _result.newLength);
-    JUnitTestCase.assertTrue(_result.hasWork);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hbazlo");
+    expect(_result.offset, 1);
+    expect(_result.oldLength, 2);
+    expect(_result.newLength, 3);
+    expect(_result.hasWork, isTrue);
   }
   void test_update_noCache_entry_noOldSource_append() {
     _result = IncrementalAnalysisCache.update(
@@ -4391,25 +3826,25 @@
         0,
         1,
         _entry);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hellxo", _result.newContents);
-    JUnitTestCase.assertEquals(4, _result.offset);
-    JUnitTestCase.assertEquals(0, _result.oldLength);
-    JUnitTestCase.assertEquals(1, _result.newLength);
-    JUnitTestCase.assertTrue(_result.hasWork);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hellxo");
+    expect(_result.offset, 4);
+    expect(_result.oldLength, 0);
+    expect(_result.newLength, 1);
+    expect(_result.hasWork, isTrue);
   }
   void test_update_noCache_entry_noOldSource_delete() {
     _result =
         IncrementalAnalysisCache.update(null, _source, null, "helo", 4, 1, 0, _entry);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_noCache_entry_noOldSource_replace() {
     _result =
         IncrementalAnalysisCache.update(null, _source, null, "helxo", 4, 1, 1, _entry);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_noCache_noEntry() {
     _result = IncrementalAnalysisCache.update(
@@ -4421,7 +3856,7 @@
         2,
         3,
         null);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_update_replace() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4442,14 +3877,14 @@
         1,
         2,
         null);
-    JUnitTestCase.assertNotNull(_result);
-    JUnitTestCase.assertSame(_source, _result.source);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
-    JUnitTestCase.assertEquals("hello", _result.oldContents);
-    JUnitTestCase.assertEquals("hbarrlo", _result.newContents);
-    JUnitTestCase.assertEquals(1, _result.offset);
-    JUnitTestCase.assertEquals(2, _result.oldLength);
-    JUnitTestCase.assertEquals(4, _result.newLength);
+    expect(_result, isNotNull);
+    expect(_result.source, same(_source));
+    expect(_result.resolvedUnit, same(_unit));
+    expect(_result.oldContents, "hello");
+    expect(_result.newContents, "hbarrlo");
+    expect(_result.offset, 1);
+    expect(_result.oldLength, 2);
+    expect(_result.newLength, 4);
   }
   void test_verifyStructure_invalidUnit() {
     String oldCode = "main() {foo;}";
@@ -4467,19 +3902,19 @@
         _entry);
     CompilationUnit newUnit = _parse(newCode);
     _result = IncrementalAnalysisCache.verifyStructure(cache, _source, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_verifyStructure_noCache() {
     IncrementalAnalysisCache cache = null;
     CompilationUnit newUnit = new CompilationUnitMock();
     _result = IncrementalAnalysisCache.verifyStructure(cache, _source, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_verifyStructure_noCacheNoUnit() {
     IncrementalAnalysisCache cache = null;
     CompilationUnit newUnit = null;
     _result = IncrementalAnalysisCache.verifyStructure(cache, _source, newUnit);
-    JUnitTestCase.assertNull(_result);
+    expect(_result, isNull);
   }
   void test_verifyStructure_noUnit() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4493,8 +3928,8 @@
         _entry);
     CompilationUnit newUnit = null;
     _result = IncrementalAnalysisCache.verifyStructure(cache, _source, newUnit);
-    JUnitTestCase.assertSame(cache, _result);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
+    expect(_result, same(cache));
+    expect(_result.resolvedUnit, same(_unit));
   }
   void test_verifyStructure_otherSource() {
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
@@ -4510,8 +3945,8 @@
     Source otherSource = new TestSource("blat.dart", "blat");
     _result =
         IncrementalAnalysisCache.verifyStructure(cache, otherSource, newUnit);
-    JUnitTestCase.assertSame(cache, _result);
-    JUnitTestCase.assertSame(_unit, _result.resolvedUnit);
+    expect(_result, same(cache));
+    expect(_result.resolvedUnit, same(_unit));
   }
   void test_verifyStructure_validUnit() {
     String oldCode = "main() {foo;}";
@@ -4529,8 +3964,8 @@
         _entry);
     CompilationUnit newUnit = _parse(newCode);
     _result = IncrementalAnalysisCache.verifyStructure(cache, _source, newUnit);
-    JUnitTestCase.assertSame(cache, _result);
-    JUnitTestCase.assertSame(goodUnit, _result.resolvedUnit);
+    expect(_result, same(cache));
+    expect(_result.resolvedUnit, same(goodUnit));
   }
   CompilationUnit _parse(String code) {
     Scanner scanner = new Scanner(
@@ -4547,8 +3982,7 @@
 class IncrementalAnalysisTaskTest extends EngineTestCase {
   void test_accept() {
     IncrementalAnalysisTask task = new IncrementalAnalysisTask(null, null);
-    JUnitTestCase.assertTrue(
-        task.accept(new IncrementalAnalysisTaskTestTV_accept()));
+    expect(task.accept(new IncrementalAnalysisTaskTestTV_accept()), isTrue);
   }
 
   void test_perform() {
@@ -4558,33 +3992,31 @@
         _assertTask("main() {", "", "String", "} String foo;");
     NodeList<CompilationUnitMember> declarations = newUnit.declarations;
     FunctionDeclaration main = declarations[0] as FunctionDeclaration;
-    JUnitTestCase.assertEquals("main", main.name.name);
+    expect(main.name.name, "main");
     BlockFunctionBody body = main.functionExpression.body as BlockFunctionBody;
     ExpressionStatement statement =
         body.block.statements[0] as ExpressionStatement;
-    JUnitTestCase.assertEquals("String;", statement.toSource());
+    expect(statement.toSource(), "String;");
     SimpleIdentifier identifier = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertEquals("String", identifier.name);
-    JUnitTestCase.assertNotNull(identifier.staticElement);
+    expect(identifier.name, "String");
+    expect(identifier.staticElement, isNotNull);
     TopLevelVariableDeclaration fooDecl =
         declarations[1] as TopLevelVariableDeclaration;
     SimpleIdentifier fooName = fooDecl.variables.variables[0].name;
-    JUnitTestCase.assertEquals("foo", fooName.name);
-    JUnitTestCase.assertNotNull(fooName.staticElement);
+    expect(fooName.name, "foo");
+    expect(fooName.staticElement, isNotNull);
     // assert element reference is preserved
   }
 
   CompilationUnit _assertTask(String prefix, String removed, String added,
       String suffix) {
-    String oldCode =
-        EngineTestCase.createSource(["${prefix}${removed}${suffix}"]);
-    String newCode =
-        EngineTestCase.createSource(["${prefix}${added}${suffix}"]);
+    String oldCode = "$prefix$removed$suffix";
+    String newCode = "$prefix$added$suffix";
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     Source source = new TestSource("/test.dart", oldCode);
     DartEntry entry = new DartEntry();
     CompilationUnit oldUnit = context.resolveCompilationUnit2(source, source);
-    JUnitTestCase.assertNotNull(oldUnit);
+    expect(oldUnit, isNotNull);
     entry.setValueInLibrary(DartEntry.RESOLVED_UNIT, source, oldUnit);
     IncrementalAnalysisCache cache = IncrementalAnalysisCache.update(
         null,
@@ -4595,11 +4027,11 @@
         removed.length,
         added.length,
         entry);
-    JUnitTestCase.assertNotNull(cache);
+    expect(cache, isNotNull);
     IncrementalAnalysisTask task = new IncrementalAnalysisTask(context, cache);
     CompilationUnit newUnit =
         task.perform(new IncrementalAnalysisTaskTestTV_assertTask(task));
-    JUnitTestCase.assertNotNull(newUnit);
+    expect(newUnit, isNotNull);
     return newUnit;
   }
 }
@@ -4624,509 +4056,455 @@
 
 class InstrumentedAnalysisContextImplTest extends EngineTestCase {
   void test_addSourceInfo() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_addSourceInfo innerContext = new TestAnalysisContext_test_addSourceInfo();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_addSourceInfo(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.addSourceInfo(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_applyChanges() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_applyChanges innerContext = new TestAnalysisContext_test_applyChanges();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_applyChanges(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.applyChanges(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeDocumentationComment() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeDocumentationComment innerContext = new TestAnalysisContext_test_computeDocumentationComment();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeDocumentationComment(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeDocumentationComment(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeErrors() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeErrors innerContext = new TestAnalysisContext_test_computeErrors();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeErrors(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeErrors(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeExportedLibraries() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeExportedLibraries innerContext = new TestAnalysisContext_test_computeExportedLibraries();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeExportedLibraries(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeExportedLibraries(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeHtmlElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeHtmlElement innerContext = new TestAnalysisContext_test_computeHtmlElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeHtmlElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeHtmlElement(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeImportedLibraries() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeImportedLibraries innerContext = new TestAnalysisContext_test_computeImportedLibraries();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeImportedLibraries(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeImportedLibraries(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeKindOf() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeKindOf innerContext = new TestAnalysisContext_test_computeKindOf();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeKindOf(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeKindOf(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeLibraryElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeLibraryElement innerContext = new TestAnalysisContext_test_computeLibraryElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeLibraryElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeLibraryElement(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeLineInfo() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeLineInfo innerContext = new TestAnalysisContext_test_computeLineInfo();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeLineInfo(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeLineInfo(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_computeResolvableCompilationUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_computeResolvableCompilationUnit innerContext = new TestAnalysisContext_test_computeResolvableCompilationUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_computeResolvableCompilationUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.computeResolvableCompilationUnit(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new InstrumentedAnalysisContextImpl());
+    expect(new InstrumentedAnalysisContextImpl(), isNotNull);
   }
 
   void test_dispose() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_dispose innerContext = new TestAnalysisContext_test_dispose();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_dispose(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.dispose();
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_exists() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_exists innerContext = new TestAnalysisContext_test_exists();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_exists(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.exists(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getAnalysisOptions() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getAnalysisOptions innerContext = new TestAnalysisContext_test_getAnalysisOptions();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getAnalysisOptions(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.analysisOptions;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getAngularApplicationWithHtml() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getAngularApplicationWithHtml innerContext = new TestAnalysisContext_test_getAngularApplicationWithHtml();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getAngularApplicationWithHtml(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getAngularApplicationWithHtml(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getCompilationUnitElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getCompilationUnitElement innerContext = new TestAnalysisContext_test_getCompilationUnitElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getCompilationUnitElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getCompilationUnitElement(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getContents() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getContents innerContext = new TestAnalysisContext_test_getContents();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getContents(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getContents(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
 //  void test_getContentsToReceiver() {
-//    List<bool> invoked = [false];
-//    InstrumentedAnalysisContextImpl context = new InstrumentedAnalysisContextImpl.con1(new TestAnalysisContext_test_getContentsToReceiver(invoked));
+//    TestAnalysisContext_test_getContentsToReceiver innerContext = new TestAnalysisContext_test_getContentsToReceiver();
+//    InstrumentedAnalysisContextImpl context
+//        = new InstrumentedAnalysisContextImpl.con1(innerContext);
 //    context.getContentsToReceiver(null, null);
-//    JUnitTestCase.assertTrue(invoked[0]);
+//    expect(innerContext.invoked, isTrue);
 //  }
 
   void test_getElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getElement innerContext = new TestAnalysisContext_test_getElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getElement(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getErrors() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getErrors innerContext = new TestAnalysisContext_test_getErrors();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getErrors(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getErrors(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getHtmlElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getHtmlElement innerContext = new TestAnalysisContext_test_getHtmlElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getHtmlElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getHtmlElement(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getHtmlFilesReferencing() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getHtmlFilesReferencing innerContext = new TestAnalysisContext_test_getHtmlFilesReferencing();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getHtmlFilesReferencing(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getHtmlFilesReferencing(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getHtmlSources() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getHtmlSources innerContext = new TestAnalysisContext_test_getHtmlSources();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getHtmlSources(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.htmlSources;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getKindOf() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getKindOf innerContext = new TestAnalysisContext_test_getKindOf();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getKindOf(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getKindOf(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLaunchableClientLibrarySources() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLaunchableClientLibrarySources innerContext = new TestAnalysisContext_test_getLaunchableClientLibrarySources();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLaunchableClientLibrarySources(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.launchableClientLibrarySources;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLaunchableServerLibrarySources() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLaunchableServerLibrarySources innerContext = new TestAnalysisContext_test_getLaunchableServerLibrarySources();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLaunchableServerLibrarySources(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.launchableServerLibrarySources;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLibrariesContaining() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLibrariesContaining innerContext = new TestAnalysisContext_test_getLibrariesContaining();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLibrariesContaining(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getLibrariesContaining(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLibrariesDependingOn() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLibrariesDependingOn innerContext = new TestAnalysisContext_test_getLibrariesDependingOn();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLibrariesDependingOn(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getLibrariesDependingOn(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLibrariesReferencedFromHtml() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLibrariesReferencedFromHtml innerContext = new TestAnalysisContext_test_getLibrariesReferencedFromHtml();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLibrariesReferencedFromHtml(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getLibrariesReferencedFromHtml(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLibraryElement() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLibraryElement innerContext = new TestAnalysisContext_test_getLibraryElement();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLibraryElement(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getLibraryElement(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLibrarySources() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLibrarySources innerContext = new TestAnalysisContext_test_getLibrarySources();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLibrarySources(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.librarySources;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getLineInfo() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getLineInfo innerContext = new TestAnalysisContext_test_getLineInfo();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getLineInfo(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getLineInfo(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getModificationStamp() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getModificationStamp innerContext = new TestAnalysisContext_test_getModificationStamp();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getModificationStamp(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getModificationStamp(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getPublicNamespace() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getPublicNamespace innerContext = new TestAnalysisContext_test_getPublicNamespace();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getPublicNamespace(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getPublicNamespace(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getRefactoringUnsafeSources() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getRefactoringUnsafeSources innerContext = new TestAnalysisContext_test_getRefactoringUnsafeSources();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getRefactoringUnsafeSources(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.refactoringUnsafeSources;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getResolvedCompilationUnit_element() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getResolvedCompilationUnit_element innerContext = new TestAnalysisContext_test_getResolvedCompilationUnit_element();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getResolvedCompilationUnit_element(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getResolvedCompilationUnit(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getResolvedCompilationUnit_source() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getResolvedCompilationUnit_source innerContext = new TestAnalysisContext_test_getResolvedCompilationUnit_source();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getResolvedCompilationUnit_source(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getResolvedCompilationUnit2(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getResolvedHtmlUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getResolvedHtmlUnit innerContext = new TestAnalysisContext_test_getResolvedHtmlUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getResolvedHtmlUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.getResolvedHtmlUnit(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getSourceFactory() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getSourceFactory innerContext = new TestAnalysisContext_test_getSourceFactory();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getSourceFactory(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.sourceFactory;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getStatistics() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getStatistics innerContext = new TestAnalysisContext_test_getStatistics();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getStatistics(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.statistics;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_getTypeProvider() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_getTypeProvider innerContext = new TestAnalysisContext_test_getTypeProvider();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_getTypeProvider(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.typeProvider;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_isClientLibrary() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_isClientLibrary innerContext = new TestAnalysisContext_test_isClientLibrary();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_isClientLibrary(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.isClientLibrary(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_isDisposed() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_isDisposed innerContext = new TestAnalysisContext_test_isDisposed();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_isDisposed(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.isDisposed;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_isServerLibrary() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_isServerLibrary innerContext = new TestAnalysisContext_test_isServerLibrary();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_isServerLibrary(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.isServerLibrary(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_parseCompilationUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_parseCompilationUnit innerContext = new TestAnalysisContext_test_parseCompilationUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_parseCompilationUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.parseCompilationUnit(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_parseHtmlUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_parseHtmlUnit innerContext = new TestAnalysisContext_test_parseHtmlUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_parseHtmlUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.parseHtmlUnit(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_performAnalysisTask() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_performAnalysisTask innerContext = new TestAnalysisContext_test_performAnalysisTask();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_performAnalysisTask(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.performAnalysisTask();
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_recordLibraryElements() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_recordLibraryElements innerContext = new TestAnalysisContext_test_recordLibraryElements();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_recordLibraryElements(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.recordLibraryElements(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_resolveCompilationUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_resolveCompilationUnit innerContext = new TestAnalysisContext_test_resolveCompilationUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_resolveCompilationUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.resolveCompilationUnit2(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_resolveCompilationUnit_element() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_resolveCompilationUnit_element innerContext = new TestAnalysisContext_test_resolveCompilationUnit_element();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_resolveCompilationUnit_element(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.resolveCompilationUnit(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_resolveHtmlUnit() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_resolveHtmlUnit innerContext = new TestAnalysisContext_test_resolveHtmlUnit();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_resolveHtmlUnit(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.resolveHtmlUnit(null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_setAnalysisOptions() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_setAnalysisOptions innerContext = new TestAnalysisContext_test_setAnalysisOptions();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_setAnalysisOptions(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.analysisOptions = null;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_setAnalysisPriorityOrder() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_setAnalysisPriorityOrder innerContext = new TestAnalysisContext_test_setAnalysisPriorityOrder();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_setAnalysisPriorityOrder(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.analysisPriorityOrder = null;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_setChangedContents() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_setChangedContents innerContext = new TestAnalysisContext_test_setChangedContents();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_setChangedContents(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.setChangedContents(null, null, 0, 0, 0);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_setContents() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_setContents innerContext = new TestAnalysisContext_test_setContents();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_setContents(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.setContents(null, null);
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 
   void test_setSourceFactory() {
-    List<bool> invoked = [false];
+    TestAnalysisContext_test_setSourceFactory innerContext = new TestAnalysisContext_test_setSourceFactory();
     InstrumentedAnalysisContextImpl context =
-        new InstrumentedAnalysisContextImpl.con1(
-            new TestAnalysisContext_test_setSourceFactory(invoked));
+        new InstrumentedAnalysisContextImpl.con1(innerContext);
     context.sourceFactory = null;
-    JUnitTestCase.assertTrue(invoked[0]);
+    expect(innerContext.invoked, isTrue);
   }
 }
 
@@ -5134,38 +4512,38 @@
 class ParseDartTaskTest extends EngineTestCase {
   void test_accept() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    JUnitTestCase.assertTrue(task.accept(new ParseDartTaskTestTV_accept()));
+    expect(task.accept(new ParseDartTaskTestTV_accept()), isTrue);
   }
 
   void test_getCompilationUnit() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    JUnitTestCase.assertNull(task.compilationUnit);
+    expect(task.compilationUnit, isNull);
   }
 
   void test_getErrors() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    EngineTestCase.assertLength(0, task.errors);
+    expect(task.errors, hasLength(0));
   }
 
   void test_getException() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getSource() {
     Source source = new TestSource('/test.dart');
     ParseDartTask task = new ParseDartTask(null, source, null, null);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_hasNonPartOfDirective() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    JUnitTestCase.assertFalse(task.hasNonPartOfDirective);
+    expect(task.hasNonPartOfDirective, isFalse);
   }
 
   void test_hasPartOfDirective() {
     ParseDartTask task = new ParseDartTask(null, null, null, null);
-    JUnitTestCase.assertFalse(task.hasPartOfDirective);
+    expect(task.hasPartOfDirective, isFalse);
   }
 
   void test_perform_exception() {
@@ -5178,13 +4556,12 @@
   }
 
   void test_perform_library() {
-    String content = EngineTestCase.createSource(
-        [
-            "library lib;",
-            "import 'lib2.dart';",
-            "export 'lib3.dart';",
-            "part 'part.dart';",
-            "class A {"]);
+    String content = r'''
+library lib;
+import 'lib2.dart';
+export 'lib3.dart';
+part 'part.dart';
+class A {''';
     Source source = new TestSource('/test.dart', content);
     InternalAnalysisContext context = new AnalysisContextImpl();
     context.sourceFactory = new SourceFactory([new FileUriResolver()]);
@@ -5194,7 +4571,9 @@
 
   void test_perform_part() {
     String content =
-        EngineTestCase.createSource(["part of lib;", "class B {}"]);
+        r'''
+part of lib;
+class B {}''';
     Source source = new TestSource('/test.dart', content);
     InternalAnalysisContext context = new AnalysisContextImpl();
     context.sourceFactory = new SourceFactory([new FileUriResolver()]);
@@ -5203,14 +4582,13 @@
   }
 
   void test_perform_validateDirectives() {
-    String content = EngineTestCase.createSource(
-        [
-            "library lib;",
-            "import '/does/not/exist.dart';",
-            "import '://invaliduri.dart';",
-            "export '\${a}lib3.dart';",
-            "part 'part.dart';",
-            "class A {}"]);
+    String content = r'''
+library lib;
+import '/does/not/exist.dart';
+import '://invaliduri.dart';
+export '${a}lib3.dart';
+part 'part.dart';
+class A {}''';
     Source source = new TestSource('/test.dart', content);
     InternalAnalysisContext context = new AnalysisContextImpl();
     context.sourceFactory = new SourceFactory([new FileUriResolver()]);
@@ -5260,7 +4638,7 @@
 class ParseDartTaskTestTV_perform_exception extends TestTaskVisitor<bool> {
   @override
   bool visitParseDartTask(ParseDartTask task) {
-    JUnitTestCase.assertNotNull(task.exception);
+    expect(task.exception, isNotNull);
     return true;
   }
 }
@@ -5276,11 +4654,11 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.compilationUnit);
-    EngineTestCase.assertLength(1, task.errors);
-    JUnitTestCase.assertSame(source, task.source);
-    JUnitTestCase.assertTrue(task.hasNonPartOfDirective);
-    JUnitTestCase.assertFalse(task.hasPartOfDirective);
+    expect(task.compilationUnit, isNotNull);
+    expect(task.errors, hasLength(1));
+    expect(task.source, same(source));
+    expect(task.hasNonPartOfDirective, isTrue);
+    expect(task.hasPartOfDirective, isFalse);
     return null;
   }
 }
@@ -5296,11 +4674,11 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.compilationUnit);
-    EngineTestCase.assertLength(0, task.errors);
-    JUnitTestCase.assertSame(source, task.source);
-    JUnitTestCase.assertFalse(task.hasNonPartOfDirective);
-    JUnitTestCase.assertTrue(task.hasPartOfDirective);
+    expect(task.compilationUnit, isNotNull);
+    expect(task.errors, hasLength(0));
+    expect(task.source, same(source));
+    expect(task.hasNonPartOfDirective, isFalse);
+    expect(task.hasPartOfDirective, isTrue);
     return null;
   }
 }
@@ -5317,16 +4695,16 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.compilationUnit);
+    expect(task.compilationUnit, isNotNull);
     GatheringErrorListener errorListener = new GatheringErrorListener();
     errorListener.addAll(task.errors);
     errorListener.assertErrorsWithCodes(
         [
             CompileTimeErrorCode.URI_WITH_INTERPOLATION,
             CompileTimeErrorCode.INVALID_URI]);
-    JUnitTestCase.assertSame(source, task.source);
-    JUnitTestCase.assertTrue(task.hasNonPartOfDirective);
-    JUnitTestCase.assertFalse(task.hasPartOfDirective);
+    expect(task.source, same(source));
+    expect(task.hasNonPartOfDirective, isTrue);
+    expect(task.hasPartOfDirective, isFalse);
     return null;
   }
 }
@@ -5361,106 +4739,102 @@
 
   void test_accept() {
     ParseHtmlTask task = new ParseHtmlTask(null, null, "");
-    JUnitTestCase.assertTrue(task.accept(new ParseHtmlTaskTestTV_accept()));
+    expect(task.accept(new ParseHtmlTaskTestTV_accept()), isTrue);
   }
 
   void test_getException() {
     ParseHtmlTask task = new ParseHtmlTask(null, null, "");
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getHtmlUnit() {
     ParseHtmlTask task = new ParseHtmlTask(null, null, "");
-    JUnitTestCase.assertNull(task.htmlUnit);
+    expect(task.htmlUnit, isNull);
   }
 
   void test_getLineInfo() {
     ParseHtmlTask task = new ParseHtmlTask(null, null, "");
-    JUnitTestCase.assertNull(task.lineInfo);
+    expect(task.lineInfo, isNull);
   }
 
   void test_getReferencedLibraries() {
     ParseHtmlTask task = new ParseHtmlTask(null, null, "");
-    EngineTestCase.assertLength(0, task.referencedLibraries);
+    expect(task.referencedLibraries, hasLength(0));
   }
 
   void test_getSource() {
     Source source = new TestSource('/test.dart');
     ParseHtmlTask task = new ParseHtmlTask(null, source, "");
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform_embedded_source() {
-    String contents = EngineTestCase.createSource(
-        [
-            "<html>",
-            "<head>",
-            "  <script type='application/dart'>",
-            "    void buttonPressed() {}",
-            "  </script>",
-            "</head>",
-            "<body>",
-            "</body>",
-            "</html>"]);
+    String contents = r'''
+<html>
+<head>
+  <script type='application/dart'>
+    void buttonPressed() {}
+  </script>
+</head>
+<body>
+</body>
+</html>''';
     TestLogger testLogger = new TestLogger();
     ParseHtmlTask task = parseContents(contents, testLogger);
-    EngineTestCase.assertLength(0, task.referencedLibraries);
-    JUnitTestCase.assertEquals(0, testLogger.errorCount);
-    JUnitTestCase.assertEquals(0, testLogger.infoCount);
+    expect(task.referencedLibraries, hasLength(0));
+    expect(testLogger.errorCount, 0);
+    expect(testLogger.infoCount, 0);
   }
 
   void test_perform_empty_source_reference() {
-    String contents = EngineTestCase.createSource(
-        [
-            "<html>",
-            "<head>",
-            "  <script type='application/dart' src=''/>",
-            "</head>",
-            "<body>",
-            "</body>",
-            "</html>"]);
+    String contents = r'''
+<html>
+<head>
+  <script type='application/dart' src=''/>
+</head>
+<body>
+</body>
+</html>''';
     TestLogger testLogger = new TestLogger();
     ParseHtmlTask task = parseContents(contents, testLogger);
-    EngineTestCase.assertLength(0, task.referencedLibraries);
-    JUnitTestCase.assertEquals(0, testLogger.errorCount);
-    JUnitTestCase.assertEquals(0, testLogger.infoCount);
+    expect(task.referencedLibraries, hasLength(0));
+    expect(testLogger.errorCount, 0);
+    expect(testLogger.infoCount, 0);
   }
 
   void test_perform_invalid_source_reference() {
-    String contents = EngineTestCase.createSource(
-        [
-            "<html>",
-            "<head>",
-            "  <script type='application/dart' src='an;invalid:[]uri'/>",
-            "</head>",
-            "<body>",
-            "</body>",
-            "</html>"]);
+    String contents = r'''
+<html>
+<head>
+  <script type='application/dart' src='an;invalid:[]uri'/>
+</head>
+<body>
+</body>
+</html>''';
     TestLogger testLogger = new TestLogger();
     ParseHtmlTask task = parseContents(contents, testLogger);
-    EngineTestCase.assertLength(0, task.referencedLibraries);
-    JUnitTestCase.assertEquals(0, testLogger.errorCount);
-    JUnitTestCase.assertEquals(0, testLogger.infoCount);
+    expect(task.referencedLibraries, hasLength(0));
+    expect(testLogger.errorCount, 0);
+    expect(testLogger.infoCount, 0);
   }
 
   void test_perform_non_existing_source_reference() {
-    String contents = EngineTestCase.createSource(
-        [
-            "<html>",
-            "<head>",
-            "  <script type='application/dart' src='does/not/exist.dart'/>",
-            "</head>",
-            "<body>",
-            "</body>",
-            "</html>"]);
+    String contents = r'''
+<html>
+<head>
+  <script type='application/dart' src='does/not/exist.dart'/>
+</head>
+<body>
+</body>
+</html>''';
     TestLogger testLogger = new TestLogger();
     ParseHtmlTask task = parseSource(
         new ParseHtmlTaskTest_non_existing_source(contents),
         contents,
         testLogger);
-    EngineTestCase.assertLength(0, task.referencedLibraries);
-    JUnitTestCase.assertEquals(0, testLogger.errorCount);
-    JUnitTestCase.assertEquals(0, testLogger.infoCount);
+    expect(task.referencedLibraries, hasLength(0));
+    expect(testLogger.errorCount, 0);
+    expect(testLogger.infoCount, 0);
   }
 
   void test_perform_referenced_source() {
@@ -5501,9 +4875,9 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.htmlUnit);
-    JUnitTestCase.assertNotNull(task.lineInfo);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.htmlUnit, isNotNull);
+    expect(task.lineInfo, isNotNull);
+    expect(task.source, same(source));
     return true;
   }
 }
@@ -5529,24 +4903,24 @@
     SdkCachePartition oldPartition = manager.forSdk(sdk);
     manager.clearCache();
     SdkCachePartition newPartition = manager.forSdk(sdk);
-    JUnitTestCase.assertNotSame(oldPartition, newPartition);
+    expect(newPartition, isNot(same(oldPartition)));
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new PartitionManager());
+    expect(new PartitionManager(), isNotNull);
   }
 
   void test_forSdk() {
     PartitionManager manager = new PartitionManager();
     DartSdk sdk1 = new MockDartSdk();
     SdkCachePartition partition1 = manager.forSdk(sdk1);
-    JUnitTestCase.assertNotNull(partition1);
-    JUnitTestCase.assertSame(partition1, manager.forSdk(sdk1));
+    expect(partition1, isNotNull);
+    expect(manager.forSdk(sdk1), same(partition1));
     DartSdk sdk2 = new MockDartSdk();
     SdkCachePartition partition2 = manager.forSdk(sdk2);
-    JUnitTestCase.assertNotNull(partition2);
-    JUnitTestCase.assertSame(partition2, manager.forSdk(sdk2));
-    JUnitTestCase.assertNotSame(partition1, partition2);
+    expect(partition2, isNotNull);
+    expect(manager.forSdk(sdk2), same(partition2));
+    expect(partition2, isNot(same(partition1)));
   }
 }
 
@@ -5554,28 +4928,27 @@
 class ResolveDartLibraryTaskTest extends EngineTestCase {
   void test_accept() {
     ResolveDartLibraryTask task = new ResolveDartLibraryTask(null, null, null);
-    JUnitTestCase.assertTrue(
-        task.accept(new ResolveDartLibraryTaskTestTV_accept()));
+    expect(task.accept(new ResolveDartLibraryTaskTestTV_accept()), isTrue);
   }
   void test_getException() {
     ResolveDartLibraryTask task = new ResolveDartLibraryTask(null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
   void test_getLibraryResolver() {
     ResolveDartLibraryTask task = new ResolveDartLibraryTask(null, null, null);
-    JUnitTestCase.assertNull(task.libraryResolver);
+    expect(task.libraryResolver, isNull);
   }
   void test_getLibrarySource() {
     Source source = new TestSource('/test.dart');
     ResolveDartLibraryTask task =
         new ResolveDartLibraryTask(null, null, source);
-    JUnitTestCase.assertSame(source, task.librarySource);
+    expect(task.librarySource, same(source));
   }
   void test_getUnitSource() {
     Source source = new TestSource('/test.dart');
     ResolveDartLibraryTask task =
         new ResolveDartLibraryTask(null, source, null);
-    JUnitTestCase.assertSame(source, task.unitSource);
+    expect(task.unitSource, same(source));
   }
   void test_perform_exception() {
     TestSource source = new TestSource();
@@ -5589,7 +4962,9 @@
   void test_perform_library() {
     Source source = new TestSource(
         '/test.dart',
-        EngineTestCase.createSource(["library lib;", "class A {}"]));
+        r'''
+library lib;
+class A {}''');
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     ResolveDartLibraryTask task =
         new ResolveDartLibraryTask(context, source, source);
@@ -5608,7 +4983,7 @@
     TestTaskVisitor<bool> {
   @override
   bool visitResolveDartLibraryTask(ResolveDartLibraryTask task) {
-    JUnitTestCase.assertNotNull(task.exception);
+    expect(task.exception, isNotNull);
     return true;
   }
 }
@@ -5624,9 +4999,9 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.libraryResolver);
-    JUnitTestCase.assertSame(source, task.librarySource);
-    JUnitTestCase.assertSame(source, task.unitSource);
+    expect(task.libraryResolver, isNotNull);
+    expect(task.librarySource, same(source));
+    expect(task.unitSource, same(source));
     return true;
   }
 }
@@ -5635,13 +5010,12 @@
 class ResolveDartUnitTaskTest extends EngineTestCase {
   void test_accept() {
     ResolveDartUnitTask task = new ResolveDartUnitTask(null, null, null);
-    JUnitTestCase.assertTrue(
-        task.accept(new ResolveDartUnitTaskTestTV_accept()));
+    expect(task.accept(new ResolveDartUnitTaskTestTV_accept()), isTrue);
   }
 
   void test_getException() {
     ResolveDartUnitTask task = new ResolveDartUnitTask(null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getLibrarySource() {
@@ -5649,18 +5023,18 @@
     LibraryElementImpl element = ElementFactory.library(context, "lib");
     Source source = element.source;
     ResolveDartUnitTask task = new ResolveDartUnitTask(null, null, element);
-    JUnitTestCase.assertSame(source, task.librarySource);
+    expect(task.librarySource, same(source));
   }
 
   void test_getResolvedUnit() {
     ResolveDartUnitTask task = new ResolveDartUnitTask(null, null, null);
-    JUnitTestCase.assertNull(task.resolvedUnit);
+    expect(task.resolvedUnit, isNull);
   }
 
   void test_getSource() {
     Source source = new TestSource('/test.dart');
     ResolveDartUnitTask task = new ResolveDartUnitTask(null, source, null);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform_exception() {
@@ -5690,7 +5064,9 @@
     Source source = unitElement.source;
     context.setContents(
         source,
-        EngineTestCase.createSource(["library lib;", "class A {}"]));
+        r'''
+library lib;
+class A {}''');
     ResolveDartUnitTask task =
         new ResolveDartUnitTask(context, source, libraryElement);
     task.perform(
@@ -5709,7 +5085,7 @@
     {
   @override
   bool visitResolveDartUnitTask(ResolveDartUnitTask task) {
-    JUnitTestCase.assertNotNull(task.exception);
+    expect(task.exception, isNotNull);
     return true;
   }
 }
@@ -5725,9 +5101,9 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertSame(source, task.librarySource);
-    JUnitTestCase.assertNotNull(task.resolvedUnit);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.librarySource, same(source));
+    expect(task.resolvedUnit, isNotNull);
+    expect(task.source, same(source));
     return true;
   }
 }
@@ -5736,28 +5112,28 @@
 class ResolveHtmlTaskTest extends EngineTestCase {
   void test_accept() {
     ResolveHtmlTask task = new ResolveHtmlTask(null, null, 0, null);
-    JUnitTestCase.assertTrue(task.accept(new ResolveHtmlTaskTestTV_accept()));
+    expect(task.accept(new ResolveHtmlTaskTestTV_accept()), isTrue);
   }
 
   void test_getElement() {
     ResolveHtmlTask task = new ResolveHtmlTask(null, null, 0, null);
-    JUnitTestCase.assertNull(task.element);
+    expect(task.element, isNull);
   }
 
   void test_getException() {
     ResolveHtmlTask task = new ResolveHtmlTask(null, null, 0, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getResolutionErrors() {
     ResolveHtmlTask task = new ResolveHtmlTask(null, null, 0, null);
-    EngineTestCase.assertLength(0, task.resolutionErrors);
+    expect(task.resolutionErrors, hasLength(0));
   }
 
   void test_getSource() {
     Source source = new TestSource('test.dart', '');
     ResolveHtmlTask task = new ResolveHtmlTask(null, source, 0, null);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform_exception() {
@@ -5770,17 +5146,16 @@
 
   void test_perform_valid() {
     int modificationStamp = 73;
-    String content = EngineTestCase.createSource(
-        [
-            "<html>",
-            "<head>",
-            "  <script type='application/dart'>",
-            "    void f() { x = 0; }",
-            "  </script>",
-            "</head>",
-            "<body>",
-            "</body>",
-            "</html>"]);
+    String content = r'''
+<html>
+<head>
+  <script type='application/dart'>
+    void f() { x = 0; }
+  </script>
+</head>
+<body>
+</body>
+</html>''';
     Source source = new TestSource("/test.html", content);
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     ParseHtmlTask parseTask =
@@ -5806,7 +5181,7 @@
 class ResolveHtmlTaskTestTV_perform_exception extends TestTaskVisitor<bool> {
   @override
   bool visitResolveHtmlTask(ResolveHtmlTask task) {
-    JUnitTestCase.assertNotNull(task.exception);
+    expect(task.exception, isNotNull);
     return true;
   }
 }
@@ -5822,9 +5197,9 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.element);
-    EngineTestCase.assertLength(1, task.resolutionErrors);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.element, isNotNull);
+    expect(task.resolutionErrors, hasLength(1));
+    expect(task.source, same(source));
     return null;
   }
 }
@@ -5839,28 +5214,28 @@
 class ScanDartTaskTest extends EngineTestCase {
   void test_accept() {
     ScanDartTask task = new ScanDartTask(null, null, null);
-    JUnitTestCase.assertTrue(task.accept(new ScanDartTaskTestTV_accept()));
+    expect(task.accept(new ScanDartTaskTestTV_accept()), isTrue);
   }
 
   void test_getErrors() {
     ScanDartTask task = new ScanDartTask(null, null, null);
-    EngineTestCase.assertLength(0, task.errors);
+    expect(task.errors, hasLength(0));
   }
 
   void test_getException() {
     ScanDartTask task = new ScanDartTask(null, null, null);
-    JUnitTestCase.assertNull(task.exception);
+    expect(task.exception, isNull);
   }
 
   void test_getLineInfo() {
     ScanDartTask task = new ScanDartTask(null, null, null);
-    JUnitTestCase.assertNull(task.lineInfo);
+    expect(task.lineInfo, isNull);
   }
 
   void test_getSource() {
     Source source = new TestSource('test.dart', '');
     ScanDartTask task = new ScanDartTask(null, source, null);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.source, same(source));
   }
 
   void test_perform_valid() {
@@ -5891,10 +5266,10 @@
     if (exception != null) {
       throw exception;
     }
-    JUnitTestCase.assertNotNull(task.tokenStream);
-    EngineTestCase.assertLength(0, task.errors);
-    JUnitTestCase.assertNotNull(task.lineInfo);
-    JUnitTestCase.assertSame(source, task.source);
+    expect(task.tokenStream, isNotNull);
+    expect(task.errors, hasLength(0));
+    expect(task.lineInfo, isNotNull);
+    expect(task.source, same(source));
     return true;
   }
 }
@@ -5904,7 +5279,7 @@
   void test_contains_false() {
     SdkCachePartition partition = new SdkCachePartition(null, 8);
     Source source = new TestSource();
-    JUnitTestCase.assertFalse(partition.contains(source));
+    expect(partition.contains(source), isFalse);
   }
 
   void test_contains_true() {
@@ -5912,11 +5287,11 @@
     SourceFactory factory =
         new SourceFactory([new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
     Source source = factory.forUri("dart:core");
-    JUnitTestCase.assertTrue(partition.contains(source));
+    expect(partition.contains(source), isTrue);
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new SdkCachePartition(null, 8));
+    expect(new SdkCachePartition(null, 8), isNotNull);
   }
 }
 
@@ -5928,349 +5303,344 @@
 class TestAnalysisContext implements InternalAnalysisContext {
   @override
   AnalysisOptions get analysisOptions {
-    JUnitTestCase.fail("Unexpected invocation of getAnalysisOptions");
+    fail("Unexpected invocation of getAnalysisOptions");
     return null;
   }
   @override
   void set analysisOptions(AnalysisOptions options) {
-    JUnitTestCase.fail("Unexpected invocation of setAnalysisOptions");
+    fail("Unexpected invocation of setAnalysisOptions");
   }
   @override
   void set analysisPriorityOrder(List<Source> sources) {
-    JUnitTestCase.fail("Unexpected invocation of setAnalysisPriorityOrder");
+    fail("Unexpected invocation of setAnalysisPriorityOrder");
   }
   @override
   DeclaredVariables get declaredVariables {
-    JUnitTestCase.fail("Unexpected invocation of getDeclaredVariables");
+    fail("Unexpected invocation of getDeclaredVariables");
     return null;
   }
   @override
   List<Source> get htmlSources {
-    JUnitTestCase.fail("Unexpected invocation of getHtmlSources");
+    fail("Unexpected invocation of getHtmlSources");
     return null;
   }
   @override
   bool get isDisposed {
-    JUnitTestCase.fail("Unexpected invocation of isDisposed");
+    fail("Unexpected invocation of isDisposed");
     return false;
   }
   @override
   List<Source> get launchableClientLibrarySources {
-    JUnitTestCase.fail(
-        "Unexpected invocation of getLaunchableClientLibrarySources");
+    fail("Unexpected invocation of getLaunchableClientLibrarySources");
     return null;
   }
   @override
   List<Source> get launchableServerLibrarySources {
-    JUnitTestCase.fail(
-        "Unexpected invocation of getLaunchableServerLibrarySources");
+    fail("Unexpected invocation of getLaunchableServerLibrarySources");
     return null;
   }
   @override
   List<Source> get librarySources {
-    JUnitTestCase.fail("Unexpected invocation of getLibrarySources");
+    fail("Unexpected invocation of getLibrarySources");
     return null;
   }
   @override
   List<Source> get prioritySources {
-    JUnitTestCase.fail("Unexpected invocation of getPrioritySources");
+    fail("Unexpected invocation of getPrioritySources");
     return null;
   }
   @override
   List<Source> get refactoringUnsafeSources {
-    JUnitTestCase.fail("Unexpected invocation of getRefactoringUnsafeSources");
+    fail("Unexpected invocation of getRefactoringUnsafeSources");
     return null;
   }
   @override
   SourceFactory get sourceFactory {
-    JUnitTestCase.fail("Unexpected invocation of getSourceFactory");
+    fail("Unexpected invocation of getSourceFactory");
     return null;
   }
   @override
   void set sourceFactory(SourceFactory factory) {
-    JUnitTestCase.fail("Unexpected invocation of setSourceFactory");
+    fail("Unexpected invocation of setSourceFactory");
   }
   @override
   AnalysisContextStatistics get statistics {
-    JUnitTestCase.fail("Unexpected invocation of getStatistics");
+    fail("Unexpected invocation of getStatistics");
     return null;
   }
   @override
   TypeProvider get typeProvider {
-    JUnitTestCase.fail("Unexpected invocation of getTypeProvider");
+    fail("Unexpected invocation of getTypeProvider");
     return null;
   }
   @override
   void addListener(AnalysisListener listener) {
-    JUnitTestCase.fail("Unexpected invocation of addListener");
+    fail("Unexpected invocation of addListener");
   }
   @override
   void addSourceInfo(Source source, SourceEntry info) {
-    JUnitTestCase.fail("Unexpected invocation of addSourceInfo");
+    fail("Unexpected invocation of addSourceInfo");
   }
   @override
   void applyAnalysisDelta(AnalysisDelta delta) {
-    JUnitTestCase.fail("Unexpected invocation of applyAnalysisDelta");
+    fail("Unexpected invocation of applyAnalysisDelta");
   }
   @override
   void applyChanges(ChangeSet changeSet) {
-    JUnitTestCase.fail("Unexpected invocation of applyChanges");
+    fail("Unexpected invocation of applyChanges");
   }
   @override
   String computeDocumentationComment(Element element) {
-    JUnitTestCase.fail("Unexpected invocation of computeDocumentationComment");
+    fail("Unexpected invocation of computeDocumentationComment");
     return null;
   }
   @override
   List<AnalysisError> computeErrors(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeErrors");
+    fail("Unexpected invocation of computeErrors");
     return null;
   }
   @override
   List<Source> computeExportedLibraries(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeExportedLibraries");
+    fail("Unexpected invocation of computeExportedLibraries");
     return null;
   }
   @override
   HtmlElement computeHtmlElement(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeHtmlElement");
+    fail("Unexpected invocation of computeHtmlElement");
     return null;
   }
   @override
   List<Source> computeImportedLibraries(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeImportedLibraries");
+    fail("Unexpected invocation of computeImportedLibraries");
     return null;
   }
   @override
   SourceKind computeKindOf(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeKindOf");
+    fail("Unexpected invocation of computeKindOf");
     return null;
   }
   @override
   LibraryElement computeLibraryElement(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeLibraryElement");
+    fail("Unexpected invocation of computeLibraryElement");
     return null;
   }
   @override
   LineInfo computeLineInfo(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of computeLineInfo");
+    fail("Unexpected invocation of computeLineInfo");
     return null;
   }
   @override
   CompilationUnit computeResolvableCompilationUnit(Source source) {
-    JUnitTestCase.fail(
-        "Unexpected invocation of computeResolvableCompilationUnit");
+    fail("Unexpected invocation of computeResolvableCompilationUnit");
     return null;
   }
   @override
   void dispose() {
-    JUnitTestCase.fail("Unexpected invocation of dispose");
+    fail("Unexpected invocation of dispose");
   }
   @override
   bool exists(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of exists");
+    fail("Unexpected invocation of exists");
     return false;
   }
   @override
   AngularApplication getAngularApplicationWithHtml(Source htmlSource) {
-    JUnitTestCase.fail(
-        "Unexpected invocation of getAngularApplicationWithHtml");
+    fail("Unexpected invocation of getAngularApplicationWithHtml");
     return null;
   }
   @override
   CompilationUnitElement getCompilationUnitElement(Source unitSource,
       Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of getCompilationUnitElement");
+    fail("Unexpected invocation of getCompilationUnitElement");
     return null;
   }
   @override
   TimestampedData<String> getContents(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getContents");
+    fail("Unexpected invocation of getContents");
     return null;
   }
   @override
   InternalAnalysisContext getContextFor(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getContextFor");
+    fail("Unexpected invocation of getContextFor");
     return null;
   }
   @override
   Element getElement(ElementLocation location) {
-    JUnitTestCase.fail("Unexpected invocation of getElement");
+    fail("Unexpected invocation of getElement");
     return null;
   }
   @override
   AnalysisErrorInfo getErrors(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getErrors");
+    fail("Unexpected invocation of getErrors");
     return null;
   }
   @override
   HtmlElement getHtmlElement(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getHtmlElement");
+    fail("Unexpected invocation of getHtmlElement");
     return null;
   }
   @override
   List<Source> getHtmlFilesReferencing(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getHtmlFilesReferencing");
+    fail("Unexpected invocation of getHtmlFilesReferencing");
     return null;
   }
   @override
   SourceKind getKindOf(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getKindOf");
+    fail("Unexpected invocation of getKindOf");
     return null;
   }
   @override
   List<Source> getLibrariesContaining(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getLibrariesContaining");
+    fail("Unexpected invocation of getLibrariesContaining");
     return null;
   }
   @override
   List<Source> getLibrariesDependingOn(Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of getLibrariesDependingOn");
+    fail("Unexpected invocation of getLibrariesDependingOn");
     return null;
   }
   @override
   List<Source> getLibrariesReferencedFromHtml(Source htmlSource) {
-    JUnitTestCase.fail(
-        "Unexpected invocation of getLibrariesReferencedFromHtml");
+    fail("Unexpected invocation of getLibrariesReferencedFromHtml");
     return null;
   }
   @override
   LibraryElement getLibraryElement(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getLibraryElement");
+    fail("Unexpected invocation of getLibraryElement");
     return null;
   }
   @override
   LineInfo getLineInfo(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getLineInfo");
+    fail("Unexpected invocation of getLineInfo");
     return null;
   }
   @override
   int getModificationStamp(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of getModificationStamp");
+    fail("Unexpected invocation of getModificationStamp");
     return 0;
   }
   @override
   Namespace getPublicNamespace(LibraryElement library) {
-    JUnitTestCase.fail("Unexpected invocation of getPublicNamespace");
+    fail("Unexpected invocation of getPublicNamespace");
     return null;
   }
   @override
   CompilationUnit getResolvedCompilationUnit(Source unitSource,
       LibraryElement library) {
-    JUnitTestCase.fail("Unexpected invocation of getResolvedCompilationUnit");
+    fail("Unexpected invocation of getResolvedCompilationUnit");
     return null;
   }
   @override
   CompilationUnit getResolvedCompilationUnit2(Source unitSource,
       Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of getResolvedCompilationUnit");
+    fail("Unexpected invocation of getResolvedCompilationUnit");
     return null;
   }
   @override
   ht.HtmlUnit getResolvedHtmlUnit(Source htmlSource) {
-    JUnitTestCase.fail("Unexpected invocation of getResolvedHtmlUnit");
+    fail("Unexpected invocation of getResolvedHtmlUnit");
     return null;
   }
   @override
   bool isClientLibrary(Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of isClientLibrary");
+    fail("Unexpected invocation of isClientLibrary");
     return false;
   }
   @override
   bool isServerLibrary(Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of isServerLibrary");
+    fail("Unexpected invocation of isServerLibrary");
     return false;
   }
   @override
   CompilationUnit parseCompilationUnit(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of parseCompilationUnit");
+    fail("Unexpected invocation of parseCompilationUnit");
     return null;
   }
   @override
   ht.HtmlUnit parseHtmlUnit(Source source) {
-    JUnitTestCase.fail("Unexpected invocation of parseHtmlUnit");
+    fail("Unexpected invocation of parseHtmlUnit");
     return null;
   }
   @override
   AnalysisResult performAnalysisTask() {
-    JUnitTestCase.fail("Unexpected invocation of performAnalysisTask");
+    fail("Unexpected invocation of performAnalysisTask");
     return null;
   }
   @override
   void recordLibraryElements(Map<Source, LibraryElement> elementMap) {
-    JUnitTestCase.fail("Unexpected invocation of recordLibraryElements");
+    fail("Unexpected invocation of recordLibraryElements");
   }
   @override
   void removeListener(AnalysisListener listener) {
-    JUnitTestCase.fail("Unexpected invocation of removeListener");
+    fail("Unexpected invocation of removeListener");
   }
   @override
   CompilationUnit resolveCompilationUnit(Source unitSource,
       LibraryElement library) {
-    JUnitTestCase.fail("Unexpected invocation of resolveCompilationUnit");
+    fail("Unexpected invocation of resolveCompilationUnit");
     return null;
   }
   @override
   CompilationUnit resolveCompilationUnit2(Source unitSource,
       Source librarySource) {
-    JUnitTestCase.fail("Unexpected invocation of resolveCompilationUnit");
+    fail("Unexpected invocation of resolveCompilationUnit");
     return null;
   }
   @override
   ht.HtmlUnit resolveHtmlUnit(Source htmlSource) {
-    JUnitTestCase.fail("Unexpected invocation of resolveHtmlUnit");
+    fail("Unexpected invocation of resolveHtmlUnit");
     return null;
   }
   @override
   void setChangedContents(Source source, String contents, int offset,
       int oldLength, int newLength) {
-    JUnitTestCase.fail("Unexpected invocation of setChangedContents");
+    fail("Unexpected invocation of setChangedContents");
   }
   @override
   void setContents(Source source, String contents) {
-    JUnitTestCase.fail("Unexpected invocation of setContents");
+    fail("Unexpected invocation of setContents");
   }
 }
 
 
 class TestAnalysisContext_test_addSourceInfo extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_addSourceInfo(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_addSourceInfo();
   @override
   void addSourceInfo(Source source, SourceEntry info) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_applyChanges extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_applyChanges(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_applyChanges();
   @override
   void applyChanges(ChangeSet changeSet) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_computeDocumentationComment extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeDocumentationComment(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeDocumentationComment();
   @override
   String computeDocumentationComment(Element element) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_computeErrors extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeErrors(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeErrors();
   @override
   List<AnalysisError> computeErrors(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return AnalysisError.NO_ERRORS;
   }
 }
@@ -6278,22 +5648,22 @@
 
 class TestAnalysisContext_test_computeExportedLibraries extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeExportedLibraries(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeExportedLibraries();
   @override
   List<Source> computeExportedLibraries(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_computeHtmlElement extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeHtmlElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeHtmlElement();
   @override
   HtmlElement computeHtmlElement(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6301,22 +5671,22 @@
 
 class TestAnalysisContext_test_computeImportedLibraries extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeImportedLibraries(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeImportedLibraries();
   @override
   List<Source> computeImportedLibraries(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_computeKindOf extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeKindOf(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeKindOf();
   @override
   SourceKind computeKindOf(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6324,22 +5694,22 @@
 
 class TestAnalysisContext_test_computeLibraryElement extends TestAnalysisContext
     {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeLibraryElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeLibraryElement();
   @override
   LibraryElement computeLibraryElement(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_computeLineInfo extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeLineInfo(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeLineInfo();
   @override
   LineInfo computeLineInfo(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6347,43 +5717,43 @@
 
 class TestAnalysisContext_test_computeResolvableCompilationUnit extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_computeResolvableCompilationUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_computeResolvableCompilationUnit();
   @override
   CompilationUnit computeResolvableCompilationUnit(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_dispose extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_dispose(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_dispose();
   @override
   void dispose() {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_exists extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_exists(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_exists();
   @override
   bool exists(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return false;
   }
 }
 
 
 class TestAnalysisContext_test_getAnalysisOptions extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getAnalysisOptions(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getAnalysisOptions();
   @override
   AnalysisOptions get analysisOptions {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6391,11 +5761,11 @@
 
 class TestAnalysisContext_test_getAngularApplicationWithHtml extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getAngularApplicationWithHtml(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getAngularApplicationWithHtml();
   @override
   AngularApplication getAngularApplicationWithHtml(Source htmlSource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6403,56 +5773,56 @@
 
 class TestAnalysisContext_test_getCompilationUnitElement extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getCompilationUnitElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getCompilationUnitElement();
   @override
   CompilationUnitElement getCompilationUnitElement(Source unitSource,
       Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getContents extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getContents(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getContents();
   @override
   TimestampedData<String> getContents(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getElement extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getElement();
   @override
   Element getElement(ElementLocation location) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getErrors extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getErrors(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getErrors();
   @override
   AnalysisErrorInfo getErrors(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return new AnalysisErrorInfoImpl(AnalysisError.NO_ERRORS, null);
   }
 }
 
 
 class TestAnalysisContext_test_getHtmlElement extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getHtmlElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getHtmlElement();
   @override
   HtmlElement getHtmlElement(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6460,33 +5830,33 @@
 
 class TestAnalysisContext_test_getHtmlFilesReferencing extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getHtmlFilesReferencing(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getHtmlFilesReferencing();
   @override
   List<Source> getHtmlFilesReferencing(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
 
 
 class TestAnalysisContext_test_getHtmlSources extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getHtmlSources(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getHtmlSources();
   @override
   List<Source> get htmlSources {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
 
 
 class TestAnalysisContext_test_getKindOf extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getKindOf(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getKindOf();
   @override
   SourceKind getKindOf(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6494,11 +5864,11 @@
 
 class TestAnalysisContext_test_getLaunchableClientLibrarySources extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLaunchableClientLibrarySources(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLaunchableClientLibrarySources();
   @override
   List<Source> get launchableClientLibrarySources {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
@@ -6506,11 +5876,11 @@
 
 class TestAnalysisContext_test_getLaunchableServerLibrarySources extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLaunchableServerLibrarySources(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLaunchableServerLibrarySources();
   @override
   List<Source> get launchableServerLibrarySources {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
@@ -6518,11 +5888,11 @@
 
 class TestAnalysisContext_test_getLibrariesContaining extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLibrariesContaining(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLibrariesContaining();
   @override
   List<Source> getLibrariesContaining(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
@@ -6530,11 +5900,11 @@
 
 class TestAnalysisContext_test_getLibrariesDependingOn extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLibrariesDependingOn(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLibrariesDependingOn();
   @override
   List<Source> getLibrariesDependingOn(Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
@@ -6542,44 +5912,44 @@
 
 class TestAnalysisContext_test_getLibrariesReferencedFromHtml extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLibrariesReferencedFromHtml(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLibrariesReferencedFromHtml();
   @override
   List<Source> getLibrariesReferencedFromHtml(Source htmlSource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getLibraryElement extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLibraryElement(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLibraryElement();
   @override
   LibraryElement getLibraryElement(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getLibrarySources extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLibrarySources(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLibrarySources();
   @override
   List<Source> get librarySources {
-    invoked[0] = true;
+    invoked = true;
     return Source.EMPTY_ARRAY;
   }
 }
 
 
 class TestAnalysisContext_test_getLineInfo extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getLineInfo(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getLineInfo();
   @override
   LineInfo getLineInfo(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6587,22 +5957,22 @@
 
 class TestAnalysisContext_test_getModificationStamp extends TestAnalysisContext
     {
-  List<bool> invoked;
-  TestAnalysisContext_test_getModificationStamp(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getModificationStamp();
   @override
   int getModificationStamp(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return 0;
   }
 }
 
 
 class TestAnalysisContext_test_getPublicNamespace extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getPublicNamespace(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getPublicNamespace();
   @override
   Namespace getPublicNamespace(LibraryElement library) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6610,11 +5980,11 @@
 
 class TestAnalysisContext_test_getRefactoringUnsafeSources extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getRefactoringUnsafeSources(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getRefactoringUnsafeSources();
   @override
   List<Source> get refactoringUnsafeSources {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6622,12 +5992,12 @@
 
 class TestAnalysisContext_test_getResolvedCompilationUnit_element extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getResolvedCompilationUnit_element(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getResolvedCompilationUnit_element();
   @override
   CompilationUnit getResolvedCompilationUnit(Source unitSource,
       LibraryElement library) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6635,89 +6005,89 @@
 
 class TestAnalysisContext_test_getResolvedCompilationUnit_source extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getResolvedCompilationUnit_source(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getResolvedCompilationUnit_source();
   @override
   CompilationUnit getResolvedCompilationUnit2(Source unitSource,
       Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getResolvedHtmlUnit extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getResolvedHtmlUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getResolvedHtmlUnit();
   @override
   ht.HtmlUnit getResolvedHtmlUnit(Source htmlSource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getSourceFactory extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getSourceFactory(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getSourceFactory();
   @override
   SourceFactory get sourceFactory {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getStatistics extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getStatistics(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getStatistics();
   @override
   AnalysisContextStatistics get statistics {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_getTypeProvider extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_getTypeProvider(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_getTypeProvider();
   @override
   TypeProvider get typeProvider {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_isClientLibrary extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_isClientLibrary(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_isClientLibrary();
   @override
   bool isClientLibrary(Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return false;
   }
 }
 
 
 class TestAnalysisContext_test_isDisposed extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_isDisposed(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_isDisposed();
   @override
   bool get isDisposed {
-    invoked[0] = true;
+    invoked = true;
     return false;
   }
 }
 
 
 class TestAnalysisContext_test_isServerLibrary extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_isServerLibrary(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_isServerLibrary();
   @override
   bool isServerLibrary(Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return false;
   }
 }
@@ -6725,33 +6095,33 @@
 
 class TestAnalysisContext_test_parseCompilationUnit extends TestAnalysisContext
     {
-  List<bool> invoked;
-  TestAnalysisContext_test_parseCompilationUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_parseCompilationUnit();
   @override
   CompilationUnit parseCompilationUnit(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_parseHtmlUnit extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_parseHtmlUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_parseHtmlUnit();
   @override
   ht.HtmlUnit parseHtmlUnit(Source source) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_performAnalysisTask extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_performAnalysisTask(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_performAnalysisTask();
   @override
   AnalysisResult performAnalysisTask() {
-    invoked[0] = true;
+    invoked = true;
     return new AnalysisResult(new List<ChangeNotice>(0), 0, null, 0);
   }
 }
@@ -6759,23 +6129,23 @@
 
 class TestAnalysisContext_test_recordLibraryElements extends TestAnalysisContext
     {
-  List<bool> invoked;
-  TestAnalysisContext_test_recordLibraryElements(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_recordLibraryElements();
   @override
   void recordLibraryElements(Map<Source, LibraryElement> elementMap) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_resolveCompilationUnit extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_resolveCompilationUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_resolveCompilationUnit();
   @override
   CompilationUnit resolveCompilationUnit2(Source unitSource,
       Source librarySource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
@@ -6783,76 +6153,76 @@
 
 class TestAnalysisContext_test_resolveCompilationUnit_element extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_resolveCompilationUnit_element(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_resolveCompilationUnit_element();
   @override
   CompilationUnit resolveCompilationUnit(Source unitSource,
       LibraryElement library) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_resolveHtmlUnit extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_resolveHtmlUnit(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_resolveHtmlUnit();
   @override
   ht.HtmlUnit resolveHtmlUnit(Source htmlSource) {
-    invoked[0] = true;
+    invoked = true;
     return null;
   }
 }
 
 
 class TestAnalysisContext_test_setAnalysisOptions extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_setAnalysisOptions(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_setAnalysisOptions();
   @override
   void set analysisOptions(AnalysisOptions options) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_setAnalysisPriorityOrder extends
     TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_setAnalysisPriorityOrder(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_setAnalysisPriorityOrder();
   @override
   void set analysisPriorityOrder(List<Source> sources) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_setChangedContents extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_setChangedContents(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_setChangedContents();
   @override
   void setChangedContents(Source source, String contents, int offset,
       int oldLength, int newLength) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_setContents extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_setContents(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_setContents();
   @override
   void setContents(Source source, String contents) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
 
 class TestAnalysisContext_test_setSourceFactory extends TestAnalysisContext {
-  List<bool> invoked;
-  TestAnalysisContext_test_setSourceFactory(this.invoked);
+  bool invoked = false;
+  TestAnalysisContext_test_setSourceFactory();
   @override
   void set sourceFactory(SourceFactory factory) {
-    invoked[0] = true;
+    invoked = true;
   }
 }
 
@@ -6865,86 +6235,85 @@
 class TestTaskVisitor<E> implements AnalysisTaskVisitor<E> {
   @override
   E visitBuildUnitElementTask(BuildUnitElementTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitGenerateDartErrorsTask");
+    fail("Unexpectedly invoked visitGenerateDartErrorsTask");
     return null;
   }
 
   @override
   E visitGenerateDartErrorsTask(GenerateDartErrorsTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitGenerateDartErrorsTask");
+    fail("Unexpectedly invoked visitGenerateDartErrorsTask");
     return null;
   }
   @override
   E visitGenerateDartHintsTask(GenerateDartHintsTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitGenerateDartHintsTask");
+    fail("Unexpectedly invoked visitGenerateDartHintsTask");
     return null;
   }
   @override
   E visitGetContentTask(GetContentTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitGetContentsTask");
+    fail("Unexpectedly invoked visitGetContentsTask");
     return null;
   }
   @override
   E
       visitIncrementalAnalysisTask(IncrementalAnalysisTask incrementalAnalysisTask) {
-    JUnitTestCase.fail("Unexpectedly invoked visitIncrementalAnalysisTask");
+    fail("Unexpectedly invoked visitIncrementalAnalysisTask");
     return null;
   }
   @override
   E visitParseDartTask(ParseDartTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitParseDartTask");
+    fail("Unexpectedly invoked visitParseDartTask");
     return null;
   }
   @override
   E visitParseHtmlTask(ParseHtmlTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitParseHtmlTask");
+    fail("Unexpectedly invoked visitParseHtmlTask");
     return null;
   }
   @override
   E visitPolymerBuildHtmlTask(PolymerBuildHtmlTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitPolymerBuildHtmlTask");
+    fail("Unexpectedly invoked visitPolymerBuildHtmlTask");
     return null;
   }
   @override
   E visitPolymerResolveHtmlTask(PolymerResolveHtmlTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitPolymerResolveHtmlTask");
+    fail("Unexpectedly invoked visitPolymerResolveHtmlTask");
     return null;
   }
   @override
   E
       visitResolveAngularComponentTemplateTask(ResolveAngularComponentTemplateTask task) {
-    JUnitTestCase.fail(
-        "Unexpectedly invoked visitResolveAngularComponentTemplateTask");
+    fail("Unexpectedly invoked visitResolveAngularComponentTemplateTask");
     return null;
   }
   @override
   E visitResolveAngularEntryHtmlTask(ResolveAngularEntryHtmlTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitResolveAngularEntryHtmlTask");
+    fail("Unexpectedly invoked visitResolveAngularEntryHtmlTask");
     return null;
   }
   @override
   E visitResolveDartLibraryCycleTask(ResolveDartLibraryCycleTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitResolveDartLibraryCycleTask");
+    fail("Unexpectedly invoked visitResolveDartLibraryCycleTask");
     return null;
   }
   @override
   E visitResolveDartLibraryTask(ResolveDartLibraryTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitResolveDartLibraryTask");
+    fail("Unexpectedly invoked visitResolveDartLibraryTask");
     return null;
   }
   @override
   E visitResolveDartUnitTask(ResolveDartUnitTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitResolveDartUnitTask");
+    fail("Unexpectedly invoked visitResolveDartUnitTask");
     return null;
   }
   @override
   E visitResolveHtmlTask(ResolveHtmlTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitResolveHtmlTask");
+    fail("Unexpectedly invoked visitResolveHtmlTask");
     return null;
   }
   @override
   E visitScanDartTask(ScanDartTask task) {
-    JUnitTestCase.fail("Unexpectedly invoked visitScanDartTask");
+    fail("Unexpectedly invoked visitScanDartTask");
     return null;
   }
 }
@@ -6955,10 +6324,10 @@
     UniversalCachePartition partition =
         new UniversalCachePartition(null, 8, null);
     TestSource source = new TestSource();
-    JUnitTestCase.assertTrue(partition.contains(source));
+    expect(partition.contains(source), isTrue);
   }
   void test_creation() {
-    JUnitTestCase.assertNotNull(new UniversalCachePartition(null, 8, null));
+    expect(new UniversalCachePartition(null, 8, null), isNotNull);
   }
   void test_entrySet() {
     UniversalCachePartition partition =
@@ -6966,19 +6335,17 @@
     TestSource source = new TestSource();
     DartEntry entry = new DartEntry();
     partition.put(source, entry);
-    JavaIterator<MapEntry<Source, SourceEntry>> entries =
-        new JavaIterator(getMapEntrySet(partition.map));
-    JUnitTestCase.assertTrue(entries.hasNext);
-    MapEntry<Source, SourceEntry> mapEntry = entries.next();
-    JUnitTestCase.assertSame(source, mapEntry.getKey());
-    JUnitTestCase.assertSame(entry, mapEntry.getValue());
-    JUnitTestCase.assertFalse(entries.hasNext);
+    Map<Source, SourceEntry> entryMap = partition.map;
+    expect(entryMap.length, 1);
+    Source entryKey = entryMap.keys.first;
+    expect(entryKey, same(source));
+    expect(entryMap[entryKey], same(entry));
   }
   void test_get() {
     UniversalCachePartition partition =
         new UniversalCachePartition(null, 8, null);
     TestSource source = new TestSource();
-    JUnitTestCase.assertNull(partition.get(source));
+    expect(partition.get(source), isNull);
   }
   void test_put_noFlush() {
     UniversalCachePartition partition =
@@ -6986,7 +6353,7 @@
     TestSource source = new TestSource();
     DartEntry entry = new DartEntry();
     partition.put(source, entry);
-    JUnitTestCase.assertSame(entry, partition.get(source));
+    expect(partition.get(source), same(entry));
   }
   void test_remove() {
     UniversalCachePartition partition =
@@ -6994,9 +6361,9 @@
     TestSource source = new TestSource();
     DartEntry entry = new DartEntry();
     partition.put(source, entry);
-    JUnitTestCase.assertSame(entry, partition.get(source));
+    expect(partition.get(source), same(entry));
     partition.remove(source);
-    JUnitTestCase.assertNull(partition.get(source));
+    expect(partition.get(source), isNull);
   }
   void test_setMaxCacheSize() {
     UniversalCachePartition partition = new UniversalCachePartition(
@@ -7005,7 +6372,7 @@
         new _UniversalCachePartitionTest_test_setMaxCacheSize());
     int size = 6;
     for (int i = 0; i < size; i++) {
-      Source source = new TestSource("/test${i}.dart");
+      Source source = new TestSource("/test$i.dart");
       DartEntry entry = new DartEntry();
       entry.setValue(DartEntry.PARSED_UNIT, null);
       partition.put(source, entry);
@@ -7021,25 +6388,22 @@
         new UniversalCachePartition(null, 8, null);
     int size = 4;
     for (int i = 0; i < size; i++) {
-      Source source = new TestSource("/test${i}.dart");
+      Source source = new TestSource("/test$i.dart");
       partition.put(source, new DartEntry());
       partition.accessedAst(source);
     }
-    JUnitTestCase.assertEquals(size, partition.size());
+    expect(partition.size(), size);
   }
   void _assertNonFlushedCount(int expectedCount,
       UniversalCachePartition partition) {
     int nonFlushedCount = 0;
-    JavaIterator<MapEntry<Source, SourceEntry>> entries =
-        new JavaIterator(getMapEntrySet(partition.map));
-    while (entries.hasNext) {
-      MapEntry<Source, SourceEntry> entry = entries.next();
-      if (entry.getValue().getState(DartEntry.PARSED_UNIT) !=
-          CacheState.FLUSHED) {
+    Map<Source, SourceEntry> entryMap = partition.map;
+    entryMap.values.forEach((SourceEntry value) {
+      if (value.getState(DartEntry.PARSED_UNIT) != CacheState.FLUSHED) {
         nonFlushedCount++;
       }
-    }
-    JUnitTestCase.assertEquals(expectedCount, nonFlushedCount);
+    });
+    expect(nonFlushedCount, expectedCount);
   }
 }
 
@@ -7052,19 +6416,19 @@
     manager.add(source1, SourcePriority.UNKNOWN);
     manager.addFirst(source2, SourcePriority.UNKNOWN);
     WorkManager_WorkIterator iterator = manager.iterator();
-    JUnitTestCase.assertSame(source2, iterator.next());
-    JUnitTestCase.assertSame(source1, iterator.next());
+    expect(iterator.next(), same(source2));
+    expect(iterator.next(), same(source1));
   }
   void test_creation() {
-    JUnitTestCase.assertNotNull(new WorkManager());
+    expect(new WorkManager(), isNotNull);
   }
   void test_iterator_empty() {
     WorkManager manager = new WorkManager();
     WorkManager_WorkIterator iterator = manager.iterator();
-    JUnitTestCase.assertFalse(iterator.hasNext);
+    expect(iterator.hasNext, isFalse);
     try {
       iterator.next();
-      JUnitTestCase.fail("Expected NoSuchElementException");
+      fail("Expected NoSuchElementException");
     } on NoSuchElementException catch (exception) {
     }
   }
@@ -7073,8 +6437,8 @@
     WorkManager manager = new WorkManager();
     manager.add(source, SourcePriority.UNKNOWN);
     WorkManager_WorkIterator iterator = manager.iterator();
-    JUnitTestCase.assertTrue(iterator.hasNext);
-    JUnitTestCase.assertSame(source, iterator.next());
+    expect(iterator.hasNext, isTrue);
+    expect(iterator.next(), same(source));
   }
   void test_remove() {
     TestSource source1 = new TestSource("/f1.dart");
@@ -7086,12 +6450,12 @@
     manager.add(source3, SourcePriority.UNKNOWN);
     manager.remove(source2);
     WorkManager_WorkIterator iterator = manager.iterator();
-    JUnitTestCase.assertSame(source1, iterator.next());
-    JUnitTestCase.assertSame(source3, iterator.next());
+    expect(iterator.next(), same(source1));
+    expect(iterator.next(), same(source3));
   }
   void test_toString_empty() {
     WorkManager manager = new WorkManager();
-    JUnitTestCase.assertNotNull(manager.toString());
+    expect(manager.toString(), isNotNull);
   }
   void test_toString_nonEmpty() {
     WorkManager manager = new WorkManager();
@@ -7100,7 +6464,7 @@
     manager.add(new TestSource(), SourcePriority.NORMAL_PART);
     manager.add(new TestSource(), SourcePriority.PRIORITY_PART);
     manager.add(new TestSource(), SourcePriority.UNKNOWN);
-    JUnitTestCase.assertNotNull(manager.toString());
+    expect(manager.toString(), isNotNull);
   }
 }
 
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index 58ad1c6..16d5494 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -18,222 +18,272 @@
 
 class NonErrorResolverTest extends ResolverTestCase {
   void fail_undefinedEnumConstant() {
-    Source source = addSource(EngineTestCase.createSource(["enum E { ONE }", "E e() {", "  return E.ONE;", "}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+E e() {
+  return E.TWO;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_ambiguousExport() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "export 'lib1.dart';",
-        "export 'lib2.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class M {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';
+export 'lib2.dart';''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class M {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_ambiguousExport_combinators_hide() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "export 'lib1.dart';",
-        "export 'lib2.dart' hide B;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library L1;", "class A {}", "class B {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library L2;", "class B {}", "class C {}"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';
+export 'lib2.dart' hide B;''');
+    addNamedSource("/lib1.dart", r'''
+library L1;
+class A {}
+class B {}''');
+    addNamedSource("/lib2.dart", r'''
+library L2;
+class B {}
+class C {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_ambiguousExport_combinators_show() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "export 'lib1.dart';",
-        "export 'lib2.dart' show C;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library L1;", "class A {}", "class B {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library L2;", "class B {}", "class C {}"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';
+export 'lib2.dart' show C;''');
+    addNamedSource("/lib1.dart", r'''
+library L1;
+class A {}
+class B {}''');
+    addNamedSource("/lib2.dart", r'''
+library L2;
+class B {}
+class C {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_ambiguousExport_sameDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib.dart';", "export 'lib.dart';"]));
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class N {}"]));
+    Source source = addSource(r'''
+library L;
+export 'lib.dart';
+export 'lib.dart';''');
+    addNamedSource("/lib.dart", r'''
+library lib;
+class N {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_ambiguousImport_hideCombinator() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "import 'lib3.dart' hide N;",
-        "main() {",
-        "  new N1();",
-        "  new N2();",
-        "  new N3();",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}", "class N1 {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}", "class N2 {}"]));
-    addNamedSource("/lib3.dart", EngineTestCase.createSource(["library lib3;", "class N {}", "class N3 {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+import 'lib3.dart' hide N;
+main() {
+  new N1();
+  new N2();
+  new N3();
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}
+class N1 {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}
+class N2 {}''');
+    addNamedSource("/lib3.dart", r'''
+library lib3;
+class N {}
+class N3 {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_ambiguousImport_showCombinator() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart' show N, N2;",
-        "main() {",
-        "  new N1();",
-        "  new N2();",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}", "class N1 {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}", "class N2 {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart' show N, N2;
+main() {
+  new N1();
+  new N2();
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}
+class N1 {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}
+class N2 {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_argumentTypeNotAssignable_classWithCall_Function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "  caller(Function callee) {",
-        "    callee();",
-        "  }",
-        "",
-        "  class CallMeBack {",
-        "    call() => 0;",
-        "  }",
-        "",
-        "  main() {",
-        "    caller(new CallMeBack());",
-        "  }"]));
+    Source source = addSource(r'''
+  caller(Function callee) {
+    callee();
+  }
+
+  class CallMeBack {
+    call() => 0;
+  }
+
+  main() {
+    caller(new CallMeBack());
+  }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_fieldFormalParameterElement_member() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class ObjectSink<T> {",
-        "  void sink(T object) {",
-        "    new TimestampedObject<T>(object);",
-        "  }",
-        "}",
-        "class TimestampedObject<E> {",
-        "  E object2;",
-        "  TimestampedObject(this.object2);",
-        "}"]));
+    Source source = addSource(r'''
+class ObjectSink<T> {
+  void sink(T object) {
+    new TimestampedObject<T>(object);
+  }
+}
+class TimestampedObject<E> {
+  E object2;
+  TimestampedObject(this.object2);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_functionParameter_generic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<K> {",
-        "  m(f(K k), K v) {",
-        "    f(v);",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  m(f(K k), K v) {
+    f(v);
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_typedef_generic() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A<T>(T p);", "f(A<int> a) {", "  a(1);", "}"]));
+    Source source = addSource(r'''
+typedef A<T>(T p);
+f(A<int> a) {
+  a(1);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_Object_Function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  process(() {});",
-        "}",
-        "process(Object x) {}"]));
+    Source source = addSource(r'''
+main() {
+  process(() {});
+}
+process(Object x) {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_typedef_local() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef A(int p1, String p2);",
-        "A getA() => null;",
-        "f() {",
-        "  A a = getA();",
-        "  a(1, '2');",
-        "}"]));
+    Source source = addSource(r'''
+typedef A(int p1, String p2);
+A getA() => null;
+f() {
+  A a = getA();
+  a(1, '2');
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_typedef_parameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef A(int p1, String p2);",
-        "f(A a) {",
-        "  a(1, '2');",
-        "}"]));
+    Source source = addSource(r'''
+typedef A(int p1, String p2);
+f(A a) {
+  a(1, '2');
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_assignmentToFinal_prefixNegate() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  -x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  -x;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_assignmentToFinalNoSetter_prefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "  set x(v) {}",
-        "}",
-        "main() {",
-        "  A a = new A();",
-        "  a.x = 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+  set x(v) {}
+}
+main() {
+  A a = new A();
+  a.x = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_assignmentToFinalNoSetter_propertyAccess() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "  set x(v) {}",
-        "}",
-        "class B {",
-        "  static A a;",
-        "}",
-        "main() {",
-        "  B.a.x = 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+  set x(v) {}
+}
+class B {
+  static A a;
+}
+main() {
+  B.a.x = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_assignmentToFinals_importWithPrefix() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library lib;",
-        "import 'lib1.dart' as foo;",
-        "main() {",
-        "  foo.x = true;",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "bool x = false;"]));
+    Source source = addSource(r'''
+library lib;
+import 'lib1.dart' as foo;
+main() {
+  foo.x = true;
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+bool x = false;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -241,11 +291,11 @@
 
   void test_asyncForInWrongContext_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource([
-        "f(list) async {",
-        "  await for (var e in list) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(list) async {
+  await for (var e in list) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -253,11 +303,11 @@
 
   void test_asyncForInWrongContext_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource([
-        "f(list) async* {",
-        "  await for (var e in list) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(list) async* {
+  await for (var e in list) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -265,7 +315,10 @@
 
   void test_awaitInWrongContext_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f(x, y) async {", "  return await x + await y;", "}"]));
+    Source source = addSource(r'''
+f(x, y) async {
+  return await x + await y;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -273,147 +326,157 @@
 
   void test_awaitInWrongContext_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f(x, y) async* {", "  yield await x + await y;", "}"]));
+    Source source = addSource(r'''
+f(x, y) async* {
+  yield await x + await y;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_breakWithoutLabelInSwitch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m(int i) {",
-        "    switch (i) {",
-        "      case 0:",
-        "        break;",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m(int i) {
+    switch (i) {
+      case 0:
+        break;
+    }
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_builtInIdentifierAsType_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  dynamic x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  dynamic x;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseBlockNotTerminated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int p) {",
-        "  for (int i = 0; i < 10; i++) {",
-        "    switch (p) {",
-        "      case 0:",
-        "        break;",
-        "      case 1:",
-        "        continue;",
-        "      case 2:",
-        "        return;",
-        "      case 3:",
-        "        throw new Object();",
-        "      case 4:",
-        "      case 5:",
-        "        return;",
-        "      case 6:",
-        "      default:",
-        "        return;",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int p) {
+  for (int i = 0; i < 10; i++) {
+    switch (p) {
+      case 0:
+        break;
+      case 1:
+        continue;
+      case 2:
+        return;
+      case 3:
+        throw new Object();
+      case 4:
+      case 5:
+        return;
+      case 6:
+      default:
+        return;
+    }
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseBlockNotTerminated_lastCase() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int p) {",
-        "  switch (p) {",
-        "    case 0:",
-        "      p = p + 1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int p) {
+  switch (p) {
+    case 0:
+      p = p + 1;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseExpressionTypeImplementsEquals() {
-    Source source = addSource(EngineTestCase.createSource([
-        "print(p) {}",
-        "",
-        "abstract class B {",
-        "  final id;",
-        "  const B(this.id);",
-        "  String toString() => 'C(\$id)';",
-        "  /** Equality is identity equality, the id isn't used. */",
-        "  bool operator==(Object other);",
-        "  }",
-        "",
-        "class C extends B {",
-        "  const C(id) : super(id);",
-        "}",
-        "",
-        "void doSwitch(c) {",
-        "  switch (c) {",
-        "  case const C(0): print('Switch: 0'); break;",
-        "  case const C(1): print('Switch: 1'); break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+print(p) {}
+
+abstract class B {
+  final id;
+  const B(this.id);
+  String toString() => 'C($id)';
+  /** Equality is identity equality, the id isn't used. */
+  bool operator==(Object other);
+  }
+
+class C extends B {
+  const C(id) : super(id);
+}
+
+void doSwitch(c) {
+  switch (c) {
+  case const C(0): print('Switch: 0'); break;
+  case const C(1): print('Switch: 1'); break;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseExpressionTypeImplementsEquals_int() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int i) {",
-        "  switch(i) {",
-        "    case(1) : return 1;",
-        "    default: return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int i) {
+  switch(i) {
+    case(1) : return 1;
+    default: return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseExpressionTypeImplementsEquals_Object() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class IntWrapper {",
-        "  final int value;",
-        "  const IntWrapper(this.value);",
-        "}",
-        "",
-        "f(IntWrapper intWrapper) {",
-        "  switch(intWrapper) {",
-        "    case(const IntWrapper(1)) : return 1;",
-        "    default: return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class IntWrapper {
+  final int value;
+  const IntWrapper(this.value);
+}
+
+f(IntWrapper intWrapper) {
+  switch(intWrapper) {
+    case(const IntWrapper(1)) : return 1;
+    default: return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_caseExpressionTypeImplementsEquals_String() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(String s) {",
-        "  switch(s) {",
-        "    case('1') : return 1;",
-        "    default: return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(String s) {
+  switch(s) {
+    case('1') : return 1;
+    default: return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_commentReference_beforeConstructor() {
-    String code = EngineTestCase.createSource(["abstract class A {", "  /// [p]", "  A(int p) {}", "}"]);
+    String code = r'''
+abstract class A {
+  /// [p]
+  A(int p) {}
+}''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -426,7 +489,10 @@
   }
 
   void test_commentReference_beforeFunction_blockBody() {
-    String code = EngineTestCase.createSource(["/// [p]", "foo(int p) {", "}"]);
+    String code = r'''
+/// [p]
+foo(int p) {
+}''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -437,7 +503,9 @@
   }
 
   void test_commentReference_beforeFunction_expressionBody() {
-    String code = EngineTestCase.createSource(["/// [p]", "foo(int p) => null;"]);
+    String code = r'''
+/// [p]
+foo(int p) => null;''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -448,13 +516,13 @@
   }
 
   void test_commentReference_beforeMethod() {
-    String code = EngineTestCase.createSource([
-        "abstract class A {",
-        "  /// [p1]",
-        "  ma(int p1) {}",
-        "  /// [p2]",
-        "  mb(int p2);",
-        "}"]);
+    String code = r'''
+abstract class A {
+  /// [p1]
+  ma(int p1) {}
+  /// [p2]
+  mb(int p2);
+}''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -471,7 +539,11 @@
   }
 
   void test_commentReference_class() {
-    String code = EngineTestCase.createSource(["/// [foo]", "class A {", "  foo() {}", "}"]);
+    String code = r'''
+/// [foo]
+class A {
+  foo() {}
+}''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -482,17 +554,17 @@
   }
 
   void test_commentReference_setter() {
-    String code = EngineTestCase.createSource([
-        "class A {",
-        "  /// [x] in A",
-        "  mA() {}",
-        "  set x(value) {}",
-        "}",
-        "class B extends A {",
-        "  /// [x] in B",
-        "  mB() {}",
-        "}",
-        ""]);
+    String code = r'''
+class A {
+  /// [x] in A
+  mA() {}
+  set x(value) {}
+}
+class B extends A {
+  /// [x] in B
+  mB() {}
+}
+''';
     Source source = addSource(code);
     resolve(source);
     assertNoErrors(source);
@@ -509,136 +581,147 @@
   }
 
   void test_concreteClassWithAbstractMember() {
-    Source source = addSource(EngineTestCase.createSource(["abstract class A {", "  m();", "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_concreteClassWithAbstractMember_inherited() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  m();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_instance() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get v => 0;",
-        "}",
-        "class B extends A {",
-        "  get v => 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get v => 0;
+}
+class B extends A {
+  get v => 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_conflictingStaticGetterAndInstanceSetter_thisClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get x => 0;",
-        "  static set x(int p) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get x => 0;
+  static set x(int p) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_conflictingStaticSetterAndInstanceMember_thisClass_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static x() {}",
-        "  static set x(int p) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static x() {}
+  static set x(int p) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithNonConstSuper_explicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B extends A {",
-        "  const B(): super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B extends A {
+  const B(): super();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithNonConstSuper_redirectingFactory() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A();",
-        "}",
-        "class B implements C {",
-        "  const B();",
-        "}",
-        "class C extends A {",
-        "  const factory C() = B;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A();
+}
+class B implements C {
+  const B();
+}
+class C extends A {
+  const factory C() = B;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithNonConstSuper_unresolved() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.a();",
-        "}",
-        "class B extends A {",
-        "  const B(): super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.a();
+}
+class B extends A {
+  const B(): super();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT]);
     verify([source]);
   }
 
   void test_constConstructorWithNonFinalField_finalInstanceVar() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x = 0;", "  const A();", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x = 0;
+  const A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithNonFinalField_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  a() {}",
-        "}",
-        "class B extends Object with A {",
-        "  const B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  a() {}
+}
+class B extends Object with A {
+  const B();
+}''');
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_MIXIN]);
     verify([source]);
   }
 
   void test_constConstructorWithNonFinalField_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static int x;", "  const A();", "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+  const A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constConstructorWithNonFinalField_syntheticField() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  set x(value) {}",
-        "  get x {return 0;}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  set x(value) {}
+  get x {return 0;}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -646,235 +729,255 @@
 
   void test_constDeferredClass_new() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {", "  const A.b();", "}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "main() {",
-        "  new a.A.b();",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
+        r'''
+library lib1;
+class A {
+  const A.b();
+}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+main() {
+  new a.A.b();
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
   }
 
   void test_constEval_functionTypeLiteral() {
-    Source source = addSource(EngineTestCase.createSource(["typedef F();", "const C = F;"]));
+    Source source = addSource(r'''
+typedef F();
+const C = F;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constEval_propertyExtraction_fieldStatic_targetType() {
-    addNamedSource("/math.dart", EngineTestCase.createSource(["library math;", "const PI = 3.14;"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'math.dart' as math;", "const C = math.PI;"]));
+    addNamedSource("/math.dart", r'''
+library math;
+const PI = 3.14;''');
+    Source source = addSource(r'''
+import 'math.dart' as math;
+const C = math.PI;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constEval_propertyExtraction_methodStatic_targetType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "  static m() {}",
-        "}",
-        "const C = A.m;"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+  static m() {}
+}
+const C = A.m;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constEval_symbol() {
-    addNamedSource("/math.dart", EngineTestCase.createSource(["library math;", "const PI = 3.14;"]));
-    Source source = addSource(EngineTestCase.createSource(["const C = #foo;", "foo() {}"]));
+    addNamedSource("/math.dart", r'''
+library math;
+const PI = 3.14;''');
+    Source source = addSource(r'''
+const C = #foo;
+foo() {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constEvalTypeBoolNumString_equal() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B {",
-        "  final v;",
-        "  const B.a1(bool p) : v = p == true;",
-        "  const B.a2(bool p) : v = p == false;",
-        "  const B.a3(bool p) : v = p == 0;",
-        "  const B.a4(bool p) : v = p == 0.0;",
-        "  const B.a5(bool p) : v = p == '';",
-        "  const B.b1(int p) : v = p == true;",
-        "  const B.b2(int p) : v = p == false;",
-        "  const B.b3(int p) : v = p == 0;",
-        "  const B.b4(int p) : v = p == 0.0;",
-        "  const B.b5(int p) : v = p == '';",
-        "  const B.c1(String p) : v = p == true;",
-        "  const B.c2(String p) : v = p == false;",
-        "  const B.c3(String p) : v = p == 0;",
-        "  const B.c4(String p) : v = p == 0.0;",
-        "  const B.c5(String p) : v = p == '';",
-        "  const B.n1(num p) : v = p == null;",
-        "  const B.n2(num p) : v = null == p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B {
+  final v;
+  const B.a1(bool p) : v = p == true;
+  const B.a2(bool p) : v = p == false;
+  const B.a3(bool p) : v = p == 0;
+  const B.a4(bool p) : v = p == 0.0;
+  const B.a5(bool p) : v = p == '';
+  const B.b1(int p) : v = p == true;
+  const B.b2(int p) : v = p == false;
+  const B.b3(int p) : v = p == 0;
+  const B.b4(int p) : v = p == 0.0;
+  const B.b5(int p) : v = p == '';
+  const B.c1(String p) : v = p == true;
+  const B.c2(String p) : v = p == false;
+  const B.c3(String p) : v = p == 0;
+  const B.c4(String p) : v = p == 0.0;
+  const B.c5(String p) : v = p == '';
+  const B.n1(num p) : v = p == null;
+  const B.n2(num p) : v = null == p;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_constEvalTypeBoolNumString_notEqual() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B {",
-        "  final v;",
-        "  const B.a1(bool p) : v = p != true;",
-        "  const B.a2(bool p) : v = p != false;",
-        "  const B.a3(bool p) : v = p != 0;",
-        "  const B.a4(bool p) : v = p != 0.0;",
-        "  const B.a5(bool p) : v = p != '';",
-        "  const B.b1(int p) : v = p != true;",
-        "  const B.b2(int p) : v = p != false;",
-        "  const B.b3(int p) : v = p != 0;",
-        "  const B.b4(int p) : v = p != 0.0;",
-        "  const B.b5(int p) : v = p != '';",
-        "  const B.c1(String p) : v = p != true;",
-        "  const B.c2(String p) : v = p != false;",
-        "  const B.c3(String p) : v = p != 0;",
-        "  const B.c4(String p) : v = p != 0.0;",
-        "  const B.c5(String p) : v = p != '';",
-        "  const B.n1(num p) : v = p != null;",
-        "  const B.n2(num p) : v = null != p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B {
+  final v;
+  const B.a1(bool p) : v = p != true;
+  const B.a2(bool p) : v = p != false;
+  const B.a3(bool p) : v = p != 0;
+  const B.a4(bool p) : v = p != 0.0;
+  const B.a5(bool p) : v = p != '';
+  const B.b1(int p) : v = p != true;
+  const B.b2(int p) : v = p != false;
+  const B.b3(int p) : v = p != 0;
+  const B.b4(int p) : v = p != 0.0;
+  const B.b5(int p) : v = p != '';
+  const B.c1(String p) : v = p != true;
+  const B.c2(String p) : v = p != false;
+  const B.c3(String p) : v = p != 0;
+  const B.c4(String p) : v = p != 0.0;
+  const B.c5(String p) : v = p != '';
+  const B.n1(num p) : v = p != null;
+  const B.n2(num p) : v = null != p;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constMapKeyExpressionTypeImplementsEquals_abstract() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class B {",
-        "  final id;",
-        "  const B(this.id);",
-        "  String toString() => 'C(\$id)';",
-        "  /** Equality is identity equality, the id isn't used. */",
-        "  bool operator==(Object other);",
-        "  }",
-        "",
-        "class C extends B {",
-        "  const C(id) : super(id);",
-        "}",
-        "",
-        "Map getMap() {",
-        "  return const { const C(0): 'Map: 0' };",
-        "}"]));
+    Source source = addSource(r'''
+abstract class B {
+  final id;
+  const B(this.id);
+  String toString() => 'C($id)';
+  /** Equality is identity equality, the id isn't used. */
+  bool operator==(Object other);
+  }
+
+class C extends B {
+  const C(id) : super(id);
+}
+
+Map getMap() {
+  return const { const C(0): 'Map: 0' };
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constNotInitialized_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static const int x = 0;", "}"]));
+    Source source = addSource(r'''
+class A {
+  static const int x = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constNotInitialized_local() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  const int x = 0;", "}"]));
+    Source source = addSource(r'''
+main() {
+  const int x = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constructorDeclaration_scope_signature() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const app = 0;",
-        "class A {",
-        "  A(@app int app) {}",
-        "}"]));
+    Source source = addSource(r'''
+const app = 0;
+class A {
+  A(@app int app) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constWithNonConstantArgument_literals() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(a, b, c, d);",
-        "}",
-        "f() { return const A(true, 0, 1.0, '2'); }"]));
+    Source source = addSource(r'''
+class A {
+  const A(a, b, c, d);
+}
+f() { return const A(true, 0, 1.0, '2'); }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constWithTypeParameters_direct() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  static const V = const A<int>();",
-        "  const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  static const V = const A<int>();
+  const A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constWithUndefinedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.name();",
-        "}",
-        "f() {",
-        "  return const A.name();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.name();
+}
+f() {
+  return const A.name();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_constWithUndefinedConstructorDefault() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "f() {",
-        "  return const A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+f() {
+  return const A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["typedef F([x]);"]));
+    Source source = addSource("typedef F([x]);");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypedParameter_named() {
-    Source source = addSource(EngineTestCase.createSource(["f(g({p})) {}"]));
+    Source source = addSource("f(g({p})) {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_defaultValueInFunctionTypedParameter_optional() {
-    Source source = addSource(EngineTestCase.createSource(["f(g([p])) {}"]));
+    Source source = addSource("f(g([p])) {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deprecatedMemberUse_hide() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library lib;",
-        "import 'lib1.dart' hide B;",
-        "A a = new A();"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource([
-        "library lib1;",
-        "class A {}",
-        "@deprecated",
-        "class B {}"]));
+    Source source = addSource(r'''
+library lib;
+import 'lib1.dart' hide B;
+A a = new A();''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}
+@deprecated
+class B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -883,286 +986,353 @@
   void test_duplicateDefinition_emptyName() {
     // Note: This code has two FunctionElements '() {}' with an empty name, this tests that the
     // empty string is not put into the scope (more than once).
-    Source source = addSource(EngineTestCase.createSource([
-        "Map _globalMap = {",
-        "  'a' : () {},",
-        "  'b' : () {}",
-        "};"]));
+    Source source = addSource(r'''
+Map _globalMap = {
+  'a' : () {},
+  'b' : () {}
+};''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_duplicateDefinition_getter() {
-    Source source = addSource(EngineTestCase.createSource(["bool get a => true;"]));
+    Source source = addSource("bool get a => true;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_dynamicIdentifier() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  var v = dynamic;", "}"]));
+    Source source = addSource(r'''
+main() {
+  var v = dynamic;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_expectedOneListTypeArgument() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  <int> [];", "}"]));
+    Source source = addSource(r'''
+main() {
+  <int> [];
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_expectedTwoMapTypeArguments() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  <int, int> {};", "}"]));
+    Source source = addSource(r'''
+main() {
+  <int, int> {};
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_exportOfNonLibrary_libraryDeclared() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib1.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';''');
+    addNamedSource("/lib1.dart", "library lib1;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_exportOfNonLibrary_libraryNotDeclared() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib1.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource([""]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart';''');
+    addNamedSource("/lib1.dart", "");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extraPositionalArguments_function() {
-    Source source = addSource(EngineTestCase.createSource(["f(p1, p2) {}", "main() {", "  f(1, 2);", "}"]));
+    Source source = addSource(r'''
+f(p1, p2) {}
+main() {
+  f(1, 2);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extraPositionalArguments_Function() {
-    Source source = addSource(EngineTestCase.createSource(["f(Function a) {", "  a(1, 2);", "}"]));
+    Source source = addSource(r'''
+f(Function a) {
+  a(1, 2);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extraPositionalArguments_implicitConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E extends num> {",
-        "  A(E x, E y);",
-        "}",
-        "class M {}",
-        "class B<E extends num> = A<E> with M;",
-        "void main() {",
-        "   B<int> x = new B<int>(0,0);",
-        "}"]));
+    Source source = addSource(r'''
+class A<E extends num> {
+  A(E x, E y);
+}
+class M {}
+class B<E extends num> = A<E> with M;
+void main() {
+   B<int> x = new B<int>(0,0);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extraPositionalArguments_typedef_local() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef A(p1, p2);",
-        "A getA() => null;",
-        "f() {",
-        "  A a = getA();",
-        "  a(1, 2);",
-        "}"]));
+    Source source = addSource(r'''
+typedef A(p1, p2);
+A getA() => null;
+f() {
+  A a = getA();
+  a(1, 2);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extraPositionalArguments_typedef_parameter() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A(p1, p2);", "f(A a) {", "  a(1, 2);", "}"]));
+    Source source = addSource(r'''
+typedef A(p1, p2);
+f(A a) {
+  a(1, 2);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializedByMultipleInitializers() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "  int y;",
-        "  A() : x = 0, y = 0 {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  int y;
+  A() : x = 0, y = 0 {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializedInInitializerAndDeclaration_fieldNotFinal() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x = 0;", "  A() : x = 1 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x = 0;
+  A() : x = 1 {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializedInInitializerAndDeclaration_finalFieldNotSet() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x;", "  A() : x = 1 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  A() : x = 1 {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializerOutsideConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A(this.x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializerOutsideConstructor_defaultParameters() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A([this.x]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A([this.x]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldInitializerRedirectingConstructor_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends A {",
-        "  int x;",
-        "  B(this.x) : super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends A {
+  int x;
+  B(this.x) : super();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalInitializedInDeclarationAndConstructor_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x;", "  A() : x = 1 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  A() : x = 1 {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalInitializedInDeclarationAndConstructor_initializingFormal() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  A(this.x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalNotInitialized_atDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x = 0;", "  A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x = 0;
+  A() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalNotInitialized_fieldFormal() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x = 0;", "  A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x = 0;
+  A() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalNotInitialized_functionTypedFieldFormal() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final Function x;",
-        "  A(int this.x(int p)) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final Function x;
+  A(int this.x(int p)) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalNotInitialized_hasNativeClause_hasConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A native 'something' {",
-        "  final int x;",
-        "  A() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A native 'something' {
+  final int x;
+  A() {}
+}''');
     resolve(source);
     assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]);
     verify([source]);
   }
 
   void test_finalNotInitialized_hasNativeClause_noConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A native 'something' {", "  final int x;", "}"]));
+    Source source = addSource(r'''
+class A native 'something' {
+  final int x;
+}''');
     resolve(source);
     assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]);
     verify([source]);
   }
 
   void test_finalNotInitialized_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x;", "  A() : x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  A() : x = 0 {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_finalNotInitialized_redirectingConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  A(this.x);",
-        "  A.named() : this (42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  A(this.x);
+  A.named() : this (42);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionDeclaration_scope_returnType() {
-    Source source = addSource(EngineTestCase.createSource(["int f(int) { return 0; }"]));
+    Source source = addSource("int f(int) { return 0; }");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionDeclaration_scope_signature() {
-    Source source = addSource(EngineTestCase.createSource(["const app = 0;", "f(@app int app) {}"]));
+    Source source = addSource(r'''
+const app = 0;
+f(@app int app) {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionTypeAlias_scope_returnType() {
-    Source source = addSource(EngineTestCase.createSource(["typedef int f(int);"]));
+    Source source = addSource("typedef int f(int);");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionTypeAlias_scope_signature() {
-    Source source = addSource(EngineTestCase.createSource(["const app = 0;", "typedef int f(@app int app);"]));
+    Source source = addSource(r'''
+const app = 0;
+typedef int f(@app int app);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionWithoutCall() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements Function {",
-        "}",
-        "class B implements A {",
-        "  void call() {}",
-        "}",
-        "class C extends A {",
-        "  void call() {}",
-        "}",
-        "class D extends C {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A implements Function {
+}
+class B implements A {
+  void call() {}
+}
+class C extends A {
+  void call() {}
+}
+class D extends C {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionWithoutCall_doesNotImplementFunction() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}"]));
+    Source source = addSource("class A {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1170,168 +1340,172 @@
 
   void test_functionWithoutCall_withNoSuchMethod() {
     // 16078
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements Function {",
-        "  noSuchMethod(inv) {",
-        "    return 42;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A implements Function {
+  noSuchMethod(inv) {
+    return 42;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_constructorName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.named() {}",
-        "}",
-        "class B {",
-        "  var v;",
-        "  B() : v = new A.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.named() {}
+}
+class B {
+  var v;
+  B() : v = new A.named();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_importPrefix() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'dart:async' as abstract;",
-        "class A {",
-        "  var v = new abstract.Completer();",
-        "}"]));
+    Source source = addSource(r'''
+import 'dart:async' as abstract;
+class A {
+  var v = new abstract.Completer();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_prefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var f;",
-        "}",
-        "class B {",
-        "  var v;",
-        "  B(A a) : v = a.f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var f;
+}
+class B {
+  var v;
+  B(A a) : v = a.f;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_qualifiedMethodInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  f() {}",
-        "}",
-        "class B {",
-        "  var v;",
-        "  B() : v = new A().f();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  f() {}
+}
+class B {
+  var v;
+  B() : v = new A().f();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_qualifiedPropertyAccess() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var f;",
-        "}",
-        "class B {",
-        "  var v;",
-        "  B() : v = new A().f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var f;
+}
+class B {
+  var v;
+  B() : v = new A().f;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_staticField_thisClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f;",
-        "  static var f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f;
+  static var f;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_staticGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f;",
-        "  static get f => 42;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f;
+  static get f => 42;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_staticMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f();",
-        "  static f() => 42;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f();
+  static f() => 42;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_topLevelField() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f;",
-        "}",
-        "var f = 42;"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f;
+}
+var f = 42;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_topLevelFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f();",
-        "}",
-        "f() => 42;"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f();
+}
+f() => 42;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_topLevelGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var v;",
-        "  A() : v = f;",
-        "}",
-        "get f => 42;"]));
+    Source source = addSource(r'''
+class A {
+  var v;
+  A() : v = f;
+}
+get f => 42;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_implicitThisReferenceInInitializer_typeParameter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T> {", "  var v;", "  A(p) : v = (p is T);", "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  var v;
+  A(p) : v = (p is T);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_importDuplicatedLibraryName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library test;",
-        "import 'lib.dart';",
-        "import 'lib.dart';"]));
+    Source source = addSource(r'''
+library test;
+import 'lib.dart';
+import 'lib.dart';''');
     addNamedSource("/lib.dart", "library lib;");
     resolve(source);
     assertErrors(source, [
@@ -1342,128 +1516,140 @@
   }
 
   void test_importOfNonLibrary_libraryDeclared() {
-    Source source = addSource(EngineTestCase.createSource(["library lib;", "import 'part.dart';", "A a;"]));
-    addNamedSource("/part.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library lib;
+import 'part.dart';
+A a;''');
+    addNamedSource("/part.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_importOfNonLibrary_libraryNotDeclared() {
-    Source source = addSource(EngineTestCase.createSource(["library lib;", "import 'part.dart';", "A a;"]));
-    addNamedSource("/part.dart", EngineTestCase.createSource(["class A {}"]));
+    Source source = addSource(r'''
+library lib;
+import 'part.dart';
+A a;''');
+    addNamedSource("/part.dart", "class A {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_importPrefixes_withFirstLetterDifference() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' as math;",
-        "import 'lib2.dart' as path;",
-        "main() {",
-        "  math.test1();",
-        "  path.test2();",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "test1() {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "test2() {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' as math;
+import 'lib2.dart' as path;
+main() {
+  math.test1();
+  path.test2();
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+test1() {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+test2() {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentCaseExpressionTypes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var p) {",
-        "  switch (p) {",
-        "    case 1:",
-        "      break;",
-        "    case 2:",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(var p) {
+  switch (p) {
+    case 1:
+      break;
+    case 2:
+      break;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_accessors_typeParameter2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A<E> {",
-        "  E get x {return null;}",
-        "}",
-        "class B<E> {",
-        "  E get x {return null;}",
-        "}",
-        "class C<E> extends A<E> implements B<E> {}"]));
+    Source source = addSource(r'''
+abstract class A<E> {
+  E get x {return null;}
+}
+class B<E> {
+  E get x {return null;}
+}
+class C<E> extends A<E> implements B<E> {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_accessors_typeParameters_diamond() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class F<E> extends B<E> {}",
-        "class D<E> extends F<E> {",
-        "  external E get g;",
-        "}",
-        "abstract class C<E> {",
-        "  E get g;",
-        "}",
-        "abstract class B<E> implements C<E> {",
-        "  E get g { return null; }",
-        "}",
-        "class A<E> extends B<E> implements D<E> {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class F<E> extends B<E> {}
+class D<E> extends F<E> {
+  external E get g;
+}
+abstract class C<E> {
+  E get g;
+}
+abstract class B<E> implements C<E> {
+  E get g { return null; }
+}
+class A<E> extends B<E> implements D<E> {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_accessors_typeParameters1() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A<E> {",
-        "  E get x;",
-        "}",
-        "abstract class B<E> {",
-        "  E get x;",
-        "}",
-        "class C<E> implements A<E>, B<E> {",
-        "  E get x => null;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A<E> {
+  E get x;
+}
+abstract class B<E> {
+  E get x;
+}
+class C<E> implements A<E>, B<E> {
+  E get x => null;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_methods_typeParameter2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  x(E e) {}",
-        "}",
-        "class B<E> {",
-        "  x(E e) {}",
-        "}",
-        "class C<E> extends A<E> implements B<E> {",
-        "  x(E e) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  x(E e) {}
+}
+class B<E> {
+  x(E e) {}
+}
+class C<E> extends A<E> implements B<E> {
+  x(E e) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_methods_typeParameters1() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  x(E e) {}",
-        "}",
-        "class B<E> {",
-        "  x(E e) {}",
-        "}",
-        "class C<E> implements A<E>, B<E> {",
-        "  x(E e) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  x(E e) {}
+}
+class B<E> {
+  x(E e) {}
+}
+class C<E> implements A<E>, B<E> {
+  x(E e) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1471,16 +1657,16 @@
 
   void test_inconsistentMethodInheritance_overrideTrumpsInherits_getter() {
     // 16134
-    Source source = addSource(EngineTestCase.createSource([
-        "class B<S> {",
-        "  S get g => null;",
-        "}",
-        "abstract class I<U> {",
-        "  U get g => null;",
-        "}",
-        "class C extends B<double> implements I<int> {",
-        "  num get g => null;",
-        "}"]));
+    Source source = addSource(r'''
+class B<S> {
+  S get g => null;
+}
+abstract class I<U> {
+  U get g => null;
+}
+class C extends B<double> implements I<int> {
+  num get g => null;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1488,16 +1674,16 @@
 
   void test_inconsistentMethodInheritance_overrideTrumpsInherits_method() {
     // 16134
-    Source source = addSource(EngineTestCase.createSource([
-        "class B<S> {",
-        "  m(S s) => null;",
-        "}",
-        "abstract class I<U> {",
-        "  m(U u) => null;",
-        "}",
-        "class C extends B<double> implements I<int> {",
-        "  m(num n) => null;",
-        "}"]));
+    Source source = addSource(r'''
+class B<S> {
+  m(S s) => null;
+}
+abstract class I<U> {
+  m(U u) => null;
+}
+class C extends B<double> implements I<int> {
+  m(num n) => null;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1505,188 +1691,243 @@
 
   void test_inconsistentMethodInheritance_overrideTrumpsInherits_setter() {
     // 16134
-    Source source = addSource(EngineTestCase.createSource([
-        "class B<S> {",
-        "  set t(S s) {}",
-        "}",
-        "abstract class I<U> {",
-        "  set t(U u) {}",
-        "}",
-        "class C extends B<double> implements I<int> {",
-        "  set t(num n) {}",
-        "}"]));
+    Source source = addSource(r'''
+class B<S> {
+  set t(S s) {}
+}
+abstract class I<U> {
+  set t(U u) {}
+}
+class C extends B<double> implements I<int> {
+  set t(num n) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_simple() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  x();",
-        "}",
-        "abstract class B {",
-        "  x();",
-        "}",
-        "class C implements A, B {",
-        "  x() {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  x();
+}
+abstract class B {
+  x();
+}
+class C implements A, B {
+  x() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_initializingFormalForNonExistentField() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A(this.x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_fromComment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static m() {}",
-        "}",
-        "/// [A.m]",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() {}
+}
+/// [A.m]
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_topLevel() {
-    Source source = addSource(EngineTestCase.createSource(["m() {}", "main() {", "  m();", "}"]));
+    Source source = addSource(r'''
+m() {}
+main() {
+  m();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_instanceMemberAccessFromStatic_fromComment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "  /// [m]",
-        "  static foo() {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+  /// [m]
+  static foo() {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  _m() {}",
-        "}"]));
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library L;", "class A {", "  static var _m;", "}"]));
+    Source source = addSource(r'''
+import 'lib.dart';
+class B extends A {
+  _m() {}
+}''');
+    addNamedSource("/lib.dart", r'''
+library L;
+class A {
+  static var _m;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  _m() {}",
-        "}"]));
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library L;", "class A {", "  static _m() {}", "}"]));
+    Source source = addSource(r'''
+import 'lib.dart';
+class B extends A {
+  _m() {}
+}''');
+    addNamedSource("/lib.dart", r'''
+library L;
+class A {
+  static _m() {}
+}''');
     resolve(source);
     assertErrors(source, []);
     verify([source]);
   }
 
   void test_invalidAnnotation_constantVariable_field() {
-    Source source = addSource(EngineTestCase.createSource(["@A.C", "class A {", "  static const C = 0;", "}"]));
+    Source source = addSource(r'''
+@A.C
+class A {
+  static const C = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAnnotation_constantVariable_field_importWithPrefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {", "  static const C = 0;", "}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.A.C", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  static const C = 0;
+}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.A.C
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAnnotation_constantVariable_topLevel() {
-    Source source = addSource(EngineTestCase.createSource(["const C = 0;", "@C", "main() {", "}"]));
+    Source source = addSource(r'''
+const C = 0;
+@C
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAnnotation_constantVariable_topLevel_importWithPrefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "const C = 0;"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.C", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+const C = 0;''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.C
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAnnotation_constConstructor_importWithPrefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {", "  const A(int p);", "}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as p;", "@p.A(42)", "main() {", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  const A(int p);
+}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.A(42)
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAnnotation_constConstructor_named_importWithPrefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource([
-        "library lib;",
-        "class A {",
-        "  const A.named(int p);",
-        "}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart' as p;",
-        "@p.A.named(42)",
-        "main() {",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  const A.named(int p);
+}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+@p.A.named(42)
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAssignment() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var x;", "  var y;", "  x = y;", "}"]));
+    Source source = addSource(r'''
+f() {
+  var x;
+  var y;
+  x = y;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAssignment_compoundAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class byte {",
-        "  int _value;",
-        "  byte(this._value);",
-        "  byte operator +(int val) { return this; }",
-        "}",
-        "",
-        "void main() {",
-        "  byte b = new byte(52);",
-        "  b += 3;",
-        "}"]));
+    Source source = addSource(r'''
+class byte {
+  int _value;
+  byte(this._value);
+  byte operator +(int val) { return this; }
+}
+
+void main() {
+  byte b = new byte(52);
+  b += 3;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAssignment_defaultValue_named() {
-    Source source = addSource(EngineTestCase.createSource(["f({String x: '0'}) {", "}"]));
+    Source source = addSource(r'''
+f({String x: '0'}) {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAssignment_defaultValue_optional() {
-    Source source = addSource(EngineTestCase.createSource(["f([String x = '0']) {", "}"]));
+    Source source = addSource(r'''
+f([String x = '0']) {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1697,15 +1938,15 @@
     //
     // This test and 'test_invalidAssignment_implicitlyImplementFunctionViaCall_2()'
     // are closely related: here we see that 'I' checks as a subtype of 'IntToInt'.
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  int call(int x) => 0;",
-        "}",
-        "class C implements I {",
-        "  noSuchMethod(_) => null;",
-        "}",
-        "typedef int IntToInt(int x);",
-        "IntToInt f = new I();"]));
+    Source source = addSource(r'''
+class I {
+  int call(int x) => 0;
+}
+class C implements I {
+  noSuchMethod(_) => null;
+}
+typedef int IntToInt(int x);
+IntToInt f = new I();''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1718,15 +1959,15 @@
     // check as a subtype of 'IntToInt'. Together with
     // 'test_invalidAssignment_implicitlyImplementFunctionViaCall_1()' we see
     // that subtyping is not transitive here.
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  int call(int x) => 0;",
-        "}",
-        "class C implements I {",
-        "  noSuchMethod(_) => null;",
-        "}",
-        "typedef int IntToInt(int x);",
-        "IntToInt f = new C();"]));
+    Source source = addSource(r'''
+class I {
+  int call(int x) => 0;
+}
+class C implements I {
+  noSuchMethod(_) => null;
+}
+typedef int IntToInt(int x);
+IntToInt f = new C();''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1737,15 +1978,15 @@
     //
     // Like 'test_invalidAssignment_implicitlyImplementFunctionViaCall_2()',
     // but uses type 'Function' instead of more precise type 'IntToInt' for 'f'.
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  int call(int x) => 0;",
-        "}",
-        "class C implements I {",
-        "  noSuchMethod(_) => null;",
-        "}",
-        "typedef int IntToInt(int x);",
-        "Function f = new C();"]));
+    Source source = addSource(r'''
+class I {
+  int call(int x) => 0;
+}
+class C implements I {
+  noSuchMethod(_) => null;
+}
+typedef int IntToInt(int x);
+Function f = new C();''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -1761,383 +2002,413 @@
     // for '<:'. However, many of the :/tools/test.py tests assume this transitivity
     // for 'JsBuilder' objects, assigning them to '(String) -> dynamic'. The declared type of
     // 'JsBuilder.call' is '(String, [dynamic]) -> Expression'.
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  int call([int x]) => 0;",
-        "}",
-        "class C implements I {",
-        "  noSuchMethod(_) => null;",
-        "}",
-        "typedef int VoidToInt();",
-        "VoidToInt f = new C();"]));
+    Source source = addSource(r'''
+class I {
+  int call([int x]) => 0;
+}
+class C implements I {
+  noSuchMethod(_) => null;
+}
+typedef int VoidToInt();
+VoidToInt f = new C();''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidAssignment_toDynamic() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var g;", "  g = () => 0;", "}"]));
+    Source source = addSource(r'''
+f() {
+  var g;
+  g = () => 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidFactoryNameNotAClass() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  factory A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidIdentifierInAsync() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {",
-        "    int async;",
-        "    int await;",
-        "    int yield;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {
+    int async;
+    int await;
+    int yield;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNamedParamType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({int a}) {}",
-        "}",
-        "class B implements A {",
-        "  m({int a, int b}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({int a}) {}
+}
+class B implements A {
+  m({int a, int b}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({int p : 0}) {}",
-        "}",
-        "class B extends A {",
-        "  m({int p : 0}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({int p : 0}) {}
+}
+class B extends A {
+  m({int p : 0}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_named_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "nothing() => 'nothing';",
-        "class A {",
-        "  thing(String a, {orElse : nothing}) {}",
-        "}",
-        "class B extends A {",
-        "  thing(String a, {orElse : nothing}) {}",
-        "}"]));
+    Source source = addSource(r'''
+nothing() => 'nothing';
+class A {
+  thing(String a, {orElse : nothing}) {}
+}
+class B extends A {
+  thing(String a, {orElse : nothing}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_positional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m([int p = 0]) {}",
-        "}",
-        "class B extends A {",
-        "  m([int p = 0]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m([int p = 0]) {}
+}
+class B extends A {
+  m([int p = 0]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_positional_changedOrder() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m([int a = 0, String b = '0']) {}",
-        "}",
-        "class B extends A {",
-        "  m([int b = 0, String a = '0']) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m([int a = 0, String b = '0']) {}
+}
+class B extends A {
+  m([int b = 0, String a = '0']) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_positional_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "nothing() => 'nothing';",
-        "class A {",
-        "  thing(String a, [orElse = nothing]) {}",
-        "}",
-        "class B extends A {",
-        "  thing(String a, [orElse = nothing]) {}",
-        "}"]));
+    Source source = addSource(r'''
+nothing() => 'nothing';
+class A {
+  thing(String a, [orElse = nothing]) {}
+}
+class B extends A {
+  thing(String a, [orElse = nothing]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideNamed_unorderedNamedParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({a, b}) {}",
-        "}",
-        "class B extends A {",
-        "  m({b, a}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({a, b}) {}
+}
+class B extends A {
+  m({b, a}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideRequired_less() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(a, b) {}",
-        "}",
-        "class B extends A {",
-        "  m(a, [b]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(a, b) {}
+}
+class B extends A {
+  m(a, [b]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideRequired_same() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(a) {}",
-        "}",
-        "class B extends A {",
-        "  m(a) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(a) {}
+}
+class B extends A {
+  m(a) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_interface() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "abstract class A {",
-        "  num m();",
-        "}",
-        "class B implements A {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+abstract class A {
+  num m();
+}
+class B implements A {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_interface2() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "abstract class A {",
-        "  num m();",
-        "}",
-        "abstract class B implements A {",
-        "}",
-        "class C implements B {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+abstract class A {
+  num m();
+}
+abstract class B implements A {
+}
+class C implements B {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_mixin() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "class A {",
-        "  num m() { return 0; }",
-        "}",
-        "class B extends Object with A {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+class A {
+  num m() { return 0; }
+}
+class B extends Object with A {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_parameterizedTypes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A<E> {",
-        "  List<E> m();",
-        "}",
-        "class B extends A<dynamic> {",
-        "  List<dynamic> m() { return new List<dynamic>(); }",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A<E> {
+  List<E> m();
+}
+class B extends A<dynamic> {
+  List<dynamic> m() { return new List<dynamic>(); }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_sameType() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+class A {
+  int m() { return 0; }
+}
+class B extends A {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_superclass() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "class A {",
-        "  num m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+class A {
+  num m() { return 0; }
+}
+class B extends A {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_superclass2() {
-    Source source = addNamedSource("/test.dart", EngineTestCase.createSource([
-        "class A {",
-        "  num m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  int m() { return 1; }",
-        "}"]));
+    Source source = addNamedSource("/test.dart", r'''
+class A {
+  num m() { return 0; }
+}
+class B extends A {
+}
+class C extends B {
+  int m() { return 1; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidOverrideReturnType_returnType_void() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {}",
-        "}",
-        "class B extends A {",
-        "  int m() { return 0; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {}
+}
+class B extends A {
+  int m() { return 0; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_constructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {", "    var v = this;", "  }", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {
+    var v = this;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidReferenceToThis_instanceMethod() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m() {", "    var v = this;", "  }", "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {
+    var v = this;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidTypeArgumentForKey() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {",
-        "    return const <int, int>{};",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {
+    return const <int, int>{};
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidTypeArgumentInConstList() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  m() {",
-        "    return <E>[];",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  m() {
+    return <E>[];
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invalidTypeArgumentInConstMap() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  m() {",
-        "    return <String, E>{};",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  m() {
+    return <String, E>{};
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var f;",
-        "}",
-        "class B extends A {",
-        "  g() {",
-        "    f();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var f;
+}
+class B extends A {
+  g() {
+    f();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var g;",
-        "}",
-        "f() {",
-        "  A a;",
-        "  a.g();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var g;
+}
+f() {
+  A a;
+  a.g();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_localVariable() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var g;", "  g();", "}"]));
+    Source source = addSource(r'''
+f() {
+  var g;
+  g();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_localVariable_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", "  var v = f;", "  v();", "}"]));
+    Source source = addSource(r'''
+f() {}
+main() {
+  var v = f;
+  v();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_localVariable_dynamic2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {}",
-        "main() {",
-        "  var v = f;",
-        "  v = 1;",
-        "  v();",
-        "}"]));
+    Source source = addSource(r'''
+f() {}
+main() {
+  var v = f;
+  v = 1;
+  v();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_Object() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  Object v = null;", "  v();", "}"]));
+    Source source = addSource(r'''
+main() {
+  Object v = null;
+  v();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2145,24 +2416,26 @@
 
   void test_invocationOfNonFunction_proxyOnFunctionClass() {
     // 16078
-    Source source = addSource(EngineTestCase.createSource([
-        "@proxy",
-        "class Functor implements Function {",
-        "  noSuchMethod(inv) {",
-        "    return 42;",
-        "  }",
-        "}",
-        "main() {",
-        "  Functor f = new Functor();",
-        "  f();",
-        "}"]));
+    Source source = addSource(r'''
+@proxy
+class Functor implements Function {
+  noSuchMethod(inv) {
+    return 42;
+  }
+}
+main() {
+  Functor f = new Functor();
+  f();
+}''');
     resolve(source);
     assertErrors(source, []);
     verify([source]);
   }
 
   void test_listElementTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v1 = <int> [42];", "var v2 = const <int> [42];"]));
+    Source source = addSource(r'''
+var v1 = <int> [42];
+var v2 = const <int> [42];''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2170,82 +2443,101 @@
 
   void test_loadLibraryDefined() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "foo() => 22;"]),
-        EngineTestCase.createSource([
-        "import 'lib1.dart' deferred as other;",
-        "main() {",
-        "  other.loadLibrary().then((_) => other.foo());",
-        "}"])], <ErrorCode> [
+        r'''
+library lib1;
+foo() => 22;''',
+        r'''
+import 'lib1.dart' deferred as other;
+main() {
+  other.loadLibrary().then((_) => other.foo());
+}'''], <ErrorCode> [
         ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED,
         StaticTypeWarningCode.UNDEFINED_FUNCTION], <ErrorCode> []);
   }
 
   void test_mapKeyTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = <String, int > {'a' : 1};"]));
+    Source source = addSource("var v = <String, int > {'a' : 1};");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_memberWithClassName_setter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set A(v) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set A(v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_methodDeclaration_scope_signature() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const app = 0;",
-        "class A {",
-        "  foo(@app int app) {}",
-        "}"]));
+    Source source = addSource(r'''
+const app = 0;
+class A {
+  foo(@app int app) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_instance_sameTypes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  int get x => 0;",
-        "  set x(int v) {}",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  int get x => 0;
+  set x(int v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_instance_unspecifiedGetter() {
-    Source source = addSource(EngineTestCase.createSource(["class C {", "  get x => 0;", "  set x(String v) {}", "}"]));
+    Source source = addSource(r'''
+class C {
+  get x => 0;
+  set x(String v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_instance_unspecifiedSetter() {
-    Source source = addSource(EngineTestCase.createSource(["class C {", "  int get x => 0;", "  set x(v) {}", "}"]));
+    Source source = addSource(r'''
+class C {
+  int get x => 0;
+  set x(v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_topLevel_sameTypes() {
-    Source source = addSource(EngineTestCase.createSource(["int get x => 0;", "set x(int v) {}"]));
+    Source source = addSource(r'''
+int get x => 0;
+set x(int v) {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedGetter() {
-    Source source = addSource(EngineTestCase.createSource(["get x => 0;", "set x(String v) {}"]));
+    Source source = addSource(r'''
+get x => 0;
+set x(String v) {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedSetter() {
-    Source source = addSource(EngineTestCase.createSource(["int get x => 0;", "set x(v) {}"]));
+    Source source = addSource(r'''
+int get x => 0;
+set x(v) {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2255,16 +2547,16 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { A, B, C }",
-        "",
-        "f(E e) {",
-        "  switch (e) {",
-        "    case E.A: break;",
-        "    case E.B: break;",
-        "    case E.C: break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+enum E { A, B, C }
+
+f(E e) {
+  switch (e) {
+    case E.A: break;
+    case E.B: break;
+    case E.C: break;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2274,217 +2566,229 @@
     AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
     analysisOptions.enableEnum = true;
     resetWithOptions(analysisOptions);
-    Source source = addSource(EngineTestCase.createSource([
-        "enum E { A, B, C }",
-        "",
-        "f(E e) {",
-        "  switch (e) {",
-        "    case E.B: break;",
-        "    default: break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+enum E { A, B, C }
+
+f(E e) {
+  switch (e) {
+    case E.B: break;
+    default: break;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixedReturnTypes_differentScopes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  m(int x) {",
-        "    f(int y) {",
-        "      return;",
-        "    }",
-        "    f(x);",
-        "    return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  m(int x) {
+    f(int y) {
+      return;
+    }
+    f(x);
+    return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixedReturnTypes_ignoreImplicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(bool p) {",
-        "  if (p) return 42;",
-        "  // implicit 'return;' is ignored",
-        "}"]));
+    Source source = addSource(r'''
+f(bool p) {
+  if (p) return 42;
+  // implicit 'return;' is ignored
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixedReturnTypes_ignoreImplicit2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(bool p) {",
-        "  if (p) {",
-        "    return 42;",
-        "  } else {",
-        "    return 42;",
-        "  }",
-        "  // implicit 'return;' is ignored",
-        "}"]));
+    Source source = addSource(r'''
+f(bool p) {
+  if (p) {
+    return 42;
+  } else {
+    return 42;
+  }
+  // implicit 'return;' is ignored
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixedReturnTypes_sameKind() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  m(int x) {",
-        "    if (x < 0) {",
-        "      return 1;",
-        "    }",
-        "    return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  m(int x) {
+    if (x < 0) {
+      return 1;
+    }
+    return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixinDeclaresConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends Object with A {}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends Object with A {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixinDeclaresConstructor_factory() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A() {}",
-        "}",
-        "class B extends Object with A {}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() {}
+}
+class B extends Object with A {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixinInheritsFromNotObject_classDeclaration_mixTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B = Object with A;",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+class A {}
+class B = Object with A;
+class C extends Object with B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_mixinInheritsFromNotObject_typedef_mixTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B = Object with A;",
-        "class C = Object with B;"]));
+    Source source = addSource(r'''
+class A {}
+class B = Object with A;
+class C = Object with B;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_multipleSuperInitializers_no() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class B extends A {", "  B() {}", "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  B() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_multipleSuperInitializers_single() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  B() : super() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  B() : super() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nativeFunctionBodyInNonSDKCode_function() {
-    Source source = addSource(EngineTestCase.createSource(["import 'dart-ext:x';", "int m(a) native 'string';"]));
+    Source source = addSource(r'''
+import 'dart-ext:x';
+int m(a) native 'string';''');
     resolve(source);
     assertNoErrors(source);
     // Cannot verify the AST because the import's URI cannot be resolved.
   }
 
   void test_newWithAbstractClass_factory() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  factory A() { return new B(); }",
-        "}",
-        "class B implements A {",
-        "  B() {}",
-        "}",
-        "A f() {",
-        "  return new A();",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  factory A() { return new B(); }
+}
+class B implements A {
+  B() {}
+}
+A f() {
+  return new A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_newWithUndefinedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.name() {}",
-        "}",
-        "f() {",
-        "  new A.name();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.name() {}
+}
+f() {
+  new A.name();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_newWithUndefinedConstructorDefault() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {}", "}", "f() {", "  new A();", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+f() {
+  new A();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcretes_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get g => 0;",
-        "}",
-        "abstract class B extends A {",
-        "  int get g;",
-        "}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  int get g => 0;
+}
+abstract class B extends A {
+  int get g;
+}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcretes_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(p) {}",
-        "}",
-        "abstract class B extends A {",
-        "  m(p);",
-        "}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  m(p) {}
+}
+abstract class B extends A {
+  m(p);
+}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcretes_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set s(v) {}",
-        "}",
-        "abstract class B extends A {",
-        "  set s(v);",
-        "}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  set s(v) {}
+}
+abstract class B extends A {
+  set s(v);
+}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2492,13 +2796,13 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class M {}",
-        "abstract class A {}",
-        "abstract class I {",
-        "  m();",
-        "}",
-        "abstract class B = A with M implements I;"]));
+    Source source = addSource(r'''
+abstract class M {}
+abstract class A {}
+abstract class I {
+  m();
+}
+abstract class B = A with M implements I;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2506,12 +2810,12 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class M {",
-        "  m();",
-        "}",
-        "abstract class A {}",
-        "abstract class B = A with M;"]));
+    Source source = addSource(r'''
+abstract class M {
+  m();
+}
+abstract class A {}
+abstract class B = A with M;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2519,12 +2823,12 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "class M {}",
-        "abstract class A {",
-        "  m();",
-        "}",
-        "abstract class B = A with M;"]));
+    Source source = addSource(r'''
+class M {}
+abstract class A {
+  m();
+}
+abstract class B = A with M;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2532,451 +2836,486 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixin_getter() {
     // 17034
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "abstract class M {",
-        "  get a;",
-        "}",
-        "class B extends A with M {}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+abstract class M {
+  get a;
+}
+class B extends A with M {}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixin_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "abstract class M {",
-        "  m();",
-        "}",
-        "class B extends A with M {}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+abstract class M {
+  m();
+}
+class B extends A with M {}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixin_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "abstract class M {",
-        "  set a(dynamic v);",
-        "}",
-        "class B extends A with M {}",
-        "class C extends B {}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+abstract class M {
+  set a(dynamic v);
+}
+class B extends A with M {}
+class C extends B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_accessor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int get g;",
-        "}",
-        "class B extends A {",
-        "  noSuchMethod(v) => '';",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int get g;
+}
+class B extends A {
+  noSuchMethod(v) => '';
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m(p);",
-        "}",
-        "class B extends A {",
-        "  noSuchMethod(v) => '';",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m(p);
+}
+class B extends A {
+  noSuchMethod(v) => '';
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolExpression_functionType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool makeAssertion() => true;",
-        "f() {",
-        "  assert(makeAssertion);",
-        "}"]));
+    Source source = addSource(r'''
+bool makeAssertion() => true;
+f() {
+  assert(makeAssertion);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolExpression_interfaceType() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  assert(true);", "}"]));
+    Source source = addSource(r'''
+f() {
+  assert(true);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolNegationExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(bool pb, pd) {",
-        "  !true;",
-        "  !false;",
-        "  !pb;",
-        "  !pd;",
-        "}"]));
+    Source source = addSource(r'''
+f(bool pb, pd) {
+  !true;
+  !false;
+  !pb;
+  !pd;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolOperand_and_bool() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(bool left, bool right) {",
-        "  return left && right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(bool left, bool right) {
+  return left && right;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolOperand_and_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(left, dynamic right) {",
-        "  return left && right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(left, dynamic right) {
+  return left && right;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolOperand_or_bool() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(bool left, bool right) {",
-        "  return left || right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(bool left, bool right) {
+  return left || right;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonBoolOperand_or_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(dynamic left, right) {",
-        "  return left || right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(dynamic left, right) {
+  return left || right;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_function_named() {
-    Source source = addSource(EngineTestCase.createSource(["f({x : 2 + 3}) {}"]));
+    Source source = addSource("f({x : 2 + 3}) {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_function_positional() {
-    Source source = addSource(EngineTestCase.createSource(["f([x = 2 + 3]) {}"]));
+    Source source = addSource("f([x = 2 + 3]) {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_inConstructor_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A({x : 2 + 3}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A({x : 2 + 3}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_inConstructor_positional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A([x = 2 + 3]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A([x = 2 + 3]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_method_named() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m({x : 2 + 3}) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  m({x : 2 + 3}) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantDefaultValue_method_positional() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m([x = 2 + 3]) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  m([x = 2 + 3]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstantValueInInitializer_namedArgument() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final a;",
-        "  const A({this.a});",
-        "}",
-        "class B extends A {",
-        "  const B({b}) : super(a: b);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final a;
+  const A({this.a});
+}
+class B extends A {
+  const B({b}) : super(a: b);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstCaseExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(Type t) {",
-        "  switch (t) {",
-        "    case bool:",
-        "    case int:",
-        "      return true;",
-        "    default:",
-        "      return false;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(Type t) {
+  switch (t) {
+    case bool:
+    case int:
+      return true;
+    default:
+      return false;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstMapAsExpressionStatement_const() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  const {'a' : 0, 'b' : 1};", "}"]));
+    Source source = addSource(r'''
+f() {
+  const {'a' : 0, 'b' : 1};
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstMapAsExpressionStatement_notExpressionStatement() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var m = {'a' : 0, 'b' : 1};", "}"]));
+    Source source = addSource(r'''
+f() {
+  var m = {'a' : 0, 'b' : 1};
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstMapAsExpressionStatement_typeArguments() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  <String, int> {'a' : 0, 'b' : 1};", "}"]));
+    Source source = addSource(r'''
+f() {
+  <String, int> {'a' : 0, 'b' : 1};
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_binary_bool() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v;",
-        "  const A.a1(bool p) : v = p && true;",
-        "  const A.a2(bool p) : v = true && p;",
-        "  const A.b1(bool p) : v = p || true;",
-        "  const A.b2(bool p) : v = true || p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v;
+  const A.a1(bool p) : v = p && true;
+  const A.a2(bool p) : v = true && p;
+  const A.b1(bool p) : v = p || true;
+  const A.b2(bool p) : v = true || p;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_binary_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v;",
-        "  const A.a1(p) : v = p + 5;",
-        "  const A.a2(p) : v = 5 + p;",
-        "  const A.b1(p) : v = p - 5;",
-        "  const A.b2(p) : v = 5 - p;",
-        "  const A.c1(p) : v = p * 5;",
-        "  const A.c2(p) : v = 5 * p;",
-        "  const A.d1(p) : v = p / 5;",
-        "  const A.d2(p) : v = 5 / p;",
-        "  const A.e1(p) : v = p ~/ 5;",
-        "  const A.e2(p) : v = 5 ~/ p;",
-        "  const A.f1(p) : v = p > 5;",
-        "  const A.f2(p) : v = 5 > p;",
-        "  const A.g1(p) : v = p < 5;",
-        "  const A.g2(p) : v = 5 < p;",
-        "  const A.h1(p) : v = p >= 5;",
-        "  const A.h2(p) : v = 5 >= p;",
-        "  const A.i1(p) : v = p <= 5;",
-        "  const A.i2(p) : v = 5 <= p;",
-        "  const A.j1(p) : v = p % 5;",
-        "  const A.j2(p) : v = 5 % p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v;
+  const A.a1(p) : v = p + 5;
+  const A.a2(p) : v = 5 + p;
+  const A.b1(p) : v = p - 5;
+  const A.b2(p) : v = 5 - p;
+  const A.c1(p) : v = p * 5;
+  const A.c2(p) : v = 5 * p;
+  const A.d1(p) : v = p / 5;
+  const A.d2(p) : v = 5 / p;
+  const A.e1(p) : v = p ~/ 5;
+  const A.e2(p) : v = 5 ~/ p;
+  const A.f1(p) : v = p > 5;
+  const A.f2(p) : v = 5 > p;
+  const A.g1(p) : v = p < 5;
+  const A.g2(p) : v = 5 < p;
+  const A.h1(p) : v = p >= 5;
+  const A.h2(p) : v = 5 >= p;
+  const A.i1(p) : v = p <= 5;
+  const A.i2(p) : v = 5 <= p;
+  const A.j1(p) : v = p % 5;
+  const A.j2(p) : v = 5 % p;
+}''');
     resolve(source);
     assertNoErrors(source);
     // operations on "p" are not resolved
   }
 
   void test_nonConstValueInInitializer_binary_int() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v;",
-        "  const A.a1(int p) : v = p ^ 5;",
-        "  const A.a2(int p) : v = 5 ^ p;",
-        "  const A.b1(int p) : v = p & 5;",
-        "  const A.b2(int p) : v = 5 & p;",
-        "  const A.c1(int p) : v = p | 5;",
-        "  const A.c2(int p) : v = 5 | p;",
-        "  const A.d1(int p) : v = p >> 5;",
-        "  const A.d2(int p) : v = 5 >> p;",
-        "  const A.e1(int p) : v = p << 5;",
-        "  const A.e2(int p) : v = 5 << p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v;
+  const A.a1(int p) : v = p ^ 5;
+  const A.a2(int p) : v = 5 ^ p;
+  const A.b1(int p) : v = p & 5;
+  const A.b2(int p) : v = 5 & p;
+  const A.c1(int p) : v = p | 5;
+  const A.c2(int p) : v = 5 | p;
+  const A.d1(int p) : v = p >> 5;
+  const A.d2(int p) : v = 5 >> p;
+  const A.e1(int p) : v = p << 5;
+  const A.e2(int p) : v = 5 << p;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_binary_num() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v;",
-        "  const A.a1(num p) : v = p + 5;",
-        "  const A.a2(num p) : v = 5 + p;",
-        "  const A.b1(num p) : v = p - 5;",
-        "  const A.b2(num p) : v = 5 - p;",
-        "  const A.c1(num p) : v = p * 5;",
-        "  const A.c2(num p) : v = 5 * p;",
-        "  const A.d1(num p) : v = p / 5;",
-        "  const A.d2(num p) : v = 5 / p;",
-        "  const A.e1(num p) : v = p ~/ 5;",
-        "  const A.e2(num p) : v = 5 ~/ p;",
-        "  const A.f1(num p) : v = p > 5;",
-        "  const A.f2(num p) : v = 5 > p;",
-        "  const A.g1(num p) : v = p < 5;",
-        "  const A.g2(num p) : v = 5 < p;",
-        "  const A.h1(num p) : v = p >= 5;",
-        "  const A.h2(num p) : v = 5 >= p;",
-        "  const A.i1(num p) : v = p <= 5;",
-        "  const A.i2(num p) : v = 5 <= p;",
-        "  const A.j1(num p) : v = p % 5;",
-        "  const A.j2(num p) : v = 5 % p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v;
+  const A.a1(num p) : v = p + 5;
+  const A.a2(num p) : v = 5 + p;
+  const A.b1(num p) : v = p - 5;
+  const A.b2(num p) : v = 5 - p;
+  const A.c1(num p) : v = p * 5;
+  const A.c2(num p) : v = 5 * p;
+  const A.d1(num p) : v = p / 5;
+  const A.d2(num p) : v = 5 / p;
+  const A.e1(num p) : v = p ~/ 5;
+  const A.e2(num p) : v = 5 ~/ p;
+  const A.f1(num p) : v = p > 5;
+  const A.f2(num p) : v = 5 > p;
+  const A.g1(num p) : v = p < 5;
+  const A.g2(num p) : v = 5 < p;
+  const A.h1(num p) : v = p >= 5;
+  const A.h2(num p) : v = 5 >= p;
+  const A.i1(num p) : v = p <= 5;
+  const A.i2(num p) : v = 5 <= p;
+  const A.j1(num p) : v = p % 5;
+  const A.j2(num p) : v = 5 % p;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int a;",
-        "  const A() : a = 5;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int a;
+  const A() : a = 5;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_redirecting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.named(p);",
-        "  const A() : this.named(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.named(p);
+  const A() : this.named(42);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(p);",
-        "}",
-        "class B extends A {",
-        "  const B() : super(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(p);
+}
+class B extends A {
+  const B() : super(42);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonConstValueInInitializer_unary() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v;",
-        "  const A.a(bool p) : v = !p;",
-        "  const A.b(int p) : v = ~p;",
-        "  const A.c(num p) : v = -p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v;
+  const A.a(bool p) : v = !p;
+  const A.b(int p) : v = ~p;
+  const A.c(num p) : v = -p;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonGenerativeConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.named() {}",
-        "  factory A() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.named() {}
+  factory A() {}
+}
+class B extends A {
+  B() : super.named();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_isClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  try {",
-        "  } on String catch (e) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  try {
+  } on String catch (e) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_isFunctionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef F();",
-        "f() {",
-        "  try {",
-        "  } on F catch (e) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+typedef F();
+f() {
+  try {
+  } on F catch (e) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_isTypeParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  f() {",
-        "    try {",
-        "    } on T catch (e) {",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  f() {
+    try {
+    } on T catch (e) {
+    }
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_noType() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  try {", "  } catch (e) {", "  }", "}"]));
+    Source source = addSource(r'''
+f() {
+  try {
+  } catch (e) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonVoidReturnForOperator_no() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator []=(a, b) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator []=(a, b) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonVoidReturnForOperator_void() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  void operator []=(a, b) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  void operator []=(a, b) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -2997,354 +3336,371 @@
   }
 
   void test_nonVoidReturnForSetter_method_no() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(v) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_nonVoidReturnForSetter_method_void() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  void set x(v) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  void set x(v) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_null_callMethod() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  null.m();", "}"]));
+    Source source = addSource(r'''
+main() {
+  null.m();
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_null_callOperator() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  null + 5;",
-        "  null == 5;",
-        "  null[0];",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  null + 5;
+  null == 5;
+  null[0];
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_optionalParameterInOperator_required() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator +(p) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator +(p) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_prefixCollidesWithTopLevelMembers() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart' as p;",
-        "typedef P();",
-        "p2() {}",
-        "var p3;",
-        "class p4 {}",
-        "p.A a;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+typedef P();
+p2() {}
+var p3;
+class p4 {}
+p.A a;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_propagateTypeArgs_intoBounds() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A<E> {}",
-        "abstract class B<F> implements A<F>{}",
-        "abstract class C<G, H extends A<G>> {}",
-        "class D<I> extends C<I, B<I>> {}"]));
+    Source source = addSource(r'''
+abstract class A<E> {}
+abstract class B<F> implements A<F>{}
+abstract class C<G, H extends A<G>> {}
+class D<I> extends C<I, B<I>> {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_propagateTypeArgs_intoSupertype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  A(T p);",
-        "  A.named(T p);",
-        "}",
-        "class B<S> extends A<S> {",
-        "  B(S p) : super(p);",
-        "  B.named(S p) : super.named(p);",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  A(T p);
+  A.named(T p);
+}
+class B<S> extends A<S> {
+  B(S p) : super(p);
+  B.named(S p) : super.named(p);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_proxy_annotation_prefixed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@proxy",
-        "class A {}",
-        "f(A a) {",
-        "  a.m();",
-        "  var x = a.g;",
-        "  a.s = 1;",
-        "  var y = a + a;",
-        "  a++;",
-        "  ++a;",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+@proxy
+class A {}
+f(A a) {
+  a.m();
+  var x = a.g;
+  a.s = 1;
+  var y = a + a;
+  a++;
+  ++a;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_prefixed2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@proxy",
-        "class A {}",
-        "class B {",
-        "  f(A a) {",
-        "    a.m();",
-        "    var x = a.g;",
-        "    a.s = 1;",
-        "    var y = a + a;",
-        "    a++;",
-        "    ++a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+@proxy
+class A {}
+class B {
+  f(A a) {
+    a.m();
+    var x = a.g;
+    a.s = 1;
+    var y = a + a;
+    a++;
+    ++a;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_prefixed3() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class B {",
-        "  f(A a) {",
-        "    a.m();",
-        "    var x = a.g;",
-        "    a.s = 1;",
-        "    var y = a + a;",
-        "    a++;",
-        "    ++a;",
-        "  }",
-        "}",
-        "@proxy",
-        "class A {}"]));
+    Source source = addSource(r'''
+library L;
+class B {
+  f(A a) {
+    a.m();
+    var x = a.g;
+    a.s = 1;
+    var y = a + a;
+    a++;
+    ++a;
+  }
+}
+@proxy
+class A {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_proxyHasPrefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'dart:core' as core;",
-        "@core.proxy class PrefixProxy {}",
-        "main() {",
-        "  new PrefixProxy().foo;",
-        "  new PrefixProxy().foo();",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+import 'dart:core' as core;
+@core.proxy class PrefixProxy {}
+main() {
+  new PrefixProxy().foo;
+  new PrefixProxy().foo();
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_simple() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@proxy",
-        "class B {",
-        "  m() {",
-        "    n();",
-        "    var x = g;",
-        "    s = 1;",
-        "    var y = this + this;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+@proxy
+class B {
+  m() {
+    n();
+    var x = g;
+    s = 1;
+    var y = this + this;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_superclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class B extends A {",
-        "  m() {",
-        "    n();",
-        "    var x = g;",
-        "    s = 1;",
-        "    var y = this + this;",
-        "  }",
-        "}",
-        "@proxy",
-        "class A {}"]));
+    Source source = addSource(r'''
+library L;
+class B extends A {
+  m() {
+    n();
+    var x = g;
+    s = 1;
+    var y = this + this;
+  }
+}
+@proxy
+class A {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_superclass_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class B extends Object with A {",
-        "  m() {",
-        "    n();",
-        "    var x = g;",
-        "    s = 1;",
-        "    var y = this + this;",
-        "  }",
-        "}",
-        "@proxy",
-        "class A {}"]));
+    Source source = addSource(r'''
+library L;
+class B extends Object with A {
+  m() {
+    n();
+    var x = g;
+    s = 1;
+    var y = this + this;
+  }
+}
+@proxy
+class A {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_superinterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class B implements A {",
-        "  m() {",
-        "    n();",
-        "    var x = g;",
-        "    s = 1;",
-        "    var y = this + this;",
-        "  }",
-        "}",
-        "@proxy",
-        "class A {}"]));
+    Source source = addSource(r'''
+library L;
+class B implements A {
+  m() {
+    n();
+    var x = g;
+    s = 1;
+    var y = this + this;
+  }
+}
+@proxy
+class A {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_superinterface_infiniteLoop() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class C implements A {",
-        "  m() {",
-        "    n();",
-        "    var x = g;",
-        "    s = 1;",
-        "    var y = this + this;",
-        "  }",
-        "}",
-        "class B implements A{}",
-        "class A implements B{}"]));
+    Source source = addSource(r'''
+library L;
+class C implements A {
+  m() {
+    n();
+    var x = g;
+    s = 1;
+    var y = this + this;
+  }
+}
+class B implements A{}
+class A implements B{}''');
     resolve(source);
     // Test is that a stack overflow isn't reached in resolution (previous line), no need to assert
     // error set.
   }
 
   void test_recursiveConstructorRedirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.a() : this.b();",
-        "  A.b() : this.c();",
-        "  A.c() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.a() : this.b();
+  A.b() : this.c();
+  A.c() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_recursiveFactoryRedirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  factory A() = B;",
-        "}",
-        "class B implements A {",
-        "  factory B() = C;",
-        "}",
-        "class C implements B {",
-        "  factory C() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  factory A() = B;
+}
+class B implements A {
+  factory B() = C;
+}
+class C implements B {
+  factory C() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_redirectToInvalidFunctionType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B {",
-        "  A(int p) {}",
-        "}",
-        "class B {",
-        "  factory B(int p) = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B {
+  A(int p) {}
+}
+class B {
+  factory B(int p) = A;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_redirectToInvalidReturnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends A {",
-        "  factory B() = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends A {
+  factory B() = A;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_redirectToNonConstConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.a();",
-        "  const factory A.b() = A.a;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.a();
+  const factory A.b() = A.a;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_referenceToDeclaredVariableInInitializer_constructorName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.x() {}",
-        "}",
-        "f() {",
-        "  var x = new A.x();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.x() {}
+}
+f() {
+  var x = new A.x();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_referenceToDeclaredVariableInInitializer_methodName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  x() {}",
-        "}",
-        "f(A a) {",
-        "  var x = a.x();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  x() {}
+}
+f(A a) {
+  var x = a.x();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_referenceToDeclaredVariableInInitializer_propertyName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var x;",
-        "}",
-        "f(A a) {",
-        "  var x = a.x;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var x;
+}
+f(A a) {
+  var x = a.x;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_rethrowOutsideCatch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {",
-        "    try {} catch (e) {rethrow;}",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {
+    try {} catch (e) {rethrow;}
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnInGenerativeConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() { return; }", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() { return; }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -3352,14 +3708,20 @@
 
   void test_returnInGenerator_async() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async {", "  return 0;", "}"]));
+    Source source = addSource(r'''
+f() async {
+  return 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnInGenerator_sync() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  return 0;", "}"]));
+    Source source = addSource(r'''
+f() {
+  return 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -3369,64 +3731,64 @@
     AnalysisOptionsImpl options = new AnalysisOptionsImpl.con1(analysisContext2.analysisOptions);
     options.enableAsync = true;
     resetWithOptions(options);
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'dart:async';",
-        "class A {",
-        "  Future<int> m() async {",
-        "    return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+import 'dart:async';
+class A {
+  Future<int> m() async {
+    return 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnOfInvalidType_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class TypeError {}",
-        "class A {",
-        "  static void testLogicalOp() {",
-        "    testOr(a, b, onTypeError) {",
-        "      try {",
-        "        return a || b;",
-        "      } on TypeError catch (t) {",
-        "        return onTypeError;",
-        "      }",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class TypeError {}
+class A {
+  static void testLogicalOp() {
+    testOr(a, b, onTypeError) {
+      try {
+        return a || b;
+      } on TypeError catch (t) {
+        return onTypeError;
+      }
+    }
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnOfInvalidType_dynamicAsTypeArgument() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class I<T> {",
-        "  factory I() => new A<T>();",
-        "}",
-        "class A<T> implements I {",
-        "}"]));
+    Source source = addSource(r'''
+class I<T> {
+  factory I() => new A<T>();
+}
+class A<T> implements I {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnOfInvalidType_subtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "A f(B b) { return b; }"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+A f(B b) { return b; }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnOfInvalidType_supertype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "B f(A a) { return a; }"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+B f(A a) { return a; }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -3442,49 +3804,52 @@
     // A test cannot be added to TypeParameterTypeImplTest since the types returned out of the
     // TestTypeProvider don't have a mock 'dart.core' enclosing library element.
     // See TypeParameterTypeImpl.isMoreSpecificThan().
-    Source source = addSource(EngineTestCase.createSource(["class Foo<T> {", "  Type get t => T;", "}"]));
+    Source source = addSource(r'''
+class Foo<T> {
+  Type get t => T;
+}''');
     resolve(source);
     assertErrors(source, []);
     verify([source]);
   }
 
   void test_returnOfInvalidType_void() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void f1() {}",
-        "void f2() { return; }",
-        "void f3() { return null; }",
-        "void f4() { return g1(); }",
-        "void f5() { return g2(); }",
-        "g1() {}",
-        "void g2() {}",
-        ""]));
+    Source source = addSource(r'''
+void f1() {}
+void f2() { return; }
+void f3() { return null; }
+void f4() { return g1(); }
+void f5() { return g2(); }
+g1() {}
+void g2() {}
+''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnWithoutValue_noReturnType() {
-    Source source = addSource(EngineTestCase.createSource(["f() { return; }"]));
+    Source source = addSource("f() { return; }");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_returnWithoutValue_void() {
-    Source source = addSource(EngineTestCase.createSource(["void f() { return; }"]));
+    Source source = addSource("void f() { return; }");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_reversedTypeArguments() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class Codec<S1, T1> {",
-        "  Codec<T1, S1> get inverted => new _InvertedCodec<T1, S1>(this);",
-        "}",
-        "class _InvertedCodec<T2, S2> extends Codec<T2, S2> {",
-        "  _InvertedCodec(Codec<S2, T2> codec);",
-        "}"]));
+    Source source = addSource(r'''
+class Codec<S1, T1> {
+  Codec<T1, S1> get inverted => new _InvertedCodec<T1, S1>(this);
+}
+class _InvertedCodec<T2, S2> extends Codec<T2, S2> {
+  _InvertedCodec(Codec<S2, T2> codec);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -3492,669 +3857,717 @@
 
   void test_sharedDeferredPrefix() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "f1() {}"]),
-        EngineTestCase.createSource(["library lib2;", "f2() {}"]),
-        EngineTestCase.createSource(["library lib3;", "f3() {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as lib1;",
-        "import 'lib2.dart' as lib;",
-        "import 'lib3.dart' as lib;",
-        "main() { lib1.f1(); lib.f2(); lib.f3(); }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
+        r'''
+library lib1;
+f1() {}''',
+        r'''
+library lib2;
+f2() {}''',
+        r'''
+library lib3;
+f3() {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as lib1;
+import 'lib2.dart' as lib;
+import 'lib3.dart' as lib;
+main() { lib1.f1(); lib.f2(); lib.f3(); }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
   }
 
   void test_staticAccessToInstanceMember_annotation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.name();",
-        "}",
-        "@A.name()",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.name();
+}
+@A.name()
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static m() {}",
-        "}",
-        "main() {",
-        "  A.m;",
-        "  A.m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() {}
+}
+main() {
+  A.m;
+  A.m();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_propertyAccess_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static var f;",
-        "}",
-        "main() {",
-        "  A.f;",
-        "  A.f = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static var f;
+}
+main() {
+  A.f;
+  A.f = 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_propertyAccess_propertyAccessor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get f => 42;",
-        "  static set f(x) {}",
-        "}",
-        "main() {",
-        "  A.f;",
-        "  A.f = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get f => 42;
+  static set f(x) {}
+}
+main() {
+  A.f;
+  A.f = 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_superInInvalidContext() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  B() {",
-        "    var v = super.m();",
-        "  }",
-        "  n() {",
-        "    var v = super.m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  B() {
+    var v = super.m();
+  }
+  n() {
+    var v = super.m();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeAliasCannotReferenceItself_returnClass_withTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource(["typedef B A();", "class B {", "  A a;", "}"]));
+    Source source = addSource(r'''
+typedef B A();
+class B {
+  A a;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_const() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class G<E extends A> {",
-        "  const G();",
-        "}",
-        "f() { return const G<B>(); }"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class G<E extends A> {
+  const G();
+}
+f() { return const G<B>(); }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_new() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class G<E extends A> {}",
-        "f() { return new G<B>(); }"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class G<E extends A> {}
+f() { return new G<B>(); }''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_typeArgumentList_0() {
-    Source source = addSource(EngineTestCase.createSource(["abstract class A<T extends A>{}"]));
+    Source source = addSource("abstract class A<T extends A>{}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_typeArgumentList_1() {
-    Source source = addSource(EngineTestCase.createSource(["abstract class A<T extends A<A>>{}"]));
+    Source source = addSource("abstract class A<T extends A<A>>{}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_typeArgumentList_20() {
-    Source source = addSource(EngineTestCase.createSource(["abstract class A<T extends A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A>>>>>>>>>>>>>>>>>>>>>{}"]));
+    Source source = addSource("abstract class A<T extends A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A>>>>>>>>>>>>>>>>>>>>>{}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_booleanAnd_useInRight() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  p is String && p.length != 0;",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  p is String && p.length != 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_noAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  (p is String) && callMe(() { p.length; });",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  (p is String) && callMe(() { p.length; });
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_conditional_issue14655() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class C extends B {",
-        "  mc() {}",
-        "}",
-        "print(_) {}",
-        "main(A p) {",
-        "  (p is C) && (print(() => p) && (p is B)) ? p.mc() : p = null;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class C extends B {
+  mc() {}
+}
+print(_) {}
+main(A p) {
+  (p is C) && (print(() => p) && (p is B)) ? p.mc() : p = null;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_conditional_useInThen() {
-    Source source = addSource(EngineTestCase.createSource(["main(Object p) {", "  p is String ? p.length : 0;", "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  p is String ? p.length : 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_conditional_useInThen_accessedInClosure_noAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  p is String ? callMe(() { p.length; }) : 0;",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  p is String ? callMe(() { p.length; }) : 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_functionType_arg_ignoreIfNotMoreSpecific() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef FuncB(B b);",
-        "typedef FuncA(A a);",
-        "class A {}",
-        "class B {}",
-        "main(FuncA f) {",
-        "  if (f is FuncB) {",
-        "    f(new A());",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+typedef FuncB(B b);
+typedef FuncA(A a);
+class A {}
+class B {}
+main(FuncA f) {
+  if (f is FuncB) {
+    f(new A());
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_functionType_return_ignoreIfNotMoreSpecific() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "typedef FuncAtoDyn(A a);",
-        "typedef FuncDynToDyn(x);",
-        "main(FuncAtoDyn f) {",
-        "  if (f is FuncDynToDyn) {",
-        "    A a = f(new A());",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+typedef FuncAtoDyn(A a);
+typedef FuncDynToDyn(x);
+main(FuncAtoDyn f) {
+  if (f is FuncDynToDyn) {
+    A a = f(new A());
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_functionType_return_voidToDynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef FuncDynToDyn(x);",
-        "typedef void FuncDynToVoid(x);",
-        "class A {}",
-        "main(FuncDynToVoid f) {",
-        "  if (f is FuncDynToDyn) {",
-        "    A a = f(null);",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+typedef FuncDynToDyn(x);
+typedef void FuncDynToVoid(x);
+class A {}
+main(FuncDynToVoid f) {
+  if (f is FuncDynToDyn) {
+    A a = f(null);
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_accessedInClosure_noAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    callMe(() {",
-        "      p.length;",
-        "    });",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  if (p is String) {
+    callMe(() {
+      p.length;
+    });
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_extends_moreSpecific() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class VP extends V {}",
-        "class A<T> {}",
-        "class B<S> extends A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B<VP>) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class VP extends V {}
+class A<T> {}
+class B<S> extends A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B<VP>) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_hasAssignment_outsideAfter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "  p = 0;",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p.length;
+  }
+  p = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_hasAssignment_outsideBefore() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p, Object p2) {",
-        "  p = p2;",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p, Object p2) {
+  p = p2;
+  if (p is String) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_implements_moreSpecific() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class VP extends V {}",
-        "class A<T> {}",
-        "class B<S> implements A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B<VP>) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class VP extends V {}
+class A<T> {}
+class B<S> implements A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B<VP>) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_inClosure_assignedAfter_inSameFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  f(Object p) {",
-        "    if (p is String) {",
-        "      p.length;",
-        "    }",
-        "    p = 0;",
-        "  };",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  f(Object p) {
+    if (p is String) {
+      p.length;
+    }
+    p = 0;
+  };
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_is_and_left() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool tt() => true;",
-        "main(Object p) {",
-        "  if (p is String && tt()) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+bool tt() => true;
+main(Object p) {
+  if (p is String && tt()) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_is_and_right() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool tt() => true;",
-        "main(Object p) {",
-        "  if (tt() && p is String) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+bool tt() => true;
+main(Object p) {
+  if (tt() && p is String) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_is_and_subThenSuper() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var a;",
-        "}",
-        "class B extends A {",
-        "  var b;",
-        "}",
-        "main(Object p) {",
-        "  if (p is B && p is A) {",
-        "    p.a;",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var a;
+}
+class B extends A {
+  var b;
+}
+main(Object p) {
+  if (p is B && p is A) {
+    p.a;
+    p.b;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_is_parenthesized() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if ((p is String)) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if ((p is String)) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_if_is_single() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typePromotion_parentheses() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  (p is String) ? p.length : 0;",
-        "  (p) is String ? p.length : 0;",
-        "  ((p)) is String ? p.length : 0;",
-        "  ((p) is String) ? p.length : 0;",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  (p is String) ? p.length : 0;
+  (p) is String ? p.length : 0;
+  ((p)) is String ? p.length : 0;
+  ((p) is String) ? p.length : 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeType_class() {
-    Source source = addSource(EngineTestCase.createSource(["class C {}", "f(Type t) {}", "main() {", "  f(C);", "}"]));
+    Source source = addSource(r'''
+class C {}
+f(Type t) {}
+main() {
+  f(C);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeType_class_prefixed() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class C {}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart' as p;",
-        "f(Type t) {}",
-        "main() {",
-        "  f(p.C);",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class C {}''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+f(Type t) {}
+main() {
+  f(p.C);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeType_functionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef F();",
-        "f(Type t) {}",
-        "main() {",
-        "  f(F);",
-        "}"]));
+    Source source = addSource(r'''
+typedef F();
+f(Type t) {}
+main() {
+  f(F);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_typeType_functionTypeAlias_prefixed() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "typedef F();"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart' as p;",
-        "f(Type t) {}",
-        "main() {",
-        "  f(p.F);",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+typedef F();''');
+    Source source = addSource(r'''
+import 'lib.dart' as p;
+f(Type t) {}
+main() {
+  f(p.F);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_explicit_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.named() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super.named();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.named() {}
+}
+class B extends A {
+  B() : super.named();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_explicit_unnamed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends A {
+  B() : super();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_hasOptionalParameters() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A([p]) {}",
-        "}",
-        "class B extends A {",
-        "  B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A([p]) {}
+}
+class B extends A {
+  B();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_implicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B extends A {",
-        "  B();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B extends A {
+  B();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_implicit_typeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class M {}",
-        "class A = Object with M;",
-        "class B extends A {",
-        "  B();",
-        "}"]));
+    Source source = addSource(r'''
+class M {}
+class A = Object with M;
+class B extends A {
+  B();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedConstructorInInitializer_redirecting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class Foo {",
-        "  Foo.ctor();",
-        "}",
-        "class Bar extends Foo {",
-        "  Bar() : this.ctor();",
-        "  Bar.ctor() : super.ctor();",
-        "}"]));
+    Source source = addSource(r'''
+class Foo {
+  Foo.ctor();
+}
+class Bar extends Foo {
+  Bar() : this.ctor();
+  Bar.ctor() : super.ctor();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedGetter_typeSubstitution() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  E element;",
-        "}",
-        "class B extends A<List> {",
-        "  m() {",
-        "    element.last;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  E element;
+}
+class B extends A<List> {
+  m() {
+    element.last;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedIdentifier_hide() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib1.dart' hide a;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart' hide a;''');
+    addNamedSource("/lib1.dart", "library lib1;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedIdentifier_show() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "export 'lib1.dart' show a;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;"]));
+    Source source = addSource(r'''
+library L;
+export 'lib1.dart' show a;''');
+    addNamedSource("/lib1.dart", "library lib1;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedIdentifier_synthetic_whenExpression() {
-    Source source = addSource(EngineTestCase.createSource(["print(x) {}", "main() {", "  print(is String);", "}"]));
+    Source source = addSource(r'''
+print(x) {}
+main() {
+  print(is String);
+}''');
     resolve(source);
     assertErrors(source, [ParserErrorCode.MISSING_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_synthetic_whenMethodName() {
-    Source source = addSource(EngineTestCase.createSource(["print(x) {}", "main(int p) {", "  p.();", "}"]));
+    Source source = addSource(r'''
+print(x) {}
+main(int p) {
+  p.();
+}''');
     resolve(source);
     assertErrors(source, [ParserErrorCode.MISSING_IDENTIFIER]);
   }
 
   void test_undefinedMethod_functionExpression_callMethod() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  (() => null).call();", "}"]));
+    Source source = addSource(r'''
+main() {
+  (() => null).call();
+}''');
     resolve(source);
     assertNoErrors(source);
     // A call to verify(source) fails as '.call()' isn't resolved.
   }
 
   void test_undefinedMethod_functionExpression_directCall() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  (() => null)();", "}"]));
+    Source source = addSource(r'''
+main() {
+  (() => null)();
+}''');
     resolve(source);
     assertNoErrors(source);
     // A call to verify(source) fails as '(() => null)()' isn't resolved.
   }
 
   void test_undefinedOperator_index() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  operator [](a) {}",
-        "  operator []=(a, b) {}",
-        "}",
-        "f(A a) {",
-        "  a[0];",
-        "  a[0] = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  operator [](a) {}
+  operator []=(a, b) {}
+}
+f(A a) {
+  a[0];
+  a[0] = 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedOperator_tilde() {
-    Source source = addSource(EngineTestCase.createSource(["const A = 3;", "const B = ~((1 << A) - 1);"]));
+    Source source = addSource(r'''
+const A = 3;
+const B = ~((1 << A) - 1);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedSetter_importWithPrefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "set y(int value) {}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as x;", "main() {", "  x.y = 0;", "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+set y(int value) {}''');
+    Source source = addSource(r'''
+import 'lib.dart' as x;
+main() {
+  x.y = 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedSuperMethod_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  var m;",
-        "}",
-        "class B extends A {",
-        "  f() {",
-        "    super.m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  var m;
+}
+class B extends A {
+  f() {
+    super.m();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_undefinedSuperMethod_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "class B extends A {",
-        "  f() {",
-        "    super.m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+class B extends A {
+  f() {
+    super.m();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unqualifiedReferenceToNonLocalStaticMember_fromComment_new() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "  A.named() {}",
-        "}",
-        "/// [new A] or [new A.named]",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+  A.named() {}
+}
+/// [new A] or [new A.named]
+main() {
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4162,27 +4575,30 @@
 
   void test_uriDoesNotExist_dll() {
     addNamedSource("/lib.dll", "");
-    Source source = addSource(EngineTestCase.createSource(["import 'dart-ext:lib';"]));
+    Source source = addSource("import 'dart-ext:lib';");
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_uriDoesNotExist_dylib() {
     addNamedSource("/lib.dylib", "");
-    Source source = addSource(EngineTestCase.createSource(["import 'dart-ext:lib';"]));
+    Source source = addSource("import 'dart-ext:lib';");
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_uriDoesNotExist_so() {
     addNamedSource("/lib.so", "");
-    Source source = addSource(EngineTestCase.createSource(["import 'dart-ext:lib';"]));
+    Source source = addSource("import 'dart-ext:lib';");
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_wrongNumberOfParametersForOperator_index() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator []=(a, b) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  operator []=(a, b) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4212,7 +4628,10 @@
   }
 
   void test_wrongNumberOfParametersForSetter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set x(a) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(a) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4220,7 +4639,10 @@
 
   void test_yieldEachInNonGenerator_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async* {", "  yield* 0;", "}"]));
+    Source source = addSource(r'''
+f() async* {
+  yield* 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4228,7 +4650,10 @@
 
   void test_yieldEachInNonGenerator_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() sync* {", "  yield* 0;", "}"]));
+    Source source = addSource(r'''
+f() sync* {
+  yield* 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4236,7 +4661,10 @@
 
   void test_yieldInNonGenerator_asyncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() async* {", "  yield 0;", "}"]));
+    Source source = addSource(r'''
+f() async* {
+  yield 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4244,14 +4672,20 @@
 
   void test_yieldInNonGenerator_syncStar() {
     resetWithAsync();
-    Source source = addSource(EngineTestCase.createSource(["f() sync* {", "  yield 0;", "}"]));
+    Source source = addSource(r'''
+f() sync* {
+  yield 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void _check_wrongNumberOfParametersForOperator(String name, String parameters) {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  operator ${name}(${parameters}) {}", "}"]));
+    Source source = addSource("""
+class A {
+  operator $name($parameters) {}
+}""");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 78bee70..501b539 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -7,8 +7,6 @@
 
 library engine.parser_test;
 
-import 'package:analyzer/src/generated/java_core.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/source.dart' show Source;
 import 'package:analyzer/src/generated/scanner.dart';
@@ -16,7 +14,7 @@
 import 'package:analyzer/src/generated/parser.dart';
 import 'package:analyzer/src/generated/element.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'test_support.dart';
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
@@ -28,7 +26,7 @@
 class AnalysisErrorListener_SimpleParserTest_computeStringValue implements AnalysisErrorListener {
   @override
   void onError(AnalysisError event) {
-    JUnitTestCase.fail("Unexpected compilation error: ${event.message} (${event.offset}, ${event.length})");
+    fail("Unexpected compilation error: ${event.message} (${event.offset}, ${event.length})");
   }
 }
 
@@ -48,13 +46,13 @@
    */
   void assertValid() {
     if (!_errors.isEmpty) {
-      JavaStringBuilder builder = new JavaStringBuilder();
-      builder.append("Invalid AST structure:");
+      StringBuffer buffer = new StringBuffer();
+      buffer.write("Invalid AST structure:");
       for (String message in _errors) {
-        builder.append("\r\n   ");
-        builder.append(message);
+        buffer.write("\r\n   ");
+        buffer.write(message);
       }
-      JUnitTestCase.fail(builder.toString());
+      fail(buffer.toString());
     }
   }
 
@@ -77,29 +75,29 @@
       }
     } else {
       if (parent == null) {
-        _errors.add("No parent for ${node.runtimeType.toString()}");
+        _errors.add("No parent for ${node.runtimeType}");
       }
     }
     if (node.beginToken == null) {
-      _errors.add("No begin token for ${node.runtimeType.toString()}");
+      _errors.add("No begin token for ${node.runtimeType}");
     }
     if (node.endToken == null) {
-      _errors.add("No end token for ${node.runtimeType.toString()}");
+      _errors.add("No end token for ${node.runtimeType}");
     }
     int nodeStart = node.offset;
     int nodeLength = node.length;
     if (nodeStart < 0 || nodeLength < 0) {
-      _errors.add("No source info for ${node.runtimeType.toString()}");
+      _errors.add("No source info for ${node.runtimeType}");
     }
     if (parent != null) {
       int nodeEnd = nodeStart + nodeLength;
       int parentStart = parent.offset;
       int parentEnd = parentStart + parent.length;
       if (nodeStart < parentStart) {
-        _errors.add("Invalid source start (${nodeStart}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+        _errors.add("Invalid source start ($nodeStart) for ${node.runtimeType} inside ${parent.runtimeType} ($parentStart)");
       }
       if (nodeEnd > parentEnd) {
-        _errors.add("Invalid source end (${nodeEnd}) for ${node.runtimeType.toString()} inside ${parent.runtimeType.toString()} (${parentStart})");
+        _errors.add("Invalid source end ($nodeEnd) for ${node.runtimeType} inside ${parent.runtimeType} ($parentStart)");
       }
     }
   }
@@ -146,30 +144,30 @@
 
   void test_assignableExpression_arguments_normal_chain() {
     PropertyAccess propertyAccess1 = ParserTestCase.parseExpression("a(b)(c).d(e).f", []);
-    JUnitTestCase.assertEquals("f", propertyAccess1.propertyName.name);
+    expect(propertyAccess1.propertyName.name, "f");
     //
     // a(b)(c).d(e)
     //
     MethodInvocation invocation2 = EngineTestCase.assertInstanceOf((obj) => obj is MethodInvocation, MethodInvocation, propertyAccess1.target);
-    JUnitTestCase.assertEquals("d", invocation2.methodName.name);
+    expect(invocation2.methodName.name, "d");
     ArgumentList argumentList2 = invocation2.argumentList;
-    JUnitTestCase.assertNotNull(argumentList2);
-    EngineTestCase.assertSizeOfList(1, argumentList2.arguments);
+    expect(argumentList2, isNotNull);
+    expect(argumentList2.arguments, hasLength(1));
     //
     // a(b)(c)
     //
     FunctionExpressionInvocation invocation3 = EngineTestCase.assertInstanceOf((obj) => obj is FunctionExpressionInvocation, FunctionExpressionInvocation, invocation2.target);
     ArgumentList argumentList3 = invocation3.argumentList;
-    JUnitTestCase.assertNotNull(argumentList3);
-    EngineTestCase.assertSizeOfList(1, argumentList3.arguments);
+    expect(argumentList3, isNotNull);
+    expect(argumentList3.arguments, hasLength(1));
     //
     // a(b)
     //
     MethodInvocation invocation4 = EngineTestCase.assertInstanceOf((obj) => obj is MethodInvocation, MethodInvocation, invocation3.function);
-    JUnitTestCase.assertEquals("a", invocation4.methodName.name);
+    expect(invocation4.methodName.name, "a");
     ArgumentList argumentList4 = invocation4.argumentList;
-    JUnitTestCase.assertNotNull(argumentList4);
-    EngineTestCase.assertSizeOfList(1, argumentList4.arguments);
+    expect(argumentList4, isNotNull);
+    expect(argumentList4.arguments, hasLength(1));
   }
 
   void test_assignmentExpression_compound() {
@@ -264,8 +262,8 @@
       Expression lhs = (section as AssignmentExpression).leftHandSide;
       EngineTestCase.assertInstanceOf((obj) => obj is IndexExpression, IndexExpression, lhs);
       IndexExpression index = lhs as IndexExpression;
-      JUnitTestCase.assertTrue(index.isCascaded);
-      JUnitTestCase.assertSame(target, index.realTarget);
+      expect(index.isCascaded, isTrue);
+      expect(index.realTarget, same(target));
     }
   }
 
@@ -275,14 +273,14 @@
   }
 
   void test_constructor_initializer_withParenthesizedExpression() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource([
-        "class C {",
-        "  C() :",
-        "    this.a = (b == null ? c : d) {",
-        "  }",
-        "}"]), []);
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class C {
+  C() :
+    this.a = (b == null ? c : d) {
+  }
+}''', []);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
   }
 
   void test_equalityExpression_normal() {
@@ -337,7 +335,7 @@
 
   void test_multipleLabels_statement() {
     LabeledStatement statement = ParserTestCase.parseStatement("a: b: c: return x;", []);
-    EngineTestCase.assertSizeOfList(3, statement.labels);
+    expect(statement.labels, hasLength(3));
     EngineTestCase.assertInstanceOf((obj) => obj is ReturnStatement, ReturnStatement, statement.statement);
   }
 
@@ -402,7 +400,7 @@
     // the synthetic list literals that are being created are not always zero length (because they
     // could have type parameters), which violates the contract of isSynthetic().
     TypedLiteral literal = ParserTestCase.parse3("parseListOrMapLiteral", <Object> [null], "1", [ParserErrorCode.EXPECTED_LIST_OR_MAP_LITERAL]);
-    JUnitTestCase.assertTrue(literal.isSynthetic);
+    expect(literal.isSynthetic, isTrue);
   }
 
   void fail_illegalAssignmentToNonAssignable_superAssigned() {
@@ -655,12 +653,12 @@
 
   void test_directiveAfterDeclaration_classBeforeDirective() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("class Foo{} library l;", [ParserErrorCode.DIRECTIVE_AFTER_DECLARATION]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_directiveAfterDeclaration_classBetweenDirectives() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("library l;\nclass Foo{}\npart 'a.dart';", [ParserErrorCode.DIRECTIVE_AFTER_DECLARATION]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_duplicatedModifier_const() {
@@ -752,7 +750,7 @@
 
   void test_expectedStringLiteral() {
     StringLiteral expression = ParserTestCase.parse4("parseStringLiteral", "1", [ParserErrorCode.EXPECTED_STRING_LITERAL]);
-    JUnitTestCase.assertTrue(expression.isSynthetic);
+    expect(expression.isSynthetic, isTrue);
   }
 
   void test_expectedToken_commaMissingInArgumentList() {
@@ -774,8 +772,8 @@
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("export '' class A {}", [ParserErrorCode.EXPECTED_TOKEN]);
     ExportDirective directive = unit.directives[0] as ExportDirective;
     Token semicolon = directive.semicolon;
-    JUnitTestCase.assertNotNull(semicolon);
-    JUnitTestCase.assertTrue(semicolon.isSynthetic);
+    expect(semicolon, isNotNull);
+    expect(semicolon.isSynthetic, isTrue);
   }
 
   void test_expectedToken_semicolonMissingAfterExpression() {
@@ -786,8 +784,8 @@
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("import '' class A {}", [ParserErrorCode.EXPECTED_TOKEN]);
     ImportDirective directive = unit.directives[0] as ImportDirective;
     Token semicolon = directive.semicolon;
-    JUnitTestCase.assertNotNull(semicolon);
-    JUnitTestCase.assertTrue(semicolon.isSynthetic);
+    expect(semicolon, isNotNull);
+    expect(semicolon.isSynthetic, isTrue);
   }
 
   void test_expectedToken_whileMissingInDoStatement() {
@@ -1051,7 +1049,7 @@
 
   void test_libraryDirectiveNotFirst_afterPart() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("part 'a.dart';\nlibrary l;", [ParserErrorCode.LIBRARY_DIRECTIVE_NOT_FIRST]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_localFunctionDeclarationModifier_abstract() {
@@ -1088,7 +1086,7 @@
 
   void test_missingAssignableSelector_superPrimaryExpression() {
     SuperExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "super", [ParserErrorCode.MISSING_ASSIGNABLE_SELECTOR]);
-    JUnitTestCase.assertNotNull(expression.keyword);
+    expect(expression.keyword, isNotNull);
   }
 
   void test_missingAssignableSelector_superPropertyAccessAssigned() {
@@ -1097,7 +1095,7 @@
 
   void test_missingCatchOrFinally() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {}", [ParserErrorCode.MISSING_CATCH_OR_FINALLY]);
-    JUnitTestCase.assertNotNull(statement);
+    expect(statement, isNotNull);
   }
 
   void test_missingClassBody() {
@@ -1184,7 +1182,7 @@
 
   void test_missingIdentifier_number() {
     SimpleIdentifier expression = ParserTestCase.parse4("parseSimpleIdentifier", "1", [ParserErrorCode.MISSING_IDENTIFIER]);
-    JUnitTestCase.assertTrue(expression.isSynthetic);
+    expect(expression.isSynthetic, isTrue);
   }
 
   void test_missingKeywordOperator() {
@@ -1205,12 +1203,12 @@
 
   void test_missingNameInLibraryDirective() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("library;", [ParserErrorCode.MISSING_NAME_IN_LIBRARY_DIRECTIVE]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_missingNameInPartOfDirective() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("part of;", [ParserErrorCode.MISSING_NAME_IN_PART_OF_DIRECTIVE]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_missingPrefixInDeferredImport() {
@@ -1311,12 +1309,12 @@
 
   void test_nonIdentifierLibraryName_library() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("library 'lib';", [ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_nonIdentifierLibraryName_partOf() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("part of 'lib';", [ParserErrorCode.NON_IDENTIFIER_LIBRARY_NAME]);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
   }
 
   void test_nonPartOfDirectiveInPart_after() {
@@ -1341,9 +1339,9 @@
 
   void test_parseCascadeSection_missingIdentifier() {
     MethodInvocation methodInvocation = ParserTestCase.parse4("parseCascadeSection", "..()", [ParserErrorCode.MISSING_IDENTIFIER]);
-    JUnitTestCase.assertNull(methodInvocation.target);
-    JUnitTestCase.assertEquals("", methodInvocation.methodName.name);
-    EngineTestCase.assertSizeOfList(0, methodInvocation.argumentList.arguments);
+    expect(methodInvocation.target, isNull);
+    expect(methodInvocation.methodName.name, "");
+    expect(methodInvocation.argumentList.arguments, hasLength(0));
   }
 
   void test_positionalAfterNamedArgument() {
@@ -1465,7 +1463,7 @@
   void test_useOfUnaryPlusOperator() {
     SimpleIdentifier expression = ParserTestCase.parse4("parseUnaryExpression", "+x", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression);
-    JUnitTestCase.assertTrue(expression.isSynthetic);
+    expect(expression.isSynthetic, isTrue);
   }
 
   void test_varAndType_field() {
@@ -1782,8 +1780,8 @@
     //
     // Compute the information needed to perform the test.
     //
-    String originalContents = "${prefix}${removed}${suffix}";
-    String modifiedContents = "${prefix}${added}${suffix}";
+    String originalContents = "$prefix$removed$suffix";
+    String modifiedContents = "$prefix$added$suffix";
     int replaceStart = prefix.length;
     Source source = new TestSource();
     //
@@ -1792,35 +1790,35 @@
     GatheringErrorListener originalListener = new GatheringErrorListener();
     Scanner originalScanner = new Scanner(source, new CharSequenceReader(originalContents), originalListener);
     Token originalTokens = originalScanner.tokenize();
-    JUnitTestCase.assertNotNull(originalTokens);
+    expect(originalTokens, isNotNull);
     Parser originalParser = new Parser(source, originalListener);
     CompilationUnit originalUnit = originalParser.parseCompilationUnit(originalTokens);
-    JUnitTestCase.assertNotNull(originalUnit);
+    expect(originalUnit, isNotNull);
     //
     // Parse the modified contents.
     //
     GatheringErrorListener modifiedListener = new GatheringErrorListener();
     Scanner modifiedScanner = new Scanner(source, new CharSequenceReader(modifiedContents), modifiedListener);
     Token modifiedTokens = modifiedScanner.tokenize();
-    JUnitTestCase.assertNotNull(modifiedTokens);
+    expect(modifiedTokens, isNotNull);
     Parser modifiedParser = new Parser(source, modifiedListener);
     CompilationUnit modifiedUnit = modifiedParser.parseCompilationUnit(modifiedTokens);
-    JUnitTestCase.assertNotNull(modifiedUnit);
+    expect(modifiedUnit, isNotNull);
     //
     // Incrementally parse the modified contents.
     //
     GatheringErrorListener incrementalListener = new GatheringErrorListener();
     IncrementalScanner incrementalScanner = new IncrementalScanner(source, new CharSequenceReader(modifiedContents), incrementalListener);
     Token incrementalTokens = incrementalScanner.rescan(originalTokens, replaceStart, removed.length, added.length);
-    JUnitTestCase.assertNotNull(incrementalTokens);
+    expect(incrementalTokens, isNotNull);
     IncrementalParser incrementalParser = new IncrementalParser(source, incrementalScanner.tokenMap, incrementalListener);
     CompilationUnit incrementalUnit = incrementalParser.reparse(originalUnit, incrementalScanner.leftToken, incrementalScanner.rightToken, replaceStart, prefix.length + removed.length);
-    JUnitTestCase.assertNotNull(incrementalUnit);
+    expect(incrementalUnit, isNotNull);
     //
     // Validate that the results of the incremental parse are the same as the full parse of the
     // modified source.
     //
-    JUnitTestCase.assertTrue(AstComparator.equalNodes(modifiedUnit, incrementalUnit));
+    expect(AstComparator.equalNodes(modifiedUnit, incrementalUnit), isTrue);
     // TODO(brianwilkerson) Verify that the errors are correct?
   }
 }
@@ -1950,7 +1948,7 @@
     Token token = scanner.tokenize();
     Parser parser = createParser(listener);
     CompilationUnit unit = parser.parseCompilationUnit(token);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     listener.assertErrorsWithCodes(errorCodes);
     return unit;
   }
@@ -1971,7 +1969,7 @@
     Token token = scanner.tokenize();
     Parser parser = createParser(listener);
     Expression expression = parser.parseExpression(token);
-    JUnitTestCase.assertNotNull(expression);
+    expect(expression, isNotNull);
     listener.assertErrorsWithCodes(errorCodes);
     return expression;
   }
@@ -1992,7 +1990,7 @@
     Token token = scanner.tokenize();
     Parser parser = createParser(listener);
     Statement statement = parser.parseStatement(token);
-    JUnitTestCase.assertNotNull(statement);
+    expect(statement, isNotNull);
     listener.assertErrorsWithCodes(errorCodes);
     return statement;
   }
@@ -2015,7 +2013,7 @@
     Token token = scanner.tokenize();
     Parser parser = createParser(listener);
     List<Statement> statements = parser.parseStatements(token);
-    EngineTestCase.assertSizeOfList(expectedCount, statements);
+    expect(statements, hasLength(expectedCount));
     listener.assertErrorsWithCodes(errorCodes);
     return statements;
   }
@@ -2055,7 +2053,7 @@
     // Partially test the results.
     //
     if (!listener.hasErrors) {
-      JUnitTestCase.assertNotNull(result);
+      expect(result, isNotNull);
     }
     return result;
   }
@@ -2111,21 +2109,21 @@
  */
 class RecoveryParserTest extends ParserTestCase {
   void fail_incomplete_returnType() {
-    ParserTestCase.parseCompilationUnit(EngineTestCase.createSource([
-        "Map<Symbol, convertStringToSymbolMap(Map<String, dynamic> map) {",
-        "  if (map == null) return null;",
-        "  Map<Symbol, dynamic> result = new Map<Symbol, dynamic>();",
-        "  map.forEach((name, value) {",
-        "    result[new Symbol(name)] = value;",
-        "  });",
-        "  return result;",
-        "}"]), []);
+    ParserTestCase.parseCompilationUnit(r'''
+Map<Symbol, convertStringToSymbolMap(Map<String, dynamic> map) {
+  if (map == null) return null;
+  Map<Symbol, dynamic> result = new Map<Symbol, dynamic>();
+  map.forEach((name, value) {
+    result[new Symbol(name)] = value;
+  });
+  return result;
+}''', []);
   }
 
   void test_additiveExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("+ y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_additiveExpression_missing_LHS_RHS() {
@@ -2133,21 +2131,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_additiveExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x +", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_additiveExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super +", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_additiveExpression_precedence_multiplicative_left() {
@@ -2177,39 +2175,39 @@
     AssignmentExpression expression = ParserTestCase.parseExpression("= y = 0", [ParserErrorCode.MISSING_IDENTIFIER]);
     Expression syntheticExpression = expression.leftHandSide;
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_assignmentExpression_missing_compound2() {
     AssignmentExpression expression = ParserTestCase.parseExpression("x = = 0", [ParserErrorCode.MISSING_IDENTIFIER]);
     Expression syntheticExpression = (expression.rightHandSide as AssignmentExpression).leftHandSide;
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_assignmentExpression_missing_compound3() {
     AssignmentExpression expression = ParserTestCase.parseExpression("x = y =", [ParserErrorCode.MISSING_IDENTIFIER]);
     Expression syntheticExpression = (expression.rightHandSide as AssignmentExpression).rightHandSide;
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_assignmentExpression_missing_LHS() {
     AssignmentExpression expression = ParserTestCase.parseExpression("= 0", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftHandSide);
-    JUnitTestCase.assertTrue(expression.leftHandSide.isSynthetic);
+    expect(expression.leftHandSide.isSynthetic, isTrue);
   }
 
   void test_assignmentExpression_missing_RHS() {
     AssignmentExpression expression = ParserTestCase.parseExpression("x =", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftHandSide);
-    JUnitTestCase.assertTrue(expression.rightHandSide.isSynthetic);
+    expect(expression.rightHandSide.isSynthetic, isTrue);
   }
 
   void test_bitwiseAndExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("& y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseAndExpression_missing_LHS_RHS() {
@@ -2217,21 +2215,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseAndExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x &", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseAndExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super &", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseAndExpression_precedence_equality_left() {
@@ -2260,7 +2258,7 @@
   void test_bitwiseOrExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("| y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseOrExpression_missing_LHS_RHS() {
@@ -2268,21 +2266,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseOrExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x |", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseOrExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super |", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseOrExpression_precedence_xor_left() {
@@ -2311,7 +2309,7 @@
   void test_bitwiseXorExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("^ y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseXorExpression_missing_LHS_RHS() {
@@ -2319,21 +2317,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseXorExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x ^", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseXorExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super ^", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_bitwiseXorExpression_precedence_and_left() {
@@ -2360,25 +2358,27 @@
   }
 
   void test_classTypeAlias_withBody() {
-    ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class A {}", "class B = Object with A {}"]), [ParserErrorCode.EXPECTED_TOKEN]);
+    ParserTestCase.parseCompilationUnit(r'''
+class A {}
+class B = Object with A {}''', [ParserErrorCode.EXPECTED_TOKEN]);
   }
 
   void test_conditionalExpression_missingElse() {
     ConditionalExpression expression = ParserTestCase.parse4("parseConditionalExpression", "x ? y :", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.elseExpression);
-    JUnitTestCase.assertTrue(expression.elseExpression.isSynthetic);
+    expect(expression.elseExpression.isSynthetic, isTrue);
   }
 
   void test_conditionalExpression_missingThen() {
     ConditionalExpression expression = ParserTestCase.parse4("parseConditionalExpression", "x ? : z", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.thenExpression);
-    JUnitTestCase.assertTrue(expression.thenExpression.isSynthetic);
+    expect(expression.thenExpression.isSynthetic, isTrue);
   }
 
   void test_equalityExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("== y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_equalityExpression_missing_LHS_RHS() {
@@ -2386,21 +2386,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_equalityExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x ==", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_equalityExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super ==", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_equalityExpression_precedence_relational_left() {
@@ -2429,26 +2429,26 @@
 
   void test_expressionList_multiple_end() {
     List<Expression> result = ParserTestCase.parse4("parseExpressionList", ", 2, 3, 4", [ParserErrorCode.MISSING_IDENTIFIER]);
-    EngineTestCase.assertSizeOfList(4, result);
+    expect(result, hasLength(4));
     Expression syntheticExpression = result[0];
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_expressionList_multiple_middle() {
     List<Expression> result = ParserTestCase.parse4("parseExpressionList", "1, 2, , 4", [ParserErrorCode.MISSING_IDENTIFIER]);
-    EngineTestCase.assertSizeOfList(4, result);
+    expect(result, hasLength(4));
     Expression syntheticExpression = result[2];
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_expressionList_multiple_start() {
     List<Expression> result = ParserTestCase.parse4("parseExpressionList", "1, 2, 3,", [ParserErrorCode.MISSING_IDENTIFIER]);
-    EngineTestCase.assertSizeOfList(4, result);
+    expect(result, hasLength(4));
     Expression syntheticExpression = result[3];
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, syntheticExpression);
-    JUnitTestCase.assertTrue(syntheticExpression.isSynthetic);
+    expect(syntheticExpression.isSynthetic, isTrue);
   }
 
   void test_functionExpression_in_ConstructorFieldInitializer() {
@@ -2461,20 +2461,20 @@
     ClassMember fieldDecl = members[1];
     EngineTestCase.assertInstanceOf((obj) => obj is FieldDeclaration, FieldDeclaration, fieldDecl);
     NodeList<VariableDeclaration> vars = (fieldDecl as FieldDeclaration).fields.variables;
-    EngineTestCase.assertSizeOfList(1, vars);
-    JUnitTestCase.assertEquals("v", vars[0].name.name);
+    expect(vars, hasLength(1));
+    expect(vars[0].name.name, "v");
   }
 
   void test_incomplete_topLevelVariable() {
     CompilationUnit unit = ParserTestCase.parseCompilationUnit("String", [ParserErrorCode.EXPECTED_EXECUTABLE]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember member = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, TopLevelVariableDeclaration, member);
     NodeList<VariableDeclaration> variables = (member as TopLevelVariableDeclaration).variables.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     SimpleIdentifier name = variables[0].name;
-    JUnitTestCase.assertTrue(name.isSynthetic);
+    expect(name.isSynthetic, isTrue);
   }
 
   void test_incomplete_topLevelVariable_const() {
@@ -2482,13 +2482,13 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember member = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, TopLevelVariableDeclaration, member);
     NodeList<VariableDeclaration> variables = (member as TopLevelVariableDeclaration).variables.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     SimpleIdentifier name = variables[0].name;
-    JUnitTestCase.assertTrue(name.isSynthetic);
+    expect(name.isSynthetic, isTrue);
   }
 
   void test_incomplete_topLevelVariable_final() {
@@ -2496,13 +2496,13 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember member = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, TopLevelVariableDeclaration, member);
     NodeList<VariableDeclaration> variables = (member as TopLevelVariableDeclaration).variables.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     SimpleIdentifier name = variables[0].name;
-    JUnitTestCase.assertTrue(name.isSynthetic);
+    expect(name.isSynthetic, isTrue);
   }
 
   void test_incomplete_topLevelVariable_var() {
@@ -2510,73 +2510,82 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember member = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is TopLevelVariableDeclaration, TopLevelVariableDeclaration, member);
     NodeList<VariableDeclaration> variables = (member as TopLevelVariableDeclaration).variables.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     SimpleIdentifier name = variables[0].name;
-    JUnitTestCase.assertTrue(name.isSynthetic);
+    expect(name.isSynthetic, isTrue);
   }
 
   void test_incompleteField_const() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class C {", "  const", "}"]), [
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class C {
+  const
+}''', [
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember unitMember = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is ClassDeclaration, ClassDeclaration, unitMember);
     NodeList<ClassMember> members = (unitMember as ClassDeclaration).members;
-    EngineTestCase.assertSizeOfList(1, members);
+    expect(members, hasLength(1));
     ClassMember classMember = members[0];
     EngineTestCase.assertInstanceOf((obj) => obj is FieldDeclaration, FieldDeclaration, classMember);
     VariableDeclarationList fieldList = (classMember as FieldDeclaration).fields;
-    JUnitTestCase.assertEquals(Keyword.CONST, (fieldList.keyword as KeywordToken).keyword);
+    expect((fieldList.keyword as KeywordToken).keyword, Keyword.CONST);
     NodeList<VariableDeclaration> fields = fieldList.variables;
-    EngineTestCase.assertSizeOfList(1, fields);
+    expect(fields, hasLength(1));
     VariableDeclaration field = fields[0];
-    JUnitTestCase.assertTrue(field.name.isSynthetic);
+    expect(field.name.isSynthetic, isTrue);
   }
 
   void test_incompleteField_final() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class C {", "  final", "}"]), [
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class C {
+  final
+}''', [
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember unitMember = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is ClassDeclaration, ClassDeclaration, unitMember);
     NodeList<ClassMember> members = (unitMember as ClassDeclaration).members;
-    EngineTestCase.assertSizeOfList(1, members);
+    expect(members, hasLength(1));
     ClassMember classMember = members[0];
     EngineTestCase.assertInstanceOf((obj) => obj is FieldDeclaration, FieldDeclaration, classMember);
     VariableDeclarationList fieldList = (classMember as FieldDeclaration).fields;
-    JUnitTestCase.assertEquals(Keyword.FINAL, (fieldList.keyword as KeywordToken).keyword);
+    expect((fieldList.keyword as KeywordToken).keyword, Keyword.FINAL);
     NodeList<VariableDeclaration> fields = fieldList.variables;
-    EngineTestCase.assertSizeOfList(1, fields);
+    expect(fields, hasLength(1));
     VariableDeclaration field = fields[0];
-    JUnitTestCase.assertTrue(field.name.isSynthetic);
+    expect(field.name.isSynthetic, isTrue);
   }
 
   void test_incompleteField_var() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class C {", "  var", "}"]), [
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class C {
+  var
+}''', [
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.EXPECTED_TOKEN]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember unitMember = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is ClassDeclaration, ClassDeclaration, unitMember);
     NodeList<ClassMember> members = (unitMember as ClassDeclaration).members;
-    EngineTestCase.assertSizeOfList(1, members);
+    expect(members, hasLength(1));
     ClassMember classMember = members[0];
     EngineTestCase.assertInstanceOf((obj) => obj is FieldDeclaration, FieldDeclaration, classMember);
     VariableDeclarationList fieldList = (classMember as FieldDeclaration).fields;
-    JUnitTestCase.assertEquals(Keyword.VAR, (fieldList.keyword as KeywordToken).keyword);
+    expect((fieldList.keyword as KeywordToken).keyword, Keyword.VAR);
     NodeList<VariableDeclaration> fields = fieldList.variables;
-    EngineTestCase.assertSizeOfList(1, fields);
+    expect(fields, hasLength(1));
     VariableDeclaration field = fields[0];
-    JUnitTestCase.assertTrue(field.name.isSynthetic);
+    expect(field.name.isSynthetic, isTrue);
   }
 
   void test_isExpression_noType() {
@@ -2589,19 +2598,19 @@
     BlockFunctionBody body = method.body as BlockFunctionBody;
     IfStatement ifStatement = body.block.statements[1] as IfStatement;
     IsExpression expression = ifStatement.condition as IsExpression;
-    JUnitTestCase.assertNotNull(expression.expression);
-    JUnitTestCase.assertNotNull(expression.isOperator);
-    JUnitTestCase.assertNotNull(expression.notOperator);
+    expect(expression.expression, isNotNull);
+    expect(expression.isOperator, isNotNull);
+    expect(expression.notOperator, isNotNull);
     TypeName type = expression.type;
-    JUnitTestCase.assertNotNull(type);
-    JUnitTestCase.assertTrue(type.name.isSynthetic);
+    expect(type, isNotNull);
+    expect(type.name.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is EmptyStatement, EmptyStatement, ifStatement.thenStatement);
   }
 
   void test_logicalAndExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("&& y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_logicalAndExpression_missing_LHS_RHS() {
@@ -2609,15 +2618,15 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_logicalAndExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x &&", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_logicalAndExpression_precedence_bitwiseOr_left() {
@@ -2639,7 +2648,7 @@
   void test_logicalOrExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("|| y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_logicalOrExpression_missing_LHS_RHS() {
@@ -2647,15 +2656,15 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_logicalOrExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x ||", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_logicalOrExpression_precedence_logicalAnd_left() {
@@ -2675,29 +2684,33 @@
   }
 
   void test_missingGet() {
-    CompilationUnit unit = ParserTestCase.parseCompilationUnit(EngineTestCase.createSource(["class C {", "  int length {}", "  void foo() {}", "}"]), [ParserErrorCode.MISSING_GET]);
-    JUnitTestCase.assertNotNull(unit);
+    CompilationUnit unit = ParserTestCase.parseCompilationUnit(r'''
+class C {
+  int length {}
+  void foo() {}
+}''', [ParserErrorCode.MISSING_GET]);
+    expect(unit, isNotNull);
     ClassDeclaration classDeclaration = unit.declarations[0] as ClassDeclaration;
     NodeList<ClassMember> members = classDeclaration.members;
-    EngineTestCase.assertSizeOfList(2, members);
+    expect(members, hasLength(2));
     EngineTestCase.assertInstanceOf((obj) => obj is MethodDeclaration, MethodDeclaration, members[0]);
     ClassMember member = members[1];
     EngineTestCase.assertInstanceOf((obj) => obj is MethodDeclaration, MethodDeclaration, member);
-    JUnitTestCase.assertEquals("foo", (member as MethodDeclaration).name.name);
+    expect((member as MethodDeclaration).name.name, "foo");
   }
 
   void test_missingIdentifier_afterAnnotation() {
     MethodDeclaration method = ParserTestCase.parse3("parseClassMember", <Object> ["C"], "@override }", [ParserErrorCode.EXPECTED_CLASS_MEMBER]);
-    JUnitTestCase.assertNull(method.documentationComment);
+    expect(method.documentationComment, isNull);
     NodeList<Annotation> metadata = method.metadata;
-    EngineTestCase.assertSizeOfList(1, metadata);
-    JUnitTestCase.assertEquals("override", metadata[0].name.name);
+    expect(metadata, hasLength(1));
+    expect(metadata[0].name.name, "override");
   }
 
   void test_multiplicativeExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("* y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_multiplicativeExpression_missing_LHS_RHS() {
@@ -2705,21 +2718,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_multiplicativeExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x *", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_multiplicativeExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super *", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_multiplicativeExpression_precedence_unary_left() {
@@ -2743,8 +2756,8 @@
   void test_prefixExpression_missing_operand_minus() {
     PrefixExpression expression = ParserTestCase.parseExpression("-", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.operand);
-    JUnitTestCase.assertTrue(expression.operand.isSynthetic);
-    JUnitTestCase.assertEquals(TokenType.MINUS, expression.operator.type);
+    expect(expression.operand.isSynthetic, isTrue);
+    expect(expression.operator.type, TokenType.MINUS);
   }
 
   void test_primaryExpression_argumentDefinitionTest() {
@@ -2755,7 +2768,7 @@
   void test_relationalExpression_missing_LHS() {
     IsExpression expression = ParserTestCase.parseExpression("is y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.expression);
-    JUnitTestCase.assertTrue(expression.expression.isSynthetic);
+    expect(expression.expression.isSynthetic, isTrue);
   }
 
   void test_relationalExpression_missing_LHS_RHS() {
@@ -2763,15 +2776,15 @@
         ParserErrorCode.EXPECTED_TYPE_NAME,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.expression);
-    JUnitTestCase.assertTrue(expression.expression.isSynthetic);
+    expect(expression.expression.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is TypeName, TypeName, expression.type);
-    JUnitTestCase.assertTrue(expression.type.isSynthetic);
+    expect(expression.type.isSynthetic, isTrue);
   }
 
   void test_relationalExpression_missing_RHS() {
     IsExpression expression = ParserTestCase.parseExpression("x is", [ParserErrorCode.EXPECTED_TYPE_NAME]);
     EngineTestCase.assertInstanceOf((obj) => obj is TypeName, TypeName, expression.type);
-    JUnitTestCase.assertTrue(expression.type.isSynthetic);
+    expect(expression.type.isSynthetic, isTrue);
   }
 
   void test_relationalExpression_precedence_shift_right() {
@@ -2785,7 +2798,7 @@
   void test_shiftExpression_missing_LHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("<< y", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
   }
 
   void test_shiftExpression_missing_LHS_RHS() {
@@ -2793,21 +2806,21 @@
         ParserErrorCode.MISSING_IDENTIFIER,
         ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.leftOperand);
-    JUnitTestCase.assertTrue(expression.leftOperand.isSynthetic);
+    expect(expression.leftOperand.isSynthetic, isTrue);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_shiftExpression_missing_RHS() {
     BinaryExpression expression = ParserTestCase.parseExpression("x <<", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_shiftExpression_missing_RHS_super() {
     BinaryExpression expression = ParserTestCase.parseExpression("super <<", [ParserErrorCode.MISSING_IDENTIFIER]);
     EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, expression.rightOperand);
-    JUnitTestCase.assertTrue(expression.rightOperand.isSynthetic);
+    expect(expression.rightOperand.isSynthetic, isTrue);
   }
 
   void test_shiftExpression_precedence_unary_left() {
@@ -2838,7 +2851,7 @@
         ParserErrorCode.EXPECTED_TOKEN,
         ParserErrorCode.MISSING_TYPEDEF_PARAMETERS]);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(1, declarations);
+    expect(declarations, hasLength(1));
     CompilationUnitMember member = declarations[0];
     EngineTestCase.assertInstanceOf((obj) => obj is FunctionTypeAlias, FunctionTypeAlias, member);
   }
@@ -2852,7 +2865,7 @@
     fromNode.element = element;
     Annotation toNode = AstFactory.annotation(AstFactory.identifier3(annotationName));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitAsExpression() {
@@ -2863,8 +2876,8 @@
     fromNode.staticType = staticType;
     AsExpression toNode = AstFactory.asExpression(AstFactory.identifier3("x"), AstFactory.typeName4("A", []));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitAssignmentExpression() {
@@ -2879,10 +2892,10 @@
     fromNode.staticType = staticType;
     AssignmentExpression toNode = AstFactory.assignmentExpression(AstFactory.identifier3("a"), TokenType.PLUS_EQ, AstFactory.identifier3("b"));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitBinaryExpression() {
@@ -2897,10 +2910,10 @@
     fromNode.staticType = staticType;
     BinaryExpression toNode = AstFactory.binaryExpression(AstFactory.identifier3("a"), TokenType.PLUS, AstFactory.identifier3("b"));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitBooleanLiteral() {
@@ -2911,8 +2924,8 @@
     fromNode.staticType = staticType;
     BooleanLiteral toNode = AstFactory.booleanLiteral(true);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitCascadeExpression() {
@@ -2923,8 +2936,8 @@
     fromNode.staticType = staticType;
     CascadeExpression toNode = AstFactory.cascadeExpression(AstFactory.identifier3("a"), [AstFactory.identifier3("b")]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitCompilationUnit() {
@@ -2933,7 +2946,7 @@
     fromNode.element = element;
     CompilationUnit toNode = AstFactory.compilationUnit();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitConditionalExpression() {
@@ -2944,8 +2957,8 @@
     fromNode.staticType = staticType;
     ConditionalExpression toNode = AstFactory.conditionalExpression(AstFactory.identifier3("c"), AstFactory.identifier3("a"), AstFactory.identifier3("b"));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitConstructorDeclaration() {
@@ -2956,7 +2969,7 @@
     fromNode.element = element;
     ConstructorDeclaration toNode = AstFactory.constructorDeclaration(AstFactory.identifier3(className), constructorName, AstFactory.formalParameterList([]), null);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitConstructorName() {
@@ -2965,7 +2978,7 @@
     fromNode.staticElement = staticElement;
     ConstructorName toNode = AstFactory.constructorName(AstFactory.typeName4("A", []), "c");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
+    expect(toNode.staticElement, same(staticElement));
   }
 
   void test_visitDoubleLiteral() {
@@ -2976,8 +2989,8 @@
     fromNode.staticType = staticType;
     DoubleLiteral toNode = AstFactory.doubleLiteral(1.0);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitExportDirective() {
@@ -2986,7 +2999,7 @@
     fromNode.element = element;
     ExportDirective toNode = AstFactory.exportDirective2("dart:uri", []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitFunctionExpression() {
@@ -2999,9 +3012,9 @@
     fromNode.staticType = staticType;
     FunctionExpression toNode = AstFactory.functionExpression2(AstFactory.formalParameterList([]), AstFactory.emptyFunctionBody());
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.element, same(element));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitFunctionExpressionInvocation() {
@@ -3016,10 +3029,10 @@
     fromNode.staticType = staticType;
     FunctionExpressionInvocation toNode = AstFactory.functionExpressionInvocation(AstFactory.identifier3("f"), []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitImportDirective() {
@@ -3028,7 +3041,7 @@
     fromNode.element = element;
     ImportDirective toNode = AstFactory.importDirective3("dart:uri", null, []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitIndexExpression() {
@@ -3045,11 +3058,11 @@
     fromNode.staticType = staticType;
     IndexExpression toNode = AstFactory.indexExpression(AstFactory.identifier3("a"), AstFactory.integer(0));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(auxiliaryElements, toNode.auxiliaryElements);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.auxiliaryElements, same(auxiliaryElements));
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitInstanceCreationExpression() {
@@ -3062,9 +3075,9 @@
     fromNode.staticType = staticType;
     InstanceCreationExpression toNode = AstFactory.instanceCreationExpression2(Keyword.NEW, AstFactory.typeName4("C", []), []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitIntegerLiteral() {
@@ -3075,8 +3088,8 @@
     fromNode.staticType = staticType;
     IntegerLiteral toNode = AstFactory.integer(2);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitIsExpression() {
@@ -3087,8 +3100,8 @@
     fromNode.staticType = staticType;
     IsExpression toNode = AstFactory.isExpression(AstFactory.identifier3("x"), false, AstFactory.typeName4("A", []));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitLibraryIdentifier() {
@@ -3099,8 +3112,8 @@
     fromNode.staticType = staticType;
     LibraryIdentifier toNode = AstFactory.libraryIdentifier([AstFactory.identifier3("lib")]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitListLiteral() {
@@ -3111,8 +3124,8 @@
     fromNode.staticType = staticType;
     ListLiteral toNode = AstFactory.listLiteral([]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitMapLiteral() {
@@ -3123,8 +3136,8 @@
     fromNode.staticType = staticType;
     MapLiteral toNode = AstFactory.mapLiteral2([]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitMethodInvocation() {
@@ -3135,8 +3148,8 @@
     fromNode.staticType = staticType;
     MethodInvocation toNode = AstFactory.methodInvocation2("m", []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitNamedExpression() {
@@ -3147,8 +3160,8 @@
     fromNode.staticType = staticType;
     NamedExpression toNode = AstFactory.namedExpression2("n", AstFactory.integer(0));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitNullLiteral() {
@@ -3159,8 +3172,8 @@
     fromNode.staticType = staticType;
     NullLiteral toNode = AstFactory.nullLiteral();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitParenthesizedExpression() {
@@ -3171,8 +3184,8 @@
     fromNode.staticType = staticType;
     ParenthesizedExpression toNode = AstFactory.parenthesizedExpression(AstFactory.integer(0));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitPartDirective() {
@@ -3181,7 +3194,7 @@
     fromNode.element = element;
     PartDirective toNode = AstFactory.partDirective2("part.dart");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitPartOfDirective() {
@@ -3190,7 +3203,7 @@
     fromNode.element = element;
     PartOfDirective toNode = AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["lib"]));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(element, toNode.element);
+    expect(toNode.element, same(element));
   }
 
   void test_visitPostfixExpression() {
@@ -3206,10 +3219,10 @@
     fromNode.staticType = staticType;
     PostfixExpression toNode = AstFactory.postfixExpression(AstFactory.identifier3(variableName), TokenType.PLUS_PLUS);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitPrefixedIdentifier() {
@@ -3220,8 +3233,8 @@
     fromNode.staticType = staticType;
     PrefixedIdentifier toNode = AstFactory.identifier5("p", "f");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitPrefixExpression() {
@@ -3236,10 +3249,10 @@
     fromNode.staticType = staticType;
     PrefixExpression toNode = AstFactory.prefixExpression(TokenType.PLUS_PLUS, AstFactory.identifier3("x"));
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitPropertyAccess() {
@@ -3250,8 +3263,8 @@
     fromNode.staticType = staticType;
     PropertyAccess toNode = AstFactory.propertyAccess2(AstFactory.identifier3("x"), "y");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitRedirectingConstructorInvocation() {
@@ -3260,7 +3273,7 @@
     fromNode.staticElement = staticElement;
     RedirectingConstructorInvocation toNode = AstFactory.redirectingConstructorInvocation([]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
+    expect(toNode.staticElement, same(staticElement));
   }
 
   void test_visitRethrowExpression() {
@@ -3271,8 +3284,8 @@
     fromNode.staticType = staticType;
     RethrowExpression toNode = AstFactory.rethrowExpression();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitSimpleIdentifier() {
@@ -3289,11 +3302,11 @@
     fromNode.staticType = staticType;
     SimpleIdentifier toNode = AstFactory.identifier3("x");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(auxiliaryElements, toNode.auxiliaryElements);
-    JUnitTestCase.assertSame(propagatedElement, toNode.propagatedElement);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.auxiliaryElements, same(auxiliaryElements));
+    expect(toNode.propagatedElement, same(propagatedElement));
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticElement, same(staticElement));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitSimpleStringLiteral() {
@@ -3304,8 +3317,8 @@
     fromNode.staticType = staticType;
     SimpleStringLiteral toNode = AstFactory.string2("abc");
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitStringInterpolation() {
@@ -3316,8 +3329,8 @@
     fromNode.staticType = staticType;
     StringInterpolation toNode = AstFactory.string([AstFactory.interpolationString("a", "'a'")]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitSuperConstructorInvocation() {
@@ -3326,7 +3339,7 @@
     fromNode.staticElement = staticElement;
     SuperConstructorInvocation toNode = AstFactory.superConstructorInvocation([]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(staticElement, toNode.staticElement);
+    expect(toNode.staticElement, same(staticElement));
   }
 
   void test_visitSuperExpression() {
@@ -3337,8 +3350,8 @@
     fromNode.staticType = staticType;
     SuperExpression toNode = AstFactory.superExpression();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitSymbolLiteral() {
@@ -3349,8 +3362,8 @@
     fromNode.staticType = staticType;
     SymbolLiteral toNode = AstFactory.symbolLiteral(["s"]);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitThisExpression() {
@@ -3361,8 +3374,8 @@
     fromNode.staticType = staticType;
     ThisExpression toNode = AstFactory.thisExpression();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitThrowExpression() {
@@ -3373,8 +3386,8 @@
     fromNode.staticType = staticType;
     ThrowExpression toNode = AstFactory.throwExpression();
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(propagatedType, toNode.propagatedType);
-    JUnitTestCase.assertSame(staticType, toNode.staticType);
+    expect(toNode.propagatedType, same(propagatedType));
+    expect(toNode.staticType, same(staticType));
   }
 
   void test_visitTypeName() {
@@ -3383,7 +3396,7 @@
     fromNode.type = type;
     TypeName toNode = AstFactory.typeName4("C", []);
     ResolutionCopier.copyResolutionData(fromNode, toNode);
-    JUnitTestCase.assertSame(type, toNode.type);
+    expect(toNode.type, same(type));
   }
 }
 
@@ -3400,89 +3413,89 @@
     // is not null.
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["this", 5], "");
     SimpleIdentifier identifier = EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, reference.identifier);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("a", identifier.name);
-    JUnitTestCase.assertEquals(5, identifier.offset);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "a");
+    expect(identifier.offset, 5);
   }
 
   void test_computeStringValue_emptyInterpolationPrefix() {
-    JUnitTestCase.assertEquals("", _computeStringValue("'''", true, false));
+    expect(_computeStringValue("'''", true, false), "");
   }
 
   void test_computeStringValue_escape_b() {
-    JUnitTestCase.assertEquals("\b", _computeStringValue("'\\b'", true, true));
+    expect(_computeStringValue("'\\b'", true, true), "\b");
   }
 
   void test_computeStringValue_escape_f() {
-    JUnitTestCase.assertEquals("\f", _computeStringValue("'\\f'", true, true));
+    expect(_computeStringValue("'\\f'", true, true), "\f");
   }
 
   void test_computeStringValue_escape_n() {
-    JUnitTestCase.assertEquals("\n", _computeStringValue("'\\n'", true, true));
+    expect(_computeStringValue("'\\n'", true, true), "\n");
   }
 
   void test_computeStringValue_escape_notSpecial() {
-    JUnitTestCase.assertEquals(":", _computeStringValue("'\\:'", true, true));
+    expect(_computeStringValue("'\\:'", true, true), ":");
   }
 
   void test_computeStringValue_escape_r() {
-    JUnitTestCase.assertEquals("\r", _computeStringValue("'\\r'", true, true));
+    expect(_computeStringValue("'\\r'", true, true), "\r");
   }
 
   void test_computeStringValue_escape_t() {
-    JUnitTestCase.assertEquals("\t", _computeStringValue("'\\t'", true, true));
+    expect(_computeStringValue("'\\t'", true, true), "\t");
   }
 
   void test_computeStringValue_escape_u_fixed() {
-    JUnitTestCase.assertEquals("\u4321", _computeStringValue("'\\u4321'", true, true));
+    expect(_computeStringValue("'\\u4321'", true, true), "\u4321");
   }
 
   void test_computeStringValue_escape_u_variable() {
-    JUnitTestCase.assertEquals("\u0123", _computeStringValue("'\\u{123}'", true, true));
+    expect(_computeStringValue("'\\u{123}'", true, true), "\u0123");
   }
 
   void test_computeStringValue_escape_v() {
-    JUnitTestCase.assertEquals("\u000B", _computeStringValue("'\\v'", true, true));
+    expect(_computeStringValue("'\\v'", true, true), "\u000B");
   }
 
   void test_computeStringValue_escape_x() {
-    JUnitTestCase.assertEquals("\u00FF", _computeStringValue("'\\xFF'", true, true));
+    expect(_computeStringValue("'\\xFF'", true, true), "\u00FF");
   }
 
   void test_computeStringValue_noEscape_single() {
-    JUnitTestCase.assertEquals("text", _computeStringValue("'text'", true, true));
+    expect(_computeStringValue("'text'", true, true), "text");
   }
 
   void test_computeStringValue_noEscape_triple() {
-    JUnitTestCase.assertEquals("text", _computeStringValue("'''text'''", true, true));
+    expect(_computeStringValue("'''text'''", true, true), "text");
   }
 
   void test_computeStringValue_raw_single() {
-    JUnitTestCase.assertEquals("text", _computeStringValue("r'text'", true, true));
+    expect(_computeStringValue("r'text'", true, true), "text");
   }
 
   void test_computeStringValue_raw_triple() {
-    JUnitTestCase.assertEquals("text", _computeStringValue("r'''text'''", true, true));
+    expect(_computeStringValue("r'''text'''", true, true), "text");
   }
 
   void test_computeStringValue_raw_withEscape() {
-    JUnitTestCase.assertEquals("two\\nlines", _computeStringValue("r'two\\nlines'", true, true));
+    expect(_computeStringValue("r'two\\nlines'", true, true), "two\\nlines");
   }
 
   void test_computeStringValue_triple_internalQuote_first_empty() {
-    JUnitTestCase.assertEquals("'", _computeStringValue("''''", true, false));
+    expect(_computeStringValue("''''", true, false), "'");
   }
 
   void test_computeStringValue_triple_internalQuote_first_nonEmpty() {
-    JUnitTestCase.assertEquals("'text", _computeStringValue("''''text", true, false));
+    expect(_computeStringValue("''''text", true, false), "'text");
   }
 
   void test_computeStringValue_triple_internalQuote_last_empty() {
-    JUnitTestCase.assertEquals("", _computeStringValue("'''", false, true));
+    expect(_computeStringValue("'''", false, true), "");
   }
 
   void test_computeStringValue_triple_internalQuote_last_nonEmpty() {
-    JUnitTestCase.assertEquals("text", _computeStringValue("text'''", false, true));
+    expect(_computeStringValue("text'''", false, true), "text");
   }
 
   void test_constFactory() {
@@ -3491,12 +3504,12 @@
 
   void test_createSyntheticIdentifier() {
     SimpleIdentifier identifier = _createSyntheticIdentifier();
-    JUnitTestCase.assertTrue(identifier.isSynthetic);
+    expect(identifier.isSynthetic, isTrue);
   }
 
   void test_createSyntheticStringLiteral() {
     SimpleStringLiteral literal = _createSyntheticStringLiteral();
-    JUnitTestCase.assertTrue(literal.isSynthetic);
+    expect(literal.isSynthetic, isTrue);
   }
 
   void test_function_literal_allowed_at_toplevel() {
@@ -3528,394 +3541,394 @@
   }
 
   void test_isFunctionDeclaration_nameButNoReturn_block() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("f() {}"));
+    expect(_isFunctionDeclaration("f() {}"), isTrue);
   }
 
   void test_isFunctionDeclaration_nameButNoReturn_expression() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("f() => e"));
+    expect(_isFunctionDeclaration("f() => e"), isTrue);
   }
 
   void test_isFunctionDeclaration_normalReturn_block() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("C f() {}"));
+    expect(_isFunctionDeclaration("C f() {}"), isTrue);
   }
 
   void test_isFunctionDeclaration_normalReturn_expression() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("C f() => e"));
+    expect(_isFunctionDeclaration("C f() => e"), isTrue);
   }
 
   void test_isFunctionDeclaration_voidReturn_block() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("void f() {}"));
+    expect(_isFunctionDeclaration("void f() {}"), isTrue);
   }
 
   void test_isFunctionDeclaration_voidReturn_expression() {
-    JUnitTestCase.assertTrue(_isFunctionDeclaration("void f() => e"));
+    expect(_isFunctionDeclaration("void f() => e"), isTrue);
   }
 
   void test_isFunctionExpression_false_noBody() {
-    JUnitTestCase.assertFalse(_isFunctionExpression("f();"));
+    expect(_isFunctionExpression("f();"), isFalse);
   }
 
   void test_isFunctionExpression_false_notParameters() {
-    JUnitTestCase.assertFalse(_isFunctionExpression("(a + b) {"));
+    expect(_isFunctionExpression("(a + b) {"), isFalse);
   }
 
   void test_isFunctionExpression_noName_block() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("() {}"));
+    expect(_isFunctionExpression("() {}"), isTrue);
   }
 
   void test_isFunctionExpression_noName_expression() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("() => e"));
+    expect(_isFunctionExpression("() => e"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_final() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final a) {}"));
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final a, b) {}"));
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final a, final b) {}"));
+    expect(_isFunctionExpression("(final a) {}"), isTrue);
+    expect(_isFunctionExpression("(final a, b) {}"), isTrue);
+    expect(_isFunctionExpression("(final a, final b) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_final_typed() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final int a) {}"));
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final prefix.List a) {}"));
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final List<int> a) {}"));
-    JUnitTestCase.assertTrue(_isFunctionExpression("(final prefix.List<int> a) {}"));
+    expect(_isFunctionExpression("(final int a) {}"), isTrue);
+    expect(_isFunctionExpression("(final prefix.List a) {}"), isTrue);
+    expect(_isFunctionExpression("(final List<int> a) {}"), isTrue);
+    expect(_isFunctionExpression("(final prefix.List<int> a) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_multiple() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("(a, b) {}"));
+    expect(_isFunctionExpression("(a, b) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_named() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("({a}) {}"));
+    expect(_isFunctionExpression("({a}) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_optional() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("([a]) {}"));
+    expect(_isFunctionExpression("([a]) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_single() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("(a) {}"));
+    expect(_isFunctionExpression("(a) {}"), isTrue);
   }
 
   void test_isFunctionExpression_parameter_typed() {
-    JUnitTestCase.assertTrue(_isFunctionExpression("(int a, int b) {}"));
+    expect(_isFunctionExpression("(int a, int b) {}"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_assignment() {
-    JUnitTestCase.assertFalse(_isInitializedVariableDeclaration("a = null;"));
+    expect(_isInitializedVariableDeclaration("a = null;"), isFalse);
   }
 
   void test_isInitializedVariableDeclaration_comparison() {
-    JUnitTestCase.assertFalse(_isInitializedVariableDeclaration("a < 0;"));
+    expect(_isInitializedVariableDeclaration("a < 0;"), isFalse);
   }
 
   void test_isInitializedVariableDeclaration_conditional() {
-    JUnitTestCase.assertFalse(_isInitializedVariableDeclaration("a == null ? init() : update();"));
+    expect(_isInitializedVariableDeclaration("a == null ? init() : update();"), isFalse);
   }
 
   void test_isInitializedVariableDeclaration_const_noType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("const a = 0;"));
+    expect(_isInitializedVariableDeclaration("const a = 0;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_const_noType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("const a;"));
+    expect(_isInitializedVariableDeclaration("const a;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_const_simpleType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("const A a;"));
+    expect(_isInitializedVariableDeclaration("const A a;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_final_noType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("final a = 0;"));
+    expect(_isInitializedVariableDeclaration("final a = 0;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_final_noType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("final a;"));
+    expect(_isInitializedVariableDeclaration("final a;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_final_simpleType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("final A a = 0;"));
+    expect(_isInitializedVariableDeclaration("final A a = 0;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_functionDeclaration_typed() {
-    JUnitTestCase.assertFalse(_isInitializedVariableDeclaration("A f() {};"));
+    expect(_isInitializedVariableDeclaration("A f() {};"), isFalse);
   }
 
   void test_isInitializedVariableDeclaration_functionDeclaration_untyped() {
-    JUnitTestCase.assertFalse(_isInitializedVariableDeclaration("f() {};"));
+    expect(_isInitializedVariableDeclaration("f() {};"), isFalse);
   }
 
   void test_isInitializedVariableDeclaration_noType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("var a = 0;"));
+    expect(_isInitializedVariableDeclaration("var a = 0;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_noType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("var a;"));
+    expect(_isInitializedVariableDeclaration("var a;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_parameterizedType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("List<int> a = null;"));
+    expect(_isInitializedVariableDeclaration("List<int> a = null;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_parameterizedType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("List<int> a;"));
+    expect(_isInitializedVariableDeclaration("List<int> a;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_simpleType_initialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("A a = 0;"));
+    expect(_isInitializedVariableDeclaration("A a = 0;"), isTrue);
   }
 
   void test_isInitializedVariableDeclaration_simpleType_uninitialized() {
-    JUnitTestCase.assertTrue(_isInitializedVariableDeclaration("A a;"));
+    expect(_isInitializedVariableDeclaration("A a;"), isTrue);
   }
 
   void test_isSwitchMember_case_labeled() {
-    JUnitTestCase.assertTrue(_isSwitchMember("l1: l2: case"));
+    expect(_isSwitchMember("l1: l2: case"), isTrue);
   }
 
   void test_isSwitchMember_case_unlabeled() {
-    JUnitTestCase.assertTrue(_isSwitchMember("case"));
+    expect(_isSwitchMember("case"), isTrue);
   }
 
   void test_isSwitchMember_default_labeled() {
-    JUnitTestCase.assertTrue(_isSwitchMember("l1: l2: default"));
+    expect(_isSwitchMember("l1: l2: default"), isTrue);
   }
 
   void test_isSwitchMember_default_unlabeled() {
-    JUnitTestCase.assertTrue(_isSwitchMember("default"));
+    expect(_isSwitchMember("default"), isTrue);
   }
 
   void test_isSwitchMember_false() {
-    JUnitTestCase.assertFalse(_isSwitchMember("break;"));
+    expect(_isSwitchMember("break;"), isFalse);
   }
 
   void test_parseAdditiveExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseAdditiveExpression", "x + y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseAdditiveExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseAdditiveExpression", "super + y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseAnnotation_n1() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNull(annotation.period);
-    JUnitTestCase.assertNull(annotation.constructorName);
-    JUnitTestCase.assertNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNull);
+    expect(annotation.constructorName, isNull);
+    expect(annotation.arguments, isNull);
   }
 
   void test_parseAnnotation_n1_a() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A(x,y)", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNull(annotation.period);
-    JUnitTestCase.assertNull(annotation.constructorName);
-    JUnitTestCase.assertNotNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNull);
+    expect(annotation.constructorName, isNull);
+    expect(annotation.arguments, isNotNull);
   }
 
   void test_parseAnnotation_n2() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A.B", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNull(annotation.period);
-    JUnitTestCase.assertNull(annotation.constructorName);
-    JUnitTestCase.assertNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNull);
+    expect(annotation.constructorName, isNull);
+    expect(annotation.arguments, isNull);
   }
 
   void test_parseAnnotation_n2_a() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A.B(x,y)", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNull(annotation.period);
-    JUnitTestCase.assertNull(annotation.constructorName);
-    JUnitTestCase.assertNotNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNull);
+    expect(annotation.constructorName, isNull);
+    expect(annotation.arguments, isNotNull);
   }
 
   void test_parseAnnotation_n3() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A.B.C", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNotNull(annotation.period);
-    JUnitTestCase.assertNotNull(annotation.constructorName);
-    JUnitTestCase.assertNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNotNull);
+    expect(annotation.constructorName, isNotNull);
+    expect(annotation.arguments, isNull);
   }
 
   void test_parseAnnotation_n3_a() {
     Annotation annotation = ParserTestCase.parse4("parseAnnotation", "@A.B.C(x,y)", []);
-    JUnitTestCase.assertNotNull(annotation.atSign);
-    JUnitTestCase.assertNotNull(annotation.name);
-    JUnitTestCase.assertNotNull(annotation.period);
-    JUnitTestCase.assertNotNull(annotation.constructorName);
-    JUnitTestCase.assertNotNull(annotation.arguments);
+    expect(annotation.atSign, isNotNull);
+    expect(annotation.name, isNotNull);
+    expect(annotation.period, isNotNull);
+    expect(annotation.constructorName, isNotNull);
+    expect(annotation.arguments, isNotNull);
   }
 
   void test_parseArgument_named() {
     NamedExpression expression = ParserTestCase.parse4("parseArgument", "n: x", []);
     Label name = expression.name;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.label);
-    JUnitTestCase.assertNotNull(name.colon);
-    JUnitTestCase.assertNotNull(expression.expression);
+    expect(name, isNotNull);
+    expect(name.label, isNotNull);
+    expect(name.colon, isNotNull);
+    expect(expression.expression, isNotNull);
   }
 
   void test_parseArgument_unnamed() {
     String lexeme = "x";
     SimpleIdentifier identifier = ParserTestCase.parse4("parseArgument", lexeme, []);
-    JUnitTestCase.assertEquals(lexeme, identifier.name);
+    expect(identifier.name, lexeme);
   }
 
   void test_parseArgumentList_empty() {
     ArgumentList argumentList = ParserTestCase.parse4("parseArgumentList", "()", []);
     NodeList<Expression> arguments = argumentList.arguments;
-    EngineTestCase.assertSizeOfList(0, arguments);
+    expect(arguments, hasLength(0));
   }
 
   void test_parseArgumentList_mixed() {
     ArgumentList argumentList = ParserTestCase.parse4("parseArgumentList", "(w, x, y: y, z: z)", []);
     NodeList<Expression> arguments = argumentList.arguments;
-    EngineTestCase.assertSizeOfList(4, arguments);
+    expect(arguments, hasLength(4));
   }
 
   void test_parseArgumentList_noNamed() {
     ArgumentList argumentList = ParserTestCase.parse4("parseArgumentList", "(x, y, z)", []);
     NodeList<Expression> arguments = argumentList.arguments;
-    EngineTestCase.assertSizeOfList(3, arguments);
+    expect(arguments, hasLength(3));
   }
 
   void test_parseArgumentList_onlyNamed() {
     ArgumentList argumentList = ParserTestCase.parse4("parseArgumentList", "(x: x, y: y)", []);
     NodeList<Expression> arguments = argumentList.arguments;
-    EngineTestCase.assertSizeOfList(2, arguments);
+    expect(arguments, hasLength(2));
   }
 
   void test_parseAssertStatement() {
     AssertStatement statement = ParserTestCase.parse4("parseAssertStatement", "assert (x);", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseAssignableExpression_expression_args_dot() {
     PropertyAccess propertyAccess = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "(x)(y).z");
     FunctionExpressionInvocation invocation = propertyAccess.target as FunctionExpressionInvocation;
-    JUnitTestCase.assertNotNull(invocation.function);
+    expect(invocation.function, isNotNull);
     ArgumentList argumentList = invocation.argumentList;
-    JUnitTestCase.assertNotNull(argumentList);
-    EngineTestCase.assertSizeOfList(1, argumentList.arguments);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(argumentList, isNotNull);
+    expect(argumentList.arguments, hasLength(1));
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parseAssignableExpression_expression_dot() {
     PropertyAccess propertyAccess = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "(x).y");
-    JUnitTestCase.assertNotNull(propertyAccess.target);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(propertyAccess.target, isNotNull);
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parseAssignableExpression_expression_index() {
     IndexExpression expression = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "(x)[y]");
-    JUnitTestCase.assertNotNull(expression.target);
-    JUnitTestCase.assertNotNull(expression.leftBracket);
-    JUnitTestCase.assertNotNull(expression.index);
-    JUnitTestCase.assertNotNull(expression.rightBracket);
+    expect(expression.target, isNotNull);
+    expect(expression.leftBracket, isNotNull);
+    expect(expression.index, isNotNull);
+    expect(expression.rightBracket, isNotNull);
   }
 
   void test_parseAssignableExpression_identifier() {
     SimpleIdentifier identifier = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "x");
-    JUnitTestCase.assertNotNull(identifier);
+    expect(identifier, isNotNull);
   }
 
   void test_parseAssignableExpression_identifier_args_dot() {
     PropertyAccess propertyAccess = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "x(y).z");
     MethodInvocation invocation = propertyAccess.target as MethodInvocation;
-    JUnitTestCase.assertEquals("x", invocation.methodName.name);
+    expect(invocation.methodName.name, "x");
     ArgumentList argumentList = invocation.argumentList;
-    JUnitTestCase.assertNotNull(argumentList);
-    EngineTestCase.assertSizeOfList(1, argumentList.arguments);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(argumentList, isNotNull);
+    expect(argumentList.arguments, hasLength(1));
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parseAssignableExpression_identifier_dot() {
     PropertyAccess propertyAccess = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "x.y");
-    JUnitTestCase.assertNotNull(propertyAccess.target);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(propertyAccess.target, isNotNull);
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parseAssignableExpression_identifier_index() {
     IndexExpression expression = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "x[y]");
-    JUnitTestCase.assertNotNull(expression.target);
-    JUnitTestCase.assertNotNull(expression.leftBracket);
-    JUnitTestCase.assertNotNull(expression.index);
-    JUnitTestCase.assertNotNull(expression.rightBracket);
+    expect(expression.target, isNotNull);
+    expect(expression.leftBracket, isNotNull);
+    expect(expression.index, isNotNull);
+    expect(expression.rightBracket, isNotNull);
   }
 
   void test_parseAssignableExpression_super_dot() {
     PropertyAccess propertyAccess = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "super.y");
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, propertyAccess.target);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parseAssignableExpression_super_index() {
     IndexExpression expression = ParserTestCase.parse("parseAssignableExpression", <Object> [false], "super[y]");
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.target);
-    JUnitTestCase.assertNotNull(expression.leftBracket);
-    JUnitTestCase.assertNotNull(expression.index);
-    JUnitTestCase.assertNotNull(expression.rightBracket);
+    expect(expression.leftBracket, isNotNull);
+    expect(expression.index, isNotNull);
+    expect(expression.rightBracket, isNotNull);
   }
 
   void test_parseAssignableSelector_dot() {
     PropertyAccess selector = ParserTestCase.parse("parseAssignableSelector", <Object> [null, true], ".x");
-    JUnitTestCase.assertNotNull(selector.operator);
-    JUnitTestCase.assertNotNull(selector.propertyName);
+    expect(selector.operator, isNotNull);
+    expect(selector.propertyName, isNotNull);
   }
 
   void test_parseAssignableSelector_index() {
     IndexExpression selector = ParserTestCase.parse("parseAssignableSelector", <Object> [null, true], "[x]");
-    JUnitTestCase.assertNotNull(selector.leftBracket);
-    JUnitTestCase.assertNotNull(selector.index);
-    JUnitTestCase.assertNotNull(selector.rightBracket);
+    expect(selector.leftBracket, isNotNull);
+    expect(selector.index, isNotNull);
+    expect(selector.rightBracket, isNotNull);
   }
 
   void test_parseAssignableSelector_none() {
     SimpleIdentifier selector = ParserTestCase.parse("parseAssignableSelector", <Object> [new SimpleIdentifier(null), true], ";");
-    JUnitTestCase.assertNotNull(selector);
+    expect(selector, isNotNull);
   }
 
   void test_parseAwaitExpression() {
     AwaitExpression expression = ParserTestCase.parse4("parseAwaitExpression", "await x;", []);
-    JUnitTestCase.assertNotNull(expression.awaitKeyword);
-    JUnitTestCase.assertNotNull(expression.expression);
+    expect(expression.awaitKeyword, isNotNull);
+    expect(expression.expression, isNotNull);
   }
 
   void test_parseAwaitExpression_asStatement_inAsync() {
-    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], EngineTestCase.createSource(["m() async { await x; }"]));
+    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "m() async { await x; }");
     FunctionBody body = method.body;
     EngineTestCase.assertInstanceOf((obj) => obj is BlockFunctionBody, BlockFunctionBody, body);
     Statement statement = (body as BlockFunctionBody).block.statements[0];
     EngineTestCase.assertInstanceOf((obj) => obj is ExpressionStatement, ExpressionStatement, statement);
     Expression expression = (statement as ExpressionStatement).expression;
     EngineTestCase.assertInstanceOf((obj) => obj is AwaitExpression, AwaitExpression, expression);
-    JUnitTestCase.assertNotNull((expression as AwaitExpression).awaitKeyword);
-    JUnitTestCase.assertNotNull((expression as AwaitExpression).expression);
+    expect((expression as AwaitExpression).awaitKeyword, isNotNull);
+    expect((expression as AwaitExpression).expression, isNotNull);
   }
 
   void test_parseAwaitExpression_asStatement_inSync() {
-    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], EngineTestCase.createSource(["m() { await x; }"]));
+    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "m() { await x; }");
     FunctionBody body = method.body;
     EngineTestCase.assertInstanceOf((obj) => obj is BlockFunctionBody, BlockFunctionBody, body);
     Statement statement = (body as BlockFunctionBody).block.statements[0];
@@ -3923,7 +3936,7 @@
   }
 
   void test_parseAwaitExpression_inSync() {
-    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], EngineTestCase.createSource(["m() { return await x + await y; }"]));
+    MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "m() { return await x + await y; }");
     FunctionBody body = method.body;
     EngineTestCase.assertInstanceOf((obj) => obj is BlockFunctionBody, BlockFunctionBody, body);
     Statement statement = (body as BlockFunctionBody).block.statements[0];
@@ -3936,870 +3949,873 @@
 
   void test_parseBitwiseAndExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseAndExpression", "x & y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.AMPERSAND, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.AMPERSAND);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBitwiseAndExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseAndExpression", "super & y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.AMPERSAND, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.AMPERSAND);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBitwiseOrExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseOrExpression", "x | y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.BAR, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.BAR);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBitwiseOrExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseOrExpression", "super | y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.BAR, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.BAR);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBitwiseXorExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseXorExpression", "x ^ y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.CARET, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.CARET);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBitwiseXorExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseBitwiseXorExpression", "super ^ y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.CARET, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.CARET);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseBlock_empty() {
     Block block = ParserTestCase.parse4("parseBlock", "{}", []);
-    JUnitTestCase.assertNotNull(block.leftBracket);
-    EngineTestCase.assertSizeOfList(0, block.statements);
-    JUnitTestCase.assertNotNull(block.rightBracket);
+    expect(block.leftBracket, isNotNull);
+    expect(block.statements, hasLength(0));
+    expect(block.rightBracket, isNotNull);
   }
 
   void test_parseBlock_nonEmpty() {
     Block block = ParserTestCase.parse4("parseBlock", "{;}", []);
-    JUnitTestCase.assertNotNull(block.leftBracket);
-    EngineTestCase.assertSizeOfList(1, block.statements);
-    JUnitTestCase.assertNotNull(block.rightBracket);
+    expect(block.leftBracket, isNotNull);
+    expect(block.statements, hasLength(1));
+    expect(block.rightBracket, isNotNull);
   }
 
   void test_parseBreakStatement_label() {
     BreakStatement statement = ParserTestCase.parse4("parseBreakStatement", "break foo;", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.label);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.label, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseBreakStatement_noLabel() {
     BreakStatement statement = ParserTestCase.parse4("parseBreakStatement", "break;", [ParserErrorCode.BREAK_OUTSIDE_OF_LOOP]);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNull(statement.label);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.label, isNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseCascadeSection_i() {
     IndexExpression section = ParserTestCase.parse4("parseCascadeSection", "..[i]", []);
-    JUnitTestCase.assertNull(section.target);
-    JUnitTestCase.assertNotNull(section.leftBracket);
-    JUnitTestCase.assertNotNull(section.index);
-    JUnitTestCase.assertNotNull(section.rightBracket);
+    expect(section.target, isNull);
+    expect(section.leftBracket, isNotNull);
+    expect(section.index, isNotNull);
+    expect(section.rightBracket, isNotNull);
   }
 
   void test_parseCascadeSection_ia() {
     FunctionExpressionInvocation section = ParserTestCase.parse4("parseCascadeSection", "..[i](b)", []);
     EngineTestCase.assertInstanceOf((obj) => obj is IndexExpression, IndexExpression, section.function);
-    JUnitTestCase.assertNotNull(section.argumentList);
+    expect(section.argumentList, isNotNull);
   }
 
   void test_parseCascadeSection_ii() {
     MethodInvocation section = ParserTestCase.parse4("parseCascadeSection", "..a(b).c(d)", []);
     EngineTestCase.assertInstanceOf((obj) => obj is MethodInvocation, MethodInvocation, section.target);
-    JUnitTestCase.assertNotNull(section.period);
-    JUnitTestCase.assertNotNull(section.methodName);
-    JUnitTestCase.assertNotNull(section.argumentList);
-    EngineTestCase.assertSizeOfList(1, section.argumentList.arguments);
+    expect(section.period, isNotNull);
+    expect(section.methodName, isNotNull);
+    expect(section.argumentList, isNotNull);
+    expect(section.argumentList.arguments, hasLength(1));
   }
 
   void test_parseCascadeSection_p() {
     PropertyAccess section = ParserTestCase.parse4("parseCascadeSection", "..a", []);
-    JUnitTestCase.assertNull(section.target);
-    JUnitTestCase.assertNotNull(section.operator);
-    JUnitTestCase.assertNotNull(section.propertyName);
+    expect(section.target, isNull);
+    expect(section.operator, isNotNull);
+    expect(section.propertyName, isNotNull);
   }
 
   void test_parseCascadeSection_p_assign() {
     AssignmentExpression section = ParserTestCase.parse4("parseCascadeSection", "..a = 3", []);
-    JUnitTestCase.assertNotNull(section.leftHandSide);
-    JUnitTestCase.assertNotNull(section.operator);
+    expect(section.leftHandSide, isNotNull);
+    expect(section.operator, isNotNull);
     Expression rhs = section.rightHandSide;
-    JUnitTestCase.assertNotNull(rhs);
+    expect(rhs, isNotNull);
   }
 
   void test_parseCascadeSection_p_assign_withCascade() {
     AssignmentExpression section = ParserTestCase.parse4("parseCascadeSection", "..a = 3..m()", []);
-    JUnitTestCase.assertNotNull(section.leftHandSide);
-    JUnitTestCase.assertNotNull(section.operator);
+    expect(section.leftHandSide, isNotNull);
+    expect(section.operator, isNotNull);
     Expression rhs = section.rightHandSide;
     EngineTestCase.assertInstanceOf((obj) => obj is IntegerLiteral, IntegerLiteral, rhs);
   }
 
   void test_parseCascadeSection_p_builtIn() {
     PropertyAccess section = ParserTestCase.parse4("parseCascadeSection", "..as", []);
-    JUnitTestCase.assertNull(section.target);
-    JUnitTestCase.assertNotNull(section.operator);
-    JUnitTestCase.assertNotNull(section.propertyName);
+    expect(section.target, isNull);
+    expect(section.operator, isNotNull);
+    expect(section.propertyName, isNotNull);
   }
 
   void test_parseCascadeSection_pa() {
     MethodInvocation section = ParserTestCase.parse4("parseCascadeSection", "..a(b)", []);
-    JUnitTestCase.assertNull(section.target);
-    JUnitTestCase.assertNotNull(section.period);
-    JUnitTestCase.assertNotNull(section.methodName);
-    JUnitTestCase.assertNotNull(section.argumentList);
-    EngineTestCase.assertSizeOfList(1, section.argumentList.arguments);
+    expect(section.target, isNull);
+    expect(section.period, isNotNull);
+    expect(section.methodName, isNotNull);
+    expect(section.argumentList, isNotNull);
+    expect(section.argumentList.arguments, hasLength(1));
   }
 
   void test_parseCascadeSection_paa() {
     FunctionExpressionInvocation section = ParserTestCase.parse4("parseCascadeSection", "..a(b)(c)", []);
     EngineTestCase.assertInstanceOf((obj) => obj is MethodInvocation, MethodInvocation, section.function);
-    JUnitTestCase.assertNotNull(section.argumentList);
-    EngineTestCase.assertSizeOfList(1, section.argumentList.arguments);
+    expect(section.argumentList, isNotNull);
+    expect(section.argumentList.arguments, hasLength(1));
   }
 
   void test_parseCascadeSection_paapaa() {
     FunctionExpressionInvocation section = ParserTestCase.parse4("parseCascadeSection", "..a(b)(c).d(e)(f)", []);
     EngineTestCase.assertInstanceOf((obj) => obj is MethodInvocation, MethodInvocation, section.function);
-    JUnitTestCase.assertNotNull(section.argumentList);
-    EngineTestCase.assertSizeOfList(1, section.argumentList.arguments);
+    expect(section.argumentList, isNotNull);
+    expect(section.argumentList.arguments, hasLength(1));
   }
 
   void test_parseCascadeSection_pap() {
     PropertyAccess section = ParserTestCase.parse4("parseCascadeSection", "..a(b).c", []);
-    JUnitTestCase.assertNotNull(section.target);
-    JUnitTestCase.assertNotNull(section.operator);
-    JUnitTestCase.assertNotNull(section.propertyName);
+    expect(section.target, isNotNull);
+    expect(section.operator, isNotNull);
+    expect(section.propertyName, isNotNull);
   }
 
   void test_parseClassDeclaration_abstract() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [
         emptyCommentAndMetadata(),
         TokenFactory.tokenFromKeyword(Keyword.ABSTRACT)], "class A {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNotNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNull(declaration.extendsClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNotNull);
+    expect(declaration.extendsClause, isNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_empty() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNull(declaration.extendsClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_extends() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A extends B {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNotNull(declaration.extendsClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNotNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_extendsAndImplements() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A extends B implements C {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNotNull(declaration.extendsClause);
-    JUnitTestCase.assertNotNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNotNull);
+    expect(declaration.implementsClause, isNotNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_extendsAndWith() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A extends B with C {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.name);
-    JUnitTestCase.assertNull(declaration.typeParameters);
-    JUnitTestCase.assertNotNull(declaration.extendsClause);
-    JUnitTestCase.assertNotNull(declaration.withClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.typeParameters, isNull);
+    expect(declaration.extendsClause, isNotNull);
+    expect(declaration.withClause, isNotNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
   }
 
   void test_parseClassDeclaration_extendsAndWithAndImplements() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A extends B with C implements D {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.name);
-    JUnitTestCase.assertNull(declaration.typeParameters);
-    JUnitTestCase.assertNotNull(declaration.extendsClause);
-    JUnitTestCase.assertNotNull(declaration.withClause);
-    JUnitTestCase.assertNotNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.typeParameters, isNull);
+    expect(declaration.extendsClause, isNotNull);
+    expect(declaration.withClause, isNotNull);
+    expect(declaration.implementsClause, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
   }
 
   void test_parseClassDeclaration_implements() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A implements C {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNull(declaration.extendsClause);
-    JUnitTestCase.assertNotNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNull);
+    expect(declaration.implementsClause, isNotNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_native() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A native 'nativeValue' {}");
     NativeClause nativeClause = declaration.nativeClause;
-    JUnitTestCase.assertNotNull(nativeClause);
-    JUnitTestCase.assertNotNull(nativeClause.keyword);
-    JUnitTestCase.assertEquals("nativeValue", nativeClause.name.stringValue);
-    JUnitTestCase.assertSame(nativeClause.keyword, nativeClause.beginToken);
-    JUnitTestCase.assertSame(nativeClause.name.endToken, nativeClause.endToken);
+    expect(nativeClause, isNotNull);
+    expect(nativeClause.keyword, isNotNull);
+    expect(nativeClause.name.stringValue, "nativeValue");
+    expect(nativeClause.beginToken, same(nativeClause.keyword));
+    expect(nativeClause.endToken, same(nativeClause.name.endToken));
   }
 
   void test_parseClassDeclaration_nonEmpty() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A {var f;}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNull(declaration.extendsClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(1, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNull(declaration.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(1));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNull);
   }
 
   void test_parseClassDeclaration_typeAlias_implementsC() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A = Object with B implements C;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNotNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.implementsClause.keyword);
-    JUnitTestCase.assertEquals(1, typeAlias.implementsClause.interfaces.length);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.implementsClause, isNotNull);
+    expect(typeAlias.implementsClause.keyword, isNotNull);
+    expect(typeAlias.implementsClause.interfaces.length, 1);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseClassDeclaration_typeAlias_withB() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A = Object with B;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNotNull(typeAlias.withClause.withKeyword);
-    JUnitTestCase.assertEquals(1, typeAlias.withClause.mixinTypes.length);
-    JUnitTestCase.assertNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.withClause.withKeyword, isNotNull);
+    expect(typeAlias.withClause.mixinTypes.length, 1);
+    expect(typeAlias.implementsClause, isNull);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseClassDeclaration_typeParameters() {
     ClassDeclaration declaration = ParserTestCase.parse("parseClassDeclaration", <Object> [emptyCommentAndMetadata(), null], "class A<B> {}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNull(declaration.abstractKeyword);
-    JUnitTestCase.assertNull(declaration.extendsClause);
-    JUnitTestCase.assertNull(declaration.implementsClause);
-    JUnitTestCase.assertNotNull(declaration.classKeyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
-    JUnitTestCase.assertNotNull(declaration.typeParameters);
-    EngineTestCase.assertSizeOfList(1, declaration.typeParameters.typeParameters);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.abstractKeyword, isNull);
+    expect(declaration.extendsClause, isNull);
+    expect(declaration.implementsClause, isNull);
+    expect(declaration.classKeyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.members, hasLength(0));
+    expect(declaration.rightBracket, isNotNull);
+    expect(declaration.typeParameters, isNotNull);
+    expect(declaration.typeParameters.typeParameters, hasLength(1));
   }
 
   void test_parseClassMember_constructor_withInitializers() {
     // TODO(brianwilkerson) Test other kinds of class members: fields, getters and setters.
     ConstructorDeclaration constructor = ParserTestCase.parse("parseClassMember", <Object> ["C"], "C(_, _\$, this.__) : _a = _ + _\$ {}");
-    JUnitTestCase.assertNotNull(constructor.body);
-    JUnitTestCase.assertNotNull(constructor.separator);
-    JUnitTestCase.assertNull(constructor.externalKeyword);
-    JUnitTestCase.assertNull(constructor.constKeyword);
-    JUnitTestCase.assertNull(constructor.factoryKeyword);
-    JUnitTestCase.assertNull(constructor.name);
-    JUnitTestCase.assertNotNull(constructor.parameters);
-    JUnitTestCase.assertNull(constructor.period);
-    JUnitTestCase.assertNotNull(constructor.returnType);
-    EngineTestCase.assertSizeOfList(1, constructor.initializers);
+    expect(constructor.body, isNotNull);
+    expect(constructor.separator, isNotNull);
+    expect(constructor.externalKeyword, isNull);
+    expect(constructor.constKeyword, isNull);
+    expect(constructor.factoryKeyword, isNull);
+    expect(constructor.name, isNull);
+    expect(constructor.parameters, isNotNull);
+    expect(constructor.period, isNull);
+    expect(constructor.returnType, isNotNull);
+    expect(constructor.initializers, hasLength(1));
   }
 
   void test_parseClassMember_field_instance_prefixedType() {
     FieldDeclaration field = ParserTestCase.parse("parseClassMember", <Object> ["C"], "p.A f;");
-    JUnitTestCase.assertNull(field.documentationComment);
-    EngineTestCase.assertSizeOfList(0, field.metadata);
-    JUnitTestCase.assertNull(field.staticKeyword);
+    expect(field.documentationComment, isNull);
+    expect(field.metadata, hasLength(0));
+    expect(field.staticKeyword, isNull);
     VariableDeclarationList list = field.fields;
-    JUnitTestCase.assertNotNull(list);
+    expect(list, isNotNull);
     NodeList<VariableDeclaration> variables = list.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     VariableDeclaration variable = variables[0];
-    JUnitTestCase.assertNotNull(variable.name);
+    expect(variable.name, isNotNull);
   }
 
   void test_parseClassMember_field_namedGet() {
     FieldDeclaration field = ParserTestCase.parse("parseClassMember", <Object> ["C"], "var get;");
-    JUnitTestCase.assertNull(field.documentationComment);
-    EngineTestCase.assertSizeOfList(0, field.metadata);
-    JUnitTestCase.assertNull(field.staticKeyword);
+    expect(field.documentationComment, isNull);
+    expect(field.metadata, hasLength(0));
+    expect(field.staticKeyword, isNull);
     VariableDeclarationList list = field.fields;
-    JUnitTestCase.assertNotNull(list);
+    expect(list, isNotNull);
     NodeList<VariableDeclaration> variables = list.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     VariableDeclaration variable = variables[0];
-    JUnitTestCase.assertNotNull(variable.name);
+    expect(variable.name, isNotNull);
   }
 
   void test_parseClassMember_field_namedOperator() {
     FieldDeclaration field = ParserTestCase.parse("parseClassMember", <Object> ["C"], "var operator;");
-    JUnitTestCase.assertNull(field.documentationComment);
-    EngineTestCase.assertSizeOfList(0, field.metadata);
-    JUnitTestCase.assertNull(field.staticKeyword);
+    expect(field.documentationComment, isNull);
+    expect(field.metadata, hasLength(0));
+    expect(field.staticKeyword, isNull);
     VariableDeclarationList list = field.fields;
-    JUnitTestCase.assertNotNull(list);
+    expect(list, isNotNull);
     NodeList<VariableDeclaration> variables = list.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     VariableDeclaration variable = variables[0];
-    JUnitTestCase.assertNotNull(variable.name);
+    expect(variable.name, isNotNull);
   }
 
   void test_parseClassMember_field_namedOperator_withAssignment() {
     FieldDeclaration field = ParserTestCase.parse("parseClassMember", <Object> ["C"], "var operator = (5);");
-    JUnitTestCase.assertNull(field.documentationComment);
-    EngineTestCase.assertSizeOfList(0, field.metadata);
-    JUnitTestCase.assertNull(field.staticKeyword);
+    expect(field.documentationComment, isNull);
+    expect(field.metadata, hasLength(0));
+    expect(field.staticKeyword, isNull);
     VariableDeclarationList list = field.fields;
-    JUnitTestCase.assertNotNull(list);
+    expect(list, isNotNull);
     NodeList<VariableDeclaration> variables = list.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     VariableDeclaration variable = variables[0];
-    JUnitTestCase.assertNotNull(variable.name);
-    JUnitTestCase.assertNotNull(variable.initializer);
+    expect(variable.name, isNotNull);
+    expect(variable.initializer, isNotNull);
   }
 
   void test_parseClassMember_field_namedSet() {
     FieldDeclaration field = ParserTestCase.parse("parseClassMember", <Object> ["C"], "var set;");
-    JUnitTestCase.assertNull(field.documentationComment);
-    EngineTestCase.assertSizeOfList(0, field.metadata);
-    JUnitTestCase.assertNull(field.staticKeyword);
+    expect(field.documentationComment, isNull);
+    expect(field.metadata, hasLength(0));
+    expect(field.staticKeyword, isNull);
     VariableDeclarationList list = field.fields;
-    JUnitTestCase.assertNotNull(list);
+    expect(list, isNotNull);
     NodeList<VariableDeclaration> variables = list.variables;
-    EngineTestCase.assertSizeOfList(1, variables);
+    expect(variables, hasLength(1));
     VariableDeclaration variable = variables[0];
-    JUnitTestCase.assertNotNull(variable.name);
+    expect(variable.name, isNotNull);
   }
 
   void test_parseClassMember_getter_void() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "void get g {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNotNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_external() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "external m();");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNotNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNull(method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNotNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNull);
   }
 
   void test_parseClassMember_method_external_withTypeAndArgs() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "external int m(int a);");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNotNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNotNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
   }
 
   void test_parseClassMember_method_get_noType() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "get() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_get_type() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "int get() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_get_void() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "void get() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_operator_noType() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "operator() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_operator_type() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "int operator() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_operator_void() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "void operator() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_returnType_parameterized() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "p.A m() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_set_noType() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "set() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_set_type() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "int set() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_method_set_void() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "void set() {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_operator_index() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "int operator [](int i) {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNotNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNotNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_operator_indexAssign() {
     MethodDeclaration method = ParserTestCase.parse("parseClassMember", <Object> ["C"], "int operator []=(int i) {}");
-    JUnitTestCase.assertNull(method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertNotNull(method.returnType);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNotNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.body);
+    expect(method.documentationComment, isNull);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, isNotNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNotNull);
+    expect(method.parameters, isNotNull);
+    expect(method.body, isNotNull);
   }
 
   void test_parseClassMember_redirectingFactory_const() {
     ConstructorDeclaration constructor = ParserTestCase.parse("parseClassMember", <Object> ["C"], "const factory C() = B;");
-    JUnitTestCase.assertNull(constructor.externalKeyword);
-    JUnitTestCase.assertNotNull(constructor.constKeyword);
-    JUnitTestCase.assertNotNull(constructor.factoryKeyword);
-    JUnitTestCase.assertNotNull(constructor.returnType);
-    JUnitTestCase.assertNull(constructor.period);
-    JUnitTestCase.assertNull(constructor.name);
-    JUnitTestCase.assertNotNull(constructor.parameters);
-    JUnitTestCase.assertNotNull(constructor.separator);
-    EngineTestCase.assertSizeOfList(0, constructor.initializers);
-    JUnitTestCase.assertNotNull(constructor.redirectedConstructor);
-    JUnitTestCase.assertNotNull(constructor.body);
+    expect(constructor.externalKeyword, isNull);
+    expect(constructor.constKeyword, isNotNull);
+    expect(constructor.factoryKeyword, isNotNull);
+    expect(constructor.returnType, isNotNull);
+    expect(constructor.period, isNull);
+    expect(constructor.name, isNull);
+    expect(constructor.parameters, isNotNull);
+    expect(constructor.separator, isNotNull);
+    expect(constructor.initializers, hasLength(0));
+    expect(constructor.redirectedConstructor, isNotNull);
+    expect(constructor.body, isNotNull);
   }
 
   void test_parseClassMember_redirectingFactory_nonConst() {
     ConstructorDeclaration constructor = ParserTestCase.parse("parseClassMember", <Object> ["C"], "factory C() = B;");
-    JUnitTestCase.assertNull(constructor.externalKeyword);
-    JUnitTestCase.assertNull(constructor.constKeyword);
-    JUnitTestCase.assertNotNull(constructor.factoryKeyword);
-    JUnitTestCase.assertNotNull(constructor.returnType);
-    JUnitTestCase.assertNull(constructor.period);
-    JUnitTestCase.assertNull(constructor.name);
-    JUnitTestCase.assertNotNull(constructor.parameters);
-    JUnitTestCase.assertNotNull(constructor.separator);
-    EngineTestCase.assertSizeOfList(0, constructor.initializers);
-    JUnitTestCase.assertNotNull(constructor.redirectedConstructor);
-    JUnitTestCase.assertNotNull(constructor.body);
+    expect(constructor.externalKeyword, isNull);
+    expect(constructor.constKeyword, isNull);
+    expect(constructor.factoryKeyword, isNotNull);
+    expect(constructor.returnType, isNotNull);
+    expect(constructor.period, isNull);
+    expect(constructor.name, isNull);
+    expect(constructor.parameters, isNotNull);
+    expect(constructor.separator, isNotNull);
+    expect(constructor.initializers, hasLength(0));
+    expect(constructor.redirectedConstructor, isNotNull);
+    expect(constructor.body, isNotNull);
   }
 
   void test_parseClassTypeAlias_abstract() {
     Token classToken = TokenFactory.tokenFromKeyword(Keyword.CLASS);
     Token abstractToken = TokenFactory.tokenFromKeyword(Keyword.ABSTRACT);
     ClassTypeAlias classTypeAlias = ParserTestCase.parse("parseClassTypeAlias", <Object> [emptyCommentAndMetadata(), abstractToken, classToken], "A = B with C;");
-    JUnitTestCase.assertNotNull(classTypeAlias.keyword);
-    JUnitTestCase.assertEquals("A", classTypeAlias.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.equals);
-    JUnitTestCase.assertNotNull(classTypeAlias.abstractKeyword);
-    JUnitTestCase.assertNotNullMsg("B", classTypeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.withClause);
-    JUnitTestCase.assertNull(classTypeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.semicolon);
+    expect(classTypeAlias.keyword, isNotNull);
+    expect(classTypeAlias.name.name, "A");
+    expect(classTypeAlias.equals, isNotNull);
+    expect(classTypeAlias.abstractKeyword, isNotNull);
+    expect(classTypeAlias.superclass.name.name, isNotNull, reason: "B");
+    expect(classTypeAlias.withClause, isNotNull);
+    expect(classTypeAlias.implementsClause, isNull);
+    expect(classTypeAlias.semicolon, isNotNull);
   }
 
   void test_parseClassTypeAlias_implements() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.CLASS);
     ClassTypeAlias classTypeAlias = ParserTestCase.parse("parseClassTypeAlias", <Object> [emptyCommentAndMetadata(), null, token], "A = B with C implements D;");
-    JUnitTestCase.assertNotNull(classTypeAlias.keyword);
-    JUnitTestCase.assertEquals("A", classTypeAlias.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.equals);
-    JUnitTestCase.assertNull(classTypeAlias.abstractKeyword);
-    JUnitTestCase.assertNotNullMsg("B", classTypeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.withClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.semicolon);
+    expect(classTypeAlias.keyword, isNotNull);
+    expect(classTypeAlias.name.name, "A");
+    expect(classTypeAlias.equals, isNotNull);
+    expect(classTypeAlias.abstractKeyword, isNull);
+    expect(classTypeAlias.superclass.name.name, isNotNull, reason: "B");
+    expect(classTypeAlias.withClause, isNotNull);
+    expect(classTypeAlias.implementsClause, isNotNull);
+    expect(classTypeAlias.semicolon, isNotNull);
   }
 
   void test_parseClassTypeAlias_with() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.CLASS);
     ClassTypeAlias classTypeAlias = ParserTestCase.parse("parseClassTypeAlias", <Object> [emptyCommentAndMetadata(), null, token], "A = B with C;");
-    JUnitTestCase.assertNotNull(classTypeAlias.keyword);
-    JUnitTestCase.assertEquals("A", classTypeAlias.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.equals);
-    JUnitTestCase.assertNull(classTypeAlias.abstractKeyword);
-    JUnitTestCase.assertNotNullMsg("B", classTypeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.withClause);
-    JUnitTestCase.assertNull(classTypeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.semicolon);
+    expect(classTypeAlias.keyword, isNotNull);
+    expect(classTypeAlias.name.name, "A");
+    expect(classTypeAlias.equals, isNotNull);
+    expect(classTypeAlias.abstractKeyword, isNull);
+    expect(classTypeAlias.superclass.name.name, isNotNull, reason: "B");
+    expect(classTypeAlias.withClause, isNotNull);
+    expect(classTypeAlias.implementsClause, isNull);
+    expect(classTypeAlias.semicolon, isNotNull);
   }
 
   void test_parseClassTypeAlias_with_implements() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.CLASS);
     ClassTypeAlias classTypeAlias = ParserTestCase.parse("parseClassTypeAlias", <Object> [emptyCommentAndMetadata(), null, token], "A = B with C implements D;");
-    JUnitTestCase.assertNotNull(classTypeAlias.keyword);
-    JUnitTestCase.assertEquals("A", classTypeAlias.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.equals);
-    JUnitTestCase.assertNull(classTypeAlias.abstractKeyword);
-    JUnitTestCase.assertNotNullMsg("B", classTypeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(classTypeAlias.withClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(classTypeAlias.semicolon);
+    expect(classTypeAlias.keyword, isNotNull);
+    expect(classTypeAlias.name.name, "A");
+    expect(classTypeAlias.equals, isNotNull);
+    expect(classTypeAlias.abstractKeyword, isNull);
+    expect(classTypeAlias.superclass.name.name, isNotNull, reason: "B");
+    expect(classTypeAlias.withClause, isNotNull);
+    expect(classTypeAlias.implementsClause, isNotNull);
+    expect(classTypeAlias.semicolon, isNotNull);
   }
 
   void test_parseCombinators_h() {
     List<Combinator> combinators = ParserTestCase.parse4("parseCombinators", "hide a;", []);
-    EngineTestCase.assertSizeOfList(1, combinators);
+    expect(combinators, hasLength(1));
     HideCombinator combinator = combinators[0] as HideCombinator;
-    JUnitTestCase.assertNotNull(combinator);
-    JUnitTestCase.assertNotNull(combinator.keyword);
-    EngineTestCase.assertSizeOfList(1, combinator.hiddenNames);
+    expect(combinator, isNotNull);
+    expect(combinator.keyword, isNotNull);
+    expect(combinator.hiddenNames, hasLength(1));
   }
 
   void test_parseCombinators_hs() {
     List<Combinator> combinators = ParserTestCase.parse4("parseCombinators", "hide a show b;", []);
-    EngineTestCase.assertSizeOfList(2, combinators);
+    expect(combinators, hasLength(2));
     HideCombinator hideCombinator = combinators[0] as HideCombinator;
-    JUnitTestCase.assertNotNull(hideCombinator);
-    JUnitTestCase.assertNotNull(hideCombinator.keyword);
-    EngineTestCase.assertSizeOfList(1, hideCombinator.hiddenNames);
+    expect(hideCombinator, isNotNull);
+    expect(hideCombinator.keyword, isNotNull);
+    expect(hideCombinator.hiddenNames, hasLength(1));
     ShowCombinator showCombinator = combinators[1] as ShowCombinator;
-    JUnitTestCase.assertNotNull(showCombinator);
-    JUnitTestCase.assertNotNull(showCombinator.keyword);
-    EngineTestCase.assertSizeOfList(1, showCombinator.shownNames);
+    expect(showCombinator, isNotNull);
+    expect(showCombinator.keyword, isNotNull);
+    expect(showCombinator.shownNames, hasLength(1));
   }
 
   void test_parseCombinators_hshs() {
     List<Combinator> combinators = ParserTestCase.parse4("parseCombinators", "hide a show b hide c show d;", []);
-    EngineTestCase.assertSizeOfList(4, combinators);
+    expect(combinators, hasLength(4));
   }
 
   void test_parseCombinators_s() {
     List<Combinator> combinators = ParserTestCase.parse4("parseCombinators", "show a;", []);
-    EngineTestCase.assertSizeOfList(1, combinators);
+    expect(combinators, hasLength(1));
     ShowCombinator combinator = combinators[0] as ShowCombinator;
-    JUnitTestCase.assertNotNull(combinator);
-    JUnitTestCase.assertNotNull(combinator.keyword);
-    EngineTestCase.assertSizeOfList(1, combinator.shownNames);
+    expect(combinator, isNotNull);
+    expect(combinator.keyword, isNotNull);
+    expect(combinator.shownNames, hasLength(1));
   }
 
   void test_parseCommentAndMetadata_c() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "/** 1 */ void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(0, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(0));
   }
 
   void test_parseCommentAndMetadata_cmc() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "/** 1 */ @A /** 2 */ void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(1, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(1));
   }
 
   void test_parseCommentAndMetadata_cmcm() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "/** 1 */ @A /** 2 */ @B void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(2, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(2));
   }
 
   void test_parseCommentAndMetadata_cmm() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "/** 1 */ @A @B void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(2, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(2));
   }
 
   void test_parseCommentAndMetadata_m() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "@A void", []);
-    JUnitTestCase.assertNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(1, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNull);
+    expect(commentAndMetadata.metadata, hasLength(1));
   }
 
   void test_parseCommentAndMetadata_mcm() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "@A /** 1 */ @B void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(2, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(2));
   }
 
   void test_parseCommentAndMetadata_mcmc() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "@A /** 1 */ @B /** 2 */ void", []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(2, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(2));
   }
 
   void test_parseCommentAndMetadata_mm() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "@A @B(x) void", []);
-    JUnitTestCase.assertNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(2, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNull);
+    expect(commentAndMetadata.metadata, hasLength(2));
   }
 
   void test_parseCommentAndMetadata_none() {
     CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", "void", []);
-    JUnitTestCase.assertNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(0, commentAndMetadata.metadata);
+    expect(commentAndMetadata.comment, isNull);
+    expect(commentAndMetadata.metadata, hasLength(0));
   }
 
   void test_parseCommentAndMetadata_singleLine() {
-    CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", EngineTestCase.createSource(["/// 1", "/// 2", "void"]), []);
-    JUnitTestCase.assertNotNull(commentAndMetadata.comment);
-    EngineTestCase.assertSizeOfList(0, commentAndMetadata.metadata);
+    CommentAndMetadata commentAndMetadata = ParserTestCase.parse4("parseCommentAndMetadata", r'''
+/// 1
+/// 2
+void''', []);
+    expect(commentAndMetadata.comment, isNotNull);
+    expect(commentAndMetadata.metadata, hasLength(0));
   }
 
   void test_parseCommentReference_new_prefixed() {
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["new a.b", 7], "");
     PrefixedIdentifier prefixedIdentifier = EngineTestCase.assertInstanceOf((obj) => obj is PrefixedIdentifier, PrefixedIdentifier, reference.identifier);
     SimpleIdentifier prefix = prefixedIdentifier.prefix;
-    JUnitTestCase.assertNotNull(prefix.token);
-    JUnitTestCase.assertEquals("a", prefix.name);
-    JUnitTestCase.assertEquals(11, prefix.offset);
-    JUnitTestCase.assertNotNull(prefixedIdentifier.period);
+    expect(prefix.token, isNotNull);
+    expect(prefix.name, "a");
+    expect(prefix.offset, 11);
+    expect(prefixedIdentifier.period, isNotNull);
     SimpleIdentifier identifier = prefixedIdentifier.identifier;
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("b", identifier.name);
-    JUnitTestCase.assertEquals(13, identifier.offset);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "b");
+    expect(identifier.offset, 13);
   }
 
   void test_parseCommentReference_new_simple() {
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["new a", 5], "");
     SimpleIdentifier identifier = EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, reference.identifier);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("a", identifier.name);
-    JUnitTestCase.assertEquals(9, identifier.offset);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "a");
+    expect(identifier.offset, 9);
   }
 
   void test_parseCommentReference_prefixed() {
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["a.b", 7], "");
     PrefixedIdentifier prefixedIdentifier = EngineTestCase.assertInstanceOf((obj) => obj is PrefixedIdentifier, PrefixedIdentifier, reference.identifier);
     SimpleIdentifier prefix = prefixedIdentifier.prefix;
-    JUnitTestCase.assertNotNull(prefix.token);
-    JUnitTestCase.assertEquals("a", prefix.name);
-    JUnitTestCase.assertEquals(7, prefix.offset);
-    JUnitTestCase.assertNotNull(prefixedIdentifier.period);
+    expect(prefix.token, isNotNull);
+    expect(prefix.name, "a");
+    expect(prefix.offset, 7);
+    expect(prefixedIdentifier.period, isNotNull);
     SimpleIdentifier identifier = prefixedIdentifier.identifier;
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("b", identifier.name);
-    JUnitTestCase.assertEquals(9, identifier.offset);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "b");
+    expect(identifier.offset, 9);
   }
 
   void test_parseCommentReference_simple() {
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["a", 5], "");
     SimpleIdentifier identifier = EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, reference.identifier);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("a", identifier.name);
-    JUnitTestCase.assertEquals(5, identifier.offset);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "a");
+    expect(identifier.offset, 5);
   }
 
   void test_parseCommentReference_synthetic() {
     CommentReference reference = ParserTestCase.parse("parseCommentReference", <Object> ["", 5], "");
     SimpleIdentifier identifier = EngineTestCase.assertInstanceOf((obj) => obj is SimpleIdentifier, SimpleIdentifier, reference.identifier);
-    JUnitTestCase.assertNotNull(identifier);
-    JUnitTestCase.assertTrue(identifier.isSynthetic);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals("", identifier.name);
-    JUnitTestCase.assertEquals(5, identifier.offset);
+    expect(identifier, isNotNull);
+    expect(identifier.isSynthetic, isTrue);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, "");
+    expect(identifier.offset, 5);
   }
 
   void test_parseCommentReferences_multiLine() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** xxx [a] yyy [b] zzz */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(2, references);
+    expect(references, hasLength(2));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(12, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 12);
     reference = references[1];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(20, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 20);
   }
 
   void test_parseCommentReferences_notClosed_noIdentifier() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [ some text", 5)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertTrue(reference.identifier.isSynthetic);
-    JUnitTestCase.assertEquals("", reference.identifier.name);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.identifier.isSynthetic, isTrue);
+    expect(reference.identifier.name, "");
   }
 
   void test_parseCommentReferences_notClosed_withIdentifier() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [namePrefix some text", 5)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertFalse(reference.identifier.isSynthetic);
-    JUnitTestCase.assertEquals("namePrefix", reference.identifier.name);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.identifier.isSynthetic, isFalse);
+    expect(reference.identifier.name, "namePrefix");
   }
 
   void test_parseCommentReferences_singleLine() {
@@ -4807,76 +4823,76 @@
         new StringToken(TokenType.SINGLE_LINE_COMMENT, "/// xxx [a] yyy [b] zzz", 3),
         new StringToken(TokenType.SINGLE_LINE_COMMENT, "/// x [c]", 28)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(3, references);
+    expect(references, hasLength(3));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(12, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 12);
     reference = references[1];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(20, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 20);
     reference = references[2];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(35, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 35);
   }
 
   void test_parseCommentReferences_skipCodeBlock_bracketed() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [:xxx [a] yyy:] [b] zzz */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(24, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 24);
   }
 
   void test_parseCommentReferences_skipCodeBlock_spaces() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/**\n *     a[i]\n * xxx [i] zzz\n */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(27, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 27);
   }
 
   void test_parseCommentReferences_skipLinkDefinition() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [a]: http://www.google.com (Google) [b] zzz */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(44, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 44);
   }
 
   void test_parseCommentReferences_skipLinked() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [a](http://www.google.com) [b] zzz */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(35, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 35);
   }
 
   void test_parseCommentReferences_skipReferenceLink() {
     List<Token> tokens = <Token> [new StringToken(TokenType.MULTI_LINE_COMMENT, "/** [a][c] [b] zzz */", 3)];
     List<CommentReference> references = ParserTestCase.parse("parseCommentReferences", <Object> [tokens], "");
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertNotNull(reference.identifier);
-    JUnitTestCase.assertEquals(15, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.identifier, isNotNull);
+    expect(reference.offset, 15);
   }
 
   void test_parseCompilationUnit_abstractAsPrefix_parameterized() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "abstract<dynamic> _abstract = new abstract.A();", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_builtIn_asFunctionName() {
@@ -4899,316 +4915,316 @@
 
   void test_parseCompilationUnit_directives_multiple() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "library l;\npart 'a.dart';", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(2, unit.directives);
-    EngineTestCase.assertSizeOfList(0, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(2));
+    expect(unit.declarations, hasLength(0));
   }
 
   void test_parseCompilationUnit_directives_single() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "library l;", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(1, unit.directives);
-    EngineTestCase.assertSizeOfList(0, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(1));
+    expect(unit.declarations, hasLength(0));
   }
 
   void test_parseCompilationUnit_empty() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(0, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(0));
   }
 
   void test_parseCompilationUnit_exportAsPrefix() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "export.A _export = new export.A();", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_exportAsPrefix_parameterized() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "export<dynamic> _export = new export.A();", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_operatorAsPrefix_parameterized() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "operator<dynamic> _operator = new operator.A();", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_script() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "#! /bin/dart", []);
-    JUnitTestCase.assertNotNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(0, unit.declarations);
+    expect(unit.scriptTag, isNotNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(0));
   }
 
   void test_parseCompilationUnit_skipFunctionBody_withInterpolation() {
     ParserTestCase.parseFunctionBodies = false;
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "f() { '\${n}'; }", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_topLevelDeclaration() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "class A {}", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnit_typedefAsPrefix() {
     CompilationUnit unit = ParserTestCase.parse4("parseCompilationUnit", "typedef.A _typedef = new typedef.A();", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
-    EngineTestCase.assertSizeOfList(1, unit.declarations);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
+    expect(unit.declarations, hasLength(1));
   }
 
   void test_parseCompilationUnitMember_abstractAsPrefix() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "abstract.A _abstract = new abstract.A();");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseCompilationUnitMember_class() {
     ClassDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "class A {}");
-    JUnitTestCase.assertEquals("A", declaration.name.name);
-    EngineTestCase.assertSizeOfList(0, declaration.members);
+    expect(declaration.name.name, "A");
+    expect(declaration.members, hasLength(0));
   }
 
   void test_parseCompilationUnitMember_classTypeAlias() {
     ClassTypeAlias alias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "abstract class A = B with C;");
-    JUnitTestCase.assertEquals("A", alias.name.name);
-    JUnitTestCase.assertNotNull(alias.abstractKeyword);
+    expect(alias.name.name, "A");
+    expect(alias.abstractKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_constVariable() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "const int x = 0;");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseCompilationUnitMember_finalVariable() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "final x = 0;");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseCompilationUnitMember_function_external_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external f();");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNull);
   }
 
   void test_parseCompilationUnitMember_function_external_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external int f();");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNull);
   }
 
   void test_parseCompilationUnitMember_function_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "f() {}");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNull(declaration.propertyKeyword);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNull);
   }
 
   void test_parseCompilationUnitMember_function_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "int f() {}");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNull(declaration.propertyKeyword);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNull);
   }
 
   void test_parseCompilationUnitMember_function_void() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "void f() {}");
-    JUnitTestCase.assertNotNull(declaration.returnType);
+    expect(declaration.returnType, isNotNull);
   }
 
   void test_parseCompilationUnitMember_getter_external_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external get p;");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_getter_external_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external int get p;");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_getter_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "get p => 0;");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_getter_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "int get p => 0;");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_setter_external_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external set p(v);");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_setter_external_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "external void set p(int v);");
-    JUnitTestCase.assertNotNull(declaration.externalKeyword);
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.externalKeyword, isNotNull);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_setter_noType() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "set p(v) {}");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseCompilationUnitMember_setter_type() {
     FunctionDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "void set p(int v) {}");
-    JUnitTestCase.assertNotNull(declaration.functionExpression);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
-    JUnitTestCase.assertNotNull(declaration.returnType);
+    expect(declaration.functionExpression, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
+    expect(declaration.returnType, isNotNull);
   }
 
   void test_parseCompilationUnitMember_typeAlias_abstract() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "abstract class C = S with M;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertEquals("C", typeAlias.name.name);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.equals);
-    JUnitTestCase.assertNotNull(typeAlias.abstractKeyword);
-    JUnitTestCase.assertEquals("S", typeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name.name, "C");
+    expect(typeAlias.typeParameters, isNull);
+    expect(typeAlias.equals, isNotNull);
+    expect(typeAlias.abstractKeyword, isNotNull);
+    expect(typeAlias.superclass.name.name, "S");
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.implementsClause, isNull);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseCompilationUnitMember_typeAlias_generic() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "class C<E> = S<E> with M<E> implements I<E>;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertEquals("C", typeAlias.name.name);
-    EngineTestCase.assertSizeOfList(1, typeAlias.typeParameters.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.equals);
-    JUnitTestCase.assertNull(typeAlias.abstractKeyword);
-    JUnitTestCase.assertEquals("S", typeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNotNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name.name, "C");
+    expect(typeAlias.typeParameters.typeParameters, hasLength(1));
+    expect(typeAlias.equals, isNotNull);
+    expect(typeAlias.abstractKeyword, isNull);
+    expect(typeAlias.superclass.name.name, "S");
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.implementsClause, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseCompilationUnitMember_typeAlias_implements() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "class C = S with M implements I;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertEquals("C", typeAlias.name.name);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.equals);
-    JUnitTestCase.assertNull(typeAlias.abstractKeyword);
-    JUnitTestCase.assertEquals("S", typeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNotNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name.name, "C");
+    expect(typeAlias.typeParameters, isNull);
+    expect(typeAlias.equals, isNotNull);
+    expect(typeAlias.abstractKeyword, isNull);
+    expect(typeAlias.superclass.name.name, "S");
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.implementsClause, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseCompilationUnitMember_typeAlias_noImplements() {
     ClassTypeAlias typeAlias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "class C = S with M;");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertEquals("C", typeAlias.name.name);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
-    JUnitTestCase.assertNotNull(typeAlias.equals);
-    JUnitTestCase.assertNull(typeAlias.abstractKeyword);
-    JUnitTestCase.assertEquals("S", typeAlias.superclass.name.name);
-    JUnitTestCase.assertNotNull(typeAlias.withClause);
-    JUnitTestCase.assertNull(typeAlias.implementsClause);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name.name, "C");
+    expect(typeAlias.typeParameters, isNull);
+    expect(typeAlias.equals, isNotNull);
+    expect(typeAlias.abstractKeyword, isNull);
+    expect(typeAlias.superclass.name.name, "S");
+    expect(typeAlias.withClause, isNotNull);
+    expect(typeAlias.implementsClause, isNull);
+    expect(typeAlias.semicolon, isNotNull);
   }
 
   void test_parseCompilationUnitMember_typedef() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "typedef F();");
-    JUnitTestCase.assertEquals("F", typeAlias.name.name);
-    EngineTestCase.assertSizeOfList(0, typeAlias.parameters.parameters);
+    expect(typeAlias.name.name, "F");
+    expect(typeAlias.parameters.parameters, hasLength(0));
   }
 
   void test_parseCompilationUnitMember_variable() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "var x = 0;");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseCompilationUnitMember_variableGet() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "String get = null;");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseCompilationUnitMember_variableSet() {
     TopLevelVariableDeclaration declaration = ParserTestCase.parse("parseCompilationUnitMember", <Object> [emptyCommentAndMetadata()], "String set = null;");
-    JUnitTestCase.assertNotNull(declaration.semicolon);
-    JUnitTestCase.assertNotNull(declaration.variables);
+    expect(declaration.semicolon, isNotNull);
+    expect(declaration.variables, isNotNull);
   }
 
   void test_parseConditionalExpression() {
     ConditionalExpression expression = ParserTestCase.parse4("parseConditionalExpression", "x ? y : z", []);
-    JUnitTestCase.assertNotNull(expression.condition);
-    JUnitTestCase.assertNotNull(expression.question);
-    JUnitTestCase.assertNotNull(expression.thenExpression);
-    JUnitTestCase.assertNotNull(expression.colon);
-    JUnitTestCase.assertNotNull(expression.elseExpression);
+    expect(expression.condition, isNotNull);
+    expect(expression.question, isNotNull);
+    expect(expression.thenExpression, isNotNull);
+    expect(expression.colon, isNotNull);
+    expect(expression.elseExpression, isNotNull);
   }
 
   void test_parseConstExpression_instanceCreation() {
     InstanceCreationExpression expression = ParserTestCase.parse4("parseConstExpression", "const A()", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
+    expect(expression.keyword, isNotNull);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseConstExpression_listLiteral_typed() {
     ListLiteral literal = ParserTestCase.parse4("parseConstExpression", "const <A> []", []);
-    JUnitTestCase.assertNotNull(literal.constKeyword);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNotNull);
+    expect(literal.typeArguments, isNotNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseConstExpression_listLiteral_untyped() {
     ListLiteral literal = ParserTestCase.parse4("parseConstExpression", "const []", []);
-    JUnitTestCase.assertNotNull(literal.constKeyword);
-    JUnitTestCase.assertNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNotNull);
+    expect(literal.typeArguments, isNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseConstExpression_mapLiteral_typed() {
     MapLiteral literal = ParserTestCase.parse4("parseConstExpression", "const <A, B> {}", []);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
+    expect(literal.typeArguments, isNotNull);
   }
 
   void test_parseConstExpression_mapLiteral_untyped() {
     MapLiteral literal = ParserTestCase.parse4("parseConstExpression", "const {}", []);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
-    JUnitTestCase.assertNull(literal.typeArguments);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
+    expect(literal.typeArguments, isNull);
   }
 
   void test_parseConstructor() {
@@ -5225,7 +5241,7 @@
     EngineTestCase.assertInstanceOf((obj) => obj is ConstructorDeclaration, ConstructorDeclaration, classMember);
     ConstructorDeclaration constructor = classMember as ConstructorDeclaration;
     NodeList<ConstructorInitializer> initializers = constructor.initializers;
-    EngineTestCase.assertSizeOfList(1, initializers);
+    expect(initializers, hasLength(1));
     ConstructorInitializer initializer = initializers[0];
     EngineTestCase.assertInstanceOf((obj) => obj is ConstructorFieldInitializer, ConstructorFieldInitializer, initializer);
     EngineTestCase.assertInstanceOf((obj) => obj is ParenthesizedExpression, ParenthesizedExpression, (initializer as ConstructorFieldInitializer).expression);
@@ -5234,942 +5250,942 @@
 
   void test_parseConstructorFieldInitializer_qualified() {
     ConstructorFieldInitializer invocation = ParserTestCase.parse4("parseConstructorFieldInitializer", "this.a = b", []);
-    JUnitTestCase.assertNotNull(invocation.equals);
-    JUnitTestCase.assertNotNull(invocation.expression);
-    JUnitTestCase.assertNotNull(invocation.fieldName);
-    JUnitTestCase.assertNotNull(invocation.keyword);
-    JUnitTestCase.assertNotNull(invocation.period);
+    expect(invocation.equals, isNotNull);
+    expect(invocation.expression, isNotNull);
+    expect(invocation.fieldName, isNotNull);
+    expect(invocation.keyword, isNotNull);
+    expect(invocation.period, isNotNull);
   }
 
   void test_parseConstructorFieldInitializer_unqualified() {
     ConstructorFieldInitializer invocation = ParserTestCase.parse4("parseConstructorFieldInitializer", "a = b", []);
-    JUnitTestCase.assertNotNull(invocation.equals);
-    JUnitTestCase.assertNotNull(invocation.expression);
-    JUnitTestCase.assertNotNull(invocation.fieldName);
-    JUnitTestCase.assertNull(invocation.keyword);
-    JUnitTestCase.assertNull(invocation.period);
+    expect(invocation.equals, isNotNull);
+    expect(invocation.expression, isNotNull);
+    expect(invocation.fieldName, isNotNull);
+    expect(invocation.keyword, isNull);
+    expect(invocation.period, isNull);
   }
 
   void test_parseConstructorName_named_noPrefix() {
     ConstructorName name = ParserTestCase.parse4("parseConstructorName", "A.n;", []);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
   }
 
   void test_parseConstructorName_named_prefixed() {
     ConstructorName name = ParserTestCase.parse4("parseConstructorName", "p.A.n;", []);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNotNull(name.period);
-    JUnitTestCase.assertNotNull(name.name);
+    expect(name.type, isNotNull);
+    expect(name.period, isNotNull);
+    expect(name.name, isNotNull);
   }
 
   void test_parseConstructorName_unnamed_noPrefix() {
     ConstructorName name = ParserTestCase.parse4("parseConstructorName", "A;", []);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
   }
 
   void test_parseConstructorName_unnamed_prefixed() {
     ConstructorName name = ParserTestCase.parse4("parseConstructorName", "p.A;", []);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
   }
 
   void test_parseContinueStatement_label() {
     ContinueStatement statement = ParserTestCase.parse4("parseContinueStatement", "continue foo;", [ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.label);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.label, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseContinueStatement_noLabel() {
     ContinueStatement statement = ParserTestCase.parse4("parseContinueStatement", "continue;", [ParserErrorCode.CONTINUE_OUTSIDE_OF_LOOP]);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNull(statement.label);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.label, isNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseDirective_export() {
     ExportDirective directive = ParserTestCase.parse("parseDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseDirective_import() {
     ImportDirective directive = ParserTestCase.parse("parseDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.asToken);
-    JUnitTestCase.assertNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.asToken, isNull);
+    expect(directive.prefix, isNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseDirective_library() {
     LibraryDirective directive = ParserTestCase.parse("parseDirective", <Object> [emptyCommentAndMetadata()], "library l;");
-    JUnitTestCase.assertNotNull(directive.libraryToken);
-    JUnitTestCase.assertNotNull(directive.name);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.libraryToken, isNotNull);
+    expect(directive.name, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseDirective_part() {
     PartDirective directive = ParserTestCase.parse("parseDirective", <Object> [emptyCommentAndMetadata()], "part 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.partToken);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.partToken, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseDirective_partOf() {
     PartOfDirective directive = ParserTestCase.parse("parseDirective", <Object> [emptyCommentAndMetadata()], "part of l;");
-    JUnitTestCase.assertNotNull(directive.partToken);
-    JUnitTestCase.assertNotNull(directive.ofToken);
-    JUnitTestCase.assertNotNull(directive.libraryName);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.partToken, isNotNull);
+    expect(directive.ofToken, isNotNull);
+    expect(directive.libraryName, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseDirectives_complete() {
     CompilationUnit unit = _parseDirectives("#! /bin/dart\nlibrary l;\nclass A {}", []);
-    JUnitTestCase.assertNotNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(1, unit.directives);
+    expect(unit.scriptTag, isNotNull);
+    expect(unit.directives, hasLength(1));
   }
 
   void test_parseDirectives_empty() {
     CompilationUnit unit = _parseDirectives("", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
   }
 
   void test_parseDirectives_mixed() {
     CompilationUnit unit = _parseDirectives("library l; class A {} part 'foo.dart';", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(1, unit.directives);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(1));
   }
 
   void test_parseDirectives_multiple() {
     CompilationUnit unit = _parseDirectives("library l;\npart 'a.dart';", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(2, unit.directives);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(2));
   }
 
   void test_parseDirectives_script() {
     CompilationUnit unit = _parseDirectives("#! /bin/dart", []);
-    JUnitTestCase.assertNotNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
+    expect(unit.scriptTag, isNotNull);
+    expect(unit.directives, hasLength(0));
   }
 
   void test_parseDirectives_single() {
     CompilationUnit unit = _parseDirectives("library l;", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(1, unit.directives);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(1));
   }
 
   void test_parseDirectives_topLevelDeclaration() {
     CompilationUnit unit = _parseDirectives("class A {}", []);
-    JUnitTestCase.assertNull(unit.scriptTag);
-    EngineTestCase.assertSizeOfList(0, unit.directives);
+    expect(unit.scriptTag, isNull);
+    expect(unit.directives, hasLength(0));
   }
 
   void test_parseDocumentationComment_block() {
     Comment comment = ParserTestCase.parse4("parseDocumentationComment", "/** */ class", []);
-    JUnitTestCase.assertFalse(comment.isBlock);
-    JUnitTestCase.assertTrue(comment.isDocumentation);
-    JUnitTestCase.assertFalse(comment.isEndOfLine);
+    expect(comment.isBlock, isFalse);
+    expect(comment.isDocumentation, isTrue);
+    expect(comment.isEndOfLine, isFalse);
   }
 
   void test_parseDocumentationComment_block_withReference() {
     Comment comment = ParserTestCase.parse4("parseDocumentationComment", "/** [a] */ class", []);
-    JUnitTestCase.assertFalse(comment.isBlock);
-    JUnitTestCase.assertTrue(comment.isDocumentation);
-    JUnitTestCase.assertFalse(comment.isEndOfLine);
+    expect(comment.isBlock, isFalse);
+    expect(comment.isDocumentation, isTrue);
+    expect(comment.isEndOfLine, isFalse);
     NodeList<CommentReference> references = comment.references;
-    EngineTestCase.assertSizeOfList(1, references);
+    expect(references, hasLength(1));
     CommentReference reference = references[0];
-    JUnitTestCase.assertNotNull(reference);
-    JUnitTestCase.assertEquals(5, reference.offset);
+    expect(reference, isNotNull);
+    expect(reference.offset, 5);
   }
 
   void test_parseDocumentationComment_endOfLine() {
     Comment comment = ParserTestCase.parse4("parseDocumentationComment", "/// \n/// \n class", []);
-    JUnitTestCase.assertFalse(comment.isBlock);
-    JUnitTestCase.assertTrue(comment.isDocumentation);
-    JUnitTestCase.assertFalse(comment.isEndOfLine);
+    expect(comment.isBlock, isFalse);
+    expect(comment.isDocumentation, isTrue);
+    expect(comment.isEndOfLine, isFalse);
   }
 
   void test_parseDoStatement() {
     DoStatement statement = ParserTestCase.parse4("parseDoStatement", "do {} while (x);", []);
-    JUnitTestCase.assertNotNull(statement.doKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
-    JUnitTestCase.assertNotNull(statement.whileKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.doKeyword, isNotNull);
+    expect(statement.body, isNotNull);
+    expect(statement.whileKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseEmptyStatement() {
     EmptyStatement statement = ParserTestCase.parse4("parseEmptyStatement", ";", []);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseEnumDeclaration_one() {
     EnumDeclaration declaration = ParserTestCase.parse("parseEnumDeclaration", <Object> [emptyCommentAndMetadata()], "enum E {ONE}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNotNull(declaration.keyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(1, declaration.constants);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.keyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.constants, hasLength(1));
+    expect(declaration.rightBracket, isNotNull);
   }
 
   void test_parseEnumDeclaration_trailingComma() {
     EnumDeclaration declaration = ParserTestCase.parse("parseEnumDeclaration", <Object> [emptyCommentAndMetadata()], "enum E {ONE,}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNotNull(declaration.keyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(1, declaration.constants);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.keyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.constants, hasLength(1));
+    expect(declaration.rightBracket, isNotNull);
   }
 
   void test_parseEnumDeclaration_two() {
     EnumDeclaration declaration = ParserTestCase.parse("parseEnumDeclaration", <Object> [emptyCommentAndMetadata()], "enum E {ONE, TWO}");
-    JUnitTestCase.assertNull(declaration.documentationComment);
-    JUnitTestCase.assertNotNull(declaration.keyword);
-    JUnitTestCase.assertNotNull(declaration.leftBracket);
-    JUnitTestCase.assertNotNull(declaration.name);
-    EngineTestCase.assertSizeOfList(2, declaration.constants);
-    JUnitTestCase.assertNotNull(declaration.rightBracket);
+    expect(declaration.documentationComment, isNull);
+    expect(declaration.keyword, isNotNull);
+    expect(declaration.leftBracket, isNotNull);
+    expect(declaration.name, isNotNull);
+    expect(declaration.constants, hasLength(2));
+    expect(declaration.rightBracket, isNotNull);
   }
 
   void test_parseEqualityExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseEqualityExpression", "x == y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ_EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ_EQ);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseEqualityExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseEqualityExpression", "super == y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ_EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ_EQ);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseExportDirective_hide() {
     ExportDirective directive = ParserTestCase.parse("parseExportDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart' hide A, B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(1, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(1));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseExportDirective_hide_show() {
     ExportDirective directive = ParserTestCase.parse("parseExportDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart' hide A show B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(2, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(2));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseExportDirective_noCombinator() {
     ExportDirective directive = ParserTestCase.parse("parseExportDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseExportDirective_show() {
     ExportDirective directive = ParserTestCase.parse("parseExportDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart' show A, B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(1, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(1));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseExportDirective_show_hide() {
     ExportDirective directive = ParserTestCase.parse("parseExportDirective", <Object> [emptyCommentAndMetadata()], "export 'lib/lib.dart' show B hide A;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    EngineTestCase.assertSizeOfList(2, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.combinators, hasLength(2));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseExpression_assign() {
     // TODO(brianwilkerson) Implement more tests for this method.
     AssignmentExpression expression = ParserTestCase.parse4("parseExpression", "x = y", []);
-    JUnitTestCase.assertNotNull(expression.leftHandSide);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightHandSide);
+    expect(expression.leftHandSide, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ);
+    expect(expression.rightHandSide, isNotNull);
   }
 
   void test_parseExpression_comparison() {
     BinaryExpression expression = ParserTestCase.parse4("parseExpression", "--a.b == c", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ_EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ_EQ);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseExpression_function_async() {
     FunctionExpression expression = ParserTestCase.parseExpression("() async {}", []);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertTrue(expression.body.isAsynchronous);
-    JUnitTestCase.assertFalse(expression.body.isGenerator);
-    JUnitTestCase.assertNotNull(expression.parameters);
+    expect(expression.body, isNotNull);
+    expect(expression.body.isAsynchronous, isTrue);
+    expect(expression.body.isGenerator, isFalse);
+    expect(expression.parameters, isNotNull);
   }
 
   void test_parseExpression_function_asyncStar() {
     FunctionExpression expression = ParserTestCase.parseExpression("() async* {}", []);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertTrue(expression.body.isAsynchronous);
-    JUnitTestCase.assertTrue(expression.body.isGenerator);
-    JUnitTestCase.assertNotNull(expression.parameters);
+    expect(expression.body, isNotNull);
+    expect(expression.body.isAsynchronous, isTrue);
+    expect(expression.body.isGenerator, isTrue);
+    expect(expression.parameters, isNotNull);
   }
 
   void test_parseExpression_function_sync() {
     FunctionExpression expression = ParserTestCase.parseExpression("() {}", []);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertFalse(expression.body.isAsynchronous);
-    JUnitTestCase.assertFalse(expression.body.isGenerator);
-    JUnitTestCase.assertNotNull(expression.parameters);
+    expect(expression.body, isNotNull);
+    expect(expression.body.isAsynchronous, isFalse);
+    expect(expression.body.isGenerator, isFalse);
+    expect(expression.parameters, isNotNull);
   }
 
   void test_parseExpression_function_syncStar() {
     FunctionExpression expression = ParserTestCase.parseExpression("() sync* {}", []);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertFalse(expression.body.isAsynchronous);
-    JUnitTestCase.assertTrue(expression.body.isGenerator);
-    JUnitTestCase.assertNotNull(expression.parameters);
+    expect(expression.body, isNotNull);
+    expect(expression.body.isAsynchronous, isFalse);
+    expect(expression.body.isGenerator, isTrue);
+    expect(expression.parameters, isNotNull);
   }
 
   void test_parseExpression_invokeFunctionExpression() {
     FunctionExpressionInvocation invocation = ParserTestCase.parse4("parseExpression", "(a) {return a + a;} (3)", []);
     EngineTestCase.assertInstanceOf((obj) => obj is FunctionExpression, FunctionExpression, invocation.function);
     FunctionExpression expression = invocation.function as FunctionExpression;
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNotNull(expression.body);
+    expect(expression.parameters, isNotNull);
+    expect(expression.body, isNotNull);
     ArgumentList list = invocation.argumentList;
-    JUnitTestCase.assertNotNull(list);
-    EngineTestCase.assertSizeOfList(1, list.arguments);
+    expect(list, isNotNull);
+    expect(list.arguments, hasLength(1));
   }
 
   void test_parseExpression_superMethodInvocation() {
     MethodInvocation invocation = ParserTestCase.parse4("parseExpression", "super.m()", []);
-    JUnitTestCase.assertNotNull(invocation.target);
-    JUnitTestCase.assertNotNull(invocation.methodName);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
+    expect(invocation.target, isNotNull);
+    expect(invocation.methodName, isNotNull);
+    expect(invocation.argumentList, isNotNull);
   }
 
   void test_parseExpressionList_multiple() {
     List<Expression> result = ParserTestCase.parse4("parseExpressionList", "1, 2, 3", []);
-    EngineTestCase.assertSizeOfList(3, result);
+    expect(result, hasLength(3));
   }
 
   void test_parseExpressionList_single() {
     List<Expression> result = ParserTestCase.parse4("parseExpressionList", "1", []);
-    EngineTestCase.assertSizeOfList(1, result);
+    expect(result, hasLength(1));
   }
 
   void test_parseExpressionWithoutCascade_assign() {
     // TODO(brianwilkerson) Implement more tests for this method.
     AssignmentExpression expression = ParserTestCase.parse4("parseExpressionWithoutCascade", "x = y", []);
-    JUnitTestCase.assertNotNull(expression.leftHandSide);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightHandSide);
+    expect(expression.leftHandSide, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ);
+    expect(expression.rightHandSide, isNotNull);
   }
 
   void test_parseExpressionWithoutCascade_comparison() {
     BinaryExpression expression = ParserTestCase.parse4("parseExpressionWithoutCascade", "--a.b == c", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.EQ_EQ, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.EQ_EQ);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseExpressionWithoutCascade_superMethodInvocation() {
     MethodInvocation invocation = ParserTestCase.parse4("parseExpressionWithoutCascade", "super.m()", []);
-    JUnitTestCase.assertNotNull(invocation.target);
-    JUnitTestCase.assertNotNull(invocation.methodName);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
+    expect(invocation.target, isNotNull);
+    expect(invocation.methodName, isNotNull);
+    expect(invocation.argumentList, isNotNull);
   }
 
   void test_parseExtendsClause() {
     ExtendsClause clause = ParserTestCase.parse4("parseExtendsClause", "extends B", []);
-    JUnitTestCase.assertNotNull(clause.keyword);
-    JUnitTestCase.assertNotNull(clause.superclass);
+    expect(clause.keyword, isNotNull);
+    expect(clause.superclass, isNotNull);
     EngineTestCase.assertInstanceOf((obj) => obj is TypeName, TypeName, clause.superclass);
   }
 
   void test_parseFinalConstVarOrType_const_noType() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "const");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.CONST, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.CONST);
+    expect(result.type, isNull);
   }
 
   void test_parseFinalConstVarOrType_const_type() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "const A a");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.CONST, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.CONST);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_final_noType() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "final");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.FINAL, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.FINAL);
+    expect(result.type, isNull);
   }
 
   void test_parseFinalConstVarOrType_final_prefixedType() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "final p.A a");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.FINAL, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.FINAL);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_final_type() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "final A a");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.FINAL, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.FINAL);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_type_parameterized() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "A<B> a");
-    JUnitTestCase.assertNull(result.keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(result.keyword, isNull);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_type_prefixed() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "p.A a");
-    JUnitTestCase.assertNull(result.keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(result.keyword, isNull);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_type_prefixedAndParameterized() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "p.A<B> a");
-    JUnitTestCase.assertNull(result.keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(result.keyword, isNull);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_type_simple() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "A a");
-    JUnitTestCase.assertNull(result.keyword);
-    JUnitTestCase.assertNotNull(result.type);
+    expect(result.keyword, isNull);
+    expect(result.type, isNotNull);
   }
 
   void test_parseFinalConstVarOrType_var() {
     FinalConstVarOrType result = ParserTestCase.parse("parseFinalConstVarOrType", <Object> [false], "var");
     Token keyword = result.keyword;
-    JUnitTestCase.assertNotNull(keyword);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, keyword.type);
-    JUnitTestCase.assertEquals(Keyword.VAR, (keyword as KeywordToken).keyword);
-    JUnitTestCase.assertNull(result.type);
+    expect(keyword, isNotNull);
+    expect(keyword.type, TokenType.KEYWORD);
+    expect((keyword as KeywordToken).keyword, Keyword.VAR);
+    expect(result.type, isNull);
   }
 
   void test_parseFormalParameter_final_withType_named() {
     ParameterKind kind = ParameterKind.NAMED;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "final A a : null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNotNull(simpleParameter.keyword);
-    JUnitTestCase.assertNotNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNotNull);
+    expect(simpleParameter.type, isNotNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_final_withType_normal() {
     ParameterKind kind = ParameterKind.REQUIRED;
     SimpleFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "final A a");
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_final_withType_positional() {
     ParameterKind kind = ParameterKind.POSITIONAL;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "final A a = null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNotNull(simpleParameter.keyword);
-    JUnitTestCase.assertNotNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNotNull);
+    expect(simpleParameter.type, isNotNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_nonFinal_withType_named() {
     ParameterKind kind = ParameterKind.NAMED;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "A a : null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNull(simpleParameter.keyword);
-    JUnitTestCase.assertNotNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNull);
+    expect(simpleParameter.type, isNotNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_nonFinal_withType_normal() {
     ParameterKind kind = ParameterKind.REQUIRED;
     SimpleFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "A a");
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_nonFinal_withType_positional() {
     ParameterKind kind = ParameterKind.POSITIONAL;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "A a = null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNull(simpleParameter.keyword);
-    JUnitTestCase.assertNotNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNull);
+    expect(simpleParameter.type, isNotNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_var() {
     ParameterKind kind = ParameterKind.REQUIRED;
     SimpleFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "var a");
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_var_named() {
     ParameterKind kind = ParameterKind.NAMED;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "var a : null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNotNull(simpleParameter.keyword);
-    JUnitTestCase.assertNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNotNull);
+    expect(simpleParameter.type, isNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameter_var_positional() {
     ParameterKind kind = ParameterKind.POSITIONAL;
     DefaultFormalParameter parameter = ParserTestCase.parse("parseFormalParameter", <Object> [kind], "var a = null");
     SimpleFormalParameter simpleParameter = parameter.parameter as SimpleFormalParameter;
-    JUnitTestCase.assertNotNull(simpleParameter.identifier);
-    JUnitTestCase.assertNotNull(simpleParameter.keyword);
-    JUnitTestCase.assertNull(simpleParameter.type);
-    JUnitTestCase.assertEquals(kind, simpleParameter.kind);
-    JUnitTestCase.assertNotNull(parameter.separator);
-    JUnitTestCase.assertNotNull(parameter.defaultValue);
-    JUnitTestCase.assertEquals(kind, parameter.kind);
+    expect(simpleParameter.identifier, isNotNull);
+    expect(simpleParameter.keyword, isNotNull);
+    expect(simpleParameter.type, isNull);
+    expect(simpleParameter.kind, kind);
+    expect(parameter.separator, isNotNull);
+    expect(parameter.defaultValue, isNotNull);
+    expect(parameter.kind, kind);
   }
 
   void test_parseFormalParameterList_empty() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "()", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(0, parameterList.parameters);
-    JUnitTestCase.assertNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNull);
+    expect(parameterList.parameters, hasLength(0));
+    expect(parameterList.rightDelimiter, isNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_named_multiple() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "({A a : 1, B b, C c : 3})", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(3, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(3));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_named_single() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "({A a})", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(1, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(1));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_normal_multiple() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "(A a, B b, C c)", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(3, parameterList.parameters);
-    JUnitTestCase.assertNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNull);
+    expect(parameterList.parameters, hasLength(3));
+    expect(parameterList.rightDelimiter, isNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_normal_named() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "(A a, {B b})", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(2, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(2));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_normal_positional() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "(A a, [B b])", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(2, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(2));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_normal_single() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "(A a)", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(1, parameterList.parameters);
-    JUnitTestCase.assertNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNull);
+    expect(parameterList.parameters, hasLength(1));
+    expect(parameterList.rightDelimiter, isNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_positional_multiple() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "([A a = null, B b, C c = null])", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(3, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(3));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseFormalParameterList_positional_single() {
     FormalParameterList parameterList = ParserTestCase.parse4("parseFormalParameterList", "([A a = null])", []);
-    JUnitTestCase.assertNotNull(parameterList.leftParenthesis);
-    JUnitTestCase.assertNotNull(parameterList.leftDelimiter);
-    EngineTestCase.assertSizeOfList(1, parameterList.parameters);
-    JUnitTestCase.assertNotNull(parameterList.rightDelimiter);
-    JUnitTestCase.assertNotNull(parameterList.rightParenthesis);
+    expect(parameterList.leftParenthesis, isNotNull);
+    expect(parameterList.leftDelimiter, isNotNull);
+    expect(parameterList.parameters, hasLength(1));
+    expect(parameterList.rightDelimiter, isNotNull);
+    expect(parameterList.rightParenthesis, isNotNull);
   }
 
   void test_parseForStatement_each_await() {
     ForEachStatement statement = ParserTestCase.parse4("parseForStatement", "await for (element in list) {}", []);
-    JUnitTestCase.assertNotNull(statement.awaitKeyword);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.loopVariable);
-    JUnitTestCase.assertNotNull(statement.identifier);
-    JUnitTestCase.assertNotNull(statement.inKeyword);
-    JUnitTestCase.assertNotNull(statement.iterator);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.awaitKeyword, isNotNull);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.loopVariable, isNull);
+    expect(statement.identifier, isNotNull);
+    expect(statement.inKeyword, isNotNull);
+    expect(statement.iterator, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_each_identifier() {
     ForEachStatement statement = ParserTestCase.parse4("parseForStatement", "for (element in list) {}", []);
-    JUnitTestCase.assertNull(statement.awaitKeyword);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.loopVariable);
-    JUnitTestCase.assertNotNull(statement.identifier);
-    JUnitTestCase.assertNotNull(statement.inKeyword);
-    JUnitTestCase.assertNotNull(statement.iterator);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.awaitKeyword, isNull);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.loopVariable, isNull);
+    expect(statement.identifier, isNotNull);
+    expect(statement.inKeyword, isNotNull);
+    expect(statement.iterator, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_each_noType_metadata() {
     ForEachStatement statement = ParserTestCase.parse4("parseForStatement", "for (@A var element in list) {}", []);
-    JUnitTestCase.assertNull(statement.awaitKeyword);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.loopVariable);
-    EngineTestCase.assertSizeOfList(1, statement.loopVariable.metadata);
-    JUnitTestCase.assertNull(statement.identifier);
-    JUnitTestCase.assertNotNull(statement.inKeyword);
-    JUnitTestCase.assertNotNull(statement.iterator);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.awaitKeyword, isNull);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.loopVariable, isNotNull);
+    expect(statement.loopVariable.metadata, hasLength(1));
+    expect(statement.identifier, isNull);
+    expect(statement.inKeyword, isNotNull);
+    expect(statement.iterator, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_each_type() {
     ForEachStatement statement = ParserTestCase.parse4("parseForStatement", "for (A element in list) {}", []);
-    JUnitTestCase.assertNull(statement.awaitKeyword);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.loopVariable);
-    JUnitTestCase.assertNull(statement.identifier);
-    JUnitTestCase.assertNotNull(statement.inKeyword);
-    JUnitTestCase.assertNotNull(statement.iterator);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.awaitKeyword, isNull);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.loopVariable, isNotNull);
+    expect(statement.identifier, isNull);
+    expect(statement.inKeyword, isNotNull);
+    expect(statement.iterator, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_each_var() {
     ForEachStatement statement = ParserTestCase.parse4("parseForStatement", "for (var element in list) {}", []);
-    JUnitTestCase.assertNull(statement.awaitKeyword);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.loopVariable);
-    JUnitTestCase.assertNull(statement.identifier);
-    JUnitTestCase.assertNotNull(statement.inKeyword);
-    JUnitTestCase.assertNotNull(statement.iterator);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.awaitKeyword, isNull);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.loopVariable, isNotNull);
+    expect(statement.identifier, isNull);
+    expect(statement.inKeyword, isNotNull);
+    expect(statement.iterator, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_c() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (; i < count;) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(0, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.variables, isNull);
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(0));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_cu() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (; i < count; i++) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(1, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.variables, isNull);
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(1));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_ecu() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (i--; i < count; i++) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.variables);
-    JUnitTestCase.assertNotNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(1, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.variables, isNull);
+    expect(statement.initialization, isNotNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(1));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_i() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (var i = 0;;) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(0, variables.metadata);
-    EngineTestCase.assertSizeOfList(1, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(0, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.metadata, hasLength(0));
+    expect(variables.variables, hasLength(1));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(0));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_i_withMetadata() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (@A var i = 0;;) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(1, variables.metadata);
-    EngineTestCase.assertSizeOfList(1, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(0, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.metadata, hasLength(1));
+    expect(variables.variables, hasLength(1));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(0));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_ic() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (var i = 0; i < count;) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(1, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(0, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.variables, hasLength(1));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(0));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_icu() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (var i = 0; i < count; i++) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(1, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(1, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.variables, hasLength(1));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(1));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_iicuu() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (int i = 0, j = count; i < j; i++, j--) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(2, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(2, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.variables, hasLength(2));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(2));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_iu() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (var i = 0;; i++) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
     VariableDeclarationList variables = statement.variables;
-    JUnitTestCase.assertNotNull(variables);
-    EngineTestCase.assertSizeOfList(1, variables.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(1, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(variables, isNotNull);
+    expect(variables.variables, hasLength(1));
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(1));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseForStatement_loop_u() {
     ForStatement statement = ParserTestCase.parse4("parseForStatement", "for (;; i++) {}", []);
-    JUnitTestCase.assertNotNull(statement.forKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNull(statement.variables);
-    JUnitTestCase.assertNull(statement.initialization);
-    JUnitTestCase.assertNotNull(statement.leftSeparator);
-    JUnitTestCase.assertNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightSeparator);
-    EngineTestCase.assertSizeOfList(1, statement.updaters);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.forKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.variables, isNull);
+    expect(statement.initialization, isNull);
+    expect(statement.leftSeparator, isNotNull);
+    expect(statement.condition, isNull);
+    expect(statement.rightSeparator, isNotNull);
+    expect(statement.updaters, hasLength(1));
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseFunctionBody_block() {
     BlockFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "{}");
-    JUnitTestCase.assertNull(functionBody.keyword);
-    JUnitTestCase.assertNull(functionBody.star);
-    JUnitTestCase.assertNotNull(functionBody.block);
-    JUnitTestCase.assertFalse(functionBody.isAsynchronous);
-    JUnitTestCase.assertFalse(functionBody.isGenerator);
-    JUnitTestCase.assertTrue(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNull);
+    expect(functionBody.star, isNull);
+    expect(functionBody.block, isNotNull);
+    expect(functionBody.isAsynchronous, isFalse);
+    expect(functionBody.isGenerator, isFalse);
+    expect(functionBody.isSynchronous, isTrue);
   }
 
   void test_parseFunctionBody_block_async() {
     BlockFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "async {}");
-    JUnitTestCase.assertNotNull(functionBody.keyword);
-    JUnitTestCase.assertEquals(Parser.ASYNC, functionBody.keyword.lexeme);
-    JUnitTestCase.assertNull(functionBody.star);
-    JUnitTestCase.assertNotNull(functionBody.block);
-    JUnitTestCase.assertTrue(functionBody.isAsynchronous);
-    JUnitTestCase.assertFalse(functionBody.isGenerator);
-    JUnitTestCase.assertFalse(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNotNull);
+    expect(functionBody.keyword.lexeme, Parser.ASYNC);
+    expect(functionBody.star, isNull);
+    expect(functionBody.block, isNotNull);
+    expect(functionBody.isAsynchronous, isTrue);
+    expect(functionBody.isGenerator, isFalse);
+    expect(functionBody.isSynchronous, isFalse);
   }
 
   void test_parseFunctionBody_block_asyncGenerator() {
     BlockFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "async* {}");
-    JUnitTestCase.assertNotNull(functionBody.keyword);
-    JUnitTestCase.assertEquals(Parser.ASYNC, functionBody.keyword.lexeme);
-    JUnitTestCase.assertNotNull(functionBody.star);
-    JUnitTestCase.assertNotNull(functionBody.block);
-    JUnitTestCase.assertTrue(functionBody.isAsynchronous);
-    JUnitTestCase.assertTrue(functionBody.isGenerator);
-    JUnitTestCase.assertFalse(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNotNull);
+    expect(functionBody.keyword.lexeme, Parser.ASYNC);
+    expect(functionBody.star, isNotNull);
+    expect(functionBody.block, isNotNull);
+    expect(functionBody.isAsynchronous, isTrue);
+    expect(functionBody.isGenerator, isTrue);
+    expect(functionBody.isSynchronous, isFalse);
   }
 
   void test_parseFunctionBody_block_syncGenerator() {
     BlockFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "sync* {}");
-    JUnitTestCase.assertNotNull(functionBody.keyword);
-    JUnitTestCase.assertEquals(Parser.SYNC, functionBody.keyword.lexeme);
-    JUnitTestCase.assertNotNull(functionBody.star);
-    JUnitTestCase.assertNotNull(functionBody.block);
-    JUnitTestCase.assertFalse(functionBody.isAsynchronous);
-    JUnitTestCase.assertTrue(functionBody.isGenerator);
-    JUnitTestCase.assertTrue(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNotNull);
+    expect(functionBody.keyword.lexeme, Parser.SYNC);
+    expect(functionBody.star, isNotNull);
+    expect(functionBody.block, isNotNull);
+    expect(functionBody.isAsynchronous, isFalse);
+    expect(functionBody.isGenerator, isTrue);
+    expect(functionBody.isSynchronous, isTrue);
   }
 
   void test_parseFunctionBody_empty() {
     EmptyFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [true, null, false], ";");
-    JUnitTestCase.assertNotNull(functionBody.semicolon);
+    expect(functionBody.semicolon, isNotNull);
   }
 
   void test_parseFunctionBody_expression() {
     ExpressionFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "=> y;");
-    JUnitTestCase.assertNull(functionBody.keyword);
-    JUnitTestCase.assertNotNull(functionBody.functionDefinition);
-    JUnitTestCase.assertNotNull(functionBody.expression);
-    JUnitTestCase.assertNotNull(functionBody.semicolon);
-    JUnitTestCase.assertFalse(functionBody.isAsynchronous);
-    JUnitTestCase.assertFalse(functionBody.isGenerator);
-    JUnitTestCase.assertTrue(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNull);
+    expect(functionBody.functionDefinition, isNotNull);
+    expect(functionBody.expression, isNotNull);
+    expect(functionBody.semicolon, isNotNull);
+    expect(functionBody.isAsynchronous, isFalse);
+    expect(functionBody.isGenerator, isFalse);
+    expect(functionBody.isSynchronous, isTrue);
   }
 
   void test_parseFunctionBody_expression_async() {
     ExpressionFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "async => y;");
-    JUnitTestCase.assertNotNull(functionBody.keyword);
-    JUnitTestCase.assertEquals(Parser.ASYNC, functionBody.keyword.lexeme);
-    JUnitTestCase.assertNotNull(functionBody.functionDefinition);
-    JUnitTestCase.assertNotNull(functionBody.expression);
-    JUnitTestCase.assertNotNull(functionBody.semicolon);
-    JUnitTestCase.assertTrue(functionBody.isAsynchronous);
-    JUnitTestCase.assertFalse(functionBody.isGenerator);
-    JUnitTestCase.assertFalse(functionBody.isSynchronous);
+    expect(functionBody.keyword, isNotNull);
+    expect(functionBody.keyword.lexeme, Parser.ASYNC);
+    expect(functionBody.functionDefinition, isNotNull);
+    expect(functionBody.expression, isNotNull);
+    expect(functionBody.semicolon, isNotNull);
+    expect(functionBody.isAsynchronous, isTrue);
+    expect(functionBody.isGenerator, isFalse);
+    expect(functionBody.isSynchronous, isFalse);
   }
 
   void test_parseFunctionBody_nativeFunctionBody() {
     NativeFunctionBody functionBody = ParserTestCase.parse("parseFunctionBody", <Object> [false, null, false], "native 'str';");
-    JUnitTestCase.assertNotNull(functionBody.nativeToken);
-    JUnitTestCase.assertNotNull(functionBody.stringLiteral);
-    JUnitTestCase.assertNotNull(functionBody.semicolon);
+    expect(functionBody.nativeToken, isNotNull);
+    expect(functionBody.stringLiteral, isNotNull);
+    expect(functionBody.semicolon, isNotNull);
   }
 
   void test_parseFunctionBody_skip_block() {
@@ -6200,69 +6216,69 @@
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     FunctionDeclaration declaration = ParserTestCase.parse("parseFunctionDeclaration", <Object> [commentAndMetadata(comment, []), null, returnType], "f() {}");
-    JUnitTestCase.assertEquals(comment, declaration.documentationComment);
-    JUnitTestCase.assertEquals(returnType, declaration.returnType);
-    JUnitTestCase.assertNotNull(declaration.name);
+    expect(declaration.documentationComment, comment);
+    expect(declaration.returnType, returnType);
+    expect(declaration.name, isNotNull);
     FunctionExpression expression = declaration.functionExpression;
-    JUnitTestCase.assertNotNull(expression);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNull(declaration.propertyKeyword);
+    expect(expression, isNotNull);
+    expect(expression.body, isNotNull);
+    expect(expression.parameters, isNotNull);
+    expect(declaration.propertyKeyword, isNull);
   }
 
   void test_parseFunctionDeclaration_getter() {
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     FunctionDeclaration declaration = ParserTestCase.parse("parseFunctionDeclaration", <Object> [commentAndMetadata(comment, []), null, returnType], "get p => 0;");
-    JUnitTestCase.assertEquals(comment, declaration.documentationComment);
-    JUnitTestCase.assertEquals(returnType, declaration.returnType);
-    JUnitTestCase.assertNotNull(declaration.name);
+    expect(declaration.documentationComment, comment);
+    expect(declaration.returnType, returnType);
+    expect(declaration.name, isNotNull);
     FunctionExpression expression = declaration.functionExpression;
-    JUnitTestCase.assertNotNull(expression);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertNull(expression.parameters);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(expression, isNotNull);
+    expect(expression.body, isNotNull);
+    expect(expression.parameters, isNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseFunctionDeclaration_setter() {
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     FunctionDeclaration declaration = ParserTestCase.parse("parseFunctionDeclaration", <Object> [commentAndMetadata(comment, []), null, returnType], "set p(v) {}");
-    JUnitTestCase.assertEquals(comment, declaration.documentationComment);
-    JUnitTestCase.assertEquals(returnType, declaration.returnType);
-    JUnitTestCase.assertNotNull(declaration.name);
+    expect(declaration.documentationComment, comment);
+    expect(declaration.returnType, returnType);
+    expect(declaration.name, isNotNull);
     FunctionExpression expression = declaration.functionExpression;
-    JUnitTestCase.assertNotNull(expression);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNotNull(declaration.propertyKeyword);
+    expect(expression, isNotNull);
+    expect(expression.body, isNotNull);
+    expect(expression.parameters, isNotNull);
+    expect(declaration.propertyKeyword, isNotNull);
   }
 
   void test_parseFunctionDeclarationStatement() {
     FunctionDeclarationStatement statement = ParserTestCase.parse4("parseFunctionDeclarationStatement", "void f(int p) => p * 2;", []);
-    JUnitTestCase.assertNotNull(statement.functionDeclaration);
+    expect(statement.functionDeclaration, isNotNull);
   }
 
   void test_parseFunctionExpression_body_inExpression() {
     FunctionExpression expression = ParserTestCase.parse4("parseFunctionExpression", "(int i) => i++", []);
-    JUnitTestCase.assertNotNull(expression.body);
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNull((expression.body as ExpressionFunctionBody).semicolon);
+    expect(expression.body, isNotNull);
+    expect(expression.parameters, isNotNull);
+    expect((expression.body as ExpressionFunctionBody).semicolon, isNull);
   }
 
   void test_parseGetter_nonStatic() {
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     MethodDeclaration method = ParserTestCase.parse("parseGetter", <Object> [commentAndMetadata(comment, []), null, null, returnType], "get a;");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertEquals(comment, method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.propertyKeyword);
-    JUnitTestCase.assertEquals(returnType, method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, comment);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNull);
+    expect(method.propertyKeyword, isNotNull);
+    expect(method.returnType, returnType);
   }
 
   void test_parseGetter_static() {
@@ -6274,158 +6290,158 @@
         null,
         staticKeyword,
         returnType], "get a => 42;");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertEquals(comment, method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertEquals(staticKeyword, method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.propertyKeyword);
-    JUnitTestCase.assertEquals(returnType, method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, comment);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, staticKeyword);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNull);
+    expect(method.propertyKeyword, isNotNull);
+    expect(method.returnType, returnType);
   }
 
   void test_parseIdentifierList_multiple() {
     List<SimpleIdentifier> list = ParserTestCase.parse4("parseIdentifierList", "a, b, c", []);
-    EngineTestCase.assertSizeOfList(3, list);
+    expect(list, hasLength(3));
   }
 
   void test_parseIdentifierList_single() {
     List<SimpleIdentifier> list = ParserTestCase.parse4("parseIdentifierList", "a", []);
-    EngineTestCase.assertSizeOfList(1, list);
+    expect(list, hasLength(1));
   }
 
   void test_parseIfStatement_else_block() {
     IfStatement statement = ParserTestCase.parse4("parseIfStatement", "if (x) {} else {}", []);
-    JUnitTestCase.assertNotNull(statement.ifKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.thenStatement);
-    JUnitTestCase.assertNotNull(statement.elseKeyword);
-    JUnitTestCase.assertNotNull(statement.elseStatement);
+    expect(statement.ifKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.thenStatement, isNotNull);
+    expect(statement.elseKeyword, isNotNull);
+    expect(statement.elseStatement, isNotNull);
   }
 
   void test_parseIfStatement_else_statement() {
     IfStatement statement = ParserTestCase.parse4("parseIfStatement", "if (x) f(x); else f(y);", []);
-    JUnitTestCase.assertNotNull(statement.ifKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.thenStatement);
-    JUnitTestCase.assertNotNull(statement.elseKeyword);
-    JUnitTestCase.assertNotNull(statement.elseStatement);
+    expect(statement.ifKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.thenStatement, isNotNull);
+    expect(statement.elseKeyword, isNotNull);
+    expect(statement.elseStatement, isNotNull);
   }
 
   void test_parseIfStatement_noElse_block() {
     IfStatement statement = ParserTestCase.parse4("parseIfStatement", "if (x) {}", []);
-    JUnitTestCase.assertNotNull(statement.ifKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.thenStatement);
-    JUnitTestCase.assertNull(statement.elseKeyword);
-    JUnitTestCase.assertNull(statement.elseStatement);
+    expect(statement.ifKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.thenStatement, isNotNull);
+    expect(statement.elseKeyword, isNull);
+    expect(statement.elseStatement, isNull);
   }
 
   void test_parseIfStatement_noElse_statement() {
     IfStatement statement = ParserTestCase.parse4("parseIfStatement", "if (x) f(x);", []);
-    JUnitTestCase.assertNotNull(statement.ifKeyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.thenStatement);
-    JUnitTestCase.assertNull(statement.elseKeyword);
-    JUnitTestCase.assertNull(statement.elseStatement);
+    expect(statement.ifKeyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.thenStatement, isNotNull);
+    expect(statement.elseKeyword, isNull);
+    expect(statement.elseStatement, isNull);
   }
 
   void test_parseImplementsClause_multiple() {
     ImplementsClause clause = ParserTestCase.parse4("parseImplementsClause", "implements A, B, C", []);
-    EngineTestCase.assertSizeOfList(3, clause.interfaces);
-    JUnitTestCase.assertNotNull(clause.keyword);
+    expect(clause.interfaces, hasLength(3));
+    expect(clause.keyword, isNotNull);
   }
 
   void test_parseImplementsClause_single() {
     ImplementsClause clause = ParserTestCase.parse4("parseImplementsClause", "implements A", []);
-    EngineTestCase.assertSizeOfList(1, clause.interfaces);
-    JUnitTestCase.assertNotNull(clause.keyword);
+    expect(clause.interfaces, hasLength(1));
+    expect(clause.keyword, isNotNull);
   }
 
   void test_parseImportDirective_deferred() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' deferred as a;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNotNull(directive.deferredToken);
-    JUnitTestCase.assertNotNull(directive.asToken);
-    JUnitTestCase.assertNotNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNotNull);
+    expect(directive.asToken, isNotNull);
+    expect(directive.prefix, isNotNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_hide() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' hide A, B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNull(directive.asToken);
-    JUnitTestCase.assertNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(1, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNull);
+    expect(directive.prefix, isNull);
+    expect(directive.combinators, hasLength(1));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_noCombinator() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNull(directive.asToken);
-    JUnitTestCase.assertNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNull);
+    expect(directive.prefix, isNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_prefix() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' as a;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNotNull(directive.asToken);
-    JUnitTestCase.assertNotNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(0, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNotNull);
+    expect(directive.prefix, isNotNull);
+    expect(directive.combinators, hasLength(0));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_prefix_hide_show() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' as a hide A show B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNotNull(directive.asToken);
-    JUnitTestCase.assertNotNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(2, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNotNull);
+    expect(directive.prefix, isNotNull);
+    expect(directive.combinators, hasLength(2));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_prefix_show_hide() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' as a show B hide A;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNotNull(directive.asToken);
-    JUnitTestCase.assertNotNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(2, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNotNull);
+    expect(directive.prefix, isNotNull);
+    expect(directive.combinators, hasLength(2));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseImportDirective_show() {
     ImportDirective directive = ParserTestCase.parse("parseImportDirective", <Object> [emptyCommentAndMetadata()], "import 'lib/lib.dart' show A, B;");
-    JUnitTestCase.assertNotNull(directive.keyword);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNull(directive.deferredToken);
-    JUnitTestCase.assertNull(directive.asToken);
-    JUnitTestCase.assertNull(directive.prefix);
-    EngineTestCase.assertSizeOfList(1, directive.combinators);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.keyword, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.deferredToken, isNull);
+    expect(directive.asToken, isNull);
+    expect(directive.prefix, isNull);
+    expect(directive.combinators, hasLength(1));
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseInitializedIdentifierList_type() {
@@ -6437,14 +6453,14 @@
         staticKeyword,
         null,
         type], "a = 1, b, c = 3;");
-    JUnitTestCase.assertEquals(comment, declaration.documentationComment);
+    expect(declaration.documentationComment, comment);
     VariableDeclarationList fields = declaration.fields;
-    JUnitTestCase.assertNotNull(fields);
-    JUnitTestCase.assertNull(fields.keyword);
-    JUnitTestCase.assertEquals(type, fields.type);
-    EngineTestCase.assertSizeOfList(3, fields.variables);
-    JUnitTestCase.assertEquals(staticKeyword, declaration.staticKeyword);
-    JUnitTestCase.assertNotNull(declaration.semicolon);
+    expect(fields, isNotNull);
+    expect(fields.keyword, isNull);
+    expect(fields.type, type);
+    expect(fields.variables, hasLength(3));
+    expect(declaration.staticKeyword, staticKeyword);
+    expect(declaration.semicolon, isNotNull);
   }
 
   void test_parseInitializedIdentifierList_var() {
@@ -6456,173 +6472,173 @@
         staticKeyword,
         varKeyword,
         null], "a = 1, b, c = 3;");
-    JUnitTestCase.assertEquals(comment, declaration.documentationComment);
+    expect(declaration.documentationComment, comment);
     VariableDeclarationList fields = declaration.fields;
-    JUnitTestCase.assertNotNull(fields);
-    JUnitTestCase.assertEquals(varKeyword, fields.keyword);
-    JUnitTestCase.assertNull(fields.type);
-    EngineTestCase.assertSizeOfList(3, fields.variables);
-    JUnitTestCase.assertEquals(staticKeyword, declaration.staticKeyword);
-    JUnitTestCase.assertNotNull(declaration.semicolon);
+    expect(fields, isNotNull);
+    expect(fields.keyword, varKeyword);
+    expect(fields.type, isNull);
+    expect(fields.variables, hasLength(3));
+    expect(declaration.staticKeyword, staticKeyword);
+    expect(declaration.semicolon, isNotNull);
   }
 
   void test_parseInstanceCreationExpression_qualifiedType() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
     InstanceCreationExpression expression = ParserTestCase.parse("parseInstanceCreationExpression", <Object> [token], "A.B()");
-    JUnitTestCase.assertEquals(token, expression.keyword);
+    expect(expression.keyword, token);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseInstanceCreationExpression_qualifiedType_named() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
     InstanceCreationExpression expression = ParserTestCase.parse("parseInstanceCreationExpression", <Object> [token], "A.B.c()");
-    JUnitTestCase.assertEquals(token, expression.keyword);
+    expect(expression.keyword, token);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNotNull(name.period);
-    JUnitTestCase.assertNotNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNotNull);
+    expect(name.name, isNotNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseInstanceCreationExpression_type() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
     InstanceCreationExpression expression = ParserTestCase.parse("parseInstanceCreationExpression", <Object> [token], "A()");
-    JUnitTestCase.assertEquals(token, expression.keyword);
+    expect(expression.keyword, token);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseInstanceCreationExpression_type_named() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
     InstanceCreationExpression expression = ParserTestCase.parse("parseInstanceCreationExpression", <Object> [token], "A<B>.c()");
-    JUnitTestCase.assertEquals(token, expression.keyword);
+    expect(expression.keyword, token);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNotNull(name.period);
-    JUnitTestCase.assertNotNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNotNull);
+    expect(name.name, isNotNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseLibraryDirective() {
     LibraryDirective directive = ParserTestCase.parse("parseLibraryDirective", <Object> [emptyCommentAndMetadata()], "library l;");
-    JUnitTestCase.assertNotNull(directive.libraryToken);
-    JUnitTestCase.assertNotNull(directive.name);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.libraryToken, isNotNull);
+    expect(directive.name, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parseLibraryIdentifier_multiple() {
     String name = "a.b.c";
     LibraryIdentifier identifier = ParserTestCase.parse4("parseLibraryIdentifier", name, []);
-    JUnitTestCase.assertEquals(name, identifier.name);
+    expect(identifier.name, name);
   }
 
   void test_parseLibraryIdentifier_single() {
     String name = "a";
     LibraryIdentifier identifier = ParserTestCase.parse4("parseLibraryIdentifier", name, []);
-    JUnitTestCase.assertEquals(name, identifier.name);
+    expect(identifier.name, name);
   }
 
   void test_parseListLiteral_empty_oneToken() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.CONST);
     TypeArgumentList typeArguments = null;
     ListLiteral literal = ParserTestCase.parse("parseListLiteral", <Object> [token, typeArguments], "[]");
-    JUnitTestCase.assertEquals(token, literal.constKeyword);
-    JUnitTestCase.assertEquals(typeArguments, literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, token);
+    expect(literal.typeArguments, typeArguments);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListLiteral_empty_twoTokens() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.CONST);
     TypeArgumentList typeArguments = null;
     ListLiteral literal = ParserTestCase.parse("parseListLiteral", <Object> [token, typeArguments], "[ ]");
-    JUnitTestCase.assertEquals(token, literal.constKeyword);
-    JUnitTestCase.assertEquals(typeArguments, literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, token);
+    expect(literal.typeArguments, typeArguments);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListLiteral_multiple() {
     ListLiteral literal = ParserTestCase.parse("parseListLiteral", <Object> [null, null], "[1, 2, 3]");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(3, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(3));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListLiteral_single() {
     ListLiteral literal = ParserTestCase.parse("parseListLiteral", <Object> [null, null], "[1]");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListOrMapLiteral_list_noType() {
     ListLiteral literal = ParserTestCase.parse("parseListOrMapLiteral", <Object> [null], "[1]");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListOrMapLiteral_list_type() {
     ListLiteral literal = ParserTestCase.parse("parseListOrMapLiteral", <Object> [null], "<int> [1]");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.elements);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNotNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.elements, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListOrMapLiteral_map_noType() {
     MapLiteral literal = ParserTestCase.parse("parseListOrMapLiteral", <Object> [null], "{'1' : 1}");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseListOrMapLiteral_map_type() {
     MapLiteral literal = ParserTestCase.parse("parseListOrMapLiteral", <Object> [null], "<String, int> {'1' : 1}");
-    JUnitTestCase.assertNull(literal.constKeyword);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, isNull);
+    expect(literal.typeArguments, isNotNull);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseLogicalAndExpression() {
     BinaryExpression expression = ParserTestCase.parse4("parseLogicalAndExpression", "x && y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.AMPERSAND_AMPERSAND, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.AMPERSAND_AMPERSAND);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseLogicalOrExpression() {
     BinaryExpression expression = ParserTestCase.parse4("parseLogicalOrExpression", "x || y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.BAR_BAR, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.BAR_BAR);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseMapLiteral_empty() {
@@ -6631,149 +6647,149 @@
         AstFactory.typeName4("String", []),
         AstFactory.typeName4("int", [])]);
     MapLiteral literal = ParserTestCase.parse("parseMapLiteral", <Object> [token, typeArguments], "{}");
-    JUnitTestCase.assertEquals(token, literal.constKeyword);
-    JUnitTestCase.assertEquals(typeArguments, literal.typeArguments);
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(0, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.constKeyword, token);
+    expect(literal.typeArguments, typeArguments);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(0));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseMapLiteral_multiple() {
     MapLiteral literal = ParserTestCase.parse("parseMapLiteral", <Object> [null, null], "{'a' : b, 'x' : y}");
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(2, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(2));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseMapLiteral_single() {
     MapLiteral literal = ParserTestCase.parse("parseMapLiteral", <Object> [null, null], "{'x' : y}");
-    JUnitTestCase.assertNotNull(literal.leftBracket);
-    EngineTestCase.assertSizeOfList(1, literal.entries);
-    JUnitTestCase.assertNotNull(literal.rightBracket);
+    expect(literal.leftBracket, isNotNull);
+    expect(literal.entries, hasLength(1));
+    expect(literal.rightBracket, isNotNull);
   }
 
   void test_parseMapLiteralEntry_complex() {
     MapLiteralEntry entry = ParserTestCase.parse4("parseMapLiteralEntry", "2 + 2 : y", []);
-    JUnitTestCase.assertNotNull(entry.key);
-    JUnitTestCase.assertNotNull(entry.separator);
-    JUnitTestCase.assertNotNull(entry.value);
+    expect(entry.key, isNotNull);
+    expect(entry.separator, isNotNull);
+    expect(entry.value, isNotNull);
   }
 
   void test_parseMapLiteralEntry_int() {
     MapLiteralEntry entry = ParserTestCase.parse4("parseMapLiteralEntry", "0 : y", []);
-    JUnitTestCase.assertNotNull(entry.key);
-    JUnitTestCase.assertNotNull(entry.separator);
-    JUnitTestCase.assertNotNull(entry.value);
+    expect(entry.key, isNotNull);
+    expect(entry.separator, isNotNull);
+    expect(entry.value, isNotNull);
   }
 
   void test_parseMapLiteralEntry_string() {
     MapLiteralEntry entry = ParserTestCase.parse4("parseMapLiteralEntry", "'x' : y", []);
-    JUnitTestCase.assertNotNull(entry.key);
-    JUnitTestCase.assertNotNull(entry.separator);
-    JUnitTestCase.assertNotNull(entry.value);
+    expect(entry.key, isNotNull);
+    expect(entry.separator, isNotNull);
+    expect(entry.value, isNotNull);
   }
 
   void test_parseModifiers_abstract() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "abstract A", []);
-    JUnitTestCase.assertNotNull(modifiers.abstractKeyword);
+    expect(modifiers.abstractKeyword, isNotNull);
   }
 
   void test_parseModifiers_const() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "const A", []);
-    JUnitTestCase.assertNotNull(modifiers.constKeyword);
+    expect(modifiers.constKeyword, isNotNull);
   }
 
   void test_parseModifiers_external() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "external A", []);
-    JUnitTestCase.assertNotNull(modifiers.externalKeyword);
+    expect(modifiers.externalKeyword, isNotNull);
   }
 
   void test_parseModifiers_factory() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "factory A", []);
-    JUnitTestCase.assertNotNull(modifiers.factoryKeyword);
+    expect(modifiers.factoryKeyword, isNotNull);
   }
 
   void test_parseModifiers_final() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "final A", []);
-    JUnitTestCase.assertNotNull(modifiers.finalKeyword);
+    expect(modifiers.finalKeyword, isNotNull);
   }
 
   void test_parseModifiers_static() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "static A", []);
-    JUnitTestCase.assertNotNull(modifiers.staticKeyword);
+    expect(modifiers.staticKeyword, isNotNull);
   }
 
   void test_parseModifiers_var() {
     Modifiers modifiers = ParserTestCase.parse4("parseModifiers", "var A", []);
-    JUnitTestCase.assertNotNull(modifiers.varKeyword);
+    expect(modifiers.varKeyword, isNotNull);
   }
 
   void test_parseMultiplicativeExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseMultiplicativeExpression", "x * y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.STAR, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.STAR);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseMultiplicativeExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseMultiplicativeExpression", "super * y", []);
     EngineTestCase.assertInstanceOf((obj) => obj is SuperExpression, SuperExpression, expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.STAR, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.STAR);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseNewExpression() {
     InstanceCreationExpression expression = ParserTestCase.parse4("parseNewExpression", "new A()", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
+    expect(expression.keyword, isNotNull);
     ConstructorName name = expression.constructorName;
-    JUnitTestCase.assertNotNull(name);
-    JUnitTestCase.assertNotNull(name.type);
-    JUnitTestCase.assertNull(name.period);
-    JUnitTestCase.assertNull(name.name);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(name, isNotNull);
+    expect(name.type, isNotNull);
+    expect(name.period, isNull);
+    expect(name.name, isNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_list_empty() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const [];", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_list_nonEmpty() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const [1, 2];", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_map_empty() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const {};", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_map_nonEmpty() {
     // TODO(brianwilkerson) Implement more tests for this method.
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const {'a' : 1};", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_object() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const A();", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_const_object_named_typeParameters() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "const A<B>.c();", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_constructorInvocation() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "new C().m();", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_false() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "false;", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_functionDeclaration() {
@@ -6790,7 +6806,7 @@
 
   void test_parseNonLabeledStatement_functionInvocation() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "f();", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_invokeFunctionExpression() {
@@ -6799,185 +6815,185 @@
     FunctionExpressionInvocation invocation = statement.expression as FunctionExpressionInvocation;
     EngineTestCase.assertInstanceOf((obj) => obj is FunctionExpression, FunctionExpression, invocation.function);
     FunctionExpression expression = invocation.function as FunctionExpression;
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNotNull(expression.body);
+    expect(expression.parameters, isNotNull);
+    expect(expression.body, isNotNull);
     ArgumentList list = invocation.argumentList;
-    JUnitTestCase.assertNotNull(list);
-    EngineTestCase.assertSizeOfList(1, list.arguments);
+    expect(list, isNotNull);
+    expect(list.arguments, hasLength(1));
   }
 
   void test_parseNonLabeledStatement_null() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "null;", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_startingWithBuiltInIdentifier() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "library.getName();", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_true() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "true;", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNonLabeledStatement_typeCast() {
     ExpressionStatement statement = ParserTestCase.parse4("parseNonLabeledStatement", "double.NAN as num;", []);
-    JUnitTestCase.assertNotNull(statement.expression);
+    expect(statement.expression, isNotNull);
   }
 
   void test_parseNormalFormalParameter_field_const_noType() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "const this.a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_const_type() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "const A this.a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_final_noType() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "final this.a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_final_type() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "final A this.a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_function_nested() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "this.a(B b))", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
     FormalParameterList parameterList = parameter.parameters;
-    JUnitTestCase.assertNotNull(parameterList);
-    EngineTestCase.assertSizeOfList(1, parameterList.parameters);
+    expect(parameterList, isNotNull);
+    expect(parameterList.parameters, hasLength(1));
   }
 
   void test_parseNormalFormalParameter_field_function_noNested() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "this.a())", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
     FormalParameterList parameterList = parameter.parameters;
-    JUnitTestCase.assertNotNull(parameterList);
-    EngineTestCase.assertSizeOfList(0, parameterList.parameters);
+    expect(parameterList, isNotNull);
+    expect(parameterList.parameters, hasLength(0));
   }
 
   void test_parseNormalFormalParameter_field_noType() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "this.a)", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_type() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "A this.a)", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_field_var() {
     FieldFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "var this.a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNull(parameter.parameters);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNull);
   }
 
   void test_parseNormalFormalParameter_function_noType() {
     FunctionTypedFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "a())", []);
-    JUnitTestCase.assertNull(parameter.returnType);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNotNull(parameter.parameters);
+    expect(parameter.returnType, isNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNotNull);
   }
 
   void test_parseNormalFormalParameter_function_type() {
     FunctionTypedFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "A a())", []);
-    JUnitTestCase.assertNotNull(parameter.returnType);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNotNull(parameter.parameters);
+    expect(parameter.returnType, isNotNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNotNull);
   }
 
   void test_parseNormalFormalParameter_function_void() {
     FunctionTypedFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "void a())", []);
-    JUnitTestCase.assertNotNull(parameter.returnType);
-    JUnitTestCase.assertNotNull(parameter.identifier);
-    JUnitTestCase.assertNotNull(parameter.parameters);
+    expect(parameter.returnType, isNotNull);
+    expect(parameter.identifier, isNotNull);
+    expect(parameter.parameters, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_const_noType() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "const a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_const_type() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "const A a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_final_noType() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "final a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_final_type() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "final A a)", []);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_noType() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "a)", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseNormalFormalParameter_simple_type() {
     SimpleFormalParameter parameter = ParserTestCase.parse4("parseNormalFormalParameter", "A a)", []);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.type);
-    JUnitTestCase.assertNotNull(parameter.identifier);
+    expect(parameter.keyword, isNull);
+    expect(parameter.type, isNotNull);
+    expect(parameter.identifier, isNotNull);
   }
 
   void test_parseOperator() {
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     MethodDeclaration method = ParserTestCase.parse("parseOperator", <Object> [commentAndMetadata(comment, []), null, returnType], "operator +(A a);");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertEquals(comment, method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNotNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNull(method.propertyKeyword);
-    JUnitTestCase.assertEquals(returnType, method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, comment);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNotNull);
+    expect(method.parameters, isNotNull);
+    expect(method.propertyKeyword, isNull);
+    expect(method.returnType, returnType);
   }
 
   void test_parseOptionalReturnType() {
@@ -6986,301 +7002,301 @@
 
   void test_parsePartDirective_part() {
     PartDirective directive = ParserTestCase.parse("parsePartDirective", <Object> [emptyCommentAndMetadata()], "part 'lib/lib.dart';");
-    JUnitTestCase.assertNotNull(directive.partToken);
-    JUnitTestCase.assertNotNull(directive.uri);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.partToken, isNotNull);
+    expect(directive.uri, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parsePartDirective_partOf() {
     PartOfDirective directive = ParserTestCase.parse("parsePartDirective", <Object> [emptyCommentAndMetadata()], "part of l;");
-    JUnitTestCase.assertNotNull(directive.partToken);
-    JUnitTestCase.assertNotNull(directive.ofToken);
-    JUnitTestCase.assertNotNull(directive.libraryName);
-    JUnitTestCase.assertNotNull(directive.semicolon);
+    expect(directive.partToken, isNotNull);
+    expect(directive.ofToken, isNotNull);
+    expect(directive.libraryName, isNotNull);
+    expect(directive.semicolon, isNotNull);
   }
 
   void test_parsePostfixExpression_decrement() {
     PostfixExpression expression = ParserTestCase.parse4("parsePostfixExpression", "i--", []);
-    JUnitTestCase.assertNotNull(expression.operand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS_MINUS, expression.operator.type);
+    expect(expression.operand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS_MINUS);
   }
 
   void test_parsePostfixExpression_increment() {
     PostfixExpression expression = ParserTestCase.parse4("parsePostfixExpression", "i++", []);
-    JUnitTestCase.assertNotNull(expression.operand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS_PLUS, expression.operator.type);
+    expect(expression.operand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS_PLUS);
   }
 
   void test_parsePostfixExpression_none_indexExpression() {
     IndexExpression expression = ParserTestCase.parse4("parsePostfixExpression", "a[0]", []);
-    JUnitTestCase.assertNotNull(expression.target);
-    JUnitTestCase.assertNotNull(expression.index);
+    expect(expression.target, isNotNull);
+    expect(expression.index, isNotNull);
   }
 
   void test_parsePostfixExpression_none_methodInvocation() {
     MethodInvocation expression = ParserTestCase.parse4("parsePostfixExpression", "a.m()", []);
-    JUnitTestCase.assertNotNull(expression.target);
-    JUnitTestCase.assertNotNull(expression.methodName);
-    JUnitTestCase.assertNotNull(expression.argumentList);
+    expect(expression.target, isNotNull);
+    expect(expression.methodName, isNotNull);
+    expect(expression.argumentList, isNotNull);
   }
 
   void test_parsePostfixExpression_none_propertyAccess() {
     PrefixedIdentifier expression = ParserTestCase.parse4("parsePostfixExpression", "a.b", []);
-    JUnitTestCase.assertNotNull(expression.prefix);
-    JUnitTestCase.assertNotNull(expression.identifier);
+    expect(expression.prefix, isNotNull);
+    expect(expression.identifier, isNotNull);
   }
 
   void test_parsePrefixedIdentifier_noPrefix() {
     String lexeme = "bar";
     SimpleIdentifier identifier = ParserTestCase.parse4("parsePrefixedIdentifier", lexeme, []);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals(lexeme, identifier.name);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, lexeme);
   }
 
   void test_parsePrefixedIdentifier_prefix() {
     String lexeme = "foo.bar";
     PrefixedIdentifier identifier = ParserTestCase.parse4("parsePrefixedIdentifier", lexeme, []);
-    JUnitTestCase.assertEquals("foo", identifier.prefix.name);
-    JUnitTestCase.assertNotNull(identifier.period);
-    JUnitTestCase.assertEquals("bar", identifier.identifier.name);
+    expect(identifier.prefix.name, "foo");
+    expect(identifier.period, isNotNull);
+    expect(identifier.identifier.name, "bar");
   }
 
   void test_parsePrimaryExpression_const() {
     InstanceCreationExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "const A()", []);
-    JUnitTestCase.assertNotNull(expression);
+    expect(expression, isNotNull);
   }
 
   void test_parsePrimaryExpression_double() {
     String doubleLiteral = "3.2e4";
     DoubleLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", doubleLiteral, []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertEquals(double.parse(doubleLiteral), literal.value);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, double.parse(doubleLiteral));
   }
 
   void test_parsePrimaryExpression_false() {
     BooleanLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "false", []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertFalse(literal.value);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, isFalse);
   }
 
   void test_parsePrimaryExpression_function_arguments() {
     FunctionExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "(int i) => i + 1", []);
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNotNull(expression.body);
+    expect(expression.parameters, isNotNull);
+    expect(expression.body, isNotNull);
   }
 
   void test_parsePrimaryExpression_function_noArguments() {
     FunctionExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "() => 42", []);
-    JUnitTestCase.assertNotNull(expression.parameters);
-    JUnitTestCase.assertNotNull(expression.body);
+    expect(expression.parameters, isNotNull);
+    expect(expression.body, isNotNull);
   }
 
   void test_parsePrimaryExpression_hex() {
     String hexLiteral = "3F";
-    IntegerLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "0x${hexLiteral}", []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertEquals(int.parse(hexLiteral, radix: 16), literal.value);
+    IntegerLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "0x$hexLiteral", []);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, int.parse(hexLiteral, radix: 16));
   }
 
   void test_parsePrimaryExpression_identifier() {
     SimpleIdentifier identifier = ParserTestCase.parse4("parsePrimaryExpression", "a", []);
-    JUnitTestCase.assertNotNull(identifier);
+    expect(identifier, isNotNull);
   }
 
   void test_parsePrimaryExpression_int() {
     String intLiteral = "472";
     IntegerLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", intLiteral, []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertEquals(int.parse(intLiteral), literal.value);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, int.parse(intLiteral));
   }
 
   void test_parsePrimaryExpression_listLiteral() {
     ListLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "[ ]", []);
-    JUnitTestCase.assertNotNull(literal);
+    expect(literal, isNotNull);
   }
 
   void test_parsePrimaryExpression_listLiteral_index() {
     ListLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "[]", []);
-    JUnitTestCase.assertNotNull(literal);
+    expect(literal, isNotNull);
   }
 
   void test_parsePrimaryExpression_listLiteral_typed() {
     ListLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "<A>[ ]", []);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
-    EngineTestCase.assertSizeOfList(1, literal.typeArguments.arguments);
+    expect(literal.typeArguments, isNotNull);
+    expect(literal.typeArguments.arguments, hasLength(1));
   }
 
   void test_parsePrimaryExpression_mapLiteral() {
     MapLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "{}", []);
-    JUnitTestCase.assertNotNull(literal);
+    expect(literal, isNotNull);
   }
 
   void test_parsePrimaryExpression_mapLiteral_typed() {
     MapLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "<A, B>{}", []);
-    JUnitTestCase.assertNotNull(literal.typeArguments);
-    EngineTestCase.assertSizeOfList(2, literal.typeArguments.arguments);
+    expect(literal.typeArguments, isNotNull);
+    expect(literal.typeArguments.arguments, hasLength(2));
   }
 
   void test_parsePrimaryExpression_new() {
     InstanceCreationExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "new A()", []);
-    JUnitTestCase.assertNotNull(expression);
+    expect(expression, isNotNull);
   }
 
   void test_parsePrimaryExpression_null() {
     NullLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "null", []);
-    JUnitTestCase.assertNotNull(literal.literal);
+    expect(literal.literal, isNotNull);
   }
 
   void test_parsePrimaryExpression_parenthesized() {
     ParenthesizedExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "(x)", []);
-    JUnitTestCase.assertNotNull(expression);
+    expect(expression, isNotNull);
   }
 
   void test_parsePrimaryExpression_string() {
     SimpleStringLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "\"string\"", []);
-    JUnitTestCase.assertFalse(literal.isMultiline);
-    JUnitTestCase.assertFalse(literal.isRaw);
-    JUnitTestCase.assertEquals("string", literal.value);
+    expect(literal.isMultiline, isFalse);
+    expect(literal.isRaw, isFalse);
+    expect(literal.value, "string");
   }
 
   void test_parsePrimaryExpression_string_multiline() {
     SimpleStringLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "'''string'''", []);
-    JUnitTestCase.assertTrue(literal.isMultiline);
-    JUnitTestCase.assertFalse(literal.isRaw);
-    JUnitTestCase.assertEquals("string", literal.value);
+    expect(literal.isMultiline, isTrue);
+    expect(literal.isRaw, isFalse);
+    expect(literal.value, "string");
   }
 
   void test_parsePrimaryExpression_string_raw() {
     SimpleStringLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "r'string'", []);
-    JUnitTestCase.assertFalse(literal.isMultiline);
-    JUnitTestCase.assertTrue(literal.isRaw);
-    JUnitTestCase.assertEquals("string", literal.value);
+    expect(literal.isMultiline, isFalse);
+    expect(literal.isRaw, isTrue);
+    expect(literal.value, "string");
   }
 
   void test_parsePrimaryExpression_super() {
     PropertyAccess propertyAccess = ParserTestCase.parse4("parsePrimaryExpression", "super.x", []);
-    JUnitTestCase.assertTrue(propertyAccess.target is SuperExpression);
-    JUnitTestCase.assertNotNull(propertyAccess.operator);
-    JUnitTestCase.assertEquals(TokenType.PERIOD, propertyAccess.operator.type);
-    JUnitTestCase.assertNotNull(propertyAccess.propertyName);
+    expect(propertyAccess.target is SuperExpression, isTrue);
+    expect(propertyAccess.operator, isNotNull);
+    expect(propertyAccess.operator.type, TokenType.PERIOD);
+    expect(propertyAccess.propertyName, isNotNull);
   }
 
   void test_parsePrimaryExpression_this() {
     ThisExpression expression = ParserTestCase.parse4("parsePrimaryExpression", "this", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
+    expect(expression.keyword, isNotNull);
   }
 
   void test_parsePrimaryExpression_true() {
     BooleanLiteral literal = ParserTestCase.parse4("parsePrimaryExpression", "true", []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertTrue(literal.value);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, isTrue);
   }
 
   void test_Parser() {
-    JUnitTestCase.assertNotNull(new Parser(null, null));
+    expect(new Parser(null, null), isNotNull);
   }
 
   void test_parseRedirectingConstructorInvocation_named() {
     RedirectingConstructorInvocation invocation = ParserTestCase.parse4("parseRedirectingConstructorInvocation", "this.a()", []);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
-    JUnitTestCase.assertNotNull(invocation.constructorName);
-    JUnitTestCase.assertNotNull(invocation.keyword);
-    JUnitTestCase.assertNotNull(invocation.period);
+    expect(invocation.argumentList, isNotNull);
+    expect(invocation.constructorName, isNotNull);
+    expect(invocation.keyword, isNotNull);
+    expect(invocation.period, isNotNull);
   }
 
   void test_parseRedirectingConstructorInvocation_unnamed() {
     RedirectingConstructorInvocation invocation = ParserTestCase.parse4("parseRedirectingConstructorInvocation", "this()", []);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
-    JUnitTestCase.assertNull(invocation.constructorName);
-    JUnitTestCase.assertNotNull(invocation.keyword);
-    JUnitTestCase.assertNull(invocation.period);
+    expect(invocation.argumentList, isNotNull);
+    expect(invocation.constructorName, isNull);
+    expect(invocation.keyword, isNotNull);
+    expect(invocation.period, isNull);
   }
 
   void test_parseRelationalExpression_as() {
     AsExpression expression = ParserTestCase.parse4("parseRelationalExpression", "x as Y", []);
-    JUnitTestCase.assertNotNull(expression.expression);
-    JUnitTestCase.assertNotNull(expression.asOperator);
-    JUnitTestCase.assertNotNull(expression.type);
+    expect(expression.expression, isNotNull);
+    expect(expression.asOperator, isNotNull);
+    expect(expression.type, isNotNull);
   }
 
   void test_parseRelationalExpression_is() {
     IsExpression expression = ParserTestCase.parse4("parseRelationalExpression", "x is y", []);
-    JUnitTestCase.assertNotNull(expression.expression);
-    JUnitTestCase.assertNotNull(expression.isOperator);
-    JUnitTestCase.assertNull(expression.notOperator);
-    JUnitTestCase.assertNotNull(expression.type);
+    expect(expression.expression, isNotNull);
+    expect(expression.isOperator, isNotNull);
+    expect(expression.notOperator, isNull);
+    expect(expression.type, isNotNull);
   }
 
   void test_parseRelationalExpression_isNot() {
     IsExpression expression = ParserTestCase.parse4("parseRelationalExpression", "x is! y", []);
-    JUnitTestCase.assertNotNull(expression.expression);
-    JUnitTestCase.assertNotNull(expression.isOperator);
-    JUnitTestCase.assertNotNull(expression.notOperator);
-    JUnitTestCase.assertNotNull(expression.type);
+    expect(expression.expression, isNotNull);
+    expect(expression.isOperator, isNotNull);
+    expect(expression.notOperator, isNotNull);
+    expect(expression.type, isNotNull);
   }
 
   void test_parseRelationalExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseRelationalExpression", "x < y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.LT, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.LT);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseRelationalExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseRelationalExpression", "super < y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.LT, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.LT);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseRethrowExpression() {
     RethrowExpression expression = ParserTestCase.parse4("parseRethrowExpression", "rethrow;", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
+    expect(expression.keyword, isNotNull);
   }
 
   void test_parseReturnStatement_noValue() {
     ReturnStatement statement = ParserTestCase.parse4("parseReturnStatement", "return;", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.expression, isNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseReturnStatement_value() {
     ReturnStatement statement = ParserTestCase.parse4("parseReturnStatement", "return x;", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.keyword, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseReturnType_nonVoid() {
     TypeName typeName = ParserTestCase.parse4("parseReturnType", "A<B>", []);
-    JUnitTestCase.assertNotNull(typeName.name);
-    JUnitTestCase.assertNotNull(typeName.typeArguments);
+    expect(typeName.name, isNotNull);
+    expect(typeName.typeArguments, isNotNull);
   }
 
   void test_parseReturnType_void() {
     TypeName typeName = ParserTestCase.parse4("parseReturnType", "void", []);
-    JUnitTestCase.assertNotNull(typeName.name);
-    JUnitTestCase.assertNull(typeName.typeArguments);
+    expect(typeName.name, isNotNull);
+    expect(typeName.typeArguments, isNull);
   }
 
   void test_parseSetter_nonStatic() {
     Comment comment = Comment.createDocumentationComment(new List<Token>(0));
     TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
     MethodDeclaration method = ParserTestCase.parse("parseSetter", <Object> [commentAndMetadata(comment, []), null, null, returnType], "set a(var x);");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertEquals(comment, method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertNull(method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.propertyKeyword);
-    JUnitTestCase.assertEquals(returnType, method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, comment);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, isNull);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.propertyKeyword, isNotNull);
+    expect(method.returnType, returnType);
   }
 
   void test_parseSetter_static() {
@@ -7292,45 +7308,45 @@
         null,
         staticKeyword,
         returnType], "set a(var x) {}");
-    JUnitTestCase.assertNotNull(method.body);
-    JUnitTestCase.assertEquals(comment, method.documentationComment);
-    JUnitTestCase.assertNull(method.externalKeyword);
-    JUnitTestCase.assertEquals(staticKeyword, method.modifierKeyword);
-    JUnitTestCase.assertNotNull(method.name);
-    JUnitTestCase.assertNull(method.operatorKeyword);
-    JUnitTestCase.assertNotNull(method.parameters);
-    JUnitTestCase.assertNotNull(method.propertyKeyword);
-    JUnitTestCase.assertEquals(returnType, method.returnType);
+    expect(method.body, isNotNull);
+    expect(method.documentationComment, comment);
+    expect(method.externalKeyword, isNull);
+    expect(method.modifierKeyword, staticKeyword);
+    expect(method.name, isNotNull);
+    expect(method.operatorKeyword, isNull);
+    expect(method.parameters, isNotNull);
+    expect(method.propertyKeyword, isNotNull);
+    expect(method.returnType, returnType);
   }
 
   void test_parseShiftExpression_normal() {
     BinaryExpression expression = ParserTestCase.parse4("parseShiftExpression", "x << y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.LT_LT, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.LT_LT);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseShiftExpression_super() {
     BinaryExpression expression = ParserTestCase.parse4("parseShiftExpression", "super << y", []);
-    JUnitTestCase.assertNotNull(expression.leftOperand);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.LT_LT, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.rightOperand);
+    expect(expression.leftOperand, isNotNull);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.LT_LT);
+    expect(expression.rightOperand, isNotNull);
   }
 
   void test_parseSimpleIdentifier_builtInIdentifier() {
     String lexeme = "as";
     SimpleIdentifier identifier = ParserTestCase.parse4("parseSimpleIdentifier", lexeme, []);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals(lexeme, identifier.name);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, lexeme);
   }
 
   void test_parseSimpleIdentifier_normalIdentifier() {
     String lexeme = "foo";
     SimpleIdentifier identifier = ParserTestCase.parse4("parseSimpleIdentifier", lexeme, []);
-    JUnitTestCase.assertNotNull(identifier.token);
-    JUnitTestCase.assertEquals(lexeme, identifier.name);
+    expect(identifier.token, isNotNull);
+    expect(identifier.name, lexeme);
   }
 
   void test_parseSimpleIdentifier1_normalIdentifier() {
@@ -7340,13 +7356,13 @@
   void test_parseStatement_functionDeclaration() {
     // TODO(brianwilkerson) Implement more tests for this method.
     FunctionDeclarationStatement statement = ParserTestCase.parse4("parseStatement", "int f(a, b) {};", []);
-    JUnitTestCase.assertNotNull(statement.functionDeclaration);
+    expect(statement.functionDeclaration, isNotNull);
   }
 
   void test_parseStatement_mulipleLabels() {
     LabeledStatement statement = ParserTestCase.parse4("parseStatement", "l: m: return x;", []);
-    EngineTestCase.assertSizeOfList(2, statement.labels);
-    JUnitTestCase.assertNotNull(statement.statement);
+    expect(statement.labels, hasLength(2));
+    expect(statement.statement, isNotNull);
   }
 
   void test_parseStatement_noLabels() {
@@ -7355,757 +7371,757 @@
 
   void test_parseStatement_singleLabel() {
     LabeledStatement statement = ParserTestCase.parse4("parseStatement", "l: return x;", []);
-    EngineTestCase.assertSizeOfList(1, statement.labels);
-    JUnitTestCase.assertNotNull(statement.statement);
+    expect(statement.labels, hasLength(1));
+    expect(statement.statement, isNotNull);
   }
 
   void test_parseStatements_multiple() {
     List<Statement> statements = ParserTestCase.parseStatements("return; return;", 2, []);
-    EngineTestCase.assertSizeOfList(2, statements);
+    expect(statements, hasLength(2));
   }
 
   void test_parseStatements_single() {
     List<Statement> statements = ParserTestCase.parseStatements("return;", 1, []);
-    EngineTestCase.assertSizeOfList(1, statements);
+    expect(statements, hasLength(1));
   }
 
   void test_parseStringLiteral_adjacent() {
     AdjacentStrings literal = ParserTestCase.parse4("parseStringLiteral", "'a' 'b'", []);
     NodeList<StringLiteral> strings = literal.strings;
-    EngineTestCase.assertSizeOfList(2, strings);
+    expect(strings, hasLength(2));
     StringLiteral firstString = strings[0];
     StringLiteral secondString = strings[1];
-    JUnitTestCase.assertEquals("a", (firstString as SimpleStringLiteral).value);
-    JUnitTestCase.assertEquals("b", (secondString as SimpleStringLiteral).value);
+    expect((firstString as SimpleStringLiteral).value, "a");
+    expect((secondString as SimpleStringLiteral).value, "b");
   }
 
   void test_parseStringLiteral_interpolated() {
     StringInterpolation literal = ParserTestCase.parse4("parseStringLiteral", "'a \${b} c \$this d'", []);
     NodeList<InterpolationElement> elements = literal.elements;
-    EngineTestCase.assertSizeOfList(5, elements);
-    JUnitTestCase.assertTrue(elements[0] is InterpolationString);
-    JUnitTestCase.assertTrue(elements[1] is InterpolationExpression);
-    JUnitTestCase.assertTrue(elements[2] is InterpolationString);
-    JUnitTestCase.assertTrue(elements[3] is InterpolationExpression);
-    JUnitTestCase.assertTrue(elements[4] is InterpolationString);
+    expect(elements, hasLength(5));
+    expect(elements[0] is InterpolationString, isTrue);
+    expect(elements[1] is InterpolationExpression, isTrue);
+    expect(elements[2] is InterpolationString, isTrue);
+    expect(elements[3] is InterpolationExpression, isTrue);
+    expect(elements[4] is InterpolationString, isTrue);
   }
 
   void test_parseStringLiteral_single() {
     SimpleStringLiteral literal = ParserTestCase.parse4("parseStringLiteral", "'a'", []);
-    JUnitTestCase.assertNotNull(literal.literal);
-    JUnitTestCase.assertEquals("a", literal.value);
+    expect(literal.literal, isNotNull);
+    expect(literal.value, "a");
   }
 
   void test_parseSuperConstructorInvocation_named() {
     SuperConstructorInvocation invocation = ParserTestCase.parse4("parseSuperConstructorInvocation", "super.a()", []);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
-    JUnitTestCase.assertNotNull(invocation.constructorName);
-    JUnitTestCase.assertNotNull(invocation.keyword);
-    JUnitTestCase.assertNotNull(invocation.period);
+    expect(invocation.argumentList, isNotNull);
+    expect(invocation.constructorName, isNotNull);
+    expect(invocation.keyword, isNotNull);
+    expect(invocation.period, isNotNull);
   }
 
   void test_parseSuperConstructorInvocation_unnamed() {
     SuperConstructorInvocation invocation = ParserTestCase.parse4("parseSuperConstructorInvocation", "super()", []);
-    JUnitTestCase.assertNotNull(invocation.argumentList);
-    JUnitTestCase.assertNull(invocation.constructorName);
-    JUnitTestCase.assertNotNull(invocation.keyword);
-    JUnitTestCase.assertNull(invocation.period);
+    expect(invocation.argumentList, isNotNull);
+    expect(invocation.constructorName, isNull);
+    expect(invocation.keyword, isNotNull);
+    expect(invocation.period, isNull);
   }
 
   void test_parseSwitchStatement_case() {
     SwitchStatement statement = ParserTestCase.parse4("parseSwitchStatement", "switch (a) {case 1: return 'I';}", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.leftBracket);
-    EngineTestCase.assertSizeOfList(1, statement.members);
-    JUnitTestCase.assertNotNull(statement.rightBracket);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.leftBracket, isNotNull);
+    expect(statement.members, hasLength(1));
+    expect(statement.rightBracket, isNotNull);
   }
 
   void test_parseSwitchStatement_empty() {
     SwitchStatement statement = ParserTestCase.parse4("parseSwitchStatement", "switch (a) {}", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.leftBracket);
-    EngineTestCase.assertSizeOfList(0, statement.members);
-    JUnitTestCase.assertNotNull(statement.rightBracket);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.leftBracket, isNotNull);
+    expect(statement.members, hasLength(0));
+    expect(statement.rightBracket, isNotNull);
   }
 
   void test_parseSwitchStatement_labeledCase() {
     SwitchStatement statement = ParserTestCase.parse4("parseSwitchStatement", "switch (a) {l1: l2: l3: case(1):}", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.leftBracket);
-    EngineTestCase.assertSizeOfList(1, statement.members);
-    EngineTestCase.assertSizeOfList(3, statement.members[0].labels);
-    JUnitTestCase.assertNotNull(statement.rightBracket);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.leftBracket, isNotNull);
+    expect(statement.members, hasLength(1));
+    expect(statement.members[0].labels, hasLength(3));
+    expect(statement.rightBracket, isNotNull);
   }
 
   void test_parseSwitchStatement_labeledStatementInCase() {
     SwitchStatement statement = ParserTestCase.parse4("parseSwitchStatement", "switch (a) {case 0: f(); l1: g(); break;}", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.leftBracket);
-    EngineTestCase.assertSizeOfList(1, statement.members);
-    EngineTestCase.assertSizeOfList(3, statement.members[0].statements);
-    JUnitTestCase.assertNotNull(statement.rightBracket);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.leftBracket, isNotNull);
+    expect(statement.members, hasLength(1));
+    expect(statement.members[0].statements, hasLength(3));
+    expect(statement.rightBracket, isNotNull);
   }
 
   void test_parseSymbolLiteral_builtInIdentifier() {
     SymbolLiteral literal = ParserTestCase.parse4("parseSymbolLiteral", "#dynamic.static.abstract", []);
-    JUnitTestCase.assertNotNull(literal.poundSign);
+    expect(literal.poundSign, isNotNull);
     List<Token> components = literal.components;
-    EngineTestCase.assertLength(3, components);
-    JUnitTestCase.assertEquals("dynamic", components[0].lexeme);
-    JUnitTestCase.assertEquals("static", components[1].lexeme);
-    JUnitTestCase.assertEquals("abstract", components[2].lexeme);
+    expect(components, hasLength(3));
+    expect(components[0].lexeme, "dynamic");
+    expect(components[1].lexeme, "static");
+    expect(components[2].lexeme, "abstract");
   }
 
   void test_parseSymbolLiteral_multiple() {
     SymbolLiteral literal = ParserTestCase.parse4("parseSymbolLiteral", "#a.b.c", []);
-    JUnitTestCase.assertNotNull(literal.poundSign);
+    expect(literal.poundSign, isNotNull);
     List<Token> components = literal.components;
-    EngineTestCase.assertLength(3, components);
-    JUnitTestCase.assertEquals("a", components[0].lexeme);
-    JUnitTestCase.assertEquals("b", components[1].lexeme);
-    JUnitTestCase.assertEquals("c", components[2].lexeme);
+    expect(components, hasLength(3));
+    expect(components[0].lexeme, "a");
+    expect(components[1].lexeme, "b");
+    expect(components[2].lexeme, "c");
   }
 
   void test_parseSymbolLiteral_operator() {
     SymbolLiteral literal = ParserTestCase.parse4("parseSymbolLiteral", "#==", []);
-    JUnitTestCase.assertNotNull(literal.poundSign);
+    expect(literal.poundSign, isNotNull);
     List<Token> components = literal.components;
-    EngineTestCase.assertLength(1, components);
-    JUnitTestCase.assertEquals("==", components[0].lexeme);
+    expect(components, hasLength(1));
+    expect(components[0].lexeme, "==");
   }
 
   void test_parseSymbolLiteral_single() {
     SymbolLiteral literal = ParserTestCase.parse4("parseSymbolLiteral", "#a", []);
-    JUnitTestCase.assertNotNull(literal.poundSign);
+    expect(literal.poundSign, isNotNull);
     List<Token> components = literal.components;
-    EngineTestCase.assertLength(1, components);
-    JUnitTestCase.assertEquals("a", components[0].lexeme);
+    expect(components, hasLength(1));
+    expect(components[0].lexeme, "a");
   }
 
   void test_parseSymbolLiteral_void() {
     SymbolLiteral literal = ParserTestCase.parse4("parseSymbolLiteral", "#void", []);
-    JUnitTestCase.assertNotNull(literal.poundSign);
+    expect(literal.poundSign, isNotNull);
     List<Token> components = literal.components;
-    EngineTestCase.assertLength(1, components);
-    JUnitTestCase.assertEquals("void", components[0].lexeme);
+    expect(components, hasLength(1));
+    expect(components[0].lexeme, "void");
   }
 
   void test_parseThrowExpression() {
     ThrowExpression expression = ParserTestCase.parse4("parseThrowExpression", "throw x;", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
-    JUnitTestCase.assertNotNull(expression.expression);
+    expect(expression.keyword, isNotNull);
+    expect(expression.expression, isNotNull);
   }
 
   void test_parseThrowExpressionWithoutCascade() {
     ThrowExpression expression = ParserTestCase.parse4("parseThrowExpressionWithoutCascade", "throw x;", []);
-    JUnitTestCase.assertNotNull(expression.keyword);
-    JUnitTestCase.assertNotNull(expression.expression);
+    expect(expression.keyword, isNotNull);
+    expect(expression.expression, isNotNull);
   }
 
   void test_parseTryStatement_catch() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} catch (e) {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
     NodeList<CatchClause> catchClauses = statement.catchClauses;
-    EngineTestCase.assertSizeOfList(1, catchClauses);
+    expect(catchClauses, hasLength(1));
     CatchClause clause = catchClauses[0];
-    JUnitTestCase.assertNull(clause.onKeyword);
-    JUnitTestCase.assertNull(clause.exceptionType);
-    JUnitTestCase.assertNotNull(clause.catchKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionParameter);
-    JUnitTestCase.assertNull(clause.comma);
-    JUnitTestCase.assertNull(clause.stackTraceParameter);
-    JUnitTestCase.assertNotNull(clause.body);
-    JUnitTestCase.assertNull(statement.finallyKeyword);
-    JUnitTestCase.assertNull(statement.finallyBlock);
+    expect(clause.onKeyword, isNull);
+    expect(clause.exceptionType, isNull);
+    expect(clause.catchKeyword, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
+    expect(clause.comma, isNull);
+    expect(clause.stackTraceParameter, isNull);
+    expect(clause.body, isNotNull);
+    expect(statement.finallyKeyword, isNull);
+    expect(statement.finallyBlock, isNull);
   }
 
   void test_parseTryStatement_catch_finally() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} catch (e, s) {} finally {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
     NodeList<CatchClause> catchClauses = statement.catchClauses;
-    EngineTestCase.assertSizeOfList(1, catchClauses);
+    expect(catchClauses, hasLength(1));
     CatchClause clause = catchClauses[0];
-    JUnitTestCase.assertNull(clause.onKeyword);
-    JUnitTestCase.assertNull(clause.exceptionType);
-    JUnitTestCase.assertNotNull(clause.catchKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionParameter);
-    JUnitTestCase.assertNotNull(clause.comma);
-    JUnitTestCase.assertNotNull(clause.stackTraceParameter);
-    JUnitTestCase.assertNotNull(clause.body);
-    JUnitTestCase.assertNotNull(statement.finallyKeyword);
-    JUnitTestCase.assertNotNull(statement.finallyBlock);
+    expect(clause.onKeyword, isNull);
+    expect(clause.exceptionType, isNull);
+    expect(clause.catchKeyword, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
+    expect(clause.comma, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
+    expect(clause.body, isNotNull);
+    expect(statement.finallyKeyword, isNotNull);
+    expect(statement.finallyBlock, isNotNull);
   }
 
   void test_parseTryStatement_finally() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} finally {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
-    EngineTestCase.assertSizeOfList(0, statement.catchClauses);
-    JUnitTestCase.assertNotNull(statement.finallyKeyword);
-    JUnitTestCase.assertNotNull(statement.finallyBlock);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
+    expect(statement.catchClauses, hasLength(0));
+    expect(statement.finallyKeyword, isNotNull);
+    expect(statement.finallyBlock, isNotNull);
   }
 
   void test_parseTryStatement_multiple() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} on NPE catch (e) {} on Error {} catch (e) {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
-    EngineTestCase.assertSizeOfList(3, statement.catchClauses);
-    JUnitTestCase.assertNull(statement.finallyKeyword);
-    JUnitTestCase.assertNull(statement.finallyBlock);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
+    expect(statement.catchClauses, hasLength(3));
+    expect(statement.finallyKeyword, isNull);
+    expect(statement.finallyBlock, isNull);
   }
 
   void test_parseTryStatement_on() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} on Error {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
     NodeList<CatchClause> catchClauses = statement.catchClauses;
-    EngineTestCase.assertSizeOfList(1, catchClauses);
+    expect(catchClauses, hasLength(1));
     CatchClause clause = catchClauses[0];
-    JUnitTestCase.assertNotNull(clause.onKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionType);
-    JUnitTestCase.assertNull(clause.catchKeyword);
-    JUnitTestCase.assertNull(clause.exceptionParameter);
-    JUnitTestCase.assertNull(clause.comma);
-    JUnitTestCase.assertNull(clause.stackTraceParameter);
-    JUnitTestCase.assertNotNull(clause.body);
-    JUnitTestCase.assertNull(statement.finallyKeyword);
-    JUnitTestCase.assertNull(statement.finallyBlock);
+    expect(clause.onKeyword, isNotNull);
+    expect(clause.exceptionType, isNotNull);
+    expect(clause.catchKeyword, isNull);
+    expect(clause.exceptionParameter, isNull);
+    expect(clause.comma, isNull);
+    expect(clause.stackTraceParameter, isNull);
+    expect(clause.body, isNotNull);
+    expect(statement.finallyKeyword, isNull);
+    expect(statement.finallyBlock, isNull);
   }
 
   void test_parseTryStatement_on_catch() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} on Error catch (e, s) {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
     NodeList<CatchClause> catchClauses = statement.catchClauses;
-    EngineTestCase.assertSizeOfList(1, catchClauses);
+    expect(catchClauses, hasLength(1));
     CatchClause clause = catchClauses[0];
-    JUnitTestCase.assertNotNull(clause.onKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionType);
-    JUnitTestCase.assertNotNull(clause.catchKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionParameter);
-    JUnitTestCase.assertNotNull(clause.comma);
-    JUnitTestCase.assertNotNull(clause.stackTraceParameter);
-    JUnitTestCase.assertNotNull(clause.body);
-    JUnitTestCase.assertNull(statement.finallyKeyword);
-    JUnitTestCase.assertNull(statement.finallyBlock);
+    expect(clause.onKeyword, isNotNull);
+    expect(clause.exceptionType, isNotNull);
+    expect(clause.catchKeyword, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
+    expect(clause.comma, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
+    expect(clause.body, isNotNull);
+    expect(statement.finallyKeyword, isNull);
+    expect(statement.finallyBlock, isNull);
   }
 
   void test_parseTryStatement_on_catch_finally() {
     TryStatement statement = ParserTestCase.parse4("parseTryStatement", "try {} on Error catch (e, s) {} finally {}", []);
-    JUnitTestCase.assertNotNull(statement.tryKeyword);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.tryKeyword, isNotNull);
+    expect(statement.body, isNotNull);
     NodeList<CatchClause> catchClauses = statement.catchClauses;
-    EngineTestCase.assertSizeOfList(1, catchClauses);
+    expect(catchClauses, hasLength(1));
     CatchClause clause = catchClauses[0];
-    JUnitTestCase.assertNotNull(clause.onKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionType);
-    JUnitTestCase.assertNotNull(clause.catchKeyword);
-    JUnitTestCase.assertNotNull(clause.exceptionParameter);
-    JUnitTestCase.assertNotNull(clause.comma);
-    JUnitTestCase.assertNotNull(clause.stackTraceParameter);
-    JUnitTestCase.assertNotNull(clause.body);
-    JUnitTestCase.assertNotNull(statement.finallyKeyword);
-    JUnitTestCase.assertNotNull(statement.finallyBlock);
+    expect(clause.onKeyword, isNotNull);
+    expect(clause.exceptionType, isNotNull);
+    expect(clause.catchKeyword, isNotNull);
+    expect(clause.exceptionParameter, isNotNull);
+    expect(clause.comma, isNotNull);
+    expect(clause.stackTraceParameter, isNotNull);
+    expect(clause.body, isNotNull);
+    expect(statement.finallyKeyword, isNotNull);
+    expect(statement.finallyBlock, isNotNull);
   }
 
   void test_parseTypeAlias_function_noParameters() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef bool F();");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNotNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
   }
 
   void test_parseTypeAlias_function_noReturnType() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef F();");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
   }
 
   void test_parseTypeAlias_function_parameterizedReturnType() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef A<B> F();");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNotNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
   }
 
   void test_parseTypeAlias_function_parameters() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef bool F(Object value);");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNotNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
   }
 
   void test_parseTypeAlias_function_typeParameters() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef bool F<E>();");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNotNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNotNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNotNull);
   }
 
   void test_parseTypeAlias_function_voidReturnType() {
     FunctionTypeAlias typeAlias = ParserTestCase.parse("parseTypeAlias", <Object> [emptyCommentAndMetadata()], "typedef void F();");
-    JUnitTestCase.assertNotNull(typeAlias.keyword);
-    JUnitTestCase.assertNotNull(typeAlias.name);
-    JUnitTestCase.assertNotNull(typeAlias.parameters);
-    JUnitTestCase.assertNotNull(typeAlias.returnType);
-    JUnitTestCase.assertNotNull(typeAlias.semicolon);
-    JUnitTestCase.assertNull(typeAlias.typeParameters);
+    expect(typeAlias.keyword, isNotNull);
+    expect(typeAlias.name, isNotNull);
+    expect(typeAlias.parameters, isNotNull);
+    expect(typeAlias.returnType, isNotNull);
+    expect(typeAlias.semicolon, isNotNull);
+    expect(typeAlias.typeParameters, isNull);
   }
 
   void test_parseTypeArgumentList_multiple() {
     TypeArgumentList argumentList = ParserTestCase.parse4("parseTypeArgumentList", "<int, int, int>", []);
-    JUnitTestCase.assertNotNull(argumentList.leftBracket);
-    EngineTestCase.assertSizeOfList(3, argumentList.arguments);
-    JUnitTestCase.assertNotNull(argumentList.rightBracket);
+    expect(argumentList.leftBracket, isNotNull);
+    expect(argumentList.arguments, hasLength(3));
+    expect(argumentList.rightBracket, isNotNull);
   }
 
   void test_parseTypeArgumentList_nested() {
     TypeArgumentList argumentList = ParserTestCase.parse4("parseTypeArgumentList", "<A<B>>", []);
-    JUnitTestCase.assertNotNull(argumentList.leftBracket);
-    EngineTestCase.assertSizeOfList(1, argumentList.arguments);
+    expect(argumentList.leftBracket, isNotNull);
+    expect(argumentList.arguments, hasLength(1));
     TypeName argument = argumentList.arguments[0];
-    JUnitTestCase.assertNotNull(argument);
+    expect(argument, isNotNull);
     TypeArgumentList innerList = argument.typeArguments;
-    JUnitTestCase.assertNotNull(innerList);
-    EngineTestCase.assertSizeOfList(1, innerList.arguments);
-    JUnitTestCase.assertNotNull(argumentList.rightBracket);
+    expect(innerList, isNotNull);
+    expect(innerList.arguments, hasLength(1));
+    expect(argumentList.rightBracket, isNotNull);
   }
 
   void test_parseTypeArgumentList_single() {
     TypeArgumentList argumentList = ParserTestCase.parse4("parseTypeArgumentList", "<int>", []);
-    JUnitTestCase.assertNotNull(argumentList.leftBracket);
-    EngineTestCase.assertSizeOfList(1, argumentList.arguments);
-    JUnitTestCase.assertNotNull(argumentList.rightBracket);
+    expect(argumentList.leftBracket, isNotNull);
+    expect(argumentList.arguments, hasLength(1));
+    expect(argumentList.rightBracket, isNotNull);
   }
 
   void test_parseTypeName_parameterized() {
     TypeName typeName = ParserTestCase.parse4("parseTypeName", "List<int>", []);
-    JUnitTestCase.assertNotNull(typeName.name);
-    JUnitTestCase.assertNotNull(typeName.typeArguments);
+    expect(typeName.name, isNotNull);
+    expect(typeName.typeArguments, isNotNull);
   }
 
   void test_parseTypeName_simple() {
     TypeName typeName = ParserTestCase.parse4("parseTypeName", "int", []);
-    JUnitTestCase.assertNotNull(typeName.name);
-    JUnitTestCase.assertNull(typeName.typeArguments);
+    expect(typeName.name, isNotNull);
+    expect(typeName.typeArguments, isNull);
   }
 
   void test_parseTypeParameter_bounded() {
     TypeParameter parameter = ParserTestCase.parse4("parseTypeParameter", "A extends B", []);
-    JUnitTestCase.assertNotNull(parameter.bound);
-    JUnitTestCase.assertNotNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.name);
+    expect(parameter.bound, isNotNull);
+    expect(parameter.keyword, isNotNull);
+    expect(parameter.name, isNotNull);
   }
 
   void test_parseTypeParameter_simple() {
     TypeParameter parameter = ParserTestCase.parse4("parseTypeParameter", "A", []);
-    JUnitTestCase.assertNull(parameter.bound);
-    JUnitTestCase.assertNull(parameter.keyword);
-    JUnitTestCase.assertNotNull(parameter.name);
+    expect(parameter.bound, isNull);
+    expect(parameter.keyword, isNull);
+    expect(parameter.name, isNotNull);
   }
 
   void test_parseTypeParameterList_multiple() {
     TypeParameterList parameterList = ParserTestCase.parse4("parseTypeParameterList", "<A, B extends C, D>", []);
-    JUnitTestCase.assertNotNull(parameterList.leftBracket);
-    JUnitTestCase.assertNotNull(parameterList.rightBracket);
-    EngineTestCase.assertSizeOfList(3, parameterList.typeParameters);
+    expect(parameterList.leftBracket, isNotNull);
+    expect(parameterList.rightBracket, isNotNull);
+    expect(parameterList.typeParameters, hasLength(3));
   }
 
   void test_parseTypeParameterList_parameterizedWithTrailingEquals() {
     TypeParameterList parameterList = ParserTestCase.parse4("parseTypeParameterList", "<A extends B<E>>=", []);
-    JUnitTestCase.assertNotNull(parameterList.leftBracket);
-    JUnitTestCase.assertNotNull(parameterList.rightBracket);
-    EngineTestCase.assertSizeOfList(1, parameterList.typeParameters);
+    expect(parameterList.leftBracket, isNotNull);
+    expect(parameterList.rightBracket, isNotNull);
+    expect(parameterList.typeParameters, hasLength(1));
   }
 
   void test_parseTypeParameterList_single() {
     TypeParameterList parameterList = ParserTestCase.parse4("parseTypeParameterList", "<A>", []);
-    JUnitTestCase.assertNotNull(parameterList.leftBracket);
-    JUnitTestCase.assertNotNull(parameterList.rightBracket);
-    EngineTestCase.assertSizeOfList(1, parameterList.typeParameters);
+    expect(parameterList.leftBracket, isNotNull);
+    expect(parameterList.rightBracket, isNotNull);
+    expect(parameterList.typeParameters, hasLength(1));
   }
 
   void test_parseTypeParameterList_withTrailingEquals() {
     TypeParameterList parameterList = ParserTestCase.parse4("parseTypeParameterList", "<A>=", []);
-    JUnitTestCase.assertNotNull(parameterList.leftBracket);
-    JUnitTestCase.assertNotNull(parameterList.rightBracket);
-    EngineTestCase.assertSizeOfList(1, parameterList.typeParameters);
+    expect(parameterList.leftBracket, isNotNull);
+    expect(parameterList.rightBracket, isNotNull);
+    expect(parameterList.typeParameters, hasLength(1));
   }
 
   void test_parseUnaryExpression_decrement_normal() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "--x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS_MINUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS_MINUS);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_decrement_super() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "--super", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS, expression.operator.type);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS);
     Expression innerExpression = expression.operand;
-    JUnitTestCase.assertNotNull(innerExpression);
-    JUnitTestCase.assertTrue(innerExpression is PrefixExpression);
+    expect(innerExpression, isNotNull);
+    expect(innerExpression is PrefixExpression, isTrue);
     PrefixExpression operand = innerExpression as PrefixExpression;
-    JUnitTestCase.assertNotNull(operand.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS, operand.operator.type);
-    JUnitTestCase.assertNotNull(operand.operand);
+    expect(operand.operator, isNotNull);
+    expect(operand.operator.type, TokenType.MINUS);
+    expect(operand.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_decrement_super_propertyAccess() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "--super.x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS_MINUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS_MINUS);
+    expect(expression.operand, isNotNull);
     PropertyAccess operand = expression.operand as PropertyAccess;
-    JUnitTestCase.assertTrue(operand.target is SuperExpression);
-    JUnitTestCase.assertEquals("x", operand.propertyName.name);
+    expect(operand.target is SuperExpression, isTrue);
+    expect(operand.propertyName.name, "x");
   }
 
   void test_parseUnaryExpression_increment_normal() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "++x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS_PLUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS_PLUS);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_increment_super_index() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "++super[0]", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS_PLUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS_PLUS);
+    expect(expression.operand, isNotNull);
     IndexExpression operand = expression.operand as IndexExpression;
-    JUnitTestCase.assertTrue(operand.realTarget is SuperExpression);
-    JUnitTestCase.assertTrue(operand.index is IntegerLiteral);
+    expect(operand.realTarget is SuperExpression, isTrue);
+    expect(operand.index is IntegerLiteral, isTrue);
   }
 
   void test_parseUnaryExpression_increment_super_propertyAccess() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "++super.x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.PLUS_PLUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.PLUS_PLUS);
+    expect(expression.operand, isNotNull);
     PropertyAccess operand = expression.operand as PropertyAccess;
-    JUnitTestCase.assertTrue(operand.target is SuperExpression);
-    JUnitTestCase.assertEquals("x", operand.propertyName.name);
+    expect(operand.target is SuperExpression, isTrue);
+    expect(operand.propertyName.name, "x");
   }
 
   void test_parseUnaryExpression_minus_normal() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "-x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_minus_super() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "-super", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.MINUS, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.MINUS);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_not_normal() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "!x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.BANG, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.BANG);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_not_super() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "!super", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.BANG, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.BANG);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_tilda_normal() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "~x", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.TILDE, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.TILDE);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseUnaryExpression_tilda_super() {
     PrefixExpression expression = ParserTestCase.parse4("parseUnaryExpression", "~super", []);
-    JUnitTestCase.assertNotNull(expression.operator);
-    JUnitTestCase.assertEquals(TokenType.TILDE, expression.operator.type);
-    JUnitTestCase.assertNotNull(expression.operand);
+    expect(expression.operator, isNotNull);
+    expect(expression.operator.type, TokenType.TILDE);
+    expect(expression.operand, isNotNull);
   }
 
   void test_parseVariableDeclaration_equals() {
     VariableDeclaration declaration = ParserTestCase.parse4("parseVariableDeclaration", "a = b", []);
-    JUnitTestCase.assertNotNull(declaration.name);
-    JUnitTestCase.assertNotNull(declaration.equals);
-    JUnitTestCase.assertNotNull(declaration.initializer);
+    expect(declaration.name, isNotNull);
+    expect(declaration.equals, isNotNull);
+    expect(declaration.initializer, isNotNull);
   }
 
   void test_parseVariableDeclaration_noEquals() {
     VariableDeclaration declaration = ParserTestCase.parse4("parseVariableDeclaration", "a", []);
-    JUnitTestCase.assertNotNull(declaration.name);
-    JUnitTestCase.assertNull(declaration.equals);
-    JUnitTestCase.assertNull(declaration.initializer);
+    expect(declaration.name, isNotNull);
+    expect(declaration.equals, isNull);
+    expect(declaration.initializer, isNull);
   }
 
   void test_parseVariableDeclarationListAfterMetadata_const_noType() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "const a");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_const_type() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "const A a");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNotNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNotNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_final_noType() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "final a");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_final_type() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "final A a");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNotNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNotNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_type_multiple() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "A a, b, c");
-    JUnitTestCase.assertNull(declarationList.keyword);
-    JUnitTestCase.assertNotNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(3, declarationList.variables);
+    expect(declarationList.keyword, isNull);
+    expect(declarationList.type, isNotNull);
+    expect(declarationList.variables, hasLength(3));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_type_single() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "A a");
-    JUnitTestCase.assertNull(declarationList.keyword);
-    JUnitTestCase.assertNotNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNull);
+    expect(declarationList.type, isNotNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_var_multiple() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "var a, b, c");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(3, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNull);
+    expect(declarationList.variables, hasLength(3));
   }
 
   void test_parseVariableDeclarationListAfterMetadata_var_single() {
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterMetadata", <Object> [emptyCommentAndMetadata()], "var a");
-    JUnitTestCase.assertNotNull(declarationList.keyword);
-    JUnitTestCase.assertNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNotNull);
+    expect(declarationList.type, isNull);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterType_type() {
     TypeName type = new TypeName(new SimpleIdentifier(null), null);
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterType", <Object> [emptyCommentAndMetadata(), null, type], "a");
-    JUnitTestCase.assertNull(declarationList.keyword);
-    JUnitTestCase.assertEquals(type, declarationList.type);
-    EngineTestCase.assertSizeOfList(1, declarationList.variables);
+    expect(declarationList.keyword, isNull);
+    expect(declarationList.type, type);
+    expect(declarationList.variables, hasLength(1));
   }
 
   void test_parseVariableDeclarationListAfterType_var() {
     Token keyword = TokenFactory.tokenFromKeyword(Keyword.VAR);
     VariableDeclarationList declarationList = ParserTestCase.parse("parseVariableDeclarationListAfterType", <Object> [emptyCommentAndMetadata(), keyword, null], "a, b, c");
-    JUnitTestCase.assertEquals(keyword, declarationList.keyword);
-    JUnitTestCase.assertNull(declarationList.type);
-    EngineTestCase.assertSizeOfList(3, declarationList.variables);
+    expect(declarationList.keyword, keyword);
+    expect(declarationList.type, isNull);
+    expect(declarationList.variables, hasLength(3));
   }
 
   void test_parseVariableDeclarationStatementAfterMetadata_multiple() {
     VariableDeclarationStatement statement = ParserTestCase.parse("parseVariableDeclarationStatementAfterMetadata", <Object> [emptyCommentAndMetadata()], "var x, y, z;");
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.semicolon, isNotNull);
     VariableDeclarationList variableList = statement.variables;
-    JUnitTestCase.assertNotNull(variableList);
-    EngineTestCase.assertSizeOfList(3, variableList.variables);
+    expect(variableList, isNotNull);
+    expect(variableList.variables, hasLength(3));
   }
 
   void test_parseVariableDeclarationStatementAfterMetadata_single() {
     VariableDeclarationStatement statement = ParserTestCase.parse("parseVariableDeclarationStatementAfterMetadata", <Object> [emptyCommentAndMetadata()], "var x;");
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.semicolon, isNotNull);
     VariableDeclarationList variableList = statement.variables;
-    JUnitTestCase.assertNotNull(variableList);
-    EngineTestCase.assertSizeOfList(1, variableList.variables);
+    expect(variableList, isNotNull);
+    expect(variableList.variables, hasLength(1));
   }
 
   void test_parseWhileStatement() {
     WhileStatement statement = ParserTestCase.parse4("parseWhileStatement", "while (x) {}", []);
-    JUnitTestCase.assertNotNull(statement.keyword);
-    JUnitTestCase.assertNotNull(statement.leftParenthesis);
-    JUnitTestCase.assertNotNull(statement.condition);
-    JUnitTestCase.assertNotNull(statement.rightParenthesis);
-    JUnitTestCase.assertNotNull(statement.body);
+    expect(statement.keyword, isNotNull);
+    expect(statement.leftParenthesis, isNotNull);
+    expect(statement.condition, isNotNull);
+    expect(statement.rightParenthesis, isNotNull);
+    expect(statement.body, isNotNull);
   }
 
   void test_parseWithClause_multiple() {
     WithClause clause = ParserTestCase.parse4("parseWithClause", "with A, B, C", []);
-    JUnitTestCase.assertNotNull(clause.withKeyword);
-    EngineTestCase.assertSizeOfList(3, clause.mixinTypes);
+    expect(clause.withKeyword, isNotNull);
+    expect(clause.mixinTypes, hasLength(3));
   }
 
   void test_parseWithClause_single() {
     WithClause clause = ParserTestCase.parse4("parseWithClause", "with M", []);
-    JUnitTestCase.assertNotNull(clause.withKeyword);
-    EngineTestCase.assertSizeOfList(1, clause.mixinTypes);
+    expect(clause.withKeyword, isNotNull);
+    expect(clause.mixinTypes, hasLength(1));
   }
 
   void test_parseYieldStatement_each() {
     YieldStatement statement = ParserTestCase.parse4("parseYieldStatement", "yield* x;", []);
-    JUnitTestCase.assertNotNull(statement.yieldKeyword);
-    JUnitTestCase.assertNotNull(statement.star);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.yieldKeyword, isNotNull);
+    expect(statement.star, isNotNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_parseYieldStatement_normal() {
     YieldStatement statement = ParserTestCase.parse4("parseYieldStatement", "yield x;", []);
-    JUnitTestCase.assertNotNull(statement.yieldKeyword);
-    JUnitTestCase.assertNull(statement.star);
-    JUnitTestCase.assertNotNull(statement.expression);
-    JUnitTestCase.assertNotNull(statement.semicolon);
+    expect(statement.yieldKeyword, isNotNull);
+    expect(statement.star, isNull);
+    expect(statement.expression, isNotNull);
+    expect(statement.semicolon, isNotNull);
   }
 
   void test_skipPrefixedIdentifier_invalid() {
     Token following = _skip("skipPrefixedIdentifier", "+");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipPrefixedIdentifier_notPrefixed() {
     Token following = _skip("skipPrefixedIdentifier", "a +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipPrefixedIdentifier_prefixed() {
     Token following = _skip("skipPrefixedIdentifier", "a.b +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipReturnType_invalid() {
     Token following = _skip("skipReturnType", "+");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipReturnType_type() {
     Token following = _skip("skipReturnType", "C +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipReturnType_void() {
     Token following = _skip("skipReturnType", "void +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipSimpleIdentifier_identifier() {
     Token following = _skip("skipSimpleIdentifier", "i +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipSimpleIdentifier_invalid() {
     Token following = _skip("skipSimpleIdentifier", "9 +");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipSimpleIdentifier_pseudoKeyword() {
     Token following = _skip("skipSimpleIdentifier", "as +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipStringLiteral_adjacent() {
     Token following = _skip("skipStringLiteral", "'a' 'b' +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipStringLiteral_interpolated() {
     Token following = _skip("skipStringLiteral", "'a\${b}c' +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipStringLiteral_invalid() {
     Token following = _skip("skipStringLiteral", "a");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipStringLiteral_single() {
     Token following = _skip("skipStringLiteral", "'a' +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipTypeArgumentList_invalid() {
     Token following = _skip("skipTypeArgumentList", "+");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipTypeArgumentList_multiple() {
     Token following = _skip("skipTypeArgumentList", "<E, F, G> +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipTypeArgumentList_single() {
     Token following = _skip("skipTypeArgumentList", "<E> +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipTypeName_invalid() {
     Token following = _skip("skipTypeName", "+");
-    JUnitTestCase.assertNull(following);
+    expect(following, isNull);
   }
 
   void test_skipTypeName_parameterized() {
     Token following = _skip("skipTypeName", "C<E<F<G>>> +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   void test_skipTypeName_simple() {
     Token following = _skip("skipTypeName", "C +");
-    JUnitTestCase.assertNotNull(following);
-    JUnitTestCase.assertEquals(TokenType.PLUS, following.type);
+    expect(following, isNotNull);
+    expect(following.type, TokenType.PLUS);
   }
 
   /**
@@ -8226,8 +8242,8 @@
     Token token = scanner.tokenize();
     Parser parser = new Parser(null, listener);
     CompilationUnit unit = parser.parseDirectives(token);
-    JUnitTestCase.assertNotNull(unit);
-    EngineTestCase.assertSizeOfList(0, unit.declarations);
+    expect(unit, isNotNull);
+    expect(unit.declarations, hasLength(0));
     listener.assertErrorsWithCodes(errorCodes);
     return unit;
   }
@@ -8258,7 +8274,7 @@
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(ComplexParserTest);
   runReflectiveTests(ErrorParserTest);
   runReflectiveTests(IncrementalParserTest);
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index a11bf52..f8089e9 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -6,7 +6,6 @@
 
 import 'dart:collection';
 import 'package:analyzer/src/generated/java_core.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/java_engine_io.dart';
 import 'package:analyzer/src/generated/source_io.dart';
@@ -20,7 +19,7 @@
 import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'test_support.dart';
 import 'package:analyzer/src/generated/testing/ast_factory.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
@@ -267,7 +266,7 @@
     AnalysisOptions currentOptions = analysisOptions;
     bool needsRecompute = currentOptions.analyzeFunctionBodies != options.analyzeFunctionBodies || currentOptions.generateSdkErrors != options.generateSdkErrors || currentOptions.enableAsync != options.enableAsync || currentOptions.enableDeferredLoading != options.enableDeferredLoading || currentOptions.enableEnum != options.enableEnum || currentOptions.dart2jsHint != options.dart2jsHint || (currentOptions.hint && !options.hint) || currentOptions.preserveComments != options.preserveComments;
     if (needsRecompute) {
-      JUnitTestCase.fail("Cannot set options that cause the sources to be reanalyzed in a test context");
+      fail("Cannot set options that cause the sources to be reanalyzed in a test context");
     }
     super.analysisOptions = options;
   }
@@ -336,13 +335,13 @@
     delta.setAnalysisLevel(source2, AnalysisLevel.ERRORS);
     delta.setAnalysisLevel(source3, AnalysisLevel.NONE);
     List<Source> addedSources = delta.addedSources;
-    EngineTestCase.assertLength(2, addedSources);
-    EngineTestCase.assertContains(addedSources, [source1, source2]);
+    expect(addedSources, hasLength(2));
+    expect(addedSources, unorderedEquals([source1, source2]));
   }
 
   void test_getAnalysisLevels() {
     AnalysisDelta delta = new AnalysisDelta();
-    JUnitTestCase.assertEquals(0, delta.analysisLevels.length);
+    expect(delta.analysisLevels.length, 0);
   }
 
   void test_setAnalysisLevel() {
@@ -350,17 +349,17 @@
     delta.setAnalysisLevel(source1, AnalysisLevel.ALL);
     delta.setAnalysisLevel(source2, AnalysisLevel.ERRORS);
     Map<Source, AnalysisLevel> levels = delta.analysisLevels;
-    JUnitTestCase.assertEquals(2, levels.length);
-    JUnitTestCase.assertEquals(AnalysisLevel.ALL, levels[source1]);
-    JUnitTestCase.assertEquals(AnalysisLevel.ERRORS, levels[source2]);
+    expect(levels.length, 2);
+    expect(levels[source1], AnalysisLevel.ALL);
+    expect(levels[source2], AnalysisLevel.ERRORS);
   }
 
   void test_toString() {
     AnalysisDelta delta = new AnalysisDelta();
     delta.setAnalysisLevel(new TestSource(), AnalysisLevel.ALL);
     String result = delta.toString();
-    JUnitTestCase.assertNotNull(result);
-    JUnitTestCase.assertTrue(result.length > 0);
+    expect(result, isNotNull);
+    expect(result.length > 0, isTrue);
   }
 }
 
@@ -370,15 +369,15 @@
     String content = "";
     ChangeSet changeSet = new ChangeSet();
     changeSet.changedContent(source, content);
-    EngineTestCase.assertSizeOfList(0, changeSet.addedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.changedSources);
+    expect(changeSet.addedSources, hasLength(0));
+    expect(changeSet.changedSources, hasLength(0));
     Map<Source, String> map = changeSet.changedContents;
-    EngineTestCase.assertSizeOfMap(1, map);
-    JUnitTestCase.assertSame(content, map[source]);
-    EngineTestCase.assertSizeOfMap(0, changeSet.changedRanges);
-    EngineTestCase.assertSizeOfList(0, changeSet.deletedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.removedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.removedContainers);
+    expect(map, hasLength(1));
+    expect(map[source], same(content));
+    expect(changeSet.changedRanges, hasLength(0));
+    expect(changeSet.deletedSources, hasLength(0));
+    expect(changeSet.removedSources, hasLength(0));
+    expect(changeSet.removedContainers, hasLength(0));
   }
 
   void test_changedRange() {
@@ -386,20 +385,20 @@
     String content = "";
     ChangeSet changeSet = new ChangeSet();
     changeSet.changedRange(source, content, 1, 2, 3);
-    EngineTestCase.assertSizeOfList(0, changeSet.addedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.changedSources);
-    EngineTestCase.assertSizeOfMap(0, changeSet.changedContents);
+    expect(changeSet.addedSources, hasLength(0));
+    expect(changeSet.changedSources, hasLength(0));
+    expect(changeSet.changedContents, hasLength(0));
     Map<Source, ChangeSet_ContentChange> map = changeSet.changedRanges;
-    EngineTestCase.assertSizeOfMap(1, map);
+    expect(map, hasLength(1));
     ChangeSet_ContentChange change = map[source];
-    JUnitTestCase.assertNotNull(change);
-    JUnitTestCase.assertEquals(content, change.contents);
-    JUnitTestCase.assertEquals(1, change.offset);
-    JUnitTestCase.assertEquals(2, change.oldLength);
-    JUnitTestCase.assertEquals(3, change.newLength);
-    EngineTestCase.assertSizeOfList(0, changeSet.deletedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.removedSources);
-    EngineTestCase.assertSizeOfList(0, changeSet.removedContainers);
+    expect(change, isNotNull);
+    expect(change.contents, content);
+    expect(change.offset, 1);
+    expect(change.oldLength, 2);
+    expect(change.newLength, 3);
+    expect(changeSet.deletedSources, hasLength(0));
+    expect(changeSet.removedSources, hasLength(0));
+    expect(changeSet.removedContainers, hasLength(0));
   }
 
   void test_toString() {
@@ -411,7 +410,7 @@
     changeSet.deletedSource(new TestSource());
     changeSet.removedSource(new TestSource());
     changeSet.removedContainer(new SourceContainer_ChangeSetTest_test_toString());
-    JUnitTestCase.assertNotNull(changeSet.toString());
+    expect(changeSet.toString(), isNotNull);
   }
 }
 
@@ -420,18 +419,18 @@
     // According to checked-mode type checking rules, a value of type B is
     // assignable to a field of type A, because B extends A (and hence is a
     // subtype of A).
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B extends A {",
-        "  const B();",
-        "}",
-        "class C {",
-        "  final A a;",
-        "  const C(this.a);",
-        "}",
-        "var v = const C(const B());"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B extends A {
+  const B();
+}
+class C {
+  final A a;
+  const C(this.a);
+}
+var v = const C(const B());''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -440,12 +439,12 @@
   void test_fieldFormalParameterAssignableToField_fieldType_unresolved_null() {
     // Null always passes runtime type checks, even when the type is
     // unresolved.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final Unresolved x;",
-        "  const A(String this.x);",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  final Unresolved x;
+  const A(String this.x);
+}
+var v = const A(null);''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.UNDEFINED_CLASS]);
@@ -456,16 +455,16 @@
     // According to checked-mode type checking rules, a value of type B is
     // assignable to a field of type A, because B implements A (and hence is a
     // subtype of A).
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B implements A {",
-        "  const B();",
-        "}",
-        "class C {",
-        "  final A a;",
-        "  const C(this.a);",
-        "}",
-        "var v = const C(const B());"]));
+    Source source = addSource(r'''
+class A {}
+class B implements A {
+  const B();
+}
+class C {
+  final A a;
+  const C(this.a);
+}
+var v = const C(const B());''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -473,11 +472,11 @@
 
   void test_fieldFormalParameterAssignableToField_list_dynamic() {
     // [1, 2, 3] has type List<dynamic>, which is a subtype of List<int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(List<int> x);",
-        "}",
-        "var x = const A(const [1, 2, 3]);"]));
+    Source source = addSource(r'''
+class A {
+  const A(List<int> x);
+}
+var x = const A(const [1, 2, 3]);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -485,11 +484,11 @@
 
   void test_fieldFormalParameterAssignableToField_list_nonDynamic() {
     // <int>[1, 2, 3] has type List<int>, which is a subtype of List<num>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(List<num> x);",
-        "}",
-        "var x = const A(const <int>[1, 2, 3]);"]));
+    Source source = addSource(r'''
+class A {
+  const A(List<num> x);
+}
+var x = const A(const <int>[1, 2, 3]);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -498,11 +497,11 @@
   void test_fieldFormalParameterAssignableToField_map_dynamic() {
     // {1: 2} has type Map<dynamic, dynamic>, which is a subtype of
     // Map<int, int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Map<int, int> x);",
-        "}",
-        "var x = const A(const {1: 2});"]));
+    Source source = addSource(r'''
+class A {
+  const A(Map<int, int> x);
+}
+var x = const A(const {1: 2});''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -511,11 +510,11 @@
   void test_fieldFormalParameterAssignableToField_map_keyDifferent() {
     // <int, int>{1: 2} has type Map<int, int>, which is a subtype of
     // Map<num, int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Map<num, int> x);",
-        "}",
-        "var x = const A(const <int, int>{1: 2});"]));
+    Source source = addSource(r'''
+class A {
+  const A(Map<num, int> x);
+}
+var x = const A(const <int, int>{1: 2});''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -524,11 +523,11 @@
   void test_fieldFormalParameterAssignableToField_map_valueDifferent() {
     // <int, int>{1: 2} has type Map<int, int>, which is a subtype of
     // Map<int, num>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Map<int, num> x);",
-        "}",
-        "var x = const A(const <int, int>{1: 2});"]));
+    Source source = addSource(r'''
+class A {
+  const A(Map<int, num> x);
+}
+var x = const A(const <int, int>{1: 2});''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -537,12 +536,12 @@
   void test_fieldFormalParameterAssignableToField_notype() {
     // If a field is declared without a type, then any value may be assigned to
     // it.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final x;",
-        "  const A(this.x);",
-        "}",
-        "var v = const A(5);"]));
+    Source source = addSource(r'''
+class A {
+  final x;
+  const A(this.x);
+}
+var v = const A(5);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -550,12 +549,12 @@
 
   void test_fieldFormalParameterAssignableToField_null() {
     // Null is assignable to anything.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  const A(this.x);",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  const A(this.x);
+}
+var v = const A(null);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -564,12 +563,12 @@
   void test_fieldFormalParameterAssignableToField_typeSubstitution() {
     // foo has the runtime type dynamic -> dynamic, so it should be assignable
     // to A.f.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  final T x;",
-        "  const A(this.x);",
-        "}",
-        "var v = const A<int>(3);"]));
+    Source source = addSource(r'''
+class A<T> {
+  final T x;
+  const A(this.x);
+}
+var v = const A<int>(3);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -578,26 +577,26 @@
   void test_fieldFormalParameterAssignableToField_typedef() {
     // foo has the runtime type dynamic -> dynamic, so it should be assignable
     // to A.f.
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef String Int2String(int x);",
-        "class A {",
-        "  final Int2String f;",
-        "  const A(this.f);",
-        "}",
-        "foo(x) => 1;"
-        "var v = const A(foo);"]));
+    Source source = addSource(r'''
+typedef String Int2String(int x);
+class A {
+  final Int2String f;
+  const A(this.f);
+}
+foo(x) => 1;
+var v = const A(foo);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldFormalParameterNotAssignableToField() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  const A(this.x);",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  const A(this.x);
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -606,12 +605,12 @@
   }
 
   void test_fieldFormalParameterNotAssignableToField_fieldType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  const A(String this.x);",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  const A(String this.x);
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -620,12 +619,12 @@
   }
 
   void test_fieldFormalParameterNotAssignableToField_fieldType_unresolved() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final Unresolved x;",
-        "  const A(String this.x);",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  final Unresolved x;
+  const A(String this.x);
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -637,18 +636,18 @@
     // According to checked-mode type checking rules, a value of type A is not
     // assignable to a field of type B, because B extends A (the subtyping
     // relationship is in the wrong direction).
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B extends A {",
-        "  const B();",
-        "}",
-        "class C {",
-        "  final B b;",
-        "  const C(this.b);",
-        "}",
-        "var v = const C(const A());"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B extends A {
+  const B();
+}
+class C {
+  final B b;
+  const C(this.b);
+}
+var v = const C(const A());''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -659,16 +658,16 @@
     // According to checked-mode type checking rules, a value of type A is not
     // assignable to a field of type B, because B implements A (the subtyping
     // relationship is in the wrong direction).
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A();",
-        "}",
-        "class B implements A {}",
-        "class C {",
-        "  final B b;",
-        "  const C(this.b);",
-        "}",
-        "var v = const C(const A());"]));
+    Source source = addSource(r'''
+class A {
+  const A();
+}
+class B implements A {}
+class C {
+  final B b;
+  const C(this.b);
+}
+var v = const C(const A());''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -677,11 +676,11 @@
 
   void test_fieldFormalParameterNotAssignableToField_list() {
     // <num>[1, 2, 3] has type List<num>, which is not a subtype of List<int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(List<int> x);",
-        "}",
-        "var x = const A(const <num>[1, 2, 3]);"]));
+    Source source = addSource(r'''
+class A {
+  const A(List<int> x);
+}
+var x = const A(const <num>[1, 2, 3]);''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -691,11 +690,11 @@
   void test_fieldFormalParameterNotAssignableToField_map_keyMismatch() {
     // <num, int>{1: 2} has type Map<num, int>, which is not a subtype of
     // Map<int, int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Map<int, int> x);",
-        "}",
-        "var x = const A(const <num, int>{1: 2});"]));
+    Source source = addSource(r'''
+class A {
+  const A(Map<int, int> x);
+}
+var x = const A(const <num, int>{1: 2});''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -705,11 +704,11 @@
   void test_fieldFormalParameterNotAssignableToField_map_valueMismatch() {
     // <int, num>{1: 2} has type Map<int, num>, which is not a subtype of
     // Map<int, int>.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Map<int, int> x);",
-        "}",
-        "var x = const A(const <int, num>{1: 2});"]));
+    Source source = addSource(r'''
+class A {
+  const A(Map<int, int> x);
+}
+var x = const A(const <int, num>{1: 2});''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -717,12 +716,12 @@
   }
 
   void test_fieldFormalParameterNotAssignableToField_optional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  const A([this.x = 'foo']);",
-        "}",
-        "var v = const A();"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  const A([this.x = 'foo']);
+}
+var v = const A();''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -733,14 +732,14 @@
   void test_fieldFormalParameterNotAssignableToField_typedef() {
     // foo has the runtime type String -> int, so it should not be assignable
     // to A.f (A.f requires it to be int -> String).
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef String Int2String(int x);",
-        "class A {",
-        "  final Int2String f;",
-        "  const A(this.f);",
-        "}",
-        "int foo(String x) => 1;"
-        "var v = const A(foo);"]));
+    Source source = addSource(r'''
+typedef String Int2String(int x);
+class A {
+  final Int2String f;
+  const A(this.f);
+}
+int foo(String x) => 1;
+var v = const A(foo);''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -749,11 +748,11 @@
   }
 
   void test_fieldInitializerNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x;",
-        "  const A() : x = '';",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  const A() : x = '';
+}''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIGNABLE,
@@ -762,12 +761,12 @@
   }
 
   void test_fieldTypeMismatch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(x) : y = x;",
-        "  final int y;",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  const A(x) : y = x;
+  final int y;
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH]);
@@ -775,12 +774,12 @@
   }
 
   void test_fieldTypeMismatch_unresolved() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(x) : y = x;",
-        "  final Unresolved y;",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  const A(x) : y = x;
+  final Unresolved y;
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
@@ -789,12 +788,12 @@
   }
 
   void test_fieldTypeOk_null() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(x) : y = x;",
-        "  final int y;",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  const A(x) : y = x;
+  final int y;
+}
+var v = const A(null);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -803,12 +802,12 @@
   void test_fieldTypeOk_unresolved_null() {
     // Null always passes runtime type checks, even when the type is
     // unresolved.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(x) : y = x;",
-        "  final Unresolved y;",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  const A(x) : y = x;
+  final Unresolved y;
+}
+var v = const A(null);''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.UNDEFINED_CLASS]);
@@ -816,7 +815,7 @@
   }
 
   void test_listElementTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = const <String> [42];"]));
+    Source source = addSource("var v = const <String> [42];");
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,
@@ -825,7 +824,7 @@
   }
 
   void test_mapKeyTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = const <String, int > {1 : 2};"]));
+    Source source = addSource("var v = const <String, int > {1 : 2};");
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
@@ -834,7 +833,7 @@
   }
 
   void test_mapValueTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = const <String, String> {'a' : 2};"]));
+    Source source = addSource("var v = const <String, String> {'a' : 2};");
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
@@ -843,12 +842,12 @@
   }
 
   void test_redirectingConstructor_paramTypeMismatch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.a1(x) : this.a2(x);",
-        "  const A.a2(String x);",
-        "}",
-        "var v = const A.a1(0);"]));
+    Source source = addSource(r'''
+class A {
+  const A.a1(x) : this.a2(x);
+  const A.a2(String x);
+}
+var v = const A.a1(0);''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH]);
@@ -857,11 +856,11 @@
 
   void test_parameterAssignable_null() {
     // Null is assignable to anything.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int x);",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  const A(int x);
+}
+var v = const A(null);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -870,11 +869,11 @@
   void test_parameterAssignable_undefined_null() {
     // Null always passes runtime type checks, even when the type is
     // unresolved.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Unresolved x);",
-        "}",
-        "var v = const A(null);"]));
+    Source source = addSource(r'''
+class A {
+  const A(Unresolved x);
+}
+var v = const A(null);''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.UNDEFINED_CLASS]);
@@ -882,22 +881,22 @@
   }
 
   void test_parameterAssignable_typeSubstitution() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  const A(T x);",
-        "}",
-        "var v = const A<int>(3);"]));
+    Source source = addSource(r'''
+class A<T> {
+  const A(T x);
+}
+var v = const A<int>(3);''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_parameterNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int x);",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  const A(int x);
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -906,11 +905,11 @@
   }
 
   void test_parameterNotAssignable_undefined() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(Unresolved x);",
-        "}",
-        "var v = const A('foo');"]));
+    Source source = addSource(r'''
+class A {
+  const A(Unresolved x);
+}
+var v = const A('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -919,11 +918,11 @@
   }
 
   void test_parameterNotAssignable_typeSubstitution() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  const A(T x);",
-        "}",
-        "var v = const A<int>('foo');"]));
+    Source source = addSource(r'''
+class A<T> {
+  const A(T x);
+}
+var v = const A<int>('foo');''');
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
@@ -932,8 +931,7 @@
   }
 
   void test_topLevelVarAssignable_null() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const int x = null;"]));
+    Source source = addSource("const int x = null;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -942,8 +940,7 @@
   void test_topLevelVarAssignable_undefined_null() {
     // Null always passes runtime type checks, even when the type is
     // unresolved.
-    Source source = addSource(EngineTestCase.createSource([
-        "const Unresolved x = null;"]));
+    Source source = addSource("const Unresolved x = null;");
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.UNDEFINED_CLASS]);
@@ -951,8 +948,7 @@
   }
 
   void test_topLevelVarNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const int x = 'foo';"]));
+    Source source = addSource("const int x = 'foo';");
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH,
@@ -961,8 +957,7 @@
   }
 
   void test_topLevelVarNotAssignable_undefined() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const Unresolved x = 'foo';"]));
+    Source source = addSource("const Unresolved x = 'foo';");
     resolve(source);
     assertErrors(source, [
         CheckedModeCompileTimeErrorCode.VARIABLE_TYPE_MISMATCH,
@@ -973,94 +968,94 @@
 
 class DeclarationMatcherTest extends ResolverTestCase {
   void test_compilationUnitMatches_false_topLevelVariable() {
-    _assertCompilationUnitMatches(false, EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]), EngineTestCase.createSource([
-        "const int ZERO = 0;",
-        "class C {",
-        "  int m(int p) {",
-        "    return (p * p) + (p * p) + ZERO;",
-        "  }",
-        "}"]));
+    _assertCompilationUnitMatches(false, r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''', r'''
+const int ZERO = 0;
+class C {
+  int m(int p) {
+    return (p * p) + (p * p) + ZERO;
+  }
+}''');
   }
 
   void test_compilationUnitMatches_true_different() {
-    _assertCompilationUnitMatches(true, EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]), EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return (p * p) + (p * p);",
-        "  }",
-        "}"]));
+    _assertCompilationUnitMatches(true, r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''', r'''
+class C {
+  int m(int p) {
+    return (p * p) + (p * p);
+  }
+}''');
   }
 
   void test_compilationUnitMatches_true_same() {
-    String content = EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]);
+    String content = r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''';
     _assertCompilationUnitMatches(true, content, content);
   }
 
   void test_methodDeclarationMatches_false_localVariable() {
-    _assertMethodMatches(false, EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]), EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    int product = p * p;",
-        "    return product + product;",
-        "  }",
-        "}"]));
+    _assertMethodMatches(false, r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''', r'''
+class C {
+  int m(int p) {
+    int product = p * p;
+    return product + product;
+  }
+}''');
   }
 
   void test_methodDeclarationMatches_false_parameter() {
-    _assertMethodMatches(false, EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]), EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p, int q) {",
-        "    return (p * q) + (q * p);",
-        "  }",
-        "}"]));
+    _assertMethodMatches(false, r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''', r'''
+class C {
+  int m(int p, int q) {
+    return (p * q) + (q * p);
+  }
+}''');
   }
 
   void test_methodDeclarationMatches_true_different() {
-    _assertMethodMatches(true, EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]), EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return (p * p) + (p * p);",
-        "  }",
-        "}"]));
+    _assertMethodMatches(true, r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''', r'''
+class C {
+  int m(int p) {
+    return (p * p) + (p * p);
+  }
+}''');
   }
 
   void test_methodDeclarationMatches_true_same() {
-    String content = EngineTestCase.createSource([
-        "class C {",
-        "  int m(int p) {",
-        "    return p + p;",
-        "  }",
-        "}"]);
+    String content = r'''
+class C {
+  int m(int p) {
+    return p + p;
+  }
+}''';
     _assertMethodMatches(true, content, content);
   }
 
@@ -1072,7 +1067,7 @@
     context.setContents(source, newContent);
     CompilationUnit newUnit = context.parseCompilationUnit(source);
     DeclarationMatcher matcher = new DeclarationMatcher();
-    JUnitTestCase.assertEquals(expectMatch, matcher.matches(newUnit, oldUnit.element));
+    expect(matcher.matches(newUnit, oldUnit.element), expectMatch);
   }
 
   void _assertMethodMatches(bool expectMatch, String oldContent, String newContent) {
@@ -1085,7 +1080,7 @@
     CompilationUnit newUnit = context.parseCompilationUnit(source);
     MethodDeclaration newMethod = _getFirstMethod(newUnit);
     DeclarationMatcher matcher = new DeclarationMatcher();
-    JUnitTestCase.assertEquals(expectMatch, matcher.matches(newMethod, element));
+    expect(matcher.matches(newMethod, element), expectMatch);
   }
 
   MethodDeclaration _getFirstMethod(CompilationUnit unit) {
@@ -1146,7 +1141,7 @@
   ElementResolver _resolver;
 
   void fail_visitExportDirective_combinators() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     // Need to set up the exported library so that the identifier can be resolved
     ExportDirective directive = AstFactory.exportDirective2(null, [AstFactory.hideCombinator2(["A"])]);
     _resolveNode(directive, []);
@@ -1154,12 +1149,12 @@
   }
 
   void fail_visitFunctionExpressionInvocation() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitImportDirective_combinators_noPrefix() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     // Need to set up the imported library so that the identifier can be resolved
     ImportDirective directive = AstFactory.importDirective3(null, null, [AstFactory.showCombinator2(["A"])]);
     _resolveNode(directive, []);
@@ -1167,7 +1162,7 @@
   }
 
   void fail_visitImportDirective_combinators_prefix() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     // Need to set up the imported library so that the identifiers can be resolved
     String prefixName = "p";
     _definingLibrary.imports = <ImportElement> [ElementFactory.importFor(null, ElementFactory.prefix(prefixName), [])];
@@ -1179,7 +1174,7 @@
   }
 
   void fail_visitRedirectingConstructorInvocation() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
@@ -1219,7 +1214,7 @@
     SimpleIdentifier array = AstFactory.identifier3("a");
     array.staticType = classD.type;
     IndexExpression expression = AstFactory.indexExpression(array, AstFactory.identifier3("i"));
-    JUnitTestCase.assertSame(operator, _resolveIndexExpression(expression, []));
+    expect(_resolveIndexExpression(expression, []), same(operator));
     _listener.assertNoErrors();
   }
 
@@ -1229,14 +1224,14 @@
     leftHandSide.staticType = intType;
     AssignmentExpression assignment = AstFactory.assignmentExpression(leftHandSide, TokenType.PLUS_EQ, AstFactory.integer(1));
     _resolveNode(assignment, []);
-    JUnitTestCase.assertSame(getMethod(_typeProvider.numType, "+"), assignment.staticElement);
+    expect(assignment.staticElement, same(getMethod(_typeProvider.numType, "+")));
     _listener.assertNoErrors();
   }
 
   void test_visitAssignmentExpression_simple() {
     AssignmentExpression expression = AstFactory.assignmentExpression(AstFactory.identifier3("x"), TokenType.EQ, AstFactory.integer(0));
     _resolveNode(expression, []);
-    JUnitTestCase.assertNull(expression.staticElement);
+    expect(expression.staticElement, isNull);
     _listener.assertNoErrors();
   }
 
@@ -1249,8 +1244,8 @@
     left.staticType = numType;
     BinaryExpression expression = AstFactory.binaryExpression(left, TokenType.PLUS, AstFactory.identifier3("j"));
     _resolveNode(expression, []);
-    JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement);
-    JUnitTestCase.assertNull(expression.propagatedElement);
+    expect(expression.staticElement, getMethod(numType, "+"));
+    expect(expression.propagatedElement, isNull);
     _listener.assertNoErrors();
   }
 
@@ -1263,8 +1258,8 @@
     left.propagatedType = numType;
     BinaryExpression expression = AstFactory.binaryExpression(left, TokenType.PLUS, AstFactory.identifier3("j"));
     _resolveNode(expression, []);
-    JUnitTestCase.assertNull(expression.staticElement);
-    JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.propagatedElement);
+    expect(expression.staticElement, isNull);
+    expect(expression.propagatedElement, getMethod(numType, "+"));
     _listener.assertNoErrors();
   }
 
@@ -1272,7 +1267,7 @@
     String label = "loop";
     LabelElementImpl labelElement = new LabelElementImpl(AstFactory.identifier3(label), false, false);
     BreakStatement statement = AstFactory.breakStatement2(label);
-    JUnitTestCase.assertSame(labelElement, _resolveBreak(statement, labelElement));
+    expect(_resolveBreak(statement, labelElement), same(labelElement));
     _listener.assertNoErrors();
   }
 
@@ -1289,7 +1284,7 @@
     classA.constructors = <ConstructorElement> [constructor];
     ConstructorName name = AstFactory.constructorName(AstFactory.typeName(classA, []), constructorName);
     _resolveNode(name, []);
-    JUnitTestCase.assertSame(constructor, name.staticElement);
+    expect(name.staticElement, same(constructor));
     _listener.assertNoErrors();
   }
 
@@ -1300,7 +1295,7 @@
     classA.constructors = <ConstructorElement> [constructor];
     ConstructorName name = AstFactory.constructorName(AstFactory.typeName(classA, []), constructorName);
     _resolveNode(name, []);
-    JUnitTestCase.assertSame(constructor, name.staticElement);
+    expect(name.staticElement, same(constructor));
     _listener.assertNoErrors();
   }
 
@@ -1308,7 +1303,7 @@
     String label = "loop";
     LabelElementImpl labelElement = new LabelElementImpl(AstFactory.identifier3(label), false, false);
     ContinueStatement statement = AstFactory.continueStatement(label);
-    JUnitTestCase.assertSame(labelElement, _resolveContinue(statement, labelElement));
+    expect(_resolveContinue(statement, labelElement), same(labelElement));
     _listener.assertNoErrors();
   }
 
@@ -1337,7 +1332,7 @@
     parameterElement.type = intType;
     parameter.identifier.staticElement = parameterElement;
     _resolveInClass(parameter, classA);
-    JUnitTestCase.assertSame(intType, parameter.element.type);
+    expect(parameter.element.type, same(intType));
   }
 
   void test_visitImportDirective_noCombinators_noPrefix() {
@@ -1369,9 +1364,9 @@
     unit.topLevelVariables = <TopLevelVariableElement> [varA, varB, varC];
     directive.element = ElementFactory.importFor(library, null, []);
     _resolveNode(directive, []);
-    JUnitTestCase.assertSame(varA, combinator.shownNames[0].staticElement);
-    JUnitTestCase.assertSame(varB, combinator.shownNames[1].staticElement);
-    JUnitTestCase.assertSame(varC, combinator.shownNames[2].staticElement);
+    expect(combinator.shownNames[0].staticElement, same(varA));
+    expect(combinator.shownNames[1].staticElement, same(varB));
+    expect(combinator.shownNames[2].staticElement, same(varC));
     _listener.assertNoErrors();
   }
 
@@ -1383,7 +1378,7 @@
     SimpleIdentifier array = AstFactory.identifier3("a");
     array.staticType = classA.type;
     IndexExpression expression = AstFactory.indexExpression(array, AstFactory.identifier3("i"));
-    JUnitTestCase.assertSame(getter, _resolveIndexExpression(expression, []));
+    expect(_resolveIndexExpression(expression, []), same(getter));
     _listener.assertNoErrors();
   }
 
@@ -1396,7 +1391,7 @@
     array.staticType = classA.type;
     IndexExpression expression = AstFactory.indexExpression(array, AstFactory.identifier3("i"));
     AstFactory.assignmentExpression(expression, TokenType.EQ, AstFactory.integer(0));
-    JUnitTestCase.assertSame(setter, _resolveIndexExpression(expression, []));
+    expect(_resolveIndexExpression(expression, []), same(setter));
     _listener.assertNoErrors();
   }
 
@@ -1409,7 +1404,7 @@
     name.staticElement = constructor;
     InstanceCreationExpression creation = AstFactory.instanceCreationExpression(Keyword.NEW, name, []);
     _resolveNode(creation, []);
-    JUnitTestCase.assertSame(constructor, creation.staticElement);
+    expect(creation.staticElement, same(constructor));
     _listener.assertNoErrors();
   }
 
@@ -1422,7 +1417,7 @@
     name.staticElement = constructor;
     InstanceCreationExpression creation = AstFactory.instanceCreationExpression(Keyword.NEW, name, []);
     _resolveNode(creation, []);
-    JUnitTestCase.assertSame(constructor, creation.staticElement);
+    expect(creation.staticElement, same(constructor));
     _listener.assertNoErrors();
   }
 
@@ -1438,8 +1433,8 @@
     name.staticElement = constructor;
     InstanceCreationExpression creation = AstFactory.instanceCreationExpression(Keyword.NEW, name, [AstFactory.namedExpression2(parameterName, AstFactory.integer(0))]);
     _resolveNode(creation, []);
-    JUnitTestCase.assertSame(constructor, creation.staticElement);
-    JUnitTestCase.assertSame(parameter, (creation.argumentList.arguments[0] as NamedExpression).name.label.staticElement);
+    expect(creation.staticElement, same(constructor));
+    expect((creation.argumentList.arguments[0] as NamedExpression).name.label.staticElement, same(parameter));
     _listener.assertNoErrors();
   }
 
@@ -1450,7 +1445,7 @@
     String methodName = "abs";
     MethodInvocation invocation = AstFactory.methodInvocation(left, methodName, []);
     _resolveNode(invocation, []);
-    JUnitTestCase.assertSame(getMethod(numType, methodName), invocation.methodName.staticElement);
+    expect(invocation.methodName.staticElement, same(getMethod(numType, methodName)));
     _listener.assertNoErrors();
   }
 
@@ -1466,8 +1461,8 @@
     left.staticType = classA.type;
     MethodInvocation invocation = AstFactory.methodInvocation(left, methodName, [AstFactory.namedExpression2(parameterName, AstFactory.integer(0))]);
     _resolveNode(invocation, []);
-    JUnitTestCase.assertSame(method, invocation.methodName.staticElement);
-    JUnitTestCase.assertSame(parameter, (invocation.argumentList.arguments[0] as NamedExpression).name.label.staticElement);
+    expect(invocation.methodName.staticElement, same(method));
+    expect((invocation.argumentList.arguments[0] as NamedExpression).name.label.staticElement, same(parameter));
     _listener.assertNoErrors();
   }
 
@@ -1477,7 +1472,7 @@
     operand.staticType = numType;
     PostfixExpression expression = AstFactory.postfixExpression(operand, TokenType.PLUS_PLUS);
     _resolveNode(expression, []);
-    JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement);
+    expect(expression.staticElement, getMethod(numType, "+"));
     _listener.assertNoErrors();
   }
 
@@ -1490,8 +1485,8 @@
     target.staticType = dynamicType;
     PrefixedIdentifier identifier = AstFactory.identifier(target, AstFactory.identifier3("b"));
     _resolveNode(identifier, []);
-    JUnitTestCase.assertNull(identifier.staticElement);
-    JUnitTestCase.assertNull(identifier.identifier.staticElement);
+    expect(identifier.staticElement, isNull);
+    expect(identifier.identifier.staticElement, isNull);
     _listener.assertNoErrors();
   }
 
@@ -1507,8 +1502,8 @@
     target.staticType = classA.type;
     PrefixedIdentifier identifier = AstFactory.identifier(target, AstFactory.identifier3(getterName));
     _resolveNode(identifier, []);
-    JUnitTestCase.assertSame(getter, identifier.staticElement);
-    JUnitTestCase.assertSame(getter, identifier.identifier.staticElement);
+    expect(identifier.staticElement, same(getter));
+    expect(identifier.identifier.staticElement, same(getter));
     _listener.assertNoErrors();
   }
 
@@ -1526,8 +1521,8 @@
     PrefixedIdentifier identifier = AstFactory.identifier(target, AstFactory.identifier3(propName));
     // resolve
     _resolveNode(identifier, []);
-    JUnitTestCase.assertSame(getter, identifier.staticElement);
-    JUnitTestCase.assertSame(getter, identifier.identifier.staticElement);
+    expect(identifier.staticElement, same(getter));
+    expect(identifier.identifier.staticElement, same(getter));
     _listener.assertNoErrors();
   }
 
@@ -1548,8 +1543,8 @@
     AstFactory.assignmentExpression(identifier, TokenType.EQ, AstFactory.nullLiteral());
     // resolve
     _resolveNode(identifier, []);
-    JUnitTestCase.assertSame(method, identifier.staticElement);
-    JUnitTestCase.assertSame(method, identifier.identifier.staticElement);
+    expect(identifier.staticElement, same(method));
+    expect(identifier.identifier.staticElement, same(method));
     _listener.assertNoErrors();
   }
 
@@ -1568,8 +1563,8 @@
     AstFactory.assignmentExpression(identifier, TokenType.EQ, AstFactory.nullLiteral());
     // resolve
     _resolveNode(identifier, []);
-    JUnitTestCase.assertSame(setter, identifier.staticElement);
-    JUnitTestCase.assertSame(setter, identifier.identifier.staticElement);
+    expect(identifier.staticElement, same(setter));
+    expect(identifier.identifier.staticElement, same(setter));
     _listener.assertNoErrors();
   }
 
@@ -1579,7 +1574,7 @@
     operand.staticType = numType;
     PrefixExpression expression = AstFactory.prefixExpression(TokenType.PLUS_PLUS, operand);
     _resolveNode(expression, []);
-    JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement);
+    expect(expression.staticElement, getMethod(numType, "+"));
     _listener.assertNoErrors();
   }
 
@@ -1592,7 +1587,7 @@
     target.staticType = classA.type;
     PropertyAccess access = AstFactory.propertyAccess2(target, getterName);
     _resolveNode(access, []);
-    JUnitTestCase.assertSame(getter, access.propertyName.staticElement);
+    expect(access.propertyName.staticElement, same(getter));
     _listener.assertNoErrors();
   }
 
@@ -1614,7 +1609,7 @@
     PropertyAccess access = AstFactory.propertyAccess2(target, getterName);
     AstFactory.methodDeclaration2(null, null, null, null, AstFactory.identifier3("m"), AstFactory.formalParameterList([]), AstFactory.expressionFunctionBody(access));
     _resolveNode(access, []);
-    JUnitTestCase.assertSame(getter, access.propertyName.staticElement);
+    expect(access.propertyName.staticElement, same(getter));
     _listener.assertNoErrors();
   }
 
@@ -1628,7 +1623,7 @@
     PropertyAccess access = AstFactory.propertyAccess2(target, setterName);
     AstFactory.assignmentExpression(access, TokenType.EQ, AstFactory.integer(0));
     _resolveNode(access, []);
-    JUnitTestCase.assertSame(setter, access.propertyName.staticElement);
+    expect(access.propertyName.staticElement, same(setter));
     _listener.assertNoErrors();
   }
 
@@ -1637,22 +1632,22 @@
     String fieldName = "NAN";
     SimpleIdentifier node = AstFactory.identifier3(fieldName);
     _resolveInClass(node, doubleType.element);
-    JUnitTestCase.assertEquals(getGetter(doubleType, fieldName), node.staticElement);
+    expect(node.staticElement, getGetter(doubleType, fieldName));
     _listener.assertNoErrors();
   }
 
   void test_visitSimpleIdentifier_dynamic() {
     SimpleIdentifier node = AstFactory.identifier3("dynamic");
     _resolveIdentifier(node, []);
-    JUnitTestCase.assertSame(_typeProvider.dynamicType.element, node.staticElement);
-    JUnitTestCase.assertSame(_typeProvider.typeType, node.staticType);
+    expect(node.staticElement, same(_typeProvider.dynamicType.element));
+    expect(node.staticType, same(_typeProvider.typeType));
     _listener.assertNoErrors();
   }
 
   void test_visitSimpleIdentifier_lexicalScope() {
     SimpleIdentifier node = AstFactory.identifier3("i");
     VariableElementImpl element = ElementFactory.localVariableElement(node);
-    JUnitTestCase.assertSame(element, _resolveIdentifier(node, [element]));
+    expect(_resolveIdentifier(node, [element]), same(element));
     _listener.assertNoErrors();
   }
 
@@ -1668,7 +1663,7 @@
     _resolveInClass(node, classA);
     Element element = node.staticElement;
     EngineTestCase.assertInstanceOf((obj) => obj is PropertyAccessorElement, PropertyAccessorElement, element);
-    JUnitTestCase.assertTrue((element as PropertyAccessorElement).isSetter);
+    expect((element as PropertyAccessorElement).isSetter, isTrue);
     _listener.assertNoErrors();
   }
 
@@ -1681,7 +1676,7 @@
     subclass.constructors = <ConstructorElement> [subConstructor];
     SuperConstructorInvocation invocation = AstFactory.superConstructorInvocation([]);
     _resolveInClass(invocation, subclass);
-    JUnitTestCase.assertEquals(superConstructor, invocation.staticElement);
+    expect(invocation.staticElement, superConstructor);
     _listener.assertNoErrors();
   }
 
@@ -1697,8 +1692,8 @@
     subclass.constructors = <ConstructorElement> [subConstructor];
     SuperConstructorInvocation invocation = AstFactory.superConstructorInvocation([AstFactory.namedExpression2(parameterName, AstFactory.integer(0))]);
     _resolveInClass(invocation, subclass);
-    JUnitTestCase.assertEquals(superConstructor, invocation.staticElement);
-    JUnitTestCase.assertSame(parameter, (invocation.argumentList.arguments[0] as NamedExpression).name.label.staticElement);
+    expect(invocation.staticElement, superConstructor);
+    expect((invocation.argumentList.arguments[0] as NamedExpression).name.label.staticElement, same(parameter));
     _listener.assertNoErrors();
   }
 
@@ -1888,110 +1883,113 @@
 
 class ErrorResolverTest extends ResolverTestCase {
   void test_breakLabelOnSwitchMember() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m(int i) {",
-        "    switch (i) {",
-        "      l: case 0:",
-        "        break;",
-        "      case 1:",
-        "        break l;",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m(int i) {
+    switch (i) {
+      l: case 0:
+        break;
+      case 1:
+        break l;
+    }
+  }
+}''');
     resolve(source);
     assertErrors(source, [ResolverErrorCode.BREAK_LABEL_ON_SWITCH_MEMBER]);
     verify([source]);
   }
 
   void test_continueLabelOnSwitch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m(int i) {",
-        "    l: switch (i) {",
-        "      case 0:",
-        "        continue l;",
-        "    }",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m(int i) {
+    l: switch (i) {
+      case 0:
+        continue l;
+    }
+  }
+}''');
     resolve(source);
     assertErrors(source, [ResolverErrorCode.CONTINUE_LABEL_ON_SWITCH]);
     verify([source]);
   }
 
   void test_enclosingElement_invalidLocalFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  C() {",
-        "    int get x => 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  C() {
+    int get x => 0;
+  }
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     var unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     var types = unit.types;
-    JUnitTestCase.assertNotNull(types);
-    EngineTestCase.assertSizeOfList(1, types);
+    expect(types, isNotNull);
+    expect(types, hasLength(1));
     var type = types[0];
-    JUnitTestCase.assertNotNull(type);
+    expect(type, isNotNull);
     var constructors = type.constructors;
-    JUnitTestCase.assertNotNull(constructors);
-    EngineTestCase.assertSizeOfList(1, constructors);
+    expect(constructors, isNotNull);
+    expect(constructors, hasLength(1));
     ConstructorElement constructor = constructors[0];
-    JUnitTestCase.assertNotNull(constructor);
+    expect(constructor, isNotNull);
     List<FunctionElement> functions = constructor.functions;
-    JUnitTestCase.assertNotNull(functions);
-    EngineTestCase.assertSizeOfList(1, functions);
-    JUnitTestCase.assertEquals(constructor, functions[0].enclosingElement);
+    expect(functions, isNotNull);
+    expect(functions, hasLength(1));
+    expect(functions[0].enclosingElement, constructor);
     assertErrors(source, [ParserErrorCode.GETTER_IN_FUNCTION]);
   }
 }
 
 class HintCodeTest extends ResolverTestCase {
   void fail_deadCode_statementAfterRehrow() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  try {",
-        "    var one = 1;",
-        "  } catch (e) {",
-        "    rethrow;",
-        "    var two = 2;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  try {
+    var one = 1;
+  } catch (e) {
+    rethrow;
+    var two = 2;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void fail_deadCode_statementAfterThrow() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var one = 1;",
-        "  throw 'Stop here';",
-        "  var two = 2;",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var one = 1;
+  throw 'Stop here';
+  var two = 2;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void fail_isInt() {
-    Source source = addSource(EngineTestCase.createSource(["var v = 1 is int;"]));
+    Source source = addSource("var v = 1 is int;");
     resolve(source);
     assertErrors(source, [HintCode.IS_INT]);
     verify([source]);
   }
 
   void fail_isNotInt() {
-    Source source = addSource(EngineTestCase.createSource(["var v = 1 is! int;"]));
+    Source source = addSource("var v = 1 is! int;");
     resolve(source);
     assertErrors(source, [HintCode.IS_NOT_INT]);
     verify([source]);
   }
 
   void fail_overrideEqualsButNotHashCode() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  bool operator ==(x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  bool operator ==(x) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE]);
     verify([source]);
@@ -1999,13 +1997,17 @@
 
   void fail_unusedImport_as_equalPrefixes() {
     // See todo at ImportsVerifier.prefixElementMap.
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' as one;",
-        "import 'lib2.dart' as one;",
-        "one.A a;"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
-    Source source3 = addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' as one;
+import 'lib2.dart' as one;
+one.A a;''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
+    Source source3 = addNamedSource("/lib2.dart", r'''
+library lib2;
+class B {}''');
     resolve(source);
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
     assertNoErrors(source2);
@@ -2014,14 +2016,14 @@
   }
 
   void test_argumentTypeNotAssignable_functionType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "m() {",
-        "  var a = new A();",
-        "  a.n(() => 0);",
-        "}",
-        "class A {",
-        "  n(void f(int i)) {}",
-        "}"]));
+    Source source = addSource(r'''
+m() {
+  var a = new A();
+  a.n(() => 0);
+}
+class A {
+  n(void f(int i)) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
@@ -2030,11 +2032,16 @@
   void test_argumentTypeNotAssignable_message() {
     // The implementation of HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE assumes that
     // StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE has the same message.
-    JUnitTestCase.assertEquals(HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message);
+    expect(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message, HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE.message);
   }
 
   void test_argumentTypeNotAssignable_type() {
-    Source source = addSource(EngineTestCase.createSource(["m() {", "  var i = '';", "  n(i);", "}", "n(int i) {}"]));
+    Source source = addSource(r'''
+m() {
+  var i = '';
+  n(i);
+}
+n(int i) {}''');
     resolve(source);
     assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
@@ -2042,29 +2049,32 @@
 
   void test_argumentTypeNotAssignable_unionTypeMethodMerge() {
     enableUnionTypes(false);
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m(int x) => 0;",
-        "}",
-        "class B {",
-        "  String m(String x) => '0';",
-        "}",
-        "f(A a, B b) {",
-        "  var ab;",
-        "  if (0 < 1) {",
-        "    ab = a;",
-        "  } else {",
-        "    ab = b;",
-        "  }",
-        "  ab.m(0.5);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m(int x) => 0;
+}
+class B {
+  String m(String x) => '0';
+}
+f(A a, B b) {
+  var ab;
+  if (0 < 1) {
+    ab = a;
+  } else {
+    ab = b;
+  }
+  ab.m(0.5);
+}''');
     resolve(source);
     assertErrors(source, [HintCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_conditionalElse() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  true ? 1 : 2;", "}"]));
+    Source source = addSource(r'''
+f() {
+  true ? 1 : 2;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
@@ -2072,14 +2082,20 @@
 
   void test_deadCode_deadBlock_conditionalElse_nested() {
     // test that a dead else-statement can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  true ? true : false && false;", "}"]));
+    Source source = addSource(r'''
+f() {
+  true ? true : false && false;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_conditionalIf() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  false ? 1 : 2;", "}"]));
+    Source source = addSource(r'''
+f() {
+  false ? 1 : 2;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
@@ -2087,14 +2103,20 @@
 
   void test_deadCode_deadBlock_conditionalIf_nested() {
     // test that a dead then-statement can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  false ? false && false : true;", "}"]));
+    Source source = addSource(r'''
+f() {
+  false ? false && false : true;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_else() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  if(true) {} else {}", "}"]));
+    Source source = addSource(r'''
+f() {
+  if(true) {} else {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
@@ -2102,14 +2124,20 @@
 
   void test_deadCode_deadBlock_else_nested() {
     // test that a dead else-statement can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  if(true) {} else {if (false) {}}", "}"]));
+    Source source = addSource(r'''
+f() {
+  if(true) {} else {if (false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_if() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  if(false) {}", "}"]));
+    Source source = addSource(r'''
+f() {
+  if(false) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
@@ -2117,14 +2145,20 @@
 
   void test_deadCode_deadBlock_if_nested() {
     // test that a dead then-statement can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  if(false) {if(false) {}}", "}"]));
+    Source source = addSource(r'''
+f() {
+  if(false) {if(false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_while() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  while(false) {}", "}"]));
+    Source source = addSource(r'''
+f() {
+  while(false) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
@@ -2132,18 +2166,21 @@
 
   void test_deadCode_deadBlock_while_nested() {
     // test that a dead while body can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  while(false) {if(false) {}}", "}"]));
+    Source source = addSource(r'''
+f() {
+  while(false) {if(false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadCatch_catchFollowingCatch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f() {",
-        "  try {} catch (e) {} catch (e) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f() {
+  try {} catch (e) {} catch (e) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
     verify([source]);
@@ -2151,21 +2188,21 @@
 
   void test_deadCode_deadCatch_catchFollowingCatch_nested() {
     // test that a dead catch clause can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f() {",
-        "  try {} catch (e) {} catch (e) {if(false) {}}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f() {
+  try {} catch (e) {} catch (e) {if(false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
     verify([source]);
   }
 
   void test_deadCode_deadCatch_catchFollowingCatch_object() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  try {} on Object catch (e) {} catch (e) {}",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  try {} on Object catch (e) {} catch (e) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
     verify([source]);
@@ -2173,22 +2210,22 @@
 
   void test_deadCode_deadCatch_catchFollowingCatch_object_nested() {
     // test that a dead catch clause can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  try {} on Object catch (e) {} catch (e) {if(false) {}}",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  try {} on Object catch (e) {} catch (e) {if(false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]);
     verify([source]);
   }
 
   void test_deadCode_deadCatch_onCatchSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "f() {",
-        "  try {} on A catch (e) {} on B catch (e) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+f() {
+  try {} on A catch (e) {} on B catch (e) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]);
     verify([source]);
@@ -2196,254 +2233,266 @@
 
   void test_deadCode_deadCatch_onCatchSubtype_nested() {
     // test that a dead catch clause can't generate additional violations
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "f() {",
-        "  try {} on A catch (e) {} on B catch (e) {if(false) {}}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+f() {
+  try {} on A catch (e) {} on B catch (e) {if(false) {}}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_and() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  bool b = false && false;", "}"]));
+    Source source = addSource(r'''
+f() {
+  bool b = false && false;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_and_nested() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  bool b = false && (false && false);", "}"]));
+    Source source = addSource(r'''
+f() {
+  bool b = false && (false && false);
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_or() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  bool b = true || true;", "}"]));
+    Source source = addSource(r'''
+f() {
+  bool b = true || true;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_or_nested() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  bool b = true || (false && false);", "}"]));
+    Source source = addSource(r'''
+f() {
+  bool b = true || (false && false);
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterBreak_inDefaultCase() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(v) {",
-        "  switch(v) {",
-        "    case 1:",
-        "    default:",
-        "      break;",
-        "      var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(v) {
+  switch(v) {
+    case 1:
+    default:
+      break;
+      var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterBreak_inForEachStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var list;",
-        "  for(var l in list) {",
-        "    break;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var list;
+  for(var l in list) {
+    break;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterBreak_inForStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  for(;;) {",
-        "    break;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  for(;;) {
+    break;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterBreak_inSwitchCase() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(v) {",
-        "  switch(v) {",
-        "    case 1:",
-        "      break;",
-        "      var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(v) {
+  switch(v) {
+    case 1:
+      break;
+      var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterBreak_inWhileStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(v) {",
-        "  while(v) {",
-        "    break;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(v) {
+  while(v) {
+    break;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterContinue_inForEachStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var list;",
-        "  for(var l in list) {",
-        "    continue;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var list;
+  for(var l in list) {
+    continue;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterContinue_inForStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  for(;;) {",
-        "    continue;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  for(;;) {
+    continue;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterContinue_inWhileStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(v) {",
-        "  while(v) {",
-        "    continue;",
-        "    var a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(v) {
+  while(v) {
+    continue;
+    var a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterReturn_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var one = 1;",
-        "  return;",
-        "  var two = 2;",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var one = 1;
+  return;
+  var two = 2;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterReturn_ifStatement() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(bool b) {",
-        "  if(b) {",
-        "    var one = 1;",
-        "    return;",
-        "    var two = 2;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(bool b) {
+  if(b) {
+    var one = 1;
+    return;
+    var two = 2;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterReturn_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {",
-        "    var one = 1;",
-        "    return;",
-        "    var two = 2;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {
+    var one = 1;
+    return;
+    var two = 2;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterReturn_nested() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var one = 1;",
-        "  return;",
-        "  if(false) {}",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var one = 1;
+  return;
+  if(false) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deadCode_statementAfterReturn_twoReturns() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var one = 1;",
-        "  return;",
-        "  var two = 2;",
-        "  return;",
-        "  var three = 3;",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var one = 1;
+  return;
+  var two = 2;
+  return;
+  var three = 3;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEAD_CODE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_assignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  A operator+(A a) { return a; }",
-        "}",
-        "f(A a) {",
-        "  A b;",
-        "  a += b;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  A operator+(A a) { return a; }
+}
+f(A a) {
+  A b;
+  a += b;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_deprecated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  m() {}",
-        "  n() {m();}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  m() {}
+  n() {m();}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_Deprecated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @Deprecated('0.9')",
-        "  m() {}",
-        "  n() {m();}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @Deprecated('0.9')
+  m() {}
+  n() {m();}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
@@ -2451,172 +2500,177 @@
 
   void test_deprecatedAnnotationUse_deprecatedMethodCalledOnUnionType() {
     enableUnionTypes(false);
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated f() => 0;",
-        "}",
-        "class B extends A {}",
-        "main(A a, B b) {",
-        "  var x;",
-        "  if (0 < 1) {",
-        "    x = a;",
-        "  } else {",
-        "    x = b;",
-        "  }",
-        "  x.f(); // Here [x] has type [{A,B}] but we still want the deprecation warning.",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated f() => 0;
+}
+class B extends A {}
+main(A a, B b) {
+  var x;
+  if (0 < 1) {
+    x = a;
+  } else {
+    x = b;
+  }
+  x.f(); // Here [x] has type [{A,B}] but we still want the deprecation warning.
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_export() {
-    Source source = addSource(EngineTestCase.createSource(["export 'deprecated_library.dart';"]));
-    addNamedSource("/deprecated_library.dart", EngineTestCase.createSource([
-        "@deprecated",
-        "library deprecated_library;",
-        "class A {}"]));
+    Source source = addSource("export 'deprecated_library.dart';");
+    addNamedSource("/deprecated_library.dart", r'''
+@deprecated
+library deprecated_library;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  get m => 1;",
-        "}",
-        "f(A a) {",
-        "  return a.m;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  get m => 1;
+}
+f(A a) {
+  return a.m;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_import() {
-    Source source = addSource(EngineTestCase.createSource(["import 'deprecated_library.dart';", "f(A a) {}"]));
-    addNamedSource("/deprecated_library.dart", EngineTestCase.createSource([
-        "@deprecated",
-        "library deprecated_library;",
-        "class A {}"]));
+    Source source = addSource(r'''
+import 'deprecated_library.dart';
+f(A a) {}''');
+    addNamedSource("/deprecated_library.dart", r'''
+@deprecated
+library deprecated_library;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_indexExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  operator[](int i) {}",
-        "}",
-        "f(A a) {",
-        "  return a[1];",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  operator[](int i) {}
+}
+f(A a) {
+  return a[1];
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  A(int i) {}",
-        "}",
-        "f() {",
-        "  A a = new A(1);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  A(int i) {}
+}
+f() {
+  A a = new A(1);
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_instanceCreation_namedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  A.named(int i) {}",
-        "}",
-        "f() {",
-        "  A a = new A.named(1);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  A.named(int i) {}
+}
+f() {
+  A a = new A.named(1);
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_operator() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  operator+(A a) {}",
-        "}",
-        "f(A a) {",
-        "  A b;",
-        "  return a + b;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  operator+(A a) {}
+}
+f(A a) {
+  A b;
+  return a + b;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  set s(v) {}",
-        "}",
-        "f(A a) {",
-        "  return a.s = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  set s(v) {}
+}
+f(A a) {
+  return a.s = 1;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_superConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  A() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  A() {}
+}
+class B extends A {
+  B() : super() {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_deprecatedAnnotationUse_superConstructor_namedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  @deprecated",
-        "  A.named() {}",
-        "}",
-        "class B extends A {",
-        "  B() : super.named() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  @deprecated
+  A.named() {}
+}
+class B extends A {
+  B() : super.named() {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]);
     verify([source]);
   }
 
   void test_divisionOptimization_double() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(double x, double y) {",
-        "  var v = (x / y).toInt();",
-        "}"]));
+    Source source = addSource(r'''
+f(double x, double y) {
+  var v = (x / y).toInt();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
     verify([source]);
   }
 
   void test_divisionOptimization_int() {
-    Source source = addSource(EngineTestCase.createSource(["f(int x, int y) {", "  var v = (x / y).toInt();", "}"]));
+    Source source = addSource(r'''
+f(int x, int y) {
+  var v = (x / y).toInt();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
     verify([source]);
@@ -2624,59 +2678,66 @@
 
   void test_divisionOptimization_propagatedType() {
     // Tests the propagated type information of the '/' method
-    Source source = addSource(EngineTestCase.createSource([
-        "f(x, y) {",
-        "  x = 1;",
-        "  y = 1;",
-        "  var v = (x / y).toInt();",
-        "}"]));
+    Source source = addSource(r'''
+f(x, y) {
+  x = 1;
+  y = 1;
+  var v = (x / y).toInt();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
     verify([source]);
   }
 
   void test_divisionOptimization_wrappedBinaryExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int x, int y) {",
-        "  var v = (((x / y))).toInt();",
-        "}"]));
+    Source source = addSource(r'''
+f(int x, int y) {
+  var v = (((x / y))).toInt();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]);
     verify([source]);
   }
 
   void test_duplicateImport() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart';",
-        "A a;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart';
+A a;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.DUPLICATE_IMPORT]);
     verify([source]);
   }
 
   void test_duplicateImport2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart';",
-        "import 'lib1.dart';",
-        "A a;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart';
+import 'lib1.dart';
+A a;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT]);
     verify([source]);
   }
 
   void test_duplicateImport3() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' as M show A hide B;",
-        "import 'lib1.dart' as M show A hide B;",
-        "M.A a;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' as M show A hide B;
+import 'lib1.dart' as M show A hide B;
+M.A a;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}
+class B {}''');
     resolve(source);
     assertErrors(source, [HintCode.DUPLICATE_IMPORT]);
     verify([source]);
@@ -2684,36 +2745,39 @@
 
   void test_importDeferredLibraryWithLoadFunction() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "loadLibrary() {}", "f() {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as lib1;",
-        "main() { lib1.f(); }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION]);
+        r'''
+library lib1;
+loadLibrary() {}
+f() {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as lib1;
+main() { lib1.f(); }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [HintCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION]);
   }
 
   void test_invalidAssignment_instanceVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "}",
-        "f(var y) {",
-        "  A a;",
-        "  if(y is String) {",
-        "    a.x = y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+}
+f(var y) {
+  A a;
+  if(y is String) {
+    a.x = y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_localVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var y) {",
-        "  if(y is String) {",
-        "    int x = y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(var y) {
+  if(y is String) {
+    int x = y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
     verify([source]);
@@ -2722,19 +2786,19 @@
   void test_invalidAssignment_message() {
     // The implementation of HintCode.INVALID_ASSIGNMENT assumes that
     // StaticTypeWarningCode.INVALID_ASSIGNMENT has the same message.
-    JUnitTestCase.assertEquals(HintCode.INVALID_ASSIGNMENT.message, StaticTypeWarningCode.INVALID_ASSIGNMENT.message);
+    expect(StaticTypeWarningCode.INVALID_ASSIGNMENT.message, HintCode.INVALID_ASSIGNMENT.message);
   }
 
   void test_invalidAssignment_staticVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int x;",
-        "}",
-        "f(var y) {",
-        "  if(y is String) {",
-        "    A.x = y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+}
+f(var y) {
+  if(y is String) {
+    A.x = y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
     verify([source]);
@@ -2742,119 +2806,128 @@
 
   void test_invalidAssignment_variableDeclaration() {
     // 17971
-    Source source = addSource(EngineTestCase.createSource([
-        "class Point {",
-        "  final num x, y;",
-        "  Point(this.x, this.y);",
-        "  Point operator +(Point other) {",
-        "    return new Point(x+other.x, y+other.y);",
-        "  }",
-        "}",
-        "main() {",
-        "  var p1 = new Point(0, 0);",
-        "  var p2 = new Point(10, 10);",
-        "  int n = p1 + p2;",
-        "}"]));
+    Source source = addSource(r'''
+class Point {
+  final num x, y;
+  Point(this.x, this.y);
+  Point operator +(Point other) {
+    return new Point(x+other.x, y+other.y);
+  }
+}
+main() {
+  var p1 = new Point(0, 0);
+  var p2 = new Point(10, 10);
+  int n = p1 + p2;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_isDouble() {
-    Source source = addSource(EngineTestCase.createSource(["var v = 1 is double;"]));
+    Source source = addSource("var v = 1 is double;");
     resolve(source);
     assertErrors(source, [HintCode.IS_DOUBLE]);
     verify([source]);
   }
 
   void test_isNotDouble() {
-    Source source = addSource(EngineTestCase.createSource(["var v = 1 is! double;"]));
+    Source source = addSource("var v = 1 is! double;");
     resolve(source);
     assertErrors(source, [HintCode.IS_NOT_DOUBLE]);
     verify([source]);
   }
 
   void test_missingReturn_function() {
-    Source source = addSource(EngineTestCase.createSource(["int f() {}"]));
+    Source source = addSource("int f() {}");
     resolve(source);
     assertErrors(source, [HintCode.MISSING_RETURN]);
     verify([source]);
   }
 
   void test_missingReturn_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int m() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.MISSING_RETURN]);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingGetter_invalid() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  int get m => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+}
+class B extends A {
+  @override
+  int get m => 1;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER]);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingMethod_invalid() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  int m() => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+}
+class B extends A {
+  @override
+  int m() => 1;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD]);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingSetter_invalid() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  set m(int x) {}",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+}
+class B extends A {
+  @override
+  set m(int x) {}
+}''');
     resolve(source);
     assertErrors(source, [HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER]);
     verify([source]);
   }
 
   void test_typeCheck_type_is_Null() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is Null;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is Null;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.TYPE_CHECK_IS_NULL]);
     verify([source]);
   }
 
   void test_typeCheck_type_not_Null() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is! Null;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is! Null;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.TYPE_CHECK_IS_NOT_NULL]);
     verify([source]);
   }
 
   void test_undefinedGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    return a.m;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    return a.m;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_GETTER]);
   }
@@ -2862,135 +2935,135 @@
   void test_undefinedGetter_message() {
     // The implementation of HintCode.UNDEFINED_SETTER assumes that UNDEFINED_SETTER in
     // StaticTypeWarningCode and StaticWarningCode are the same, this verifies that assumption.
-    JUnitTestCase.assertEquals(StaticTypeWarningCode.UNDEFINED_GETTER.message, StaticWarningCode.UNDEFINED_GETTER.message);
+    expect(StaticWarningCode.UNDEFINED_GETTER.message, StaticTypeWarningCode.UNDEFINED_GETTER.message);
   }
 
   void test_undefinedMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var a = 'str';",
-        "  a.notAMethodOnString();",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var a = 'str';
+  a.notAMethodOnString();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_assignmentExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {",
-        "  f(var a, var a2) {",
-        "    a = new A();",
-        "    a2 = new A();",
-        "    a += a2;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {
+  f(var a, var a2) {
+    a = new A();
+    a2 = new A();
+    a += a2;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_unionType_noSuchMethod() {
     enableUnionTypes(false);
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m(int x) => 0;",
-        "}",
-        "class B {",
-        "  String m() => '0';",
-        "}",
-        "f(A a, B b) {",
-        "  var ab;",
-        "  if (0 < 1) {",
-        "    ab = a;",
-        "  } else {",
-        "    ab = b;",
-        "  }",
-        "  ab.n();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m(int x) => 0;
+}
+class B {
+  String m() => '0';
+}
+f(A a, B b) {
+  var ab;
+  if (0 < 1) {
+    ab = a;
+  } else {
+    ab = b;
+  }
+  ab.n();
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedOperator_binaryExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a + 1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a + 1;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_indexBoth() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0]++;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a[0]++;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_indexGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0];",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a[0];
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_indexSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0] = 1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a[0] = 1;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_postfixExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a++;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a++;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_prefixExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    ++a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    ++a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a.m = 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+f(var a) {
+  if(a is A) {
+    a.m = 0;
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNDEFINED_SETTER]);
   }
@@ -2998,68 +3071,88 @@
   void test_undefinedSetter_message() {
     // The implementation of HintCode.UNDEFINED_SETTER assumes that UNDEFINED_SETTER in
     // StaticTypeWarningCode and StaticWarningCode are the same, this verifies that assumption.
-    JUnitTestCase.assertEquals(StaticTypeWarningCode.UNDEFINED_SETTER.message, StaticWarningCode.UNDEFINED_SETTER.message);
+    expect(StaticWarningCode.UNDEFINED_SETTER.message, StaticTypeWarningCode.UNDEFINED_SETTER.message);
   }
 
   void test_unnecessaryCast_type_supertype() {
-    Source source = addSource(EngineTestCase.createSource(["m(int i) {", "  var b = i as Object;", "}"]));
+    Source source = addSource(r'''
+m(int i) {
+  var b = i as Object;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_CAST]);
     verify([source]);
   }
 
   void test_unnecessaryCast_type_type() {
-    Source source = addSource(EngineTestCase.createSource(["m(num i) {", "  var b = i as num;", "}"]));
+    Source source = addSource(r'''
+m(num i) {
+  var b = i as num;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_CAST]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_null_is_Null() {
-    Source source = addSource(EngineTestCase.createSource(["bool b = null is Null;"]));
+    Source source = addSource("bool b = null is Null;");
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_null_not_Null() {
-    Source source = addSource(EngineTestCase.createSource(["bool b = null is! Null;"]));
+    Source source = addSource("bool b = null is! Null;");
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_type_is_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is dynamic;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is dynamic;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_type_is_object() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is Object;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is Object;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_type_not_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is! dynamic;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is! dynamic;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
     verify([source]);
   }
 
   void test_unnecessaryTypeCheck_type_not_object() {
-    Source source = addSource(EngineTestCase.createSource(["m(i) {", "  bool b = i is! Object;", "}"]));
+    Source source = addSource(r'''
+m(i) {
+  bool b = i is! Object;
+}''');
     resolve(source);
     assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
     verify([source]);
   }
 
   void test_unusedImport() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "import 'lib1.dart';"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';''');
+    Source source2 = addNamedSource("/lib1.dart", "library lib1;");
     resolve(source);
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
     assertNoErrors(source2);
@@ -3067,12 +3160,14 @@
   }
 
   void test_unusedImport_as() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart' as one;",
-        "one.A a;"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart' as one;
+one.A a;''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
     assertNoErrors(source2);
@@ -3080,12 +3175,14 @@
   }
 
   void test_unusedImport_hide() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart' hide A;",
-        "A a;"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart' hide A;
+A a;''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
     assertNoErrors(source2);
@@ -3093,12 +3190,15 @@
   }
 
   void test_unusedImport_show() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' show A;",
-        "import 'lib1.dart' show B;",
-        "A a;"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' show A;
+import 'lib1.dart' show B;
+A a;''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}
+class B {}''');
     resolve(source);
     assertErrors(source, [HintCode.UNUSED_IMPORT]);
     assertNoErrors(source2);
@@ -3106,80 +3206,80 @@
   }
 
   void test_useOfVoidResult_assignmentExpression_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void f() {}",
-        "class A {",
-        "  n() {",
-        "    var a;",
-        "    a = f();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+void f() {}
+class A {
+  n() {
+    var a;
+    a = f();
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
   }
 
   void test_useOfVoidResult_assignmentExpression_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {}",
-        "  n() {",
-        "    var a;",
-        "    a = m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {}
+  n() {
+    var a;
+    a = m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
   }
 
   void test_useOfVoidResult_inForLoop() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {}",
-        "  n() {",
-        "    for(var a = m();;) {}",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {}
+  n() {
+    for(var a = m();;) {}
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
   }
 
   void test_useOfVoidResult_variableDeclaration_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void f() {}",
-        "class A {",
-        "  n() {",
-        "    var a = f();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+void f() {}
+class A {
+  n() {
+    var a = f();
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
   }
 
   void test_useOfVoidResult_variableDeclaration_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {}",
-        "  n() {",
-        "    var a = m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {}
+  n() {
+    var a = m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
   }
 
   void test_useOfVoidResult_variableDeclaration_method2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m() {}",
-        "  n() {",
-        "    var a = m(), b = m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {}
+  n() {
+    var a = m(), b = m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]);
     verify([source]);
@@ -3188,12 +3288,12 @@
 
 class IncrementalResolverTest extends ResolverTestCase {
   void test_resolve() {
-    MethodDeclaration method = _resolveMethod(EngineTestCase.createSource([
-        "class C {",
-        "  int m(int a) {",
-        "    return a + a;",
-        "  }",
-        "}"]));
+    MethodDeclaration method = _resolveMethod(r'''
+class C {
+  int m(int a) {
+    return a + a;
+  }
+}''');
     BlockFunctionBody body = method.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[0] as ReturnStatement;
     BinaryExpression expression = statement.expression as BinaryExpression;
@@ -3201,8 +3301,8 @@
     Element leftElement = left.staticElement;
     SimpleIdentifier right = expression.rightOperand as SimpleIdentifier;
     Element rightElement = right.staticElement;
-    JUnitTestCase.assertNotNull(leftElement);
-    JUnitTestCase.assertSame(leftElement, rightElement);
+    expect(leftElement, isNotNull);
+    expect(rightElement, same(leftElement));
   }
 
   MethodDeclaration _resolveMethod(String content) {
@@ -3258,9 +3358,9 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(getterG, mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3276,9 +3376,9 @@
     classB.interfaces = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size);
-    JUnitTestCase.assertNull(mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject);
+    expect(mapB.get(getterName), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3294,9 +3394,9 @@
     classB.mixins = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(getterG, mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3305,7 +3405,7 @@
     // class A {}
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+    expect(mapA.size, _numOfMembersInObject);
     _assertNoErrors(classA);
   }
 
@@ -3320,9 +3420,9 @@
     classB.supertype = classA.type;
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(methodM, mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3338,9 +3438,9 @@
     classB.interfaces = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size);
-    JUnitTestCase.assertNull(mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject);
+    expect(mapB.get(methodName), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3356,9 +3456,9 @@
     classB.mixins = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(methodM, mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3373,9 +3473,9 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(getterG, mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3391,9 +3491,9 @@
     classB.interfaces = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(getterG, mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3409,9 +3509,9 @@
     classB.mixins = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(getterG, mapB.get(getterName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3420,7 +3520,7 @@
     // class A {}
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
+    expect(mapA.size, _numOfMembersInObject);
     _assertNoErrors(classA);
   }
 
@@ -3438,8 +3538,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI2.type, classI1.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertNull(mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapA.get(methodName), isNull);
     _assertErrors(classA, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
   }
 
@@ -3457,8 +3557,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertNull(mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapA.get(methodName), isNull);
     _assertErrors(classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
   }
 
@@ -3476,8 +3576,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertNull(mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapA.get(methodName), isNull);
     _assertErrors(classA, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
   }
 
@@ -3512,8 +3612,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertNull(mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapA.get(methodName), isNull);
     _assertErrors(classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
   }
 
@@ -3531,8 +3631,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI2.type, classI1.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertNull(mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapA.get(methodName), isNull);
     _assertErrors(classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
   }
 
@@ -3546,9 +3646,9 @@
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(methodM, mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3564,9 +3664,9 @@
     classB.interfaces = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(methodM, mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3582,9 +3682,9 @@
     classB.mixins = <InterfaceType> [classA.type];
     MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classB);
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size);
-    JUnitTestCase.assertSame(methodM, mapB.get(methodName));
+    expect(mapA.size, _numOfMembersInObject);
+    expect(mapB.size, _numOfMembersInObject + 1);
+    expect(mapB.get(methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3604,9 +3704,9 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 2, mapA.size);
-    JUnitTestCase.assertSame(methodM1, mapA.get(methodName1));
-    JUnitTestCase.assertSame(methodM2, mapA.get(methodName2));
+    expect(mapA.size, _numOfMembersInObject + 2);
+    expect(mapA.get(methodName1), same(methodM1));
+    expect(mapA.get(methodName2), same(methodM2));
     _assertNoErrors(classA);
   }
 
@@ -3624,9 +3724,9 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
+    expect(mapA.size, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(accessorName, false, _typeProvider.dynamicType);
-    JUnitTestCase.assertEquals(syntheticAccessor.type, mapA.get(accessorName).type);
+    expect(mapA.get(accessorName).type, syntheticAccessor.type);
     _assertNoErrors(classA);
   }
 
@@ -3652,9 +3752,9 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
+    expect(mapA.size, _numOfMembersInObject + 1);
     MethodElement syntheticMethod = ElementFactory.methodElement(methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
-    JUnitTestCase.assertEquals(syntheticMethod.type, mapA.get(methodName).type);
+    expect(mapA.get(methodName).type, syntheticMethod.type);
     _assertNoErrors(classA);
   }
 
@@ -3672,10 +3772,10 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
+    expect(mapA.size, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor = ElementFactory.setterElement(accessorName, false, _typeProvider.dynamicType);
     syntheticAccessor.returnType = _typeProvider.dynamicType;
-    JUnitTestCase.assertEquals(syntheticAccessor.type, mapA.get("${accessorName}=").type);
+    expect(mapA.get("$accessorName=").type, syntheticAccessor.type);
     _assertNoErrors(classA);
   }
 
@@ -3703,9 +3803,9 @@
     ClassElementImpl classD = ElementFactory.classElement2("D", []);
     classD.interfaces = <InterfaceType> [classI1.type, classI2.type, classI3.type];
     MemberMap mapD = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapD.size);
+    expect(mapD.size, _numOfMembersInObject + 1);
     PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(accessorName, false, _typeProvider.dynamicType);
-    JUnitTestCase.assertEquals(syntheticAccessor.type, mapD.get(accessorName).type);
+    expect(mapD.get(accessorName).type, syntheticAccessor.type);
     _assertNoErrors(classD);
   }
 
@@ -3745,9 +3845,9 @@
     ClassElementImpl classD = ElementFactory.classElement2("D", []);
     classD.interfaces = <InterfaceType> [classI1.type, classI2.type, classI3.type];
     MemberMap mapD = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapD.size);
+    expect(mapD.size, _numOfMembersInObject + 1);
     MethodElement syntheticMethod = ElementFactory.methodElement(methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
-    JUnitTestCase.assertEquals(syntheticMethod.type, mapD.get(methodName).type);
+    expect(mapD.get(methodName).type, syntheticMethod.type);
     _assertNoErrors(classD);
   }
 
@@ -3775,10 +3875,10 @@
     ClassElementImpl classD = ElementFactory.classElement2("D", []);
     classD.interfaces = <InterfaceType> [classI1.type, classI2.type, classI3.type];
     MemberMap mapD = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapD.size);
+    expect(mapD.size, _numOfMembersInObject + 1);
     PropertyAccessorElementImpl syntheticAccessor = ElementFactory.setterElement(accessorName, false, _typeProvider.dynamicType);
     syntheticAccessor.returnType = _typeProvider.dynamicType;
-    JUnitTestCase.assertEquals(syntheticAccessor.type, mapD.get("${accessorName}=").type);
+    expect(mapD.get("$accessorName=").type, syntheticAccessor.type);
     _assertNoErrors(classD);
   }
 
@@ -3800,8 +3900,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
-    JUnitTestCase.assertSame(methodM2, mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject + 1);
+    expect(mapA.get(methodName), same(methodM2));
     _assertNoErrors(classA);
   }
 
@@ -3834,8 +3934,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type, classI3.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
-    JUnitTestCase.assertSame(methodM3, mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject + 1);
+    expect(mapA.get(methodName), same(methodM3));
     _assertNoErrors(classA);
   }
 
@@ -3872,8 +3972,8 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI1.type, classI2.type, classI3.type, classI4.type];
     MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
-    JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapA.size);
-    JUnitTestCase.assertSame(methodM4, mapA.get(methodName));
+    expect(mapA.size, _numOfMembersInObject + 1);
+    expect(mapA.get(methodName), same(methodM4));
     _assertNoErrors(classA);
   }
 
@@ -3884,7 +3984,7 @@
     classA.accessors = <PropertyAccessorElement> [getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(classB, getterName));
+    expect(_inheritanceManager.lookupInheritance(classB, getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3896,7 +3996,7 @@
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3908,7 +4008,7 @@
     classA.accessors = <PropertyAccessorElement> [setterS];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(classB, "${setterName}="));
+    expect(_inheritanceManager.lookupInheritance(classB, "$setterName="), same(setterS));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3921,7 +4021,7 @@
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3929,7 +4029,7 @@
   void test_lookupInheritance_interfaces_infiniteLoop() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name"));
+    expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
     _assertNoErrors(classA);
   }
 
@@ -3938,7 +4038,7 @@
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classA.interfaces = <InterfaceType> [classB.type];
     classB.interfaces = <InterfaceType> [classA.type];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name"));
+    expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3955,8 +4055,8 @@
     classI2.interfaces = <InterfaceType> [classI1.type];
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.interfaces = <InterfaceType> [classI2.type];
-    JUnitTestCase.assertSame(methodM1, _inheritanceManager.lookupInheritance(classA, methodName1));
-    JUnitTestCase.assertSame(methodM2, _inheritanceManager.lookupInheritance(classA, methodName2));
+    expect(_inheritanceManager.lookupInheritance(classA, methodName1), same(methodM1));
+    expect(_inheritanceManager.lookupInheritance(classA, methodName2), same(methodM2));
     _assertNoErrors(classI1);
     _assertNoErrors(classI2);
     _assertNoErrors(classA);
@@ -3969,7 +4069,7 @@
     classA.accessors = <PropertyAccessorElement> [getterG];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.mixins = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(classB, getterName));
+    expect(_inheritanceManager.lookupInheritance(classB, getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3981,7 +4081,7 @@
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.mixins = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -3993,7 +4093,7 @@
     classA.accessors = <PropertyAccessorElement> [setterS];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.mixins = <InterfaceType> [classA.type];
-    JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(classB, "${setterName}="));
+    expect(_inheritanceManager.lookupInheritance(classB, "$setterName="), same(setterS));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4006,14 +4106,14 @@
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classB.mixins = <InterfaceType> [classA.type];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
 
   void test_lookupInheritance_noMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "a"));
+    expect(_inheritanceManager.lookupInheritance(classA, "a"), isNull);
     _assertNoErrors(classA);
   }
 
@@ -4023,7 +4123,7 @@
     PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [getterG];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
-    JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(classB, getterName));
+    expect(_inheritanceManager.lookupInheritance(classB, getterName), same(getterG));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4031,7 +4131,7 @@
   void test_lookupInheritance_superclass_infiniteLoop() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     classA.supertype = classA.type;
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name"));
+    expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
     _assertNoErrors(classA);
   }
 
@@ -4040,7 +4140,7 @@
     ClassElementImpl classB = ElementFactory.classElement2("B", []);
     classA.supertype = classB.type;
     classB.supertype = classA.type;
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name"));
+    expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4051,7 +4151,7 @@
     MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
-    JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), same(methodM));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4062,7 +4162,7 @@
     PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [setterS];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
-    JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(classB, "${setterName}="));
+    expect(_inheritanceManager.lookupInheritance(classB, "$setterName="), same(setterS));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4074,7 +4174,7 @@
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement> [methodM];
     ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
-    JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, methodName));
+    expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4084,7 +4184,7 @@
     String getterName = "g";
     PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [getterG];
-    JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupMember(classA, getterName));
+    expect(_inheritanceManager.lookupMember(classA, getterName), same(getterG));
     _assertNoErrors(classA);
   }
 
@@ -4093,7 +4193,7 @@
     String getterName = "g";
     PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, true, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [getterG];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, getterName));
+    expect(_inheritanceManager.lookupMember(classA, getterName), isNull);
     _assertNoErrors(classA);
   }
 
@@ -4102,7 +4202,7 @@
     String methodName = "m";
     MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     classA.methods = <MethodElement> [methodM];
-    JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupMember(classA, methodName));
+    expect(_inheritanceManager.lookupMember(classA, methodName), same(methodM));
     _assertNoErrors(classA);
   }
 
@@ -4112,13 +4212,13 @@
     MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     (methodM as MethodElementImpl).static = true;
     classA.methods = <MethodElement> [methodM];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, methodName));
+    expect(_inheritanceManager.lookupMember(classA, methodName), isNull);
     _assertNoErrors(classA);
   }
 
   void test_lookupMember_noMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
-    JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, "a"));
+    expect(_inheritanceManager.lookupMember(classA, "a"), isNull);
     _assertNoErrors(classA);
   }
 
@@ -4127,7 +4227,7 @@
     String setterName = "s";
     PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, false, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [setterS];
-    JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupMember(classA, "${setterName}="));
+    expect(_inheritanceManager.lookupMember(classA, "$setterName="), same(setterS));
     _assertNoErrors(classA);
   }
 
@@ -4136,7 +4236,7 @@
     String setterName = "s";
     PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, true, _typeProvider.intType);
     classA.accessors = <PropertyAccessorElement> [setterS];
-    JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, setterName));
+    expect(_inheritanceManager.lookupMember(classA, setterName), isNull);
     _assertNoErrors(classA);
   }
 
@@ -4145,7 +4245,7 @@
     String methodName = "m";
     MethodElementImpl methodM = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     classA.methods = <MethodElement> [methodM];
-    EngineTestCase.assertSizeOfList(0, _inheritanceManager.lookupOverrides(classA, methodName));
+    expect(_inheritanceManager.lookupOverrides(classA, methodName), hasLength(0));
     _assertNoErrors(classA);
   }
 
@@ -4158,7 +4258,7 @@
     MethodElementImpl methodMinB = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     classB.methods = <MethodElement> [methodMinB];
     List<ExecutableElement> overrides = _inheritanceManager.lookupOverrides(classB, methodName);
-    EngineTestCase.assertEqualsIgnoreOrder(<Object> [methodMinA], new List.from(overrides));
+    expect(overrides, unorderedEquals([methodMinA]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4173,7 +4273,7 @@
     MethodElementImpl methodMinB = ElementFactory.methodElement(methodName, _typeProvider.intType, []);
     classB.methods = <MethodElement> [methodMinB];
     List<ExecutableElement> overrides = _inheritanceManager.lookupOverrides(classB, methodName);
-    EngineTestCase.assertEqualsIgnoreOrder(<Object> [methodMinA], new List.from(overrides));
+    expect(overrides, unorderedEquals([methodMinA]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
   }
@@ -4191,7 +4291,7 @@
     MethodElementImpl methodMinC = ElementFactory.methodElement(methodName, _typeProvider.numType, []);
     classC.methods = <MethodElement> [methodMinC];
     List<ExecutableElement> overrides = _inheritanceManager.lookupOverrides(classC, methodName);
-    EngineTestCase.assertEqualsIgnoreOrder(<Object> [methodMinA, methodMinB], new List.from(overrides));
+    expect(overrides, unorderedEquals([methodMinA, methodMinB]));
     _assertNoErrors(classA);
     _assertNoErrors(classB);
     _assertNoErrors(classC);
@@ -4244,72 +4344,83 @@
   }
 
   void test_accessorsAcrossFiles() {
-    Source librarySource = addSource("/lib.dart", EngineTestCase.createSource([
-        "library lib;",
-        "part 'first.dart';",
-        "part 'second.dart';"]));
-    addSource("/first.dart", EngineTestCase.createSource(["part of lib;", "int get V => 0;"]));
-    addSource("/second.dart", EngineTestCase.createSource(["part of lib;", "void set V(int v) {}"]));
+    Source librarySource = addSource("/lib.dart", r'''
+library lib;
+part 'first.dart';
+part 'second.dart';''');
+    addSource("/first.dart", r'''
+part of lib;
+int get V => 0;''');
+    addSource("/second.dart", r'''
+part of lib;
+void set V(int v) {}''');
     LibraryElement element = _buildLibrary(librarySource, []);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     List<CompilationUnitElement> sourcedUnits = element.parts;
-    EngineTestCase.assertLength(2, sourcedUnits);
+    expect(sourcedUnits, hasLength(2));
     List<PropertyAccessorElement> firstAccessors = sourcedUnits[0].accessors;
-    EngineTestCase.assertLength(1, firstAccessors);
+    expect(firstAccessors, hasLength(1));
     List<PropertyAccessorElement> secondAccessors = sourcedUnits[1].accessors;
-    EngineTestCase.assertLength(1, secondAccessors);
-    JUnitTestCase.assertSame(firstAccessors[0].variable, secondAccessors[0].variable);
+    expect(secondAccessors, hasLength(1));
+    expect(secondAccessors[0].variable, same(firstAccessors[0].variable));
   }
 
   void test_empty() {
     Source librarySource = addSource("/lib.dart", "library lib;");
     LibraryElement element = _buildLibrary(librarySource, []);
-    JUnitTestCase.assertNotNull(element);
-    JUnitTestCase.assertEquals("lib", element.name);
-    JUnitTestCase.assertNull(element.entryPoint);
-    EngineTestCase.assertLength(0, element.importedLibraries);
-    EngineTestCase.assertLength(0, element.imports);
-    JUnitTestCase.assertSame(element, element.library);
-    EngineTestCase.assertLength(0, element.prefixes);
-    EngineTestCase.assertLength(0, element.parts);
+    expect(element, isNotNull);
+    expect(element.name, "lib");
+    expect(element.entryPoint, isNull);
+    expect(element.importedLibraries, hasLength(0));
+    expect(element.imports, hasLength(0));
+    expect(element.library, same(element));
+    expect(element.prefixes, hasLength(0));
+    expect(element.parts, hasLength(0));
     CompilationUnitElement unit = element.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
-    JUnitTestCase.assertEquals("lib.dart", unit.name);
-    JUnitTestCase.assertEquals(element, unit.library);
-    EngineTestCase.assertLength(0, unit.accessors);
-    EngineTestCase.assertLength(0, unit.functions);
-    EngineTestCase.assertLength(0, unit.functionTypeAliases);
-    EngineTestCase.assertLength(0, unit.types);
-    EngineTestCase.assertLength(0, unit.topLevelVariables);
+    expect(unit, isNotNull);
+    expect(unit.name, "lib.dart");
+    expect(unit.library, element);
+    expect(unit.accessors, hasLength(0));
+    expect(unit.functions, hasLength(0));
+    expect(unit.functionTypeAliases, hasLength(0));
+    expect(unit.types, hasLength(0));
+    expect(unit.topLevelVariables, hasLength(0));
   }
 
   void test_missingLibraryDirectiveWithPart() {
-    addSource("/a.dart", EngineTestCase.createSource(["part of lib;"]));
-    Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["part 'a.dart';"]));
+    addSource("/a.dart", "part of lib;");
+    Source librarySource = addSource("/lib.dart", "part 'a.dart';");
     LibraryElement element = _buildLibrary(librarySource, [ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART]);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
   }
 
   void test_missingPartOfDirective() {
     addSource("/a.dart", "class A {}");
-    Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["library lib;", "", "part 'a.dart';"]));
+    Source librarySource = addSource("/lib.dart", r'''
+library lib;
+
+part 'a.dart';''');
     LibraryElement element = _buildLibrary(librarySource, [CompileTimeErrorCode.PART_OF_NON_PART]);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
   }
 
   void test_multipleFiles() {
-    Source librarySource = addSource("/lib.dart", EngineTestCase.createSource([
-        "library lib;",
-        "part 'first.dart';",
-        "part 'second.dart';",
-        "",
-        "class A {}"]));
-    addSource("/first.dart", EngineTestCase.createSource(["part of lib;", "class B {}"]));
-    addSource("/second.dart", EngineTestCase.createSource(["part of lib;", "class C {}"]));
+    Source librarySource = addSource("/lib.dart", r'''
+library lib;
+part 'first.dart';
+part 'second.dart';
+
+class A {}''');
+    addSource("/first.dart", r'''
+part of lib;
+class B {}''');
+    addSource("/second.dart", r'''
+part of lib;
+class C {}''');
     LibraryElement element = _buildLibrary(librarySource, []);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     List<CompilationUnitElement> sourcedUnits = element.parts;
-    EngineTestCase.assertLength(2, sourcedUnits);
+    expect(sourcedUnits, hasLength(2));
     _assertTypes(element.definingCompilationUnit, ["A"]);
     if (sourcedUnits[0].name == "first.dart") {
       _assertTypes(sourcedUnits[0], ["B"]);
@@ -4321,9 +4432,12 @@
   }
 
   void test_singleFile() {
-    Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["library lib;", "", "class A {}"]));
+    Source librarySource = addSource("/lib.dart", r'''
+library lib;
+
+class A {}''');
     LibraryElement element = _buildLibrary(librarySource, []);
-    JUnitTestCase.assertNotNull(element);
+    expect(element, isNotNull);
     _assertTypes(element.definingCompilationUnit, ["A"]);
   }
 
@@ -4353,11 +4467,11 @@
    * @param typeNames the names of the types that should be found
    */
   void _assertTypes(CompilationUnitElement unit, List<String> typeNames) {
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> types = unit.types;
-    EngineTestCase.assertLength(typeNames.length, types);
+    expect(types, hasLength(typeNames.length));
     for (ClassElement type in types) {
-      JUnitTestCase.assertNotNull(type);
+      expect(type, isNotNull);
       String actualTypeName = type.displayName;
       bool wasExpected = false;
       for (String expectedTypeName in typeNames) {
@@ -4366,7 +4480,7 @@
         }
       }
       if (!wasExpected) {
-        JUnitTestCase.fail("Found unexpected type ${actualTypeName}");
+        fail("Found unexpected type $actualTypeName");
       }
     }
   }
@@ -4414,21 +4528,21 @@
     {
       GatheringErrorListener errorListener = new GatheringErrorListener();
       Scope scope = new LibraryImportScope(importingLibrary, errorListener);
-      JUnitTestCase.assertEquals(typeA, scope.lookup(AstFactory.identifier3(typeNameA), importingLibrary));
+      expect(scope.lookup(AstFactory.identifier3(typeNameA), importingLibrary), typeA);
       errorListener.assertNoErrors();
-      JUnitTestCase.assertEquals(typeC, scope.lookup(AstFactory.identifier3(typeNameC), importingLibrary));
+      expect(scope.lookup(AstFactory.identifier3(typeNameC), importingLibrary), typeC);
       errorListener.assertNoErrors();
       Element element = scope.lookup(AstFactory.identifier3(typeNameB), importingLibrary);
       errorListener.assertErrorsWithCodes([StaticWarningCode.AMBIGUOUS_IMPORT]);
       EngineTestCase.assertInstanceOf((obj) => obj is MultiplyDefinedElement, MultiplyDefinedElement, element);
       List<Element> conflictingElements = (element as MultiplyDefinedElement).conflictingElements;
-      EngineTestCase.assertLength(2, conflictingElements);
+      expect(conflictingElements, hasLength(2));
       if (identical(conflictingElements[0], typeB1)) {
-        JUnitTestCase.assertSame(typeB2, conflictingElements[1]);
+        expect(conflictingElements[1], same(typeB2));
       } else if (identical(conflictingElements[0], typeB2)) {
-        JUnitTestCase.assertSame(typeB1, conflictingElements[1]);
+        expect(conflictingElements[1], same(typeB1));
       } else {
-        JUnitTestCase.assertSame(typeB1, conflictingElements[0]);
+        expect(conflictingElements[0], same(typeB1));
       }
     }
     {
@@ -4461,14 +4575,14 @@
     definingLibrary.imports = <ImportElement> [importElement];
     GatheringErrorListener errorListener = new GatheringErrorListener();
     Scope scope = new LibraryImportScope(definingLibrary, errorListener);
-    JUnitTestCase.assertEquals(importedType, scope.lookup(AstFactory.identifier3(importedTypeName), definingLibrary));
+    expect(scope.lookup(AstFactory.identifier3(importedTypeName), definingLibrary), importedType);
   }
 
   void test_getErrorListener() {
     LibraryElement definingLibrary = createDefaultTestLibrary();
     GatheringErrorListener errorListener = new GatheringErrorListener();
     LibraryImportScope scope = new LibraryImportScope(definingLibrary, errorListener);
-    JUnitTestCase.assertEquals(errorListener, scope.errorListener);
+    expect(scope.errorListener, errorListener);
   }
 
   void test_nonConflictingImports_fromSdk() {
@@ -4483,7 +4597,7 @@
     importingLibrary.imports = <ImportElement> [importCore, importLib];
     GatheringErrorListener errorListener = new GatheringErrorListener();
     Scope scope = new LibraryImportScope(importingLibrary, errorListener);
-    JUnitTestCase.assertEquals(type, scope.lookup(AstFactory.identifier3(typeName), importingLibrary));
+    expect(scope.lookup(AstFactory.identifier3(typeName), importingLibrary), type);
     errorListener.assertErrorsWithCodes([StaticWarningCode.CONFLICTING_DART_IMPORT]);
   }
 
@@ -4502,9 +4616,9 @@
     importingLibrary.imports = <ImportElement> [import1, import2];
     GatheringErrorListener errorListener = new GatheringErrorListener();
     Scope scope = new LibraryImportScope(importingLibrary, errorListener);
-    JUnitTestCase.assertEquals(typeA, scope.lookup(AstFactory.identifier3(typeNameA), importingLibrary));
+    expect(scope.lookup(AstFactory.identifier3(typeNameA), importingLibrary), typeA);
     errorListener.assertNoErrors();
-    JUnitTestCase.assertEquals(typeB, scope.lookup(AstFactory.identifier3(typeNameB), importingLibrary));
+    expect(scope.lookup(AstFactory.identifier3(typeNameB), importingLibrary), typeB);
     errorListener.assertNoErrors();
   }
 
@@ -4527,10 +4641,10 @@
     Scope scope = new LibraryImportScope(importingLibrary, errorListener);
     Element prefixedElement = scope.lookup(AstFactory.identifier5(prefixName, typeName), importingLibrary);
     errorListener.assertNoErrors();
-    JUnitTestCase.assertSame(prefixedType, prefixedElement);
+    expect(prefixedElement, same(prefixedType));
     Element nonPrefixedElement = scope.lookup(AstFactory.identifier3(typeName), importingLibrary);
     errorListener.assertNoErrors();
-    JUnitTestCase.assertSame(nonPrefixedType, nonPrefixedElement);
+    expect(nonPrefixedElement, same(nonPrefixedType));
   }
 }
 
@@ -4547,8 +4661,14 @@
   }
 
   void test_imports_relative() {
-    Source sourceA = addSource(EngineTestCase.createSource(["library libA;", "import 'libB.dart';", "class A {}"]));
-    Source sourceB = addNamedSource("/libB.dart", EngineTestCase.createSource(["library libB;", "import 'test.dart", "class B {}"]));
+    Source sourceA = addSource(r'''
+library libA;
+import 'libB.dart';
+class A {}''');
+    Source sourceB = addNamedSource("/libB.dart", r'''
+library libB;
+import 'test.dart
+class B {}''');
     List<ResolvableLibrary> cycle = new List<ResolvableLibrary>();
     ResolvableLibrary coreLib = _createResolvableLibrary(_coreLibrarySource);
     coreLib.libraryElement = analysisContext2.computeLibraryElement(_coreLibrarySource) as LibraryElementImpl;
@@ -4583,14 +4703,19 @@
   }
 
   void test_imports_dart_html() {
-    Source source = addSource(EngineTestCase.createSource(["library libA;", "import 'dart:html';", "class A {}"]));
+    Source source = addSource(r'''
+library libA;
+import 'dart:html';
+class A {}''');
     LibraryElement library = _resolver.resolveLibrary(source, true);
     List<LibraryElement> importedLibraries = library.importedLibraries;
     assertNamedElements(importedLibraries, ["dart.core", "dart.dom.html"]);
   }
 
   void test_imports_none() {
-    Source source = addSource(EngineTestCase.createSource(["library libA;", "class A {}"]));
+    Source source = addSource(r'''
+library libA;
+class A {}''');
     LibraryElement library = _resolver.resolveLibrary(source, true);
     List<LibraryElement> importedLibraries = library.importedLibraries;
     assertNamedElements(importedLibraries, ["dart.core"]);
@@ -4598,7 +4723,10 @@
 
   void test_imports_relative() {
     addNamedSource("/libB.dart", "library libB;");
-    Source source = addSource(EngineTestCase.createSource(["library libA;", "import 'libB.dart';", "class A {}"]));
+    Source source = addSource(r'''
+library libA;
+import 'libB.dart';
+class A {}''');
     LibraryElement library = _resolver.resolveLibrary(source, true);
     List<LibraryElement> importedLibraries = library.importedLibraries;
     assertNamedElements(importedLibraries, ["dart.core", "libB"]);
@@ -4625,14 +4753,14 @@
     definingLibrary.imports = <ImportElement> [importElement];
     GatheringErrorListener errorListener = new GatheringErrorListener();
     Scope scope = new LibraryScope(definingLibrary, errorListener);
-    JUnitTestCase.assertEquals(importedType, scope.lookup(AstFactory.identifier3(importedTypeName), definingLibrary));
+    expect(scope.lookup(AstFactory.identifier3(importedTypeName), definingLibrary), importedType);
   }
 
   void test_getErrorListener() {
     LibraryElement definingLibrary = createDefaultTestLibrary();
     GatheringErrorListener errorListener = new GatheringErrorListener();
     LibraryScope scope = new LibraryScope(definingLibrary, errorListener);
-    JUnitTestCase.assertEquals(errorListener, scope.errorListener);
+    expect(scope.errorListener, errorListener);
   }
 }
 
@@ -4667,24 +4795,24 @@
   }
 
   void test_getExplicitlyImportsCore() {
-    JUnitTestCase.assertFalse(_library.explicitlyImportsCore);
+    expect(_library.explicitlyImportsCore, isFalse);
     _errorListener.assertNoErrors();
   }
 
   void test_getExports() {
-    EngineTestCase.assertLength(0, _library.exports);
+    expect(_library.exports, hasLength(0));
     _errorListener.assertNoErrors();
   }
 
   void test_getImports() {
-    EngineTestCase.assertLength(0, _library.imports);
+    expect(_library.imports, hasLength(0));
     _errorListener.assertNoErrors();
   }
 
   void test_getImportsAndExports() {
     _library.importedLibraries = <Library> [_createLibrary("/imported.dart")];
     _library.exportedLibraries = <Library> [_createLibrary("/exported.dart")];
-    EngineTestCase.assertLength(2, _library.importsAndExports);
+    expect(_library.importsAndExports, hasLength(2));
     _errorListener.assertNoErrors();
   }
 
@@ -4692,17 +4820,17 @@
     LibraryElementImpl element = new LibraryElementImpl.forNode(_analysisContext, AstFactory.libraryIdentifier2(["lib"]));
     element.definingCompilationUnit = new CompilationUnitElementImpl("lib.dart");
     _library.libraryElement = element;
-    JUnitTestCase.assertNotNull(_library.libraryScope);
+    expect(_library.libraryScope, isNotNull);
     _errorListener.assertNoErrors();
   }
 
   void test_getLibrarySource() {
-    JUnitTestCase.assertNotNull(_library.librarySource);
+    expect(_library.librarySource, isNotNull);
   }
 
   void test_setExplicitlyImportsCore() {
     _library.explicitlyImportsCore = true;
-    JUnitTestCase.assertTrue(_library.explicitlyImportsCore);
+    expect(_library.explicitlyImportsCore, isTrue);
     _errorListener.assertNoErrors();
   }
 
@@ -4710,8 +4838,8 @@
     Library exportLibrary = _createLibrary("/exported.dart");
     _library.exportedLibraries = <Library> [exportLibrary];
     List<Library> exports = _library.exports;
-    EngineTestCase.assertLength(1, exports);
-    JUnitTestCase.assertSame(exportLibrary, exports[0]);
+    expect(exports, hasLength(1));
+    expect(exports[0], same(exportLibrary));
     _errorListener.assertNoErrors();
   }
 
@@ -4719,15 +4847,15 @@
     Library importLibrary = _createLibrary("/imported.dart");
     _library.importedLibraries = <Library> [importLibrary];
     List<Library> imports = _library.imports;
-    EngineTestCase.assertLength(1, imports);
-    JUnitTestCase.assertSame(importLibrary, imports[0]);
+    expect(imports, hasLength(1));
+    expect(imports[0], same(importLibrary));
     _errorListener.assertNoErrors();
   }
 
   void test_setLibraryElement() {
     LibraryElementImpl element = new LibraryElementImpl.forNode(_analysisContext, AstFactory.libraryIdentifier2(["lib"]));
     _library.libraryElement = element;
-    JUnitTestCase.assertSame(element, _library.libraryElement);
+    expect(_library.libraryElement, same(element));
   }
 
   @override
@@ -4742,13 +4870,12 @@
   Library _createLibrary(String definingCompilationUnitPath) => new Library(_analysisContext, _errorListener, new FileBasedSource.con1(FileUtilities2.createFile(definingCompilationUnitPath)));
 }
 
-class MemberMapTest extends JUnitTestCase {
+class MemberMapTest {
   /**
    * The null type.
    */
   InterfaceType _nullType;
 
-  @override
   void setUp() {
     _nullType = new TestTypeProvider().nullType;
   }
@@ -4762,10 +4889,10 @@
     map.put(m2.name, m2);
     map.put(m3.name, m3);
     MemberMap copy = new MemberMap.con2(map);
-    JUnitTestCase.assertEquals(map.size, copy.size);
-    JUnitTestCase.assertEquals(m1, copy.get(m1.name));
-    JUnitTestCase.assertEquals(m2, copy.get(m2.name));
-    JUnitTestCase.assertEquals(m3, copy.get(m3.name));
+    expect(copy.size, map.size);
+    expect(copy.get(m1.name), m1);
+    expect(copy.get(m2.name), m2);
+    expect(copy.get(m3.name), m3);
   }
 
   void test_MemberMap_override() {
@@ -4774,218 +4901,232 @@
     MemberMap map = new MemberMap();
     map.put(m1.name, m1);
     map.put(m2.name, m2);
-    JUnitTestCase.assertEquals(1, map.size);
-    JUnitTestCase.assertEquals(m2, map.get("m"));
+    expect(map.size, 1);
+    expect(map.get("m"), m2);
   }
 
   void test_MemberMap_put() {
     MethodElement m1 = ElementFactory.methodElement("m1", _nullType, []);
     MemberMap map = new MemberMap();
-    JUnitTestCase.assertEquals(0, map.size);
+    expect(map.size, 0);
     map.put(m1.name, m1);
-    JUnitTestCase.assertEquals(1, map.size);
-    JUnitTestCase.assertEquals(m1, map.get("m1"));
+    expect(map.size, 1);
+    expect(map.get("m1"), m1);
   }
 }
 
 class NonHintCodeTest extends ResolverTestCase {
   void test_deadCode_deadBlock_conditionalElse_debugConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = true;",
-        "f() {",
-        "  DEBUG ? 1 : 2;",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = true;
+f() {
+  DEBUG ? 1 : 2;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_conditionalIf_debugConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = false;",
-        "f() {",
-        "  DEBUG ? 1 : 2;",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = false;
+f() {
+  DEBUG ? 1 : 2;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_else() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = true;",
-        "f() {",
-        "  if(DEBUG) {} else {}",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = true;
+f() {
+  if(DEBUG) {} else {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_if_debugConst_prefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static const bool DEBUG = false;",
-        "}",
-        "f() {",
-        "  if(A.DEBUG) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static const bool DEBUG = false;
+}
+f() {
+  if(A.DEBUG) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_if_debugConst_prefixedIdentifier2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib2.dart';",
-        "f() {",
-        "  if(A.DEBUG) {}",
-        "}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource([
-        "library lib2;",
-        "class A {",
-        "  static const bool DEBUG = false;",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib2.dart';
+f() {
+  if(A.DEBUG) {}
+}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class A {
+  static const bool DEBUG = false;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_if_debugConst_propertyAccessor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib2.dart' as LIB;",
-        "f() {",
-        "  if(LIB.A.DEBUG) {}",
-        "}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource([
-        "library lib2;",
-        "class A {",
-        "  static const bool DEBUG = false;",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib2.dart' as LIB;
+f() {
+  if(LIB.A.DEBUG) {}
+}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class A {
+  static const bool DEBUG = false;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_if_debugConst_simpleIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = false;",
-        "f() {",
-        "  if(DEBUG) {}",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = false;
+f() {
+  if(DEBUG) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadBlock_while_debugConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = false;",
-        "f() {",
-        "  while(DEBUG) {}",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = false;
+f() {
+  while(DEBUG) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadCatch_onCatchSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "f() {",
-        "  try {} on B catch (e) {} on A catch (e) {} catch (e) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+f() {
+  try {} on B catch (e) {} on A catch (e) {} catch (e) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_and_debugConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = false;",
-        "f() {",
-        "  bool b = DEBUG && false;",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = false;
+f() {
+  bool b = DEBUG && false;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_deadCode_deadOperandLHS_or_debugConst() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const bool DEBUG = true;",
-        "f() {",
-        "  bool b = DEBUG || true;",
-        "}"]));
+    Source source = addSource(r'''
+const bool DEBUG = true;
+f() {
+  bool b = DEBUG || true;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_divisionOptimization() {
-    Source source = addSource(EngineTestCase.createSource(["f(int x, int y) {", "  var v = x / y.toInt();", "}"]));
+    Source source = addSource(r'''
+f(int x, int y) {
+  var v = x / y.toInt();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_divisionOptimization_supressIfDivisionNotDefinedInCore() {
-    Source source = addSource(EngineTestCase.createSource(["f(x, y) {", "  var v = (x / y).toInt();", "}"]));
+    Source source = addSource(r'''
+f(x, y) {
+  var v = (x / y).toInt();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_divisionOptimization_supressIfDivisionOverridden() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  num operator /(x) { return x; }",
-        "}",
-        "f(A x, A y) {",
-        "  var v = (x / y).toInt();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  num operator /(x) { return x; }
+}
+f(A x, A y) {
+  var v = (x / y).toInt();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_duplicateImport_as() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart' as one;",
-        "A a;",
-        "one.A a2;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart' as one;
+A a;
+one.A a2;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_duplicateImport_hide() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart' hide A;",
-        "A a;",
-        "B b;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart' hide A;
+A a;
+B b;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}
+class B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_duplicateImport_show() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib1.dart' show A;",
-        "A a;",
-        "B b;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib1.dart' show A;
+A a;
+B b;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}
+class B {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -4993,22 +5134,24 @@
 
   void test_importDeferredLibraryWithLoadFunction() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "f() {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as lib1;",
-        "main() { lib1.f(); }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
+        r'''
+library lib1;
+f() {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as lib1;
+main() { lib1.f(); }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> []);
   }
 
   void test_issue20904BuggyTypePromotionAtIfJoin_1() {
     // https://code.google.com/p/dart/issues/detail?id=20904
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var message, var dynamic_) {",
-        "  if (message is Function) {",
-        "    message = dynamic_;",
-        "  }",
-        "  int s = message;",
-        "}"]));
+    Source source = addSource(r'''
+f(var message, var dynamic_) {
+  if (message is Function) {
+    message = dynamic_;
+  }
+  int s = message;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5017,13 +5160,13 @@
   void test_issue20904BuggyTypePromotionAtIfJoin_2() {
     // https://code.google.com/p/dart/issues/detail?id=20904
     enableUnionTypes(false);
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var message) {",
-        "  if (message is Function) {",
-        "    message = '';",
-        "  }",
-        "  int s = message;",
-        "}"]));
+    Source source = addSource(r'''
+f(var message) {
+  if (message is Function) {
+    message = '';
+  }
+  int s = message;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5031,16 +5174,16 @@
 
   void test_issue20904BuggyTypePromotionAtIfJoin_3() {
     // https://code.google.com/p/dart/issues/detail?id=20904
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var message) {",
-        "  var dynamic_;",
-        "  if (message is Function) {",
-        "    message = dynamic_;",
-        "  } else {",
-        "    return;",
-        "  }",
-        "  int s = message;",
-        "}"]));
+    Source source = addSource(r'''
+f(var message) {
+  var dynamic_;
+  if (message is Function) {
+    message = dynamic_;
+  } else {
+    return;
+  }
+  int s = message;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5048,150 +5191,153 @@
 
   void test_issue20904BuggyTypePromotionAtIfJoin_4() {
     // https://code.google.com/p/dart/issues/detail?id=20904
-    Source source = addSource(EngineTestCase.createSource([
-        "f(var message) {",
-        "  if (message is Function) {",
-        "    message = '';",
-        "  } else {",
-        "    return;",
-        "  }",
-        "  String s = message;",
-        "}"]));
+    Source source = addSource(r'''
+f(var message) {
+  if (message is Function) {
+    message = '';
+  } else {
+    return;
+  }
+  String s = message;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_missingReturn_emptyFunctionBody() {
-    Source source = addSource(EngineTestCase.createSource(["abstract class A {", "  int m();", "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int m();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_missingReturn_expressionFunctionBody() {
-    Source source = addSource(EngineTestCase.createSource(["int f() => 0;"]));
+    Source source = addSource("int f() => 0;");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_missingReturn_noReturnType() {
-    Source source = addSource(EngineTestCase.createSource(["f() {}"]));
+    Source source = addSource("f() {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_missingReturn_voidReturnType() {
-    Source source = addSource(EngineTestCase.createSource(["void f() {}"]));
+    Source source = addSource("void f() {}");
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideEqualsButNotHashCode() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  bool operator ==(x) { return x; }",
-        "  get hashCode => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  bool operator ==(x) { return x; }
+  get hashCode => 0;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingGetter_inInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  int get m => 0;",
-        "}",
-        "class B implements A {",
-        "  @override",
-        "  int get m => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  int get m => 0;
+}
+class B implements A {
+  @override
+  int get m => 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingGetter_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  int get m => 0;",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  int get m => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  int get m => 0;
+}
+class B extends A {
+  @override
+  int get m => 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingMethod_inInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  int m() => 0;",
-        "}",
-        "class B implements A {",
-        "  @override",
-        "  int m() => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  int m() => 0;
+}
+class B implements A {
+  @override
+  int m() => 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingMethod_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  int m() => 0;",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  int m() => 1;",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  int m() => 0;
+}
+class B extends A {
+  @override
+  int m() => 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingSetter_inInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  set m(int x) {}",
-        "}",
-        "class B implements A {",
-        "  @override",
-        "  set m(int x) {}",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  set m(int x) {}
+}
+class B implements A {
+  @override
+  set m(int x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_overrideOnNonOverridingSetter_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library dart.core;",
-        "const override = null;",
-        "class A {",
-        "  set m(int x) {}",
-        "}",
-        "class B extends A {",
-        "  @override",
-        "  set m(int x) {}",
-        "}"]));
+    Source source = addSource(r'''
+library dart.core;
+const override = null;
+class A {
+  set m(int x) {}
+}
+class B extends A {
+  @override
+  set m(int x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5199,288 +5345,291 @@
 
   void test_propagatedFieldType() {
     // From dartbug.com/20019
-    Source source = addSource(EngineTestCase.createSource([
-        "class A { }",
-        "class X<T> {",
-        "  final x = new List<T>();",
-        "}",
-        "class Z {",
-        "  final X<A> y = new X<A>();",
-        "  foo() {",
-        "    y.x.add(new A());",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A { }
+class X<T> {
+  final x = new List<T>();
+}
+class Z {
+  final X<A> y = new X<A>();
+  foo() {
+    y.x.add(new A());
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_proxy_annotation_prefixed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@proxy",
-        "class A {}",
-        "f(var a) {",
-        "  a = new A();",
-        "  a.m();",
-        "  var x = a.g;",
-        "  a.s = 1;",
-        "  var y = a + a;",
-        "  a++;",
-        "  ++a;",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+@proxy
+class A {}
+f(var a) {
+  a = new A();
+  a.m();
+  var x = a.g;
+  a.s = 1;
+  var y = a + a;
+  a++;
+  ++a;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_prefixed2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@proxy",
-        "class A {}",
-        "class B {",
-        "  f(var a) {",
-        "    a = new A();",
-        "    a.m();",
-        "    var x = a.g;",
-        "    a.s = 1;",
-        "    var y = a + a;",
-        "    a++;",
-        "    ++a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+@proxy
+class A {}
+class B {
+  f(var a) {
+    a = new A();
+    a.m();
+    var x = a.g;
+    a.s = 1;
+    var y = a + a;
+    a++;
+    ++a;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_proxy_annotation_prefixed3() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class B {",
-        "  f(var a) {",
-        "    a = new A();",
-        "    a.m();",
-        "    var x = a.g;",
-        "    a.s = 1;",
-        "    var y = a + a;",
-        "    a++;",
-        "    ++a;",
-        "  }",
-        "}",
-        "@proxy",
-        "class A {}"]));
+    Source source = addSource(r'''
+library L;
+class B {
+  f(var a) {
+    a = new A();
+    a.m();
+    var x = a.g;
+    a.s = 1;
+    var y = a + a;
+    a++;
+    ++a;
+  }
+}
+@proxy
+class A {}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedGetter_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  get b => 0;",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    return a.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  get b => 0;
+}
+f(var a) {
+  if(a is A) {
+    return a.b;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedMethod_assignmentExpression_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator +(B b) {return new B();}",
-        "}",
-        "f(var a, var a2) {",
-        "  a = new A();",
-        "  a2 = new A();",
-        "  a += a2;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator +(B b) {return new B();}
+}
+f(var a, var a2) {
+  a = new A();
+  a2 = new A();
+  a += a2;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedMethod_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  b() {}",
-        "}",
-        "f() {",
-        "  var a = new A();",
-        "  a.b();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  b() {}
+}
+f() {
+  var a = new A();
+  a.b();
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedMethod_unionType_all() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m(int x) => 0;",
-        "}",
-        "class B {",
-        "  String m() => '0';",
-        "}",
-        "f(A a, B b) {",
-        "  var ab;",
-        "  if (0 < 1) {",
-        "    ab = a;",
-        "  } else {",
-        "    ab = b;",
-        "  }",
-        "  ab.m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m(int x) => 0;
+}
+class B {
+  String m() => '0';
+}
+f(A a, B b) {
+  var ab;
+  if (0 < 1) {
+    ab = a;
+  } else {
+    ab = b;
+  }
+  ab.m();
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedMethod_unionType_some() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m(int x) => 0;",
-        "}",
-        "class B {}",
-        "f(A a, B b) {",
-        "  var ab;",
-        "  if (0 < 1) {",
-        "    ab = a;",
-        "  } else {",
-        "    ab = b;",
-        "  }",
-        "  ab.m(0);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m(int x) => 0;
+}
+class B {}
+f(A a, B b) {
+  var ab;
+  if (0 < 1) {
+    ab = a;
+  } else {
+    ab = b;
+  }
+  ab.m(0);
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_binaryExpression_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator +(B b) {}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a + 1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator +(B b) {}
+}
+f(var a) {
+  if(a is A) {
+    a + 1;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_indexBoth_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator [](int index) {}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0]++;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator [](int index) {}
+}
+f(var a) {
+  if(a is A) {
+    a[0]++;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_indexGetter_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator [](int index) {}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0];",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator [](int index) {}
+}
+f(var a) {
+  if(a is A) {
+    a[0];
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_indexSetter_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator []=(i, v) {}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a[0] = 1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator []=(i, v) {}
+}
+f(var a) {
+  if(a is A) {
+    a[0] = 1;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_postfixExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator +(B b) {return new B();}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a++;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator +(B b) {return new B();}
+}
+f(var a) {
+  if(a is A) {
+    a++;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedOperator_prefixExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  operator +(B b) {return new B();}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    ++a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  operator +(B b) {return new B();}
+}
+f(var a) {
+  if(a is A) {
+    ++a;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_undefinedSetter_inSubtype() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  set b(x) {}",
-        "}",
-        "f(var a) {",
-        "  if(a is A) {",
-        "    a.b = 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  set b(x) {}
+}
+f(var a) {
+  if(a is A) {
+    a.b = 0;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_unnecessaryCast_13855_parameter_A() {
     // dartbug.com/13855, dartbug.com/13732
-    Source source = addSource(EngineTestCase.createSource([
-        "class A{",
-        "  a() {}",
-        "}",
-        "class B<E> {",
-        "  E e;",
-        "  m() {",
-        "    (e as A).a();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A{
+  a() {}
+}
+class B<E> {
+  E e;
+  m() {
+    (e as A).a();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unnecessaryCast_dynamic_type() {
-    Source source = addSource(EngineTestCase.createSource(["m(v) {", "  var b = v as Object;", "}"]));
+    Source source = addSource(r'''
+m(v) {
+  var b = v as Object;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5488,27 +5637,37 @@
 
   void test_unnecessaryCast_generics() {
     // dartbug.com/18953
-    Source source = addSource(EngineTestCase.createSource([
-        "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) {});",
-        "}"]));
+    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) {});
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unnecessaryCast_type_dynamic() {
-    Source source = addSource(EngineTestCase.createSource(["m(v) {", "  var b = Object as dynamic;", "}"]));
+    Source source = addSource(r'''
+m(v) {
+  var b = Object as dynamic;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_annotationOnDirective() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "@A()", "import 'lib1.dart';"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", "  const A() {}", "}"]));
+    Source source = addSource(r'''
+library L;
+@A()
+import 'lib1.dart';''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {
+  const A() {}
+}''');
     resolve(source);
     assertErrors(source, []);
     verify([source, source2]);
@@ -5516,14 +5675,18 @@
 
   void test_unusedImport_as_equalPrefixes() {
     // 18818
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' as one;",
-        "import 'lib2.dart' as one;",
-        "one.A a;",
-        "one.B b;"]));
-    Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {}"]));
-    Source source3 = addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class B {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' as one;
+import 'lib2.dart' as one;
+one.A a;
+one.B b;''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {}''');
+    Source source3 = addNamedSource("/lib2.dart", r'''
+library lib2;
+class B {}''');
     resolve(source);
     assertErrors(source, []);
     assertNoErrors(source2);
@@ -5532,88 +5695,130 @@
   }
 
   void test_unusedImport_core_library() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "import 'dart:core';"]));
+    Source source = addSource(r'''
+library L;
+import 'dart:core';''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_export() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "import 'lib1.dart';", "Two two;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "export 'lib2.dart';", "class One {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class Two {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+Two two;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+export 'lib2.dart';
+class One {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class Two {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_export_infiniteLoop() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "import 'lib1.dart';", "Two two;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "export 'lib2.dart';", "class One {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "export 'lib3.dart';", "class Two {}"]));
-    addNamedSource("/lib3.dart", EngineTestCase.createSource(["library lib3;", "export 'lib2.dart';", "class Three {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+Two two;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+export 'lib2.dart';
+class One {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+export 'lib3.dart';
+class Two {}''');
+    addNamedSource("/lib3.dart", r'''
+library lib3;
+export 'lib2.dart';
+class Three {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_export2() {
-    Source source = addSource(EngineTestCase.createSource(["library L;", "import 'lib1.dart';", "Three three;"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "export 'lib2.dart';", "class One {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "export 'lib3.dart';", "class Two {}"]));
-    addNamedSource("/lib3.dart", EngineTestCase.createSource(["library lib3;", "class Three {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+Three three;''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+export 'lib2.dart';
+class One {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+export 'lib3.dart';
+class Two {}''');
+    addNamedSource("/lib3.dart", r'''
+library lib3;
+class Three {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_metadata() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "@A(x)",
-        "import 'lib1.dart';",
-        "class A {",
-        "  final int value;",
-        "  const A(this.value);",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "const x = 0;"]));
+    Source source = addSource(r'''
+library L;
+@A(x)
+import 'lib1.dart';
+class A {
+  final int value;
+  const A(this.value);
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+const x = 0;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_unusedImport_prefix_topLevelFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart' hide topLevelFunction;",
-        "import 'lib1.dart' as one show topLevelFunction;",
-        "class A {",
-        "  static void x() {",
-        "    One o;",
-        "    one.topLevelFunction();",
-        "  }",
-        "}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class One {}", "topLevelFunction() {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart' hide topLevelFunction;
+import 'lib1.dart' as one show topLevelFunction;
+class A {
+  static void x() {
+    One o;
+    one.topLevelFunction();
+  }
+}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class One {}
+topLevelFunction() {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_useOfVoidResult_implicitReturnValue() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {}",
-        "class A {",
-        "  n() {",
-        "    var a = f();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {}
+class A {
+  n() {
+    var a = f();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_useOfVoidResult_nonVoidReturnValue() {
-    Source source = addSource(EngineTestCase.createSource(["int f() => 1;", "g() {", "  var a = f();", "}"]));
+    Source source = addSource(r'''
+int f() => 1;
+g() {
+  var a = f();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -5622,13 +5827,13 @@
 
 class PubSuggestionCodeTest extends ResolverTestCase {
   void test_import_package() {
-    Source source = addSource(EngineTestCase.createSource(["import 'package:somepackage/other.dart';"]));
+    Source source = addSource("import 'package:somepackage/other.dart';");
     resolve(source);
     assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]);
   }
 
   void test_import_packageWithDotDot() {
-    Source source = addSource(EngineTestCase.createSource(["import 'package:somepackage/../other.dart';"]));
+    Source source = addSource("import 'package:somepackage/../other.dart';");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.URI_DOES_NOT_EXIST,
@@ -5636,7 +5841,7 @@
   }
 
   void test_import_packageWithLeadingDotDot() {
-    Source source = addSource(EngineTestCase.createSource(["import 'package:../other.dart';"]));
+    Source source = addSource("import 'package:../other.dart';");
     resolve(source);
     assertErrors(source, [
         CompileTimeErrorCode.URI_DOES_NOT_EXIST,
@@ -5646,14 +5851,14 @@
   void test_import_referenceIntoLibDirectory() {
     cacheSource("/myproj/pubspec.yaml", "");
     cacheSource("/myproj/lib/other.dart", "");
-    Source source = addNamedSource("/myproj/web/test.dart", EngineTestCase.createSource(["import '../lib/other.dart';"]));
+    Source source = addNamedSource("/myproj/web/test.dart", "import '../lib/other.dart';");
     resolve(source);
     assertErrors(source, [HintCode.FILE_IMPORT_OUTSIDE_LIB_REFERENCES_FILE_INSIDE]);
   }
 
   void test_import_referenceIntoLibDirectory_no_pubspec() {
     cacheSource("/myproj/lib/other.dart", "");
-    Source source = addNamedSource("/myproj/web/test.dart", EngineTestCase.createSource(["import '../lib/other.dart';"]));
+    Source source = addNamedSource("/myproj/web/test.dart", "import '../lib/other.dart';");
     resolve(source);
     assertNoErrors(source);
   }
@@ -5661,14 +5866,14 @@
   void test_import_referenceOutOfLibDirectory() {
     cacheSource("/myproj/pubspec.yaml", "");
     cacheSource("/myproj/web/other.dart", "");
-    Source source = addNamedSource("/myproj/lib/test.dart", EngineTestCase.createSource(["import '../web/other.dart';"]));
+    Source source = addNamedSource("/myproj/lib/test.dart", "import '../web/other.dart';");
     resolve(source);
     assertErrors(source, [HintCode.FILE_IMPORT_INSIDE_LIB_REFERENCES_FILE_OUTSIDE]);
   }
 
   void test_import_referenceOutOfLibDirectory_no_pubspec() {
     cacheSource("/myproj/web/other.dart", "");
-    Source source = addNamedSource("/myproj/lib/test.dart", EngineTestCase.createSource(["import '../web/other.dart';"]));
+    Source source = addNamedSource("/myproj/lib/test.dart", "import '../web/other.dart';");
     resolve(source);
     assertNoErrors(source);
   }
@@ -5676,7 +5881,7 @@
   void test_import_valid_inside_lib1() {
     cacheSource("/myproj/pubspec.yaml", "");
     cacheSource("/myproj/lib/other.dart", "");
-    Source source = addNamedSource("/myproj/lib/test.dart", EngineTestCase.createSource(["import 'other.dart';"]));
+    Source source = addNamedSource("/myproj/lib/test.dart", "import 'other.dart';");
     resolve(source);
     assertNoErrors(source);
   }
@@ -5684,7 +5889,7 @@
   void test_import_valid_inside_lib2() {
     cacheSource("/myproj/pubspec.yaml", "");
     cacheSource("/myproj/lib/bar/other.dart", "");
-    Source source = addNamedSource("/myproj/lib/foo/test.dart", EngineTestCase.createSource(["import '../bar/other.dart';"]));
+    Source source = addNamedSource("/myproj/lib/foo/test.dart", "import '../bar/other.dart';");
     resolve(source);
     assertNoErrors(source);
   }
@@ -5692,7 +5897,7 @@
   void test_import_valid_outside_lib() {
     cacheSource("/myproj/pubspec.yaml", "");
     cacheSource("/myproj/web/other.dart", "");
-    Source source = addNamedSource("/myproj/lib2/test.dart", EngineTestCase.createSource(["import '../web/other.dart';"]));
+    Source source = addNamedSource("/myproj/lib2/test.dart", "import '../web/other.dart';");
     resolve(source);
     assertNoErrors(source);
   }
@@ -5714,10 +5919,10 @@
         found[0] = true;
         // check static type
         DartType staticType = node.staticType;
-        JUnitTestCase.assertSame(SimpleResolverTest_this.typeProvider.dynamicType, staticType);
+        expect(staticType, same(SimpleResolverTest_this.typeProvider.dynamicType));
         // check propagated type
         FunctionType propagatedType = node.propagatedType as FunctionType;
-        JUnitTestCase.assertEquals(SimpleResolverTest_this.typeProvider.stringType, propagatedType.returnType);
+        expect(propagatedType.returnType, SimpleResolverTest_this.typeProvider.stringType);
       } on AnalysisException catch (e, stackTrace) {
         thrownException[0] = new CaughtException(e, stackTrace);
       }
@@ -5769,20 +5974,20 @@
    */
   void assertResolved() {
     if (!_unresolvedNodes.isEmpty || !_wrongTypedNodes.isEmpty) {
-      PrintStringWriter writer = new PrintStringWriter();
+      StringBuffer buffer = new StringBuffer();
       if (!_unresolvedNodes.isEmpty) {
-        writer.print("Failed to resolve ");
-        writer.print(_unresolvedNodes.length);
-        writer.println(" nodes:");
-        _printNodes(writer, _unresolvedNodes);
+        buffer.write("Failed to resolve ");
+        buffer.write(_unresolvedNodes.length);
+        buffer.writeln(" nodes:");
+        _printNodes(buffer, _unresolvedNodes);
       }
       if (!_wrongTypedNodes.isEmpty) {
-        writer.print("Resolved ");
-        writer.print(_wrongTypedNodes.length);
-        writer.println(" to the wrong type of element:");
-        _printNodes(writer, _wrongTypedNodes);
+        buffer.write("Resolved ");
+        buffer.write(_wrongTypedNodes.length);
+        buffer.writeln(" to the wrong type of element:");
+        _printNodes(buffer, _wrongTypedNodes);
       }
-      JUnitTestCase.fail(writer.toString());
+      fail(buffer.toString());
     }
   }
 
@@ -5975,15 +6180,15 @@
     return "<unknown file- ASTNode is null>";
   }
 
-  void _printNodes(PrintStringWriter writer, List<AstNode> nodes) {
+  void _printNodes(StringBuffer buffer, List<AstNode> nodes) {
     for (AstNode identifier in nodes) {
-      writer.print("  ");
-      writer.print(identifier.toString());
-      writer.print(" (");
-      writer.print(_getFileName(identifier));
-      writer.print(" : ");
-      writer.print(identifier.offset);
-      writer.println(")");
+      buffer.write("  ");
+      buffer.write(identifier.toString());
+      buffer.write(" (");
+      buffer.write(_getFileName(identifier));
+      buffer.write(" : ");
+      buffer.write(identifier.offset);
+      buffer.writeln(")");
     }
   }
 }
@@ -6087,13 +6292,13 @@
     for (int i = 0; i < count; i++) {
       String typeName = typeNames[i];
       ClassElementImpl type = new ClassElementImpl.forNode(AstFactory.identifier3(typeName));
-      String fileName = "${typeName}.dart";
+      String fileName = "$typeName.dart";
       CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImpl(fileName);
       compilationUnit.source = _createNamedSource(fileName);
       compilationUnit.types = <ClassElement> [type];
       sourcedCompilationUnits[i] = compilationUnit;
     }
-    String fileName = "${libraryName}.dart";
+    String fileName = "$libraryName.dart";
     CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImpl(fileName);
     compilationUnit.source = _createNamedSource(fileName);
     LibraryElementImpl library = new LibraryElementImpl.forNode(context, AstFactory.libraryIdentifier2([libraryName]));
@@ -6199,7 +6404,7 @@
 
   Source resolveSources(List<String> sourceTexts) {
     for (int i = 0; i < sourceTexts.length; i++) {
-      CompilationUnit unit = resolveSource2("/lib${(i + 1)}.dart", sourceTexts[i]);
+      CompilationUnit unit = resolveSource2("/lib${i + 1}.dart", sourceTexts[i]);
       // reference the source if this is the last source
       if (i + 1 == sourceTexts.length) {
         return unit.element.source;
@@ -6332,7 +6537,7 @@
     GatheringErrorListener listener = new GatheringErrorListener();
     try {
       ScopeBuilder.scopeFor(AstFactory.identifier3("x"), listener);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -6342,7 +6547,7 @@
     GatheringErrorListener listener = new GatheringErrorListener();
     try {
       ScopeBuilder.scopeFor(null, listener);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -6352,7 +6557,7 @@
     GatheringErrorListener listener = new GatheringErrorListener();
     try {
       ScopeBuilder.scopeFor(AstFactory.compilationUnit(), listener);
-      JUnitTestCase.fail("Expected AnalysisException");
+      fail("Expected AnalysisException");
     } on AnalysisException catch (exception) {
       // Expected
     }
@@ -6456,15 +6661,15 @@
   void test_getErrorListener() {
     GatheringErrorListener errorListener = new GatheringErrorListener();
     ScopeTest_TestScope scope = new ScopeTest_TestScope(errorListener);
-    JUnitTestCase.assertEquals(errorListener, scope.errorListener);
+    expect(scope.errorListener, errorListener);
   }
 
   void test_isPrivateName_nonPrivate() {
-    JUnitTestCase.assertFalse(Scope.isPrivateName("Public"));
+    expect(Scope.isPrivateName("Public"), isFalse);
   }
 
   void test_isPrivateName_private() {
-    JUnitTestCase.assertTrue(Scope.isPrivateName("_Private"));
+    expect(Scope.isPrivateName("_Private"), isTrue);
   }
 }
 
@@ -6509,128 +6714,128 @@
 
 class SimpleResolverTest extends ResolverTestCase {
   void fail_staticInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int get g => (a,b) => 0;",
-        "}",
-        "class B {",
-        "  f() {",
-        "    A.g(1,0);",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int get g => (a,b) => 0;
+}
+class B {
+  f() {
+    A.g(1,0);
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_argumentResolution_required_matching() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, 3);",
-        "  }",
-        "  void g(a, b, c) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, 3);
+  }
+  void g(a, b, c) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2]);
   }
 
   void test_argumentResolution_required_tooFew() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2);",
-        "  }",
-        "  void g(a, b, c) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2);
+  }
+  void g(a, b, c) {}
+}''');
     _validateArgumentResolution(source, [0, 1]);
   }
 
   void test_argumentResolution_required_tooMany() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, 3);",
-        "  }",
-        "  void g(a, b) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, 3);
+  }
+  void g(a, b) {}
+}''');
     _validateArgumentResolution(source, [0, 1, -1]);
   }
 
   void test_argumentResolution_requiredAndNamed_extra() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, c: 3, d: 4);",
-        "  }",
-        "  void g(a, b, {c}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, c: 3, d: 4);
+  }
+  void g(a, b, {c}) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2, -1]);
   }
 
   void test_argumentResolution_requiredAndNamed_matching() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, c: 3);",
-        "  }",
-        "  void g(a, b, {c}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, c: 3);
+  }
+  void g(a, b, {c}) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2]);
   }
 
   void test_argumentResolution_requiredAndNamed_missing() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, d: 3);",
-        "  }",
-        "  void g(a, b, {c, d}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, d: 3);
+  }
+  void g(a, b, {c, d}) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 3]);
   }
 
   void test_argumentResolution_requiredAndPositional_fewer() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, 3);",
-        "  }",
-        "  void g(a, b, [c, d]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, 3);
+  }
+  void g(a, b, [c, d]) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2]);
   }
 
   void test_argumentResolution_requiredAndPositional_matching() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, 3, 4);",
-        "  }",
-        "  void g(a, b, [c, d]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, 3, 4);
+  }
+  void g(a, b, [c, d]) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2, 3]);
   }
 
   void test_argumentResolution_requiredAndPositional_more() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void f() {",
-        "    g(1, 2, 3, 4);",
-        "  }",
-        "  void g(a, b, [c]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void f() {
+    g(1, 2, 3, 4);
+  }
+  void g(a, b, [c]) {}
+}''');
     _validateArgumentResolution(source, [0, 1, 2, -1]);
   }
 
   void test_argumentResolution_setter_propagated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  var a = new A();",
-        "  a.sss = 0;",
-        "}",
-        "class A {",
-        "  set sss(x) {}",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  var a = new A();
+  a.sss = 0;
+}
+class A {
+  set sss(x) {}
+}''');
     LibraryElement library = resolve(source);
     CompilationUnitElement unit = library.definingCompilationUnit;
     // find "a.sss = 0"
@@ -6644,28 +6849,28 @@
     }
     // get parameter
     Expression rhs = assignment.rightHandSide;
-    JUnitTestCase.assertNull(rhs.staticParameterElement);
+    expect(rhs.staticParameterElement, isNull);
     ParameterElement parameter = rhs.propagatedParameterElement;
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals("x", parameter.displayName);
+    expect(parameter, isNotNull);
+    expect(parameter.displayName, "x");
     // validate
     ClassElement classA = unit.types[0];
     PropertyAccessorElement setter = classA.accessors[0];
-    JUnitTestCase.assertSame(parameter, setter.parameters[0]);
+    expect(setter.parameters[0], same(parameter));
   }
 
   void test_argumentResolution_setter_propagated_propertyAccess() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  var a = new A();",
-        "  a.b.sss = 0;",
-        "}",
-        "class A {",
-        "  B b = new B();",
-        "}",
-        "class B {",
-        "  set sss(x) {}",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  var a = new A();
+  a.b.sss = 0;
+}
+class A {
+  B b = new B();
+}
+class B {
+  set sss(x) {}
+}''');
     LibraryElement library = resolve(source);
     CompilationUnitElement unit = library.definingCompilationUnit;
     // find "a.b.sss = 0"
@@ -6679,25 +6884,25 @@
     }
     // get parameter
     Expression rhs = assignment.rightHandSide;
-    JUnitTestCase.assertNull(rhs.staticParameterElement);
+    expect(rhs.staticParameterElement, isNull);
     ParameterElement parameter = rhs.propagatedParameterElement;
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals("x", parameter.displayName);
+    expect(parameter, isNotNull);
+    expect(parameter.displayName, "x");
     // validate
     ClassElement classB = unit.types[1];
     PropertyAccessorElement setter = classB.accessors[0];
-    JUnitTestCase.assertSame(parameter, setter.parameters[0]);
+    expect(setter.parameters[0], same(parameter));
   }
 
   void test_argumentResolution_setter_static() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  A a = new A();",
-        "  a.sss = 0;",
-        "}",
-        "class A {",
-        "  set sss(x) {}",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  A a = new A();
+  a.sss = 0;
+}
+class A {
+  set sss(x) {}
+}''');
     LibraryElement library = resolve(source);
     CompilationUnitElement unit = library.definingCompilationUnit;
     // find "a.sss = 0"
@@ -6712,26 +6917,26 @@
     // get parameter
     Expression rhs = assignment.rightHandSide;
     ParameterElement parameter = rhs.staticParameterElement;
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals("x", parameter.displayName);
+    expect(parameter, isNotNull);
+    expect(parameter.displayName, "x");
     // validate
     ClassElement classA = unit.types[0];
     PropertyAccessorElement setter = classA.accessors[0];
-    JUnitTestCase.assertSame(parameter, setter.parameters[0]);
+    expect(setter.parameters[0], same(parameter));
   }
 
   void test_argumentResolution_setter_static_propertyAccess() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main() {",
-        "  A a = new A();",
-        "  a.b.sss = 0;",
-        "}",
-        "class A {",
-        "  B b = new B();",
-        "}",
-        "class B {",
-        "  set sss(x) {}",
-        "}"]));
+    Source source = addSource(r'''
+main() {
+  A a = new A();
+  a.b.sss = 0;
+}
+class A {
+  B b = new B();
+}
+class B {
+  set sss(x) {}
+}''');
     LibraryElement library = resolve(source);
     CompilationUnitElement unit = library.definingCompilationUnit;
     // find "a.b.sss = 0"
@@ -6746,66 +6951,68 @@
     // get parameter
     Expression rhs = assignment.rightHandSide;
     ParameterElement parameter = rhs.staticParameterElement;
-    JUnitTestCase.assertNotNull(parameter);
-    JUnitTestCase.assertEquals("x", parameter.displayName);
+    expect(parameter, isNotNull);
+    expect(parameter.displayName, "x");
     // validate
     ClassElement classB = unit.types[1];
     PropertyAccessorElement setter = classB.accessors[0];
-    JUnitTestCase.assertSame(parameter, setter.parameters[0]);
+    expect(setter.parameters[0], same(parameter));
   }
 
   void test_class_definesCall() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int call(int x) { return x; }",
-        "}",
-        "int f(A a) {",
-        "  return a(0);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int call(int x) { return x; }
+}
+int f(A a) {
+  return a(0);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_class_extends_implements() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A extends B implements C {}",
-        "class B {}",
-        "class C {}"]));
+    Source source = addSource(r'''
+class A extends B implements C {}
+class B {}
+class C {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_commentReference_class() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {}",
-        "/** [A] [new A] [A.n] [new A.n] [m] [f] */",
-        "class A {",
-        "  A() {}",
-        "  A.n() {}",
-        "  m() {}",
-        "}"]));
+    Source source = addSource(r'''
+f() {}
+/** [A] [new A] [A.n] [new A.n] [m] [f] */
+class A {
+  A() {}
+  A.n() {}
+  m() {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_commentReference_parameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "  A.n() {}",
-        "  /** [e] [f] */",
-        "  m(e, f()) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+  A.n() {}
+  /** [e] [f] */
+  m(e, f()) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_commentReference_singleLine() {
-    Source source = addSource(EngineTestCase.createSource(["/// [A]", "class A {}"]));
+    Source source = addSource(r'''
+/// [A]
+class A {}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -6819,570 +7026,626 @@
   }
 
   void test_entryPoint_exported() {
-    addNamedSource("/two.dart", EngineTestCase.createSource(["library two;", "main() {}"]));
-    Source source = addNamedSource("/one.dart", EngineTestCase.createSource(["library one;", "export 'two.dart';"]));
+    addNamedSource("/two.dart", r'''
+library two;
+main() {}''');
+    Source source = addNamedSource("/one.dart", r'''
+library one;
+export 'two.dart';''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     FunctionElement main = library.entryPoint;
-    JUnitTestCase.assertNotNull(main);
-    JUnitTestCase.assertNotSame(library, main.library);
+    expect(main, isNotNull);
+    expect(main.library, isNot(same(library)));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_entryPoint_local() {
-    Source source = addNamedSource("/one.dart", EngineTestCase.createSource(["library one;", "main() {}"]));
+    Source source = addNamedSource("/one.dart", r'''
+library one;
+main() {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     FunctionElement main = library.entryPoint;
-    JUnitTestCase.assertNotNull(main);
-    JUnitTestCase.assertSame(library, main.library);
+    expect(main, isNotNull);
+    expect(main.library, same(library));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_entryPoint_none() {
-    Source source = addNamedSource("/one.dart", EngineTestCase.createSource(["library one;"]));
+    Source source = addNamedSource("/one.dart", "library one;");
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
-    JUnitTestCase.assertNull(library.entryPoint);
+    expect(library, isNotNull);
+    expect(library.entryPoint, isNull);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_extractedMethodAsConstant() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class Comparable<T> {",
-        "  int compareTo(T other);",
-        "  static int compare(Comparable a, Comparable b) => a.compareTo(b);",
-        "}",
-        "class A {",
-        "  void sort([compare = Comparable.compare]) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class Comparable<T> {
+  int compareTo(T other);
+  static int compare(Comparable a, Comparable b) => a.compareTo(b);
+}
+class A {
+  void sort([compare = Comparable.compare]) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_fieldFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A(this.x) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_forEachLoops_nonConflicting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  List list = [1,2,3];",
-        "  for (int x in list) {}",
-        "  for (int x in list) {}",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  List list = [1,2,3];
+  for (int x in list) {}
+  for (int x in list) {}
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_forLoops_nonConflicting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  for (int i = 0; i < 3; i++) {",
-        "  }",
-        "  for (int i = 0; i < 3; i++) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  for (int i = 0; i < 3; i++) {
+  }
+  for (int i = 0; i < 3; i++) {
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_functionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef bool P(e);",
-        "class A {",
-        "  P p;",
-        "  m(e) {",
-        "    if (p(e)) {}",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+typedef bool P(e);
+class A {
+  P p;
+  m(e) {
+    if (p(e)) {}
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_getterAndSetterWithDifferentTypes() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get f => 0;",
-        "  void set f(String s) {}",
-        "}",
-        "g (A a) {",
-        "  a.f = a.f.toString();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get f => 0;
+  void set f(String s) {}
+}
+g (A a) {
+  a.f = a.f.toString();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
     verify([source]);
   }
 
   void test_hasReferenceToSuper() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "class B {toString() => super.toString();}"]));
+    Source source = addSource(r'''
+class A {}
+class B {toString() => super.toString();}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(2, classes);
-    JUnitTestCase.assertFalse(classes[0].hasReferenceToSuper);
-    JUnitTestCase.assertTrue(classes[1].hasReferenceToSuper);
+    expect(classes, hasLength(2));
+    expect(classes[0].hasReferenceToSuper, isFalse);
+    expect(classes[1].hasReferenceToSuper, isTrue);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_import_hide() {
-    addNamedSource("lib1.dart", EngineTestCase.createSource(["library lib1;", "set foo(value) {}", "class A {}"]));
-    addNamedSource("lib2.dart", EngineTestCase.createSource(["library lib2;", "set foo(value) {}"]));
-    Source source = addNamedSource("lib3.dart", EngineTestCase.createSource([
-        "import 'lib1.dart' hide foo;",
-        "import 'lib2.dart';",
-        "",
-        "main() {",
-        "  foo = 0;",
-        "}",
-        "A a;"]));
+    addNamedSource("lib1.dart", r'''
+library lib1;
+set foo(value) {}
+class A {}''');
+    addNamedSource("lib2.dart", r'''
+library lib2;
+set foo(value) {}''');
+    Source source = addNamedSource("lib3.dart", r'''
+import 'lib1.dart' hide foo;
+import 'lib2.dart';
+
+main() {
+  foo = 0;
+}
+A a;''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_import_prefix() {
-    addNamedSource("/two.dart", EngineTestCase.createSource(["library two;", "f(int x) {", "  return x * x;", "}"]));
-    Source source = addNamedSource("/one.dart", EngineTestCase.createSource([
-        "library one;",
-        "import 'two.dart' as _two;",
-        "main() {",
-        "  _two.f(0);",
-        "}"]));
+    addNamedSource("/two.dart", r'''
+library two;
+f(int x) {
+  return x * x;
+}''');
+    Source source = addNamedSource("/one.dart", r'''
+library one;
+import 'two.dart' as _two;
+main() {
+  _two.f(0);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_import_spaceInUri() {
-    addNamedSource("sub folder/lib.dart", EngineTestCase.createSource(["library lib;", "foo() {}"]));
-    Source source = addNamedSource("app.dart", EngineTestCase.createSource([
-        "import 'sub folder/lib.dart';",
-        "",
-        "main() {",
-        "  foo();",
-        "}"]));
+    addNamedSource("sub folder/lib.dart", r'''
+library lib;
+foo() {}''');
+    Source source = addNamedSource("app.dart", r'''
+import 'sub folder/lib.dart';
+
+main() {
+  foo();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_indexExpression_typeParameters() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  List<int> a;",
-        "  a[0];",
-        "  List<List<int>> b;",
-        "  b[0][0];",
-        "  List<List<List<int>>> c;",
-        "  c[0][0][0];",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  List<int> a;
+  a[0];
+  List<List<int>> b;
+  b[0][0];
+  List<List<List<int>>> c;
+  c[0][0][0];
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_indexExpression_typeParameters_invalidAssignmentWarning() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  List<List<int>> b;", "  b[0][0] = 'hi';", "}"]));
+    Source source = addSource(r'''
+f() {
+  List<List<int>> b;
+  b[0][0] = 'hi';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_indirectOperatorThroughCall() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  B call() { return new B(); }",
-        "}",
-        "",
-        "class B {",
-        "  int operator [](int i) { return i; }",
-        "}",
-        "",
-        "A f = new A();",
-        "",
-        "g(int x) {}",
-        "",
-        "main() {",
-        "  g(f()[0]);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  B call() { return new B(); }
+}
+
+class B {
+  int operator [](int i) { return i; }
+}
+
+A f = new A();
+
+g(int x) {}
+
+main() {
+  g(f()[0]);
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_invoke_dynamicThroughGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  List get X => [() => 0];",
-        "  m(A a) {",
-        "    X.last;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  List get X => [() => 0];
+  m(A a) {
+    X.last;
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_isValidMixin_badSuperclass() {
-    Source source = addSource(EngineTestCase.createSource(["class A extends B {}", "class B {}"]));
+    Source source = addSource(r'''
+class A extends B {}
+class B {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(2, classes);
-    JUnitTestCase.assertFalse(classes[0].isValidMixin);
+    expect(classes, hasLength(2));
+    expect(classes[0].isValidMixin, isFalse);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_isValidMixin_constructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
-    JUnitTestCase.assertFalse(classes[0].isValidMixin);
+    expect(classes, hasLength(1));
+    expect(classes[0].isValidMixin, isFalse);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_isValidMixin_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  toString() {",
-        "    return super.toString();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  toString() {
+    return super.toString();
+  }
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
-    JUnitTestCase.assertFalse(classes[0].isValidMixin);
+    expect(classes, hasLength(1));
+    expect(classes[0].isValidMixin, isFalse);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_isValidMixin_valid() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}"]));
+    Source source = addSource("class A {}");
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
-    JUnitTestCase.assertTrue(classes[0].isValidMixin);
+    expect(classes, hasLength(1));
+    expect(classes[0].isValidMixin, isTrue);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_labels_switch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void doSwitch(int target) {",
-        "  switch (target) {",
-        "    l0: case 0:",
-        "      continue l1;",
-        "    l1: case 1:",
-        "      continue l0;",
-        "    default:",
-        "      continue l1;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+void doSwitch(int target) {
+  switch (target) {
+    l0: case 0:
+      continue l1;
+    l1: case 1:
+      continue l0;
+    default:
+      continue l1;
+  }
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_localVariable_types_invoked() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const A = null;",
-        "main() {",
-        "  var myVar = (int p) => 'foo';",
-        "  myVar(42);",
-        "}"]));
+    Source source = addSource(r'''
+const A = null;
+main() {
+  var myVar = (int p) => 'foo';
+  myVar(42);
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnit unit = analysisContext.getResolvedCompilationUnit(source, library);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<bool> found = [false];
     List<CaughtException> thrownException = new List<CaughtException>(1);
     unit.accept(new RecursiveAstVisitor_SimpleResolverTest_test_localVariable_types_invoked(this, found, thrownException));
     if (thrownException[0] != null) {
       throw new AnalysisException("Exception", new CaughtException(thrownException[0], null));
     }
-    JUnitTestCase.assertTrue(found[0]);
+    expect(found[0], isTrue);
   }
 
   void test_metadata_class() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "@A class C<A> {}"]));
+    Source source = addSource(r'''
+const A = null;
+@A class C<A> {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unitElement = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unitElement);
+    expect(unitElement, isNotNull);
     List<ClassElement> classes = unitElement.types;
-    EngineTestCase.assertLength(1, classes);
+    expect(classes, hasLength(1));
     List<ElementAnnotation> annotations = classes[0].metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
     CompilationUnit unit = resolveCompilationUnit(source, library);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(2, declarations);
+    expect(declarations, hasLength(2));
     Element expectedElement = (declarations[0] as TopLevelVariableDeclaration).variables.variables[0].name.staticElement;
     EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, PropertyInducingElement, expectedElement);
     expectedElement = (expectedElement as PropertyInducingElement).getter;
     Element actualElement = (declarations[1] as ClassDeclaration).metadata[0].name.staticElement;
-    JUnitTestCase.assertSame(expectedElement, actualElement);
+    expect(actualElement, same(expectedElement));
   }
 
   void test_metadata_field() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "class C {", "  @A int f;", "}"]));
+    Source source = addSource(r'''
+const A = null;
+class C {
+  @A int f;
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
+    expect(classes, hasLength(1));
     FieldElement field = classes[0].fields[0];
     List<ElementAnnotation> annotations = field.metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_fieldFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "const A = null;",
-        "class C {",
-        "  int f;",
-        "  C(@A this.f);",
-        "}"]));
+    Source source = addSource(r'''
+const A = null;
+class C {
+  int f;
+  C(@A this.f);
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
+    expect(classes, hasLength(1));
     List<ConstructorElement> constructors = classes[0].constructors;
-    EngineTestCase.assertLength(1, constructors);
+    expect(constructors, hasLength(1));
     List<ParameterElement> parameters = constructors[0].parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     List<ElementAnnotation> annotations = parameters[0].metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_function() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "@A f() {}"]));
+    Source source = addSource(r'''
+const A = null;
+@A f() {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<FunctionElement> functions = unit.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     List<ElementAnnotation> annotations = functions[0].metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_functionTypedParameter() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "f(@A int p(int x)) {}"]));
+    Source source = addSource(r'''
+const A = null;
+f(@A int p(int x)) {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<FunctionElement> functions = unit.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     List<ParameterElement> parameters = functions[0].parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     List<ElementAnnotation> annotations1 = parameters[0].metadata;
-    EngineTestCase.assertLength(1, annotations1);
+    expect(annotations1, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_libraryDirective() {
-    Source source = addSource(EngineTestCase.createSource(["@A library lib;", "const A = null;"]));
+    Source source = addSource(r'''
+@A library lib;
+const A = null;''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     List<ElementAnnotation> annotations = library.metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_method() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "class C {", "  @A void m() {}", "}"]));
+    Source source = addSource(r'''
+const A = null;
+class C {
+  @A void m() {}
+}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<ClassElement> classes = unit.types;
-    EngineTestCase.assertLength(1, classes);
+    expect(classes, hasLength(1));
     MethodElement method = classes[0].methods[0];
     List<ElementAnnotation> annotations = method.metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_namedParameter() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "f({@A int p : 0}) {}"]));
+    Source source = addSource(r'''
+const A = null;
+f({@A int p : 0}) {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<FunctionElement> functions = unit.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     List<ParameterElement> parameters = functions[0].parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     List<ElementAnnotation> annotations1 = parameters[0].metadata;
-    EngineTestCase.assertLength(1, annotations1);
+    expect(annotations1, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_positionalParameter() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "f([@A int p = 0]) {}"]));
+    Source source = addSource(r'''
+const A = null;
+f([@A int p = 0]) {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<FunctionElement> functions = unit.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     List<ParameterElement> parameters = functions[0].parameters;
-    EngineTestCase.assertLength(1, parameters);
+    expect(parameters, hasLength(1));
     List<ElementAnnotation> annotations1 = parameters[0].metadata;
-    EngineTestCase.assertLength(1, annotations1);
+    expect(annotations1, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_simpleParameter() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "f(@A p1, @A int p2) {}"]));
+    Source source = addSource(r'''
+const A = null;
+f(@A p1, @A int p2) {}''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unit = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     List<FunctionElement> functions = unit.functions;
-    EngineTestCase.assertLength(1, functions);
+    expect(functions, hasLength(1));
     List<ParameterElement> parameters = functions[0].parameters;
-    EngineTestCase.assertLength(2, parameters);
+    expect(parameters, hasLength(2));
     List<ElementAnnotation> annotations1 = parameters[0].metadata;
-    EngineTestCase.assertLength(1, annotations1);
+    expect(annotations1, hasLength(1));
     List<ElementAnnotation> annotations2 = parameters[1].metadata;
-    EngineTestCase.assertLength(1, annotations2);
+    expect(annotations2, hasLength(1));
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_metadata_typedef() {
-    Source source = addSource(EngineTestCase.createSource(["const A = null;", "@A typedef F<A>();"]));
+    Source source = addSource(r'''
+const A = null;
+@A typedef F<A>();''');
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     CompilationUnitElement unitElement = library.definingCompilationUnit;
-    JUnitTestCase.assertNotNull(unitElement);
+    expect(unitElement, isNotNull);
     List<FunctionTypeAliasElement> aliases = unitElement.functionTypeAliases;
-    EngineTestCase.assertLength(1, aliases);
+    expect(aliases, hasLength(1));
     List<ElementAnnotation> annotations = aliases[0].metadata;
-    EngineTestCase.assertLength(1, annotations);
+    expect(annotations, hasLength(1));
     assertNoErrors(source);
     verify([source]);
     CompilationUnit unit = resolveCompilationUnit(source, library);
     NodeList<CompilationUnitMember> declarations = unit.declarations;
-    EngineTestCase.assertSizeOfList(2, declarations);
+    expect(declarations, hasLength(2));
     Element expectedElement = (declarations[0] as TopLevelVariableDeclaration).variables.variables[0].name.staticElement;
     EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, PropertyInducingElement, expectedElement);
     expectedElement = (expectedElement as PropertyInducingElement).getter;
     Element actualElement = (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement;
-    JUnitTestCase.assertSame(expectedElement, actualElement);
+    expect(actualElement, same(expectedElement));
   }
 
   void test_method_fromMixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class B {",
-        "  bar() => 1;",
-        "}",
-        "class A {",
-        "  foo() => 2;",
-        "}",
-        "",
-        "class C extends B with A {",
-        "  bar() => super.bar();",
-        "  foo() => super.foo();",
-        "}"]));
+    Source source = addSource(r'''
+class B {
+  bar() => 1;
+}
+class A {
+  foo() => 2;
+}
+
+class C extends B with A {
+  bar() => super.bar();
+  foo() => super.foo();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_method_fromSuperclassMixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m1() {}",
-        "}",
-        "class B extends Object with A {",
-        "}",
-        "class C extends B {",
-        "}",
-        "f(C c) {",
-        "  c.m1();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m1() {}
+}
+class B extends Object with A {
+}
+class C extends B {
+}
+f(C c) {
+  c.m1();
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_methodCascades() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void m1() {}",
-        "  void m2() {}",
-        "  void m() {",
-        "    A a = new A();",
-        "    a..m1()",
-        "     ..m2();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void m1() {}
+  void m2() {}
+  void m() {
+    A a = new A();
+    a..m1()
+     ..m2();
+  }
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_methodCascades_withSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  String name;",
-        "  void m1() {}",
-        "  void m2() {}",
-        "  void m() {",
-        "    A a = new A();",
-        "    a..m1()",
-        "     ..name = 'name'",
-        "     ..m2();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  String name;
+  void m1() {}
+  void m2() {}
+  void m() {
+    A a = new A();
+    a..m1()
+     ..name = 'name'
+     ..m2();
+  }
+}''');
     resolve(source);
     // failing with error code: INVOCATION_OF_NON_FUNCTION
     assertNoErrors(source);
@@ -7390,28 +7653,37 @@
   }
 
   void test_resolveAgainstNull() {
-    Source source = addSource(EngineTestCase.createSource(["f(var p) {", "  return null == p;", "}"]));
+    Source source = addSource(r'''
+f(var p) {
+  return null == p;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_setter_inherited() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "  set x(int p) {}",
-        "}",
-        "class B extends A {",
-        "  int get x => super.x == null ? 0 : super.x;",
-        "  int f() => x = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+  set x(int p) {}
+}
+class B extends A {
+  int get x => super.x == null ? 0 : super.x;
+  int f() => x = 1;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_setter_static() {
-    Source source = addSource(EngineTestCase.createSource(["set s(x) {", "}", "", "main() {", "  s = 123;", "}"]));
+    Source source = addSource(r'''
+set s(x) {
+}
+
+main() {
+  s = 123;
+}''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -7440,11 +7712,11 @@
    */
   void _validateArgumentResolution(Source source, List<int> indices) {
     LibraryElement library = resolve(source);
-    JUnitTestCase.assertNotNull(library);
+    expect(library, isNotNull);
     ClassElement classElement = library.definingCompilationUnit.types[0];
     List<ParameterElement> parameters = classElement.methods[1].parameters;
     CompilationUnit unit = resolveCompilationUnit(source, library);
-    JUnitTestCase.assertNotNull(unit);
+    expect(unit, isNotNull);
     ClassDeclaration classDeclaration = unit.declarations[0] as ClassDeclaration;
     MethodDeclaration methodDeclaration = classDeclaration.members[0] as MethodDeclaration;
     Block block = (methodDeclaration.body as BlockFunctionBody).block;
@@ -7452,15 +7724,15 @@
     MethodInvocation invocation = statement.expression as MethodInvocation;
     NodeList<Expression> arguments = invocation.argumentList.arguments;
     int argumentCount = arguments.length;
-    JUnitTestCase.assertEquals(indices.length, argumentCount);
+    expect(argumentCount, indices.length);
     for (int i = 0; i < argumentCount; i++) {
       Expression argument = arguments[i];
       ParameterElement element = argument.staticParameterElement;
       int index = indices[i];
       if (index < 0) {
-        JUnitTestCase.assertNull(element);
+        expect(element, isNull);
       } else {
-        JUnitTestCase.assertSame(parameters[index], element);
+        expect(element, same(parameters[index]));
       }
     }
   }
@@ -7493,17 +7765,17 @@
   TestTypeProvider _typeProvider;
 
   void fail_visitFunctionExpressionInvocation() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitMethodInvocation() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitSimpleIdentifier() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
@@ -7517,7 +7789,7 @@
   void test_visitAdjacentStrings() {
     // "a" "b"
     Expression node = AstFactory.adjacentStrings([_resolvedString("a"), _resolvedString("b")]);
-    JUnitTestCase.assertSame(_typeProvider.stringType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.stringType));
     _listener.assertNoErrors();
   }
 
@@ -7528,7 +7800,7 @@
     InterfaceType superclassType = superclass.type;
     ClassElement subclass = ElementFactory.classElement("B", superclassType, []);
     Expression node = AstFactory.asExpression(AstFactory.thisExpression(), AstFactory.typeName(subclass, []));
-    JUnitTestCase.assertSame(subclass.type, _analyze3(node, superclassType));
+    expect(_analyze3(node, superclassType), same(subclass.type));
     _listener.assertNoErrors();
   }
 
@@ -7539,7 +7811,7 @@
     AssignmentExpression node = AstFactory.assignmentExpression(identifier, TokenType.PLUS_EQ, _resolvedInteger(1));
     MethodElement plusMethod = getMethod(numType, "+");
     node.staticElement = plusMethod;
-    JUnitTestCase.assertSame(numType, _analyze(node));
+    expect(_analyze(node), same(numType));
     _listener.assertNoErrors();
   }
 
@@ -7547,35 +7819,35 @@
     // i = 0
     InterfaceType intType = _typeProvider.intType;
     Expression node = AstFactory.assignmentExpression(_resolvedVariable(intType, "i"), TokenType.EQ, _resolvedInteger(0));
-    JUnitTestCase.assertSame(intType, _analyze(node));
+    expect(_analyze(node), same(intType));
     _listener.assertNoErrors();
   }
 
   void test_visitBinaryExpression_equals() {
     // 2 == 3
     Expression node = AstFactory.binaryExpression(_resolvedInteger(2), TokenType.EQ_EQ, _resolvedInteger(3));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitBinaryExpression_logicalAnd() {
     // false && true
     Expression node = AstFactory.binaryExpression(AstFactory.booleanLiteral(false), TokenType.AMPERSAND_AMPERSAND, AstFactory.booleanLiteral(true));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitBinaryExpression_logicalOr() {
     // false || true
     Expression node = AstFactory.binaryExpression(AstFactory.booleanLiteral(false), TokenType.BAR_BAR, AstFactory.booleanLiteral(true));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitBinaryExpression_notEquals() {
     // 2 != 3
     Expression node = AstFactory.binaryExpression(_resolvedInteger(2), TokenType.BANG_EQ, _resolvedInteger(3));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
@@ -7583,7 +7855,7 @@
     // 1 + 2.0
     BinaryExpression node = AstFactory.binaryExpression(_resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0));
     node.staticElement = getMethod(_typeProvider.numType, "+");
-    JUnitTestCase.assertSame(_typeProvider.doubleType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.doubleType));
     _listener.assertNoErrors();
   }
 
@@ -7591,7 +7863,7 @@
     // 1 + 2
     BinaryExpression node = AstFactory.binaryExpression(_resolvedInteger(1), TokenType.PLUS, _resolvedInteger(2));
     node.staticElement = getMethod(_typeProvider.numType, "+");
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
@@ -7599,7 +7871,7 @@
     // 2 / 2
     BinaryExpression node = AstFactory.binaryExpression(_resolvedInteger(2), TokenType.SLASH, _resolvedInteger(2));
     node.staticElement = getMethod(_typeProvider.numType, "/");
-    JUnitTestCase.assertSame(_typeProvider.doubleType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.doubleType));
     _listener.assertNoErrors();
   }
 
@@ -7614,7 +7886,7 @@
     classA.methods = <MethodElement> [operator];
     BinaryExpression node = AstFactory.binaryExpression(AstFactory.asExpression(AstFactory.identifier3("a"), AstFactory.typeName(classA, [])), TokenType.PLUS, _resolvedDouble(2.0));
     node.staticElement = operator;
-    JUnitTestCase.assertSame(typeA, _analyze(node));
+    expect(_analyze(node), same(typeA));
     _listener.assertNoErrors();
   }
 
@@ -7622,49 +7894,49 @@
     // 1 * 2.0
     BinaryExpression node = AstFactory.binaryExpression(_resolvedInteger(1), TokenType.PLUS, _resolvedDouble(2.0));
     node.staticElement = getMethod(_typeProvider.numType, "*");
-    JUnitTestCase.assertSame(_typeProvider.doubleType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.doubleType));
     _listener.assertNoErrors();
   }
 
   void test_visitBooleanLiteral_false() {
     // false
     Expression node = AstFactory.booleanLiteral(false);
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitBooleanLiteral_true() {
     // true
     Expression node = AstFactory.booleanLiteral(true);
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitCascadeExpression() {
     // a..length
     Expression node = AstFactory.cascadeExpression(_resolvedString("a"), [AstFactory.propertyAccess2(null, "length")]);
-    JUnitTestCase.assertSame(_typeProvider.stringType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.stringType));
     _listener.assertNoErrors();
   }
 
   void test_visitConditionalExpression_differentTypes() {
     // true ? 1.0 : 0
     Expression node = AstFactory.conditionalExpression(AstFactory.booleanLiteral(true), _resolvedDouble(1.0), _resolvedInteger(0));
-    JUnitTestCase.assertSame(_typeProvider.numType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.numType));
     _listener.assertNoErrors();
   }
 
   void test_visitConditionalExpression_sameTypes() {
     // true ? 1 : 0
     Expression node = AstFactory.conditionalExpression(AstFactory.booleanLiteral(true), _resolvedInteger(1), _resolvedInteger(0));
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
   void test_visitDoubleLiteral() {
     // 4.33
     Expression node = AstFactory.doubleLiteral(4.33);
-    JUnitTestCase.assertSame(_typeProvider.doubleType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.doubleType));
     _listener.assertNoErrors();
   }
 
@@ -7824,7 +8096,7 @@
     IndexExpression node = AstFactory.indexExpression(identifier, _resolvedInteger(2));
     MethodElement indexMethod = listType.element.methods[0];
     node.staticElement = indexMethod;
-    JUnitTestCase.assertSame(listType.typeArguments[0], _analyze(node));
+    expect(_analyze(node), same(listType.typeArguments[0]));
     _listener.assertNoErrors();
   }
 
@@ -7837,7 +8109,7 @@
     MethodElement indexMethod = listType.element.methods[1];
     node.staticElement = indexMethod;
     AstFactory.assignmentExpression(node, TokenType.EQ, AstFactory.integer(0));
-    JUnitTestCase.assertSame(listType.typeArguments[0], _analyze(node));
+    expect(_analyze(node), same(listType.typeArguments[0]));
     _listener.assertNoErrors();
   }
 
@@ -7857,7 +8129,7 @@
     MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType);
     indexExpression.staticElement = indexMethod;
     // analyze and assert result of the index expression
-    JUnitTestCase.assertSame(intType, _analyze(indexExpression));
+    expect(_analyze(indexExpression), same(intType));
     _listener.assertNoErrors();
   }
 
@@ -7879,7 +8151,7 @@
     // list[0] should be in a setter context
     AstFactory.assignmentExpression(indexExpression, TokenType.EQ, AstFactory.integer(0));
     // analyze and assert result of the index expression
-    JUnitTestCase.assertSame(intType, _analyze(indexExpression));
+    expect(_analyze(indexExpression), same(intType));
     _listener.assertNoErrors();
   }
 
@@ -7894,7 +8166,7 @@
     classElement.constructors = <ConstructorElement> [constructor];
     InstanceCreationExpression node = AstFactory.instanceCreationExpression2(null, AstFactory.typeName(classElement, []), [AstFactory.identifier3(constructorName)]);
     node.staticElement = constructor;
-    JUnitTestCase.assertSame(classElement.type, _analyze(node));
+    expect(_analyze(node), same(classElement.type));
     _listener.assertNoErrors();
   }
 
@@ -7913,8 +8185,8 @@
     node.staticElement = constructor;
     InterfaceType interfaceType = _analyze(node) as InterfaceType;
     List<DartType> typeArgs = interfaceType.typeArguments;
-    JUnitTestCase.assertEquals(1, typeArgs.length);
-    JUnitTestCase.assertEquals(elementI.type, typeArgs[0]);
+    expect(typeArgs.length, 1);
+    expect(typeArgs[0], elementI.type);
     _listener.assertNoErrors();
   }
 
@@ -7928,28 +8200,28 @@
     classElement.constructors = <ConstructorElement> [constructor];
     InstanceCreationExpression node = AstFactory.instanceCreationExpression2(null, AstFactory.typeName(classElement, []), []);
     node.staticElement = constructor;
-    JUnitTestCase.assertSame(classElement.type, _analyze(node));
+    expect(_analyze(node), same(classElement.type));
     _listener.assertNoErrors();
   }
 
   void test_visitIntegerLiteral() {
     // 42
     Expression node = _resolvedInteger(42);
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
   void test_visitIsExpression_negated() {
     // a is! String
     Expression node = AstFactory.isExpression(_resolvedString("a"), true, AstFactory.typeName4("String", []));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitIsExpression_notNegated() {
     // a is String
     Expression node = AstFactory.isExpression(_resolvedString("a"), false, AstFactory.typeName4("String", []));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
@@ -7995,35 +8267,35 @@
   void test_visitNamedExpression() {
     // n: a
     Expression node = AstFactory.namedExpression2("n", _resolvedString("a"));
-    JUnitTestCase.assertSame(_typeProvider.stringType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.stringType));
     _listener.assertNoErrors();
   }
 
   void test_visitNullLiteral() {
     // null
     Expression node = AstFactory.nullLiteral();
-    JUnitTestCase.assertSame(_typeProvider.bottomType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.bottomType));
     _listener.assertNoErrors();
   }
 
   void test_visitParenthesizedExpression() {
     // (0)
     Expression node = AstFactory.parenthesizedExpression(_resolvedInteger(0));
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
   void test_visitPostfixExpression_minusMinus() {
     // 0--
     PostfixExpression node = AstFactory.postfixExpression(_resolvedInteger(0), TokenType.MINUS_MINUS);
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
   void test_visitPostfixExpression_plusPlus() {
     // 0++
     PostfixExpression node = AstFactory.postfixExpression(_resolvedInteger(0), TokenType.PLUS_PLUS);
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
@@ -8032,7 +8304,7 @@
     PropertyAccessorElementImpl getter = ElementFactory.getterElement("b", false, boolType);
     PrefixedIdentifier node = AstFactory.identifier5("a", "b");
     node.identifier.staticElement = getter;
-    JUnitTestCase.assertSame(boolType, _analyze(node));
+    expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
   }
 
@@ -8042,7 +8314,7 @@
     PropertyAccessorElement setter = field.setter;
     PrefixedIdentifier node = AstFactory.identifier5("a", "b");
     node.identifier.staticElement = setter;
-    JUnitTestCase.assertSame(boolType, _analyze(node));
+    expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
   }
 
@@ -8051,14 +8323,14 @@
     variable.type = _typeProvider.boolType;
     PrefixedIdentifier node = AstFactory.identifier5("a", "b");
     node.identifier.staticElement = variable;
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitPrefixExpression_bang() {
     // !0
     PrefixExpression node = AstFactory.prefixExpression(TokenType.BANG, _resolvedInteger(0));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
@@ -8067,7 +8339,7 @@
     PrefixExpression node = AstFactory.prefixExpression(TokenType.MINUS, _resolvedInteger(0));
     MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
     node.staticElement = minusMethod;
-    JUnitTestCase.assertSame(_typeProvider.numType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.numType));
     _listener.assertNoErrors();
   }
 
@@ -8076,14 +8348,14 @@
     PrefixExpression node = AstFactory.prefixExpression(TokenType.MINUS_MINUS, _resolvedInteger(0));
     MethodElement minusMethod = getMethod(_typeProvider.numType, "-");
     node.staticElement = minusMethod;
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
   void test_visitPrefixExpression_not() {
     // !true
     Expression node = AstFactory.prefixExpression(TokenType.BANG, AstFactory.booleanLiteral(true));
-    JUnitTestCase.assertSame(_typeProvider.boolType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.boolType));
     _listener.assertNoErrors();
   }
 
@@ -8092,7 +8364,7 @@
     PrefixExpression node = AstFactory.prefixExpression(TokenType.PLUS_PLUS, _resolvedInteger(0));
     MethodElement plusMethod = getMethod(_typeProvider.numType, "+");
     node.staticElement = plusMethod;
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
@@ -8101,7 +8373,7 @@
     PrefixExpression node = AstFactory.prefixExpression(TokenType.TILDE, _resolvedInteger(0));
     MethodElement tildeMethod = getMethod(_typeProvider.intType, "~");
     node.staticElement = tildeMethod;
-    JUnitTestCase.assertSame(_typeProvider.intType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.intType));
     _listener.assertNoErrors();
   }
 
@@ -8110,7 +8382,7 @@
     PropertyAccessorElementImpl getter = ElementFactory.getterElement("b", false, boolType);
     PropertyAccess node = AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.propagatedElement = getter;
-    JUnitTestCase.assertSame(boolType, _analyze2(node, false));
+    expect(_analyze2(node, false), same(boolType));
     _listener.assertNoErrors();
   }
 
@@ -8120,7 +8392,7 @@
     PropertyAccessorElement setter = field.setter;
     PropertyAccess node = AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.propagatedElement = setter;
-    JUnitTestCase.assertSame(boolType, _analyze2(node, false));
+    expect(_analyze2(node, false), same(boolType));
     _listener.assertNoErrors();
   }
 
@@ -8129,7 +8401,7 @@
     PropertyAccessorElementImpl getter = ElementFactory.getterElement("b", false, boolType);
     PropertyAccess node = AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.staticElement = getter;
-    JUnitTestCase.assertSame(boolType, _analyze(node));
+    expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
   }
 
@@ -8139,14 +8411,14 @@
     PropertyAccessorElement setter = field.setter;
     PropertyAccess node = AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b");
     node.propertyName.staticElement = setter;
-    JUnitTestCase.assertSame(boolType, _analyze(node));
+    expect(_analyze(node), same(boolType));
     _listener.assertNoErrors();
   }
 
   void test_visitSimpleStringLiteral() {
     // "a"
     Expression node = _resolvedString("a");
-    JUnitTestCase.assertSame(_typeProvider.stringType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.stringType));
     _listener.assertNoErrors();
   }
 
@@ -8156,7 +8428,7 @@
         AstFactory.interpolationString("a", "a"),
         AstFactory.interpolationExpression(_resolvedString("b")),
         AstFactory.interpolationString("c", "c")]);
-    JUnitTestCase.assertSame(_typeProvider.stringType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.stringType));
     _listener.assertNoErrors();
   }
 
@@ -8165,33 +8437,33 @@
     InterfaceType superType = ElementFactory.classElement2("A", []).type;
     InterfaceType thisType = ElementFactory.classElement("B", superType, []).type;
     Expression node = AstFactory.superExpression();
-    JUnitTestCase.assertSame(thisType, _analyze3(node, thisType));
+    expect(_analyze3(node, thisType), same(thisType));
     _listener.assertNoErrors();
   }
 
   void test_visitSymbolLiteral() {
-    JUnitTestCase.assertSame(_typeProvider.symbolType, _analyze(AstFactory.symbolLiteral(["a"])));
+    expect(_analyze(AstFactory.symbolLiteral(["a"])), same(_typeProvider.symbolType));
   }
 
   void test_visitThisExpression() {
     // this
     InterfaceType thisType = ElementFactory.classElement("B", ElementFactory.classElement2("A", []).type, []).type;
     Expression node = AstFactory.thisExpression();
-    JUnitTestCase.assertSame(thisType, _analyze3(node, thisType));
+    expect(_analyze3(node, thisType), same(thisType));
     _listener.assertNoErrors();
   }
 
   void test_visitThrowExpression_withoutValue() {
     // throw
     Expression node = AstFactory.throwExpression();
-    JUnitTestCase.assertSame(_typeProvider.bottomType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.bottomType));
     _listener.assertNoErrors();
   }
 
   void test_visitThrowExpression_withValue() {
     // throw 0
     Expression node = AstFactory.throwExpression2(_resolvedInteger(0));
-    JUnitTestCase.assertSame(_typeProvider.bottomType, _analyze(node));
+    expect(_analyze(node), same(_typeProvider.bottomType));
     _listener.assertNoErrors();
   }
 
@@ -8275,43 +8547,43 @@
     FunctionType functionType = actualType as FunctionType;
     List<DartType> normalTypes = functionType.normalParameterTypes;
     if (expectedNormalTypes == null) {
-      EngineTestCase.assertLength(0, normalTypes);
+      expect(normalTypes, hasLength(0));
     } else {
       int expectedCount = expectedNormalTypes.length;
-      EngineTestCase.assertLength(expectedCount, normalTypes);
+      expect(normalTypes, hasLength(expectedCount));
       for (int i = 0; i < expectedCount; i++) {
-        JUnitTestCase.assertSame(expectedNormalTypes[i], normalTypes[i]);
+        expect(normalTypes[i], same(expectedNormalTypes[i]));
       }
     }
     List<DartType> optionalTypes = functionType.optionalParameterTypes;
     if (expectedOptionalTypes == null) {
-      EngineTestCase.assertLength(0, optionalTypes);
+      expect(optionalTypes, hasLength(0));
     } else {
       int expectedCount = expectedOptionalTypes.length;
-      EngineTestCase.assertLength(expectedCount, optionalTypes);
+      expect(optionalTypes, hasLength(expectedCount));
       for (int i = 0; i < expectedCount; i++) {
-        JUnitTestCase.assertSame(expectedOptionalTypes[i], optionalTypes[i]);
+        expect(optionalTypes[i], same(expectedOptionalTypes[i]));
       }
     }
     Map<String, DartType> namedTypes = functionType.namedParameterTypes;
     if (expectedNamedTypes == null) {
-      EngineTestCase.assertSizeOfMap(0, namedTypes);
+      expect(namedTypes, hasLength(0));
     } else {
-      EngineTestCase.assertSizeOfMap(expectedNamedTypes.length, namedTypes);
-      for (MapEntry<String, DartType> entry in getMapEntrySet(expectedNamedTypes)) {
-        JUnitTestCase.assertSame(entry.getValue(), namedTypes[entry.getKey()]);
-      }
+      expect(namedTypes, hasLength(expectedNamedTypes.length));
+      expectedNamedTypes.forEach((String name, DartType type) {
+        expect(namedTypes[name], same(type));
+      });
     }
-    JUnitTestCase.assertSame(expectedReturnType, functionType.returnType);
+    expect(functionType.returnType, same(expectedReturnType));
   }
 
   void _assertType(InterfaceTypeImpl expectedType, InterfaceTypeImpl actualType) {
-    JUnitTestCase.assertEquals(expectedType.displayName, actualType.displayName);
-    JUnitTestCase.assertEquals(expectedType.element, actualType.element);
+    expect(actualType.displayName, expectedType.displayName);
+    expect(actualType.element, expectedType.element);
     List<DartType> expectedArguments = expectedType.typeArguments;
     int length = expectedArguments.length;
     List<DartType> actualArguments = actualType.typeArguments;
-    EngineTestCase.assertLength(length, actualArguments);
+    expect(actualArguments, hasLength(length));
     for (int i = 0; i < length; i++) {
       _assertType2(expectedArguments[i], actualArguments[i]);
     }
@@ -8383,7 +8655,7 @@
     }
     FunctionExpression node = AstFactory.functionExpression2(parameters, body);
     FunctionElementImpl element = new FunctionElementImpl.forNode(null);
-    element.parameters = new List.from(parameterElements);
+    element.parameters = parameterElements;
     element.type = new FunctionTypeImpl.con1(element);
     node.element = element;
     return node;
@@ -8467,7 +8739,7 @@
     // "foo" should be resolved to the "Foo" type
     SimpleIdentifier identifier = _findIdentifier("foo();");
     DartType type = identifier.staticType;
-    _ut.expect(type, new _ut.isInstanceOf<FunctionType>());
+    expect(type, new isInstanceOf<FunctionType>());
   }
 
   void test_MethodInvocation_nameType_parameter_FunctionTypeAlias() {
@@ -8481,7 +8753,7 @@
     // "foo" should be resolved to the "Foo" type
     SimpleIdentifier identifier = _findIdentifier("foo();");
     DartType type = identifier.staticType;
-    _ut.expect(type, new _ut.isInstanceOf<FunctionType>());
+    expect(type, new isInstanceOf<FunctionType>());
   }
 
   void test_MethodInvocation_nameType_parameter_propagatedType() {
@@ -8495,11 +8767,11 @@
 """;
     _resolveTestUnit(code);
     SimpleIdentifier identifier = _findIdentifier("p()");
-    _ut.expect(identifier.staticType, DynamicTypeImpl.instance);
+    expect(identifier.staticType, DynamicTypeImpl.instance);
     {
       FunctionType type = identifier.propagatedType;
-      _ut.expect(type, _ut.isNotNull);
-      _ut.expect(type.name, 'Foo');
+      expect(type, isNotNull);
+      expect(type.name, 'Foo');
     }
   }
 
@@ -8563,64 +8835,64 @@
    */
   void assertResolved() {
     if (!_unresolvedExpressions.isEmpty || !_unresolvedTypes.isEmpty) {
-      PrintStringWriter writer = new PrintStringWriter();
+      StringBuffer buffer = new StringBuffer();
       int unresolvedTypeCount = _unresolvedTypes.length;
       if (unresolvedTypeCount > 0) {
-        writer.print("Failed to resolve ");
-        writer.print(unresolvedTypeCount);
-        writer.print(" of ");
-        writer.print(_resolvedTypeCount + unresolvedTypeCount);
-        writer.println(" type names:");
+        buffer.write("Failed to resolve ");
+        buffer.write(unresolvedTypeCount);
+        buffer.write(" of ");
+        buffer.write(_resolvedTypeCount + unresolvedTypeCount);
+        buffer.writeln(" type names:");
         for (TypeName identifier in _unresolvedTypes) {
-          writer.print("  ");
-          writer.print(identifier.toString());
-          writer.print(" (");
-          writer.print(_getFileName(identifier));
-          writer.print(" : ");
-          writer.print(identifier.offset);
-          writer.println(")");
+          buffer.write("  ");
+          buffer.write(identifier.toString());
+          buffer.write(" (");
+          buffer.write(_getFileName(identifier));
+          buffer.write(" : ");
+          buffer.write(identifier.offset);
+          buffer.writeln(")");
         }
       }
       int unresolvedExpressionCount = _unresolvedExpressions.length;
       if (unresolvedExpressionCount > 0) {
-        writer.println("Failed to resolve ");
-        writer.print(unresolvedExpressionCount);
-        writer.print(" of ");
-        writer.print(_resolvedExpressionCount + unresolvedExpressionCount);
-        writer.println(" expressions:");
+        buffer.writeln("Failed to resolve ");
+        buffer.write(unresolvedExpressionCount);
+        buffer.write(" of ");
+        buffer.write(_resolvedExpressionCount + unresolvedExpressionCount);
+        buffer.writeln(" expressions:");
         for (Expression expression in _unresolvedExpressions) {
-          writer.print("  ");
-          writer.print(expression.toString());
-          writer.print(" (");
-          writer.print(_getFileName(expression));
-          writer.print(" : ");
-          writer.print(expression.offset);
-          writer.println(")");
+          buffer.write("  ");
+          buffer.write(expression.toString());
+          buffer.write(" (");
+          buffer.write(_getFileName(expression));
+          buffer.write(" : ");
+          buffer.write(expression.offset);
+          buffer.writeln(")");
         }
       }
       int invalidlyPropagatedExpressionCount = _invalidlyPropagatedExpressions.length;
       if (invalidlyPropagatedExpressionCount > 0) {
-        writer.println("Incorrectly propagated ");
-        writer.print(invalidlyPropagatedExpressionCount);
-        writer.print(" of ");
-        writer.print(_propagatedExpressionCount);
-        writer.println(" expressions:");
+        buffer.writeln("Incorrectly propagated ");
+        buffer.write(invalidlyPropagatedExpressionCount);
+        buffer.write(" of ");
+        buffer.write(_propagatedExpressionCount);
+        buffer.writeln(" expressions:");
         for (Expression expression in _invalidlyPropagatedExpressions) {
-          writer.print("  ");
-          writer.print(expression.toString());
-          writer.print(" [");
-          writer.print(expression.staticType.displayName);
-          writer.print(", ");
-          writer.print(expression.propagatedType.displayName);
-          writer.println("]");
-          writer.print("    ");
-          writer.print(_getFileName(expression));
-          writer.print(" : ");
-          writer.print(expression.offset);
-          writer.println(")");
+          buffer.write("  ");
+          buffer.write(expression.toString());
+          buffer.write(" [");
+          buffer.write(expression.staticType.displayName);
+          buffer.write(", ");
+          buffer.write(expression.propagatedType.displayName);
+          buffer.writeln("]");
+          buffer.write("    ");
+          buffer.write(_getFileName(expression));
+          buffer.write(" : ");
+          buffer.write(expression.offset);
+          buffer.writeln(")");
         }
       }
-      JUnitTestCase.fail(writer.toString());
+      fail(buffer.toString());
     }
   }
 
@@ -8734,13 +9006,13 @@
  */
 class StrictModeTest extends ResolverTestCase {
   void fail_for() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(List<int> list) {",
-        "  num sum = 0;",
-        "  for (num i = 0; i < list.length; i++) {",
-        "    sum += list[i];",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+int f(List<int> list) {
+  num sum = 0;
+  for (num i = 0; i < list.length; i++) {
+    sum += list[i];
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
@@ -8753,127 +9025,131 @@
   }
 
   void test_assert_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  assert (n is int);",
-        "  return n & 0x0F;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  assert (n is int);
+  return n & 0x0F;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_conditional_and_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  return (n is int && n > 0) ? n & 0x0F : 0;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  return (n is int && n > 0) ? n & 0x0F : 0;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_conditional_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  return (n is int) ? n & 0x0F : 0;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  return (n is int) ? n & 0x0F : 0;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_conditional_isNot() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  return (n is! int) ? 0 : n & 0x0F;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  return (n is! int) ? 0 : n & 0x0F;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_conditional_or_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  return (n is! int || n < 0) ? 0 : n & 0x0F;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  return (n is! int || n < 0) ? 0 : n & 0x0F;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_forEach() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(List<int> list) {",
-        "  num sum = 0;",
-        "  for (num n in list) {",
-        "    sum += n & 0x0F;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+int f(List<int> list) {
+  num sum = 0;
+  for (num n in list) {
+    sum += n & 0x0F;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_if_and_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  if (n is int && n > 0) {",
-        "    return n & 0x0F;",
-        "  }",
-        "  return 0;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  if (n is int && n > 0) {
+    return n & 0x0F;
+  }
+  return 0;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_if_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  if (n is int) {",
-        "    return n & 0x0F;",
-        "  }",
-        "  return 0;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  if (n is int) {
+    return n & 0x0F;
+  }
+  return 0;
+}''');
     resolve(source);
     assertNoErrors(source);
   }
 
   void test_if_isNot() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  if (n is! int) {",
-        "    return 0;",
-        "  } else {",
-        "    return n & 0x0F;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  if (n is! int) {
+    return 0;
+  } else {
+    return n & 0x0F;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_if_isNot_abrupt() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  if (n is! int) {",
-        "    return 0;",
-        "  }",
-        "  return n & 0x0F;",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  if (n is! int) {
+    return 0;
+  }
+  return n & 0x0F;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_if_or_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(num n) {",
-        "  if (n is! int || n < 0) {",
-        "    return 0;",
-        "  } else {",
-        "    return n & 0x0F;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+int f(num n) {
+  if (n is! int || n < 0) {
+    return 0;
+  } else {
+    return n & 0x0F;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_localVar() {
-    Source source = addSource(EngineTestCase.createSource(["int f() {", "  num n = 1234;", "  return n & 0x0F;", "}"]));
+    Source source = addSource(r'''
+int f() {
+  num n = 1234;
+  return n & 0x0F;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
@@ -8901,8 +9177,8 @@
     _definingCompilationUnit.types = <ClassElement> [classA, classB];
     HashSet<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA);
     List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA);
-    EngineTestCase.assertSizeOfSet(2, subtypesOfA);
-    EngineTestCase.assertContains(arraySubtypesOfA, [classA, classB]);
+    expect(subtypesOfA, hasLength(2));
+    expect(arraySubtypesOfA, unorderedEquals([classA, classB]));
   }
 
   void test_computeAllSubtypes_manyRecursiveSubtypes() {
@@ -8923,10 +9199,10 @@
     List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA);
     HashSet<ClassElement> subtypesOfB = _subtypeManager.computeAllSubtypes(classB);
     List<ClassElement> arraySubtypesOfB = new List.from(subtypesOfB);
-    EngineTestCase.assertSizeOfSet(4, subtypesOfA);
-    EngineTestCase.assertContains(arraySubtypesOfA, [classB, classC, classD, classE]);
-    EngineTestCase.assertSizeOfSet(3, subtypesOfB);
-    EngineTestCase.assertContains(arraySubtypesOfB, [classC, classD, classE]);
+    expect(subtypesOfA, hasLength(4));
+    expect(arraySubtypesOfA, unorderedEquals([classB, classC, classD, classE]));
+    expect(subtypesOfB, hasLength(3));
+    expect(arraySubtypesOfB, unorderedEquals([classC, classD, classE]));
   }
 
   void test_computeAllSubtypes_noSubtypes() {
@@ -8936,7 +9212,7 @@
     ClassElementImpl classA = ElementFactory.classElement2("A", []);
     _definingCompilationUnit.types = <ClassElement> [classA];
     HashSet<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA);
-    EngineTestCase.assertSizeOfSet(0, subtypesOfA);
+    expect(subtypesOfA, hasLength(0));
   }
 
   void test_computeAllSubtypes_oneSubtype() {
@@ -8949,8 +9225,8 @@
     _definingCompilationUnit.types = <ClassElement> [classA, classB];
     HashSet<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA);
     List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA);
-    EngineTestCase.assertSizeOfSet(1, subtypesOfA);
-    EngineTestCase.assertContains(arraySubtypesOfA, [classB]);
+    expect(subtypesOfA, hasLength(1));
+    expect(arraySubtypesOfA, unorderedEquals([classB]));
   }
 
   @override
@@ -9411,7 +9687,7 @@
     TypeOverrideManager manager = new TypeOverrideManager();
     try {
       manager.exitScope();
-      JUnitTestCase.fail("Expected IllegalStateException");
+      fail("Expected IllegalStateException");
     } on IllegalStateException catch (exception) {
       // Expected
     }
@@ -9423,7 +9699,7 @@
     manager.exitScope();
     try {
       manager.exitScope();
-      JUnitTestCase.fail("Expected IllegalStateException");
+      fail("Expected IllegalStateException");
     } on IllegalStateException catch (exception) {
       // Expected
     }
@@ -9437,7 +9713,7 @@
     manager.exitScope();
     try {
       manager.exitScope();
-      JUnitTestCase.fail("Expected IllegalStateException");
+      fail("Expected IllegalStateException");
     } on IllegalStateException catch (exception) {
       // Expected
     }
@@ -9450,7 +9726,7 @@
     manager.enterScope();
     manager.setType(element, type);
     manager.enterScope();
-    JUnitTestCase.assertSame(type, manager.getType(element));
+    expect(manager.getType(element), same(type));
   }
 
   void test_getType_immediateOverride() {
@@ -9459,18 +9735,18 @@
     InterfaceType type = ElementFactory.classElement2("C", []).type;
     manager.enterScope();
     manager.setType(element, type);
-    JUnitTestCase.assertSame(type, manager.getType(element));
+    expect(manager.getType(element), same(type));
   }
 
   void test_getType_noOverride() {
     TypeOverrideManager manager = new TypeOverrideManager();
     manager.enterScope();
-    JUnitTestCase.assertNull(manager.getType(ElementFactory.localVariableElement2("v")));
+    expect(manager.getType(ElementFactory.localVariableElement2("v")), isNull);
   }
 
   void test_getType_noScope() {
     TypeOverrideManager manager = new TypeOverrideManager();
-    JUnitTestCase.assertNull(manager.getType(ElementFactory.localVariableElement2("v")));
+    expect(manager.getType(ElementFactory.localVariableElement2("v")), isNull);
   }
 }
 
@@ -9478,65 +9754,65 @@
 class TypePropagationTest extends ResolverTestCase {
   void fail_mergePropagatedTypesAtJoinPoint_1() {
     // https://code.google.com/p/dart/issues/detail?id=19929
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f1(x) {",
-        "  var y = [];",
-        "  if (x) {",
-        "    y = 0;",
-        "  } else {",
-        "    y = '';",
-        "  }",
-        "  // Propagated type is [List] here: incorrect.",
-        "  // Best we can do is [Object]?",
-        "  return y; // marker",
-        "}"]), null, typeProvider.dynamicType);
+    _assertTypeOfMarkedExpression(r'''
+f1(x) {
+  var y = [];
+  if (x) {
+    y = 0;
+  } else {
+    y = '';
+  }
+  // Propagated type is [List] here: incorrect.
+  // Best we can do is [Object]?
+  return y; // marker
+}''', null, typeProvider.dynamicType);
   }
 
   void fail_mergePropagatedTypesAtJoinPoint_2() {
     // https://code.google.com/p/dart/issues/detail?id=19929
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f2(x) {",
-        "  var y = [];",
-        "  if (x) {",
-        "    y = 0;",
-        "  } else {",
-        "  }",
-        "  // Propagated type is [List] here: incorrect.",
-        "  // Best we can do is [Object]?",
-        "  return y; // marker",
-        "}"]), null, typeProvider.dynamicType);
+    _assertTypeOfMarkedExpression(r'''
+f2(x) {
+  var y = [];
+  if (x) {
+    y = 0;
+  } else {
+  }
+  // Propagated type is [List] here: incorrect.
+  // Best we can do is [Object]?
+  return y; // marker
+}''', null, typeProvider.dynamicType);
   }
 
   void fail_mergePropagatedTypesAtJoinPoint_3() {
     // https://code.google.com/p/dart/issues/detail?id=19929
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f4(x) {",
-        "  var y = [];",
-        "  if (x) {",
-        "    y = 0;",
-        "  } else {",
-        "    y = 1.5;",
-        "  }",
-        "  // Propagated type is [List] here: incorrect.",
-        "  // A correct answer is the least upper bound of [int] and [double],",
-        "  // i.e. [num].",
-        "  return y; // marker",
-        "}"]), null, typeProvider.numType);
+    _assertTypeOfMarkedExpression(r'''
+f4(x) {
+  var y = [];
+  if (x) {
+    y = 0;
+  } else {
+    y = 1.5;
+  }
+  // Propagated type is [List] here: incorrect.
+  // A correct answer is the least upper bound of [int] and [double],
+  // i.e. [num].
+  return y; // marker
+}''', null, typeProvider.numType);
   }
 
   void fail_mergePropagatedTypesAtJoinPoint_5() {
     // https://code.google.com/p/dart/issues/detail?id=19929
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f6(x,y) {",
-        "  var z = [];",
-        "  if (x || (z = y) < 0) {",
-        "  } else {",
-        "    z = 0;",
-        "  }",
-        "  // Propagated type is [List] here: incorrect.",
-        "  // Best we can do is [Object]?",
-        "  return z; // marker",
-        "}"]), null, typeProvider.dynamicType);
+    _assertTypeOfMarkedExpression(r'''
+f6(x,y) {
+  var z = [];
+  if (x || (z = y) < 0) {
+  } else {
+    z = 0;
+  }
+  // Propagated type is [List] here: incorrect.
+  // Best we can do is [Object]?
+  return z; // marker
+}''', null, typeProvider.dynamicType);
   }
 
   void fail_mergePropagatedTypesAtJoinPoint_7() {
@@ -9546,25 +9822,25 @@
     //
     // This is like example 6, but less tricky: the code in the branch that
     // [continue]s is in effect after the [if].
-    String code = EngineTestCase.createSource([
-        "f() {",
-        "  var x = 0;",
-        "  var c = false;",
-        "  var d = true;",
-        "  while (d) {",
-        "    if (c) {",
-        "      d = false;",
-        "    } else {",
-        "      x = '';",
-        "      c = true;",
-        "      continue;",
-        "    }",
-        "    x; // marker",
-        "  }",
-        "}"]);
+    String code = r'''
+f() {
+  var x = 0;
+  var c = false;
+  var d = true;
+  while (d) {
+    if (c) {
+      d = false;
+    } else {
+      x = '';
+      c = true;
+      continue;
+    }
+    x; // marker
+  }
+}''';
     DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType;
-    JUnitTestCase.assertTrue(typeProvider.intType.isSubtypeOf(t));
-    JUnitTestCase.assertTrue(typeProvider.stringType.isSubtypeOf(t));
+    expect(typeProvider.intType.isSubtypeOf(t), isTrue);
+    expect(typeProvider.stringType.isSubtypeOf(t), isTrue);
   }
 
   void fail_mergePropagatedTypesAtJoinPoint_8() {
@@ -9575,47 +9851,50 @@
     // This is a combination of 6 and 7: we use an unlabeled [break]
     // like a continue for the outer loop / like a labeled [break] to
     // jump just above the [if].
-    String code = EngineTestCase.createSource([
-        "f() {",
-        "  var x = 0;",
-        "  var c = false;",
-        "  var d = true;",
-        "  while (d) {",
-        "    while (d) {",
-        "      if (c) {",
-        "        d = false;",
-        "      } else {",
-        "        x = '';",
-        "        c = true;",
-        "        break;",
-        "      }",
-        "      x; // marker",
-        "    }",
-        "  }",
-        "}"]);
+    String code = r'''
+f() {
+  var x = 0;
+  var c = false;
+  var d = true;
+  while (d) {
+    while (d) {
+      if (c) {
+        d = false;
+      } else {
+        x = '';
+        c = true;
+        break;
+      }
+      x; // marker
+    }
+  }
+}''';
     DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType;
-    JUnitTestCase.assertTrue(typeProvider.intType.isSubtypeOf(t));
-    JUnitTestCase.assertTrue(typeProvider.stringType.isSubtypeOf(t));
+    expect(typeProvider.intType.isSubtypeOf(t), isTrue);
+    expect(typeProvider.stringType.isSubtypeOf(t), isTrue);
   }
 
   void fail_propagatedReturnType_functionExpression() {
     // TODO(scheglov) disabled because we don't resolve function expression
-    String code = EngineTestCase.createSource(["main() {", "  var v = (() {return 42;})();", "}"]);
+    String code = r'''
+main() {
+  var v = (() {return 42;})();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_as() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  bool get g => true;",
-        "}",
-        "A f(var p) {",
-        "  if ((p as A).g) {",
-        "    return p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  bool get g => true;
+}
+A f(var p) {
+  if ((p as A).g) {
+    return p;
+  } else {
+    return null;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -9627,16 +9906,16 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.thenStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_assert() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  assert (p is A);",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  assert (p is A);
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -9647,11 +9926,16 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_assignment() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v;", "  v = 0;", "  return v;", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v;
+  v = 0;
+  return v;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -9660,11 +9944,16 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[2] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeProvider.intType));
   }
 
   void test_assignment_afterInitializer() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v = 0;", "  v = 1.0;", "  return v;", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = 0;
+  v = 1.0;
+  return v;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -9673,16 +9962,16 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[2] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeProvider.doubleType, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeProvider.doubleType));
   }
 
   void test_assignment_null() {
-    String code = EngineTestCase.createSource([
-        "main() {",
-        "  int v; // declare",
-        "  v = null;",
-        "  return v; // return",
-        "}"]);
+    String code = r'''
+main() {
+  int v; // declare
+  v = null;
+  return v; // return
+}''';
     CompilationUnit unit;
     {
       Source source = addSource(code);
@@ -9693,108 +9982,120 @@
     }
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v; // declare", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(typeProvider.intType, identifier.staticType);
-      JUnitTestCase.assertSame(null, identifier.propagatedType);
+      expect(identifier.staticType, same(typeProvider.intType));
+      expect(identifier.propagatedType, same(null));
     }
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v = null;", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(typeProvider.intType, identifier.staticType);
-      JUnitTestCase.assertSame(null, identifier.propagatedType);
+      expect(identifier.staticType, same(typeProvider.intType));
+      expect(identifier.propagatedType, same(null));
     }
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v; // return", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(typeProvider.intType, identifier.staticType);
-      JUnitTestCase.assertSame(null, identifier.propagatedType);
+      expect(identifier.staticType, same(typeProvider.intType));
+      expect(identifier.propagatedType, same(null));
     }
   }
 
   void test_CanvasElement_getContext() {
-    String code = EngineTestCase.createSource([
-        "import 'dart:html';",
-        "main(CanvasElement canvas) {",
-        "  var context = canvas.getContext('2d');",
-        "}"]);
+    String code = r'''
+import 'dart:html';
+main(CanvasElement canvas) {
+  var context = canvas.getContext('2d');
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
     CompilationUnit unit = resolveCompilationUnit(source, library);
     SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "context", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertEquals("CanvasRenderingContext2D", identifier.propagatedType.name);
+    expect(identifier.propagatedType.name, "CanvasRenderingContext2D");
   }
 
   void test_finalPropertyInducingVariable_classMember_instance() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["class A {", "  final v = 0;", "}"]));
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "f(A a) {",
-        "  return a.v; // marker",
-        "}"]);
+    addNamedSource("/lib.dart", r'''
+class A {
+  final v = 0;
+}''');
+    String code = r'''
+import 'lib.dart';
+f(A a) {
+  return a.v; // marker
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_finalPropertyInducingVariable_classMember_instance_inherited() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["class A {", "  final v = 0;", "}"]));
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  m() {",
-        "    return v; // marker",
-        "  }",
-        "}"]);
+    addNamedSource("/lib.dart", r'''
+class A {
+  final v = 0;
+}''');
+    String code = r'''
+import 'lib.dart';
+class B extends A {
+  m() {
+    return v; // marker
+  }
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["class A {", "  final v = 0;", "}"]));
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "f(p) {",
-        "  if (p is A) {",
-        "    return p.v; // marker",
-        "  }",
-        "}"]);
+    addNamedSource("/lib.dart", r'''
+class A {
+  final v = 0;
+}''');
+    String code = r'''
+import 'lib.dart';
+f(p) {
+  if (p is A) {
+    return p.v; // marker
+  }
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_finalPropertyInducingVariable_classMember_static() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["class A {", "  static final V = 0;", "}"]));
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "f() {",
-        "  return A.V; // marker",
-        "}"]);
+    addNamedSource("/lib.dart", r'''
+class A {
+  static final V = 0;
+}''');
+    String code = r'''
+import 'lib.dart';
+f() {
+  return A.V; // marker
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_finalPropertyInducingVariable_topLevelVaraible_prefixed() {
     addNamedSource("/lib.dart", "final V = 0;");
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart' as p;",
-        "f() {",
-        "  var v2 = p.V; // marker prefixed",
-        "}"]);
+    String code = r'''
+import 'lib.dart' as p;
+f() {
+  var v2 = p.V; // marker prefixed
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_finalPropertyInducingVariable_topLevelVaraible_simple() {
     addNamedSource("/lib.dart", "final V = 0;");
-    String code = EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "f() {",
-        "  return V; // marker simple",
-        "}"]);
+    String code = r'''
+import 'lib.dart';
+f() {
+  return V; // marker simple
+}''';
     _assertTypeOfMarkedExpression(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_forEach() {
-    String code = EngineTestCase.createSource([
-        "main() {",
-        "  var list = <String> [];",
-        "  for (var e in list) {",
-        "    e;",
-        "  }",
-        "}"]);
+    String code = r'''
+main() {
+  var list = <String> [];
+  for (var e in list) {
+    e;
+  }
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9804,26 +10105,26 @@
     // in the declaration
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "e in", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(stringType, identifier.propagatedType);
+      expect(identifier.propagatedType, same(stringType));
     }
     // in the loop body
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "e;", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(stringType, identifier.propagatedType);
+      expect(identifier.propagatedType, same(stringType));
     }
   }
 
   void test_functionExpression_asInvocationArgument() {
-    String code = EngineTestCase.createSource([
-        "class MyMap<K, V> {",
-        "  forEach(f(K key, V value)) {}",
-        "}",
-        "f(MyMap<int, String> m) {",
-        "  m.forEach((k, v) {",
-        "    k;",
-        "    v;",
-        "  });",
-        "}"]);
+    String code = r'''
+class MyMap<K, V> {
+  forEach(f(K key, V value)) {}
+}
+f(MyMap<int, String> m) {
+  m.forEach((k, v) {
+    k;
+    v;
+  });
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9832,28 +10133,28 @@
     // k
     DartType intType = typeProvider.intType;
     FormalParameter kParameter = EngineTestCase.findNode(unit, code, "k, ", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(intType, kParameter.identifier.propagatedType);
+    expect(kParameter.identifier.propagatedType, same(intType));
     SimpleIdentifier kIdentifier = EngineTestCase.findNode(unit, code, "k;", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertSame(intType, kIdentifier.propagatedType);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, kIdentifier.staticType);
+    expect(kIdentifier.propagatedType, same(intType));
+    expect(kIdentifier.staticType, same(typeProvider.dynamicType));
     // v
     DartType stringType = typeProvider.stringType;
     FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType);
+    expect(vParameter.identifier.propagatedType, same(stringType));
     SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, vIdentifier.staticType);
+    expect(vIdentifier.propagatedType, same(stringType));
+    expect(vIdentifier.staticType, same(typeProvider.dynamicType));
   }
 
   void test_functionExpression_asInvocationArgument_fromInferredInvocation() {
-    String code = EngineTestCase.createSource([
-        "class MyMap<K, V> {",
-        "  forEach(f(K key, V value)) {}",
-        "}",
-        "f(MyMap<int, String> m) {",
-        "  var m2 = m;",
-        "  m2.forEach((k, v) {});",
-        "}"]);
+    String code = r'''
+class MyMap<K, V> {
+  forEach(f(K key, V value)) {}
+}
+f(MyMap<int, String> m) {
+  var m2 = m;
+  m2.forEach((k, v) {});
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9862,20 +10163,20 @@
     // k
     DartType intType = typeProvider.intType;
     FormalParameter kParameter = EngineTestCase.findNode(unit, code, "k, ", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(intType, kParameter.identifier.propagatedType);
+    expect(kParameter.identifier.propagatedType, same(intType));
     // v
     DartType stringType = typeProvider.stringType;
     FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType);
+    expect(vParameter.identifier.propagatedType, same(stringType));
   }
 
   void test_functionExpression_asInvocationArgument_functionExpressionInvocation() {
-    String code = EngineTestCase.createSource([
-        "main() {",
-        "  (f(String value)) {} ((v) {",
-        "    v;",
-        "  });",
-        "}"]);
+    String code = r'''
+main() {
+  (f(String value)) {} ((v) {
+    v;
+  });
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9885,23 +10186,23 @@
     DartType dynamicType = typeProvider.dynamicType;
     DartType stringType = typeProvider.stringType;
     FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", (node) => node is FormalParameter);
-    JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType);
-    JUnitTestCase.assertSame(dynamicType, vParameter.identifier.staticType);
+    expect(vParameter.identifier.propagatedType, same(stringType));
+    expect(vParameter.identifier.staticType, same(dynamicType));
     SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType);
-    JUnitTestCase.assertSame(dynamicType, vIdentifier.staticType);
+    expect(vIdentifier.propagatedType, same(stringType));
+    expect(vIdentifier.staticType, same(dynamicType));
   }
 
   void test_functionExpression_asInvocationArgument_keepIfLessSpecific() {
-    String code = EngineTestCase.createSource([
-        "class MyList {",
-        "  forEach(f(Object value)) {}",
-        "}",
-        "f(MyList list) {",
-        "  list.forEach((int v) {",
-        "    v;",
-        "  });",
-        "}"]);
+    String code = r'''
+class MyList {
+  forEach(f(Object value)) {}
+}
+f(MyList list) {
+  list.forEach((int v) {
+    v;
+  });
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9910,22 +10211,22 @@
     // v
     DartType intType = typeProvider.intType;
     FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(null, vParameter.identifier.propagatedType);
-    JUnitTestCase.assertSame(intType, vParameter.identifier.staticType);
+    expect(vParameter.identifier.propagatedType, same(null));
+    expect(vParameter.identifier.staticType, same(intType));
     SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertSame(intType, vIdentifier.staticType);
-    JUnitTestCase.assertSame(null, vIdentifier.propagatedType);
+    expect(vIdentifier.staticType, same(intType));
+    expect(vIdentifier.propagatedType, same(null));
   }
 
   void test_functionExpression_asInvocationArgument_notSubtypeOfStaticType() {
-    String code = EngineTestCase.createSource([
-        "class A {",
-        "  m(void f(int i)) {}",
-        "}",
-        "x() {",
-        "  A a = new A();",
-        "  a.m(() => 0);",
-        "}"]);
+    String code = r'''
+class A {
+  m(void f(int i)) {}
+}
+x() {
+  A a = new A();
+  a.m(() => 0);
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
@@ -9933,20 +10234,20 @@
     CompilationUnit unit = resolveCompilationUnit(source, library);
     // () => 0
     FunctionExpression functionExpression = EngineTestCase.findNode(unit, code, "() => 0)", (node) => node is FunctionExpression);
-    JUnitTestCase.assertSame(0, (functionExpression.staticType as FunctionType).parameters.length);
-    JUnitTestCase.assertSame(null, functionExpression.propagatedType);
+    expect((functionExpression.staticType as FunctionType).parameters.length, same(0));
+    expect(functionExpression.propagatedType, same(null));
   }
 
   void test_functionExpression_asInvocationArgument_replaceIfMoreSpecific() {
-    String code = EngineTestCase.createSource([
-        "class MyList<E> {",
-        "  forEach(f(E value)) {}",
-        "}",
-        "f(MyList<String> list) {",
-        "  list.forEach((Object v) {",
-        "    v;",
-        "  });",
-        "}"]);
+    String code = r'''
+class MyList<E> {
+  forEach(f(E value)) {}
+}
+f(MyList<String> list) {
+  list.forEach((Object v) {
+    v;
+  });
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9955,23 +10256,23 @@
     // v
     DartType stringType = typeProvider.stringType;
     FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType);
-    JUnitTestCase.assertSame(typeProvider.objectType, vParameter.identifier.staticType);
+    expect(vParameter.identifier.propagatedType, same(stringType));
+    expect(vParameter.identifier.staticType, same(typeProvider.objectType));
     SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", (node) => node is SimpleIdentifier);
-    JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType);
+    expect(vIdentifier.propagatedType, same(stringType));
   }
 
   void test_Future_then() {
-    String code = EngineTestCase.createSource([
-        "import 'dart:async';",
-        "main(Future<int> firstFuture) {",
-        "  firstFuture.then((p1) {",
-        "    return 1.0;",
-        "  }).then((p2) {",
-        "    return new Future<String>.value('str');",
-        "  }).then((p3) {",
-        "  });",
-        "}"]);
+    String code = r'''
+import 'dart:async';
+main(Future<int> firstFuture) {
+  firstFuture.then((p1) {
+    return 1.0;
+  }).then((p2) {
+    return new Future<String>.value('str');
+  }).then((p3) {
+  });
+}''';
     Source source = addSource(code);
     LibraryElement library = resolve(source);
     assertNoErrors(source);
@@ -9979,17 +10280,21 @@
     CompilationUnit unit = resolveCompilationUnit(source, library);
     // p1
     FormalParameter p1 = EngineTestCase.findNode(unit, code, "p1) {", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(typeProvider.intType, p1.identifier.propagatedType);
+    expect(p1.identifier.propagatedType, same(typeProvider.intType));
     // p2
     FormalParameter p2 = EngineTestCase.findNode(unit, code, "p2) {", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(typeProvider.doubleType, p2.identifier.propagatedType);
+    expect(p2.identifier.propagatedType, same(typeProvider.doubleType));
     // p3
     FormalParameter p3 = EngineTestCase.findNode(unit, code, "p3) {", (node) => node is SimpleFormalParameter);
-    JUnitTestCase.assertSame(typeProvider.stringType, p3.identifier.propagatedType);
+    expect(p3.identifier.propagatedType, same(typeProvider.stringType));
   }
 
   void test_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v = 0;", "  return v;", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = 0;
+  return v;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10001,19 +10306,23 @@
     {
       VariableDeclarationStatement statement = statements[0] as VariableDeclarationStatement;
       SimpleIdentifier variableName = statement.variables.variables[0].name;
-      JUnitTestCase.assertSame(typeProvider.dynamicType, variableName.staticType);
-      JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType);
+      expect(variableName.staticType, same(typeProvider.dynamicType));
+      expect(variableName.propagatedType, same(typeProvider.intType));
     }
     // Type of 'v' in reference.
     {
       ReturnStatement statement = statements[1] as ReturnStatement;
       SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-      JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType);
+      expect(variableName.propagatedType, same(typeProvider.intType));
     }
   }
 
   void test_initializer_dereference() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v = 'String';", "  v.", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = 'String';
+  v.
+}''');
     LibraryElement library = resolve(source);
     CompilationUnit unit = resolveCompilationUnit(source, library);
     FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration;
@@ -10021,15 +10330,15 @@
     ExpressionStatement statement = body.block.statements[1] as ExpressionStatement;
     PrefixedIdentifier invocation = statement.expression as PrefixedIdentifier;
     SimpleIdentifier variableName = invocation.prefix;
-    JUnitTestCase.assertSame(typeProvider.stringType, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeProvider.stringType));
   }
 
   void test_initializer_null() {
-    String code = EngineTestCase.createSource([
-        "main() {",
-        "  int v = null;",
-        "  return v; // marker",
-        "}"]);
+    String code = r'''
+main() {
+  int v = null;
+  return v; // marker
+}''';
     CompilationUnit unit;
     {
       Source source = addSource(code);
@@ -10040,22 +10349,22 @@
     }
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v = null;", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(typeProvider.intType, identifier.staticType);
-      JUnitTestCase.assertSame(null, identifier.propagatedType);
+      expect(identifier.staticType, same(typeProvider.intType));
+      expect(identifier.propagatedType, same(null));
     }
     {
       SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v; // marker", (node) => node is SimpleIdentifier);
-      JUnitTestCase.assertSame(typeProvider.intType, identifier.staticType);
-      JUnitTestCase.assertSame(null, identifier.propagatedType);
+      expect(identifier.staticType, same(typeProvider.intType));
+      expect(identifier.propagatedType, same(null));
     }
   }
 
   void test_is_conditional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  return (p is A) ? p : null;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  return (p is A) ? p : null;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10067,19 +10376,19 @@
     ReturnStatement statement = body.block.statements[0] as ReturnStatement;
     ConditionalExpression conditional = statement.expression as ConditionalExpression;
     SimpleIdentifier variableName = conditional.thenExpression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_is_if() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is A) {",
-        "    return p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is A) {
+    return p;
+  } else {
+    return null;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10091,19 +10400,19 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.thenStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_is_if_lessSpecific() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(A p) {",
-        "  if (p is String) {",
-        "    return p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(A p) {
+  if (p is String) {
+    return p;
+  } else {
+    return null;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10115,19 +10424,19 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.thenStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(null, variableName.propagatedType);
+    expect(variableName.propagatedType, same(null));
   }
 
   void test_is_if_logicalAnd() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is A && p != null) {",
-        "    return p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is A && p != null) {
+    return p;
+  } else {
+    return null;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10139,16 +10448,16 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.thenStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_is_postConditional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  A a = (p is A) ? p : throw null;",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  A a = (p is A) ? p : throw null;
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10159,20 +10468,20 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_is_postIf() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is A) {",
-        "    A a = p;",
-        "  } else {",
-        "    return null;",
-        "  }",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is A) {
+    A a = p;
+  } else {
+    return null;
+  }
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10183,21 +10492,21 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_is_subclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  B m() => this;",
-        "}",
-        "A f(A p) {",
-        "  if (p is B) {",
-        "    return p.m();",
-        "  }",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  B m() => this;
+}
+A f(A p) {
+  if (p is B) {
+    return p.m();
+  }
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     CompilationUnit unit = resolveCompilationUnit(source, library);
@@ -10206,18 +10515,18 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.thenStatement as Block).statements[0] as ReturnStatement;
     MethodInvocation invocation = statement.expression as MethodInvocation;
-    JUnitTestCase.assertNotNull(invocation.methodName.propagatedElement);
+    expect(invocation.methodName.propagatedElement, isNotNull);
   }
 
   void test_is_while() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  while (p is A) {",
-        "    return p;",
-        "  }",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  while (p is A) {
+    return p;
+  }
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10229,15 +10538,15 @@
     WhileStatement whileStatement = body.block.statements[0] as WhileStatement;
     ReturnStatement statement = (whileStatement.body as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_isNot_conditional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  return (p is! A) ? null : p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  return (p is! A) ? null : p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10249,19 +10558,19 @@
     ReturnStatement statement = body.block.statements[0] as ReturnStatement;
     ConditionalExpression conditional = statement.expression as ConditionalExpression;
     SimpleIdentifier variableName = conditional.elseExpression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_isNot_if() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is! A) {",
-        "    return null;",
-        "  } else {",
-        "    return p;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is! A) {
+    return null;
+  } else {
+    return p;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10273,19 +10582,19 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.elseStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_isNot_if_logicalOr() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is! A || null == p) {",
-        "    return null;",
-        "  } else {",
-        "    return p;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is! A || null == p) {
+    return null;
+  } else {
+    return p;
+  }
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     CompilationUnit unit = resolveCompilationUnit(source, library);
@@ -10296,16 +10605,16 @@
     IfStatement ifStatement = body.block.statements[0] as IfStatement;
     ReturnStatement statement = (ifStatement.elseStatement as Block).statements[0] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_isNot_postConditional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  A a = (p is! A) ? throw null : p;",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  A a = (p is! A) ? throw null : p;
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10316,18 +10625,18 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_isNot_postIf() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "A f(var p) {",
-        "  if (p is! A) {",
-        "    return null;",
-        "  }",
-        "  return p;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+A f(var p) {
+  if (p is! A) {
+    return null;
+  }
+  return p;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10338,22 +10647,22 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier variableName = statement.expression as SimpleIdentifier;
-    JUnitTestCase.assertSame(typeA, variableName.propagatedType);
+    expect(variableName.propagatedType, same(typeA));
   }
 
   void test_issue20904BuggyTypePromotionAtIfJoin_2() {
     // https://code.google.com/p/dart/issues/detail?id=20904
     enableUnionTypes(false);
-    String code = EngineTestCase.createSource([
-        "f(var message) {",
-        "  if (message is Function) {",
-        "    message = '';",
-        "  }",
-        "  message; // marker",
-        "}"]);
+    String code = r'''
+f(var message) {
+  if (message is Function) {
+    message = '';
+  }
+  message; // marker
+}''';
     DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType;
-    JUnitTestCase.assertFalse(typeProvider.stringType == t);
-    JUnitTestCase.assertFalse(typeProvider.functionType == t);
+    expect(typeProvider.stringType == t, isFalse);
+    expect(typeProvider.functionType == t, isFalse);
   }
 
   void test_issue20904BuggyTypePromotionAtIfJoin_5() {
@@ -10374,17 +10683,17 @@
     // I can only imagine strange code would make use of this feature.
     //
     // Here the is-check improves precision, so we use it.
-    String code = EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "f() {",
-        "  var a = new A();",
-        "  var b = new B();",
-        "  b; // B",
-        "  if (a is B) {",
-        "    return a; // marker",
-        "  }",
-        "}"]);
+    String code = r'''
+class A {}
+class B extends A {}
+f() {
+  var a = new A();
+  var b = new B();
+  b; // B
+  if (a is B) {
+    return a; // marker
+  }
+}''';
     DartType tB = _findMarkedIdentifier(code, "; // B").propagatedType;
     _assertTypeOfMarkedExpression(code, null, tB);
   }
@@ -10395,22 +10704,26 @@
     // The other half of the *_5() test.
     //
     // Here the is-check loses precision, so we don't use it.
-    String code = EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "f() {",
-        "  var b = new B();",
-        "  b; // B",
-        "  if (b is A) {",
-        "    return b; // marker",
-        "  }",
-        "}"]);
+    String code = r'''
+class A {}
+class B extends A {}
+f() {
+  var b = new B();
+  b; // B
+  if (b is A) {
+    return b; // marker
+  }
+}''';
     DartType tB = _findMarkedIdentifier(code, "; // B").propagatedType;
     _assertTypeOfMarkedExpression(code, null, tB);
   }
 
   void test_listLiteral_different() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v = [0, '1', 2];", "  return v[2];", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = [0, '1', 2];
+  return v[2];
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10419,11 +10732,15 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     IndexExpression indexExpression = statement.expression as IndexExpression;
-    JUnitTestCase.assertNull(indexExpression.propagatedType);
+    expect(indexExpression.propagatedType, isNull);
   }
 
   void test_listLiteral_same() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  var v = [0, 1, 2];", "  return v[2];", "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = [0, 1, 2];
+  return v[2];
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10432,21 +10749,21 @@
     BlockFunctionBody body = function.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     IndexExpression indexExpression = statement.expression as IndexExpression;
-    JUnitTestCase.assertNull(indexExpression.propagatedType);
+    expect(indexExpression.propagatedType, isNull);
     Expression v = indexExpression.target;
     InterfaceType propagatedType = v.propagatedType as InterfaceType;
-    JUnitTestCase.assertSame(typeProvider.listType.element, propagatedType.element);
+    expect(propagatedType.element, same(typeProvider.listType.element));
     List<DartType> typeArguments = propagatedType.typeArguments;
-    EngineTestCase.assertLength(1, typeArguments);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[0]);
+    expect(typeArguments, hasLength(1));
+    expect(typeArguments[0], same(typeProvider.dynamicType));
   }
 
   void test_mapLiteral_different() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var v = {'0' : 0, 1 : '1', '2' : 2};",
-        "  return v;",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = {'0' : 0, 1 : '1', '2' : 2};
+  return v;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10456,19 +10773,19 @@
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier identifier = statement.expression as SimpleIdentifier;
     InterfaceType propagatedType = identifier.propagatedType as InterfaceType;
-    JUnitTestCase.assertSame(typeProvider.mapType.element, propagatedType.element);
+    expect(propagatedType.element, same(typeProvider.mapType.element));
     List<DartType> typeArguments = propagatedType.typeArguments;
-    EngineTestCase.assertLength(2, typeArguments);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[0]);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[1]);
+    expect(typeArguments, hasLength(2));
+    expect(typeArguments[0], same(typeProvider.dynamicType));
+    expect(typeArguments[1], same(typeProvider.dynamicType));
   }
 
   void test_mapLiteral_same() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f() {",
-        "  var v = {'a' : 0, 'b' : 1, 'c' : 2};",
-        "  return v;",
-        "}"]));
+    Source source = addSource(r'''
+f() {
+  var v = {'a' : 0, 'b' : 1, 'c' : 2};
+  return v;
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10478,26 +10795,26 @@
     ReturnStatement statement = body.block.statements[1] as ReturnStatement;
     SimpleIdentifier identifier = statement.expression as SimpleIdentifier;
     InterfaceType propagatedType = identifier.propagatedType as InterfaceType;
-    JUnitTestCase.assertSame(typeProvider.mapType.element, propagatedType.element);
+    expect(propagatedType.element, same(typeProvider.mapType.element));
     List<DartType> typeArguments = propagatedType.typeArguments;
-    EngineTestCase.assertLength(2, typeArguments);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[0]);
-    JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[1]);
+    expect(typeArguments, hasLength(2));
+    expect(typeArguments[0], same(typeProvider.dynamicType));
+    expect(typeArguments[1], same(typeProvider.dynamicType));
   }
 
   void test_mergePropagatedTypesAtJoinPoint_4() {
     // https://code.google.com/p/dart/issues/detail?id=19929
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f5(x) {",
-        "  var y = [];",
-        "  if (x) {",
-        "    y = 0;",
-        "  } else {",
-        "    return y;",
-        "  }",
-        "  // Propagated type is [int] here: correct.",
-        "  return y; // marker",
-        "}"]), null, typeProvider.intType);
+    _assertTypeOfMarkedExpression(r'''
+f5(x) {
+  var y = [];
+  if (x) {
+    y = 0;
+  } else {
+    return y;
+  }
+  // Propagated type is [int] here: correct.
+  return y; // marker
+}''', null, typeProvider.intType);
   }
 
   void test_mergePropagatedTypesAtJoinPoint_6() {
@@ -10509,22 +10826,22 @@
     // it into a loop of sorts. The [if] type-propagation code assumes
     // that [break] does not introduce a loop.
     enableUnionTypes(false);
-    String code = EngineTestCase.createSource([
-        "f() {",
-        "  var x = 0;",
-        "  var c = false;",
-        "  L: ",
-        "  if (c) {",
-        "  } else {",
-        "    x = '';",
-        "    c = true;",
-        "    break L;",
-        "  }",
-        "  x; // marker",
-        "}"]);
+    String code = r'''
+f() {
+  var x = 0;
+  var c = false;
+  L: 
+  if (c) {
+  } else {
+    x = '';
+    c = true;
+    break L;
+  }
+  x; // marker
+}''';
     DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType;
-    JUnitTestCase.assertTrue(typeProvider.intType.isSubtypeOf(t));
-    JUnitTestCase.assertTrue(typeProvider.stringType.isSubtypeOf(t));
+    expect(typeProvider.intType.isSubtypeOf(t), isTrue);
+    expect(typeProvider.stringType.isSubtypeOf(t), isTrue);
   }
 
   void test_objectMethodOnDynamicExpression_doubleEquals() {
@@ -10534,113 +10851,129 @@
     // static type of [bool] for [==] comparison and the implementation
     // was already consistent with the spec there. But, it's another
     // [Object] method, so it's included here.
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f1(x) {",
-        "  var v = (x == x);",
-        "  return v; // marker",
-        "}"]), null, typeProvider.boolType);
+    _assertTypeOfMarkedExpression(r'''
+f1(x) {
+  var v = (x == x);
+  return v; // marker
+}''', null, typeProvider.boolType);
   }
 
   void test_objectMethodOnDynamicExpression_hashCode() {
     // https://code.google.com/p/dart/issues/detail?id=20342
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f1(x) {",
-        "  var v = x.hashCode;",
-        "  return v; // marker",
-        "}"]), null, typeProvider.intType);
+    _assertTypeOfMarkedExpression(r'''
+f1(x) {
+  var v = x.hashCode;
+  return v; // marker
+}''', null, typeProvider.intType);
   }
 
   void test_objectMethodOnDynamicExpression_runtimeType() {
     // https://code.google.com/p/dart/issues/detail?id=20342
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f1(x) {",
-        "  var v = x.runtimeType;",
-        "  return v; // marker",
-        "}"]), null, typeProvider.typeType);
+    _assertTypeOfMarkedExpression(r'''
+f1(x) {
+  var v = x.runtimeType;
+  return v; // marker
+}''', null, typeProvider.typeType);
   }
 
   void test_objectMethodOnDynamicExpression_toString() {
     // https://code.google.com/p/dart/issues/detail?id=20342
-    _assertTypeOfMarkedExpression(EngineTestCase.createSource([
-        "f1(x) {",
-        "  var v = x.toString();",
-        "  return v; // marker",
-        "}"]), null, typeProvider.stringType);
+    _assertTypeOfMarkedExpression(r'''
+f1(x) {
+  var v = x.toString();
+  return v; // marker
+}''', null, typeProvider.stringType);
   }
 
   void test_propagatedReturnType_function_hasReturnType_returnsNull() {
-    String code = EngineTestCase.createSource(["String f() => null;", "main() {", "  var v = f();", "}"]);
+    String code = r'''
+String f() => null;
+main() {
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.stringType);
   }
 
   void test_propagatedReturnType_function_lessSpecificStaticReturnType() {
-    String code = EngineTestCase.createSource(["Object f() => 42;", "main() {", "  var v = f();", "}"]);
+    String code = r'''
+Object f() => 42;
+main() {
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_propagatedReturnType_function_moreSpecificStaticReturnType() {
-    String code = EngineTestCase.createSource([
-        "int f(v) => (v as num);",
-        "main() {",
-        "  var v = f(3);",
-        "}"]);
+    String code = r'''
+int f(v) => (v as num);
+main() {
+  var v = f(3);
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_propagatedReturnType_function_noReturnTypeName_blockBody_multipleReturns() {
-    String code = EngineTestCase.createSource([
-        "f() {",
-        "  if (true) return 0;",
-        "  return 1.0;",
-        "}",
-        "main() {",
-        "  var v = f();",
-        "}"]);
+    String code = r'''
+f() {
+  if (true) return 0;
+  return 1.0;
+}
+main() {
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.numType);
   }
 
   void test_propagatedReturnType_function_noReturnTypeName_blockBody_oneReturn() {
-    String code = EngineTestCase.createSource([
-        "f() {",
-        "  var z = 42;",
-        "  return z;",
-        "}",
-        "main() {",
-        "  var v = f();",
-        "}"]);
+    String code = r'''
+f() {
+  var z = 42;
+  return z;
+}
+main() {
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_propagatedReturnType_function_noReturnTypeName_expressionBody() {
-    String code = EngineTestCase.createSource(["f() => 42;", "main() {", "  var v = f();", "}"]);
+    String code = r'''
+f() => 42;
+main() {
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_propagatedReturnType_localFunction() {
-    String code = EngineTestCase.createSource(["main() {", "  f() => 42;", "  var v = f();", "}"]);
+    String code = r'''
+main() {
+  f() => 42;
+  var v = f();
+}''';
     _assertPropagatedReturnType(code, typeProvider.dynamicType, typeProvider.intType);
   }
 
   void test_query() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'dart:html';",
-        "",
-        "main() {",
-        "  var v1 = query('a');",
-        "  var v2 = query('A');",
-        "  var v3 = query('body:active');",
-        "  var v4 = query('button[foo=\"bar\"]');",
-        "  var v5 = query('div.class');",
-        "  var v6 = query('input#id');",
-        "  var v7 = query('select#id');",
-        "  // invocation of method",
-        "  var m1 = document.query('div');",
-        " // unsupported currently",
-        "  var b1 = query('noSuchTag');",
-        "  var b2 = query('DART_EDITOR_NO_SUCH_TYPE');",
-        "  var b3 = query('body div');",
-        "  return [v1, v2, v3, v4, v5, v6, v7, m1, b1, b2, b3];",
-        "}"]));
+    Source source = addSource(r'''
+import 'dart:html';
+
+main() {
+  var v1 = query('a');
+  var v2 = query('A');
+  var v3 = query('body:active');
+  var v4 = query('button[foo="bar"]');
+  var v5 = query('div.class');
+  var v6 = query('input#id');
+  var v7 = query('select#id');
+  // invocation of method
+  var m1 = document.query('div');
+ // unsupported currently
+  var b1 = query('noSuchTag');
+  var b2 = query('DART_EDITOR_NO_SUCH_TYPE');
+  var b3 = query('body div');
+  return [v1, v2, v3, v4, v5, v6, v7, m1, b1, b2, b3];
+}''');
     LibraryElement library = resolve(source);
     assertNoErrors(source);
     verify([source]);
@@ -10649,17 +10982,17 @@
     BlockFunctionBody body = main.functionExpression.body as BlockFunctionBody;
     ReturnStatement statement = body.block.statements[11] as ReturnStatement;
     NodeList<Expression> elements = (statement.expression as ListLiteral).elements;
-    JUnitTestCase.assertEquals("AnchorElement", elements[0].propagatedType.name);
-    JUnitTestCase.assertEquals("AnchorElement", elements[1].propagatedType.name);
-    JUnitTestCase.assertEquals("BodyElement", elements[2].propagatedType.name);
-    JUnitTestCase.assertEquals("ButtonElement", elements[3].propagatedType.name);
-    JUnitTestCase.assertEquals("DivElement", elements[4].propagatedType.name);
-    JUnitTestCase.assertEquals("InputElement", elements[5].propagatedType.name);
-    JUnitTestCase.assertEquals("SelectElement", elements[6].propagatedType.name);
-    JUnitTestCase.assertEquals("DivElement", elements[7].propagatedType.name);
-    JUnitTestCase.assertEquals("Element", elements[8].propagatedType.name);
-    JUnitTestCase.assertEquals("Element", elements[9].propagatedType.name);
-    JUnitTestCase.assertEquals("Element", elements[10].propagatedType.name);
+    expect(elements[0].propagatedType.name, "AnchorElement");
+    expect(elements[1].propagatedType.name, "AnchorElement");
+    expect(elements[2].propagatedType.name, "BodyElement");
+    expect(elements[3].propagatedType.name, "ButtonElement");
+    expect(elements[4].propagatedType.name, "DivElement");
+    expect(elements[5].propagatedType.name, "InputElement");
+    expect(elements[6].propagatedType.name, "SelectElement");
+    expect(elements[7].propagatedType.name, "DivElement");
+    expect(elements[8].propagatedType.name, "Element");
+    expect(elements[9].propagatedType.name, "Element");
+    expect(elements[10].propagatedType.name, "Element");
   }
 
   /**
@@ -10668,8 +11001,8 @@
    */
   void _assertPropagatedReturnType(String code, DartType expectedStaticType, DartType expectedPropagatedType) {
     SimpleIdentifier identifier = _findMarkedIdentifier(code, "v = ");
-    JUnitTestCase.assertSame(expectedStaticType, identifier.staticType);
-    JUnitTestCase.assertSame(expectedPropagatedType, identifier.propagatedType);
+    expect(identifier.staticType, same(expectedStaticType));
+    expect(identifier.propagatedType, same(expectedPropagatedType));
   }
 
   /**
@@ -10683,10 +11016,10 @@
   void _assertTypeOfMarkedExpression(String code, DartType expectedStaticType, DartType expectedPropagatedType) {
     SimpleIdentifier identifier = _findMarkedIdentifier(code, "; // marker");
     if (expectedStaticType != null) {
-      JUnitTestCase.assertEquals(expectedStaticType, identifier.staticType);
+      expect(identifier.staticType, expectedStaticType);
     }
     if (expectedPropagatedType != null) {
-      JUnitTestCase.assertEquals(expectedPropagatedType, identifier.propagatedType);
+      expect(identifier.propagatedType, expectedPropagatedType);
     }
   }
 
@@ -10713,7 +11046,7 @@
       // here should be a failure, in both "test_*" and "fail_*" tests.
       // However, an assertion failure is success for the purpose of "fail_*" tests, so
       // without catching them here "fail_*" tests can succeed by failing for the wrong reason.
-      throw new JavaException("Unexexpected assertion failure: ${exception}");
+      throw new JavaException("Unexexpected assertion failure: $exception");
     }
   }
 }
@@ -10756,19 +11089,19 @@
     // Create a type provider and ensure that it can return the expected types.
     //
     TypeProviderImpl provider = new TypeProviderImpl(coreLibrary);
-    JUnitTestCase.assertSame(boolType, provider.boolType);
-    JUnitTestCase.assertNotNull(provider.bottomType);
-    JUnitTestCase.assertSame(doubleType, provider.doubleType);
-    JUnitTestCase.assertNotNull(provider.dynamicType);
-    JUnitTestCase.assertSame(functionType, provider.functionType);
-    JUnitTestCase.assertSame(intType, provider.intType);
-    JUnitTestCase.assertSame(listType, provider.listType);
-    JUnitTestCase.assertSame(mapType, provider.mapType);
-    JUnitTestCase.assertSame(objectType, provider.objectType);
-    JUnitTestCase.assertSame(stackTraceType, provider.stackTraceType);
-    JUnitTestCase.assertSame(stringType, provider.stringType);
-    JUnitTestCase.assertSame(symbolType, provider.symbolType);
-    JUnitTestCase.assertSame(typeType, provider.typeType);
+    expect(provider.boolType, same(boolType));
+    expect(provider.bottomType, isNotNull);
+    expect(provider.doubleType, same(doubleType));
+    expect(provider.dynamicType, isNotNull);
+    expect(provider.functionType, same(functionType));
+    expect(provider.intType, same(intType));
+    expect(provider.listType, same(listType));
+    expect(provider.mapType, same(mapType));
+    expect(provider.objectType, same(objectType));
+    expect(provider.stackTraceType, same(stackTraceType));
+    expect(provider.stringType, same(stringType));
+    expect(provider.symbolType, same(symbolType));
+    expect(provider.typeType, same(typeType));
   }
 
   ClassElement _classElement(String typeName, InterfaceType superclassType, List<String> parameterNames) {
@@ -10821,37 +11154,37 @@
   ImplicitConstructorBuilder _implicitConstructorBuilder;
 
   void fail_visitConstructorDeclaration() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitFunctionDeclaration() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitFunctionTypeAlias() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitFunctionTypedFormalParameter() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitMethodDeclaration() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     _listener.assertNoErrors();
   }
 
   void fail_visitVariableDeclaration() {
-    JUnitTestCase.fail("Not yet tested");
+    fail("Not yet tested");
     ClassElement type = ElementFactory.classElement2("A", []);
     VariableDeclaration node = AstFactory.variableDeclaration("a");
     AstFactory.variableDeclarationList(null, AstFactory.typeName(type, []), [node]);
     //resolve(node);
-    JUnitTestCase.assertSame(type.type, node.name.staticType);
+    expect(node.name.staticType, same(type.type));
     _listener.assertNoErrors();
   }
 
@@ -10931,13 +11264,13 @@
     ClassDeclaration declaration = AstFactory.classDeclaration(null, "A", null, extendsClause, withClause, implementsClause, []);
     declaration.name.staticElement = elementA;
     _resolveNode(declaration, [elementA, elementB, elementC, elementD]);
-    JUnitTestCase.assertSame(elementB.type, elementA.supertype);
+    expect(elementA.supertype, same(elementB.type));
     List<InterfaceType> mixins = elementA.mixins;
-    EngineTestCase.assertLength(1, mixins);
-    JUnitTestCase.assertSame(elementC.type, mixins[0]);
+    expect(mixins, hasLength(1));
+    expect(mixins[0], same(elementC.type));
     List<InterfaceType> interfaces = elementA.interfaces;
-    EngineTestCase.assertLength(1, interfaces);
-    JUnitTestCase.assertSame(elementD.type, interfaces[0]);
+    expect(interfaces, hasLength(1));
+    expect(interfaces[0], same(elementD.type));
     _listener.assertNoErrors();
   }
 
@@ -10953,7 +11286,7 @@
     ClassDeclaration declaration = AstFactory.classDeclaration(null, "B", null, extendsClause, null, null, []);
     declaration.name.staticElement = elementB;
     _resolveNode(declaration, [elementA, elementB]);
-    JUnitTestCase.assertSame(elementA.type, elementB.supertype);
+    expect(elementB.supertype, same(elementA.type));
     _listener.assertNoErrors();
   }
 
@@ -10968,13 +11301,13 @@
     ClassTypeAlias alias = AstFactory.classTypeAlias("A", null, null, AstFactory.typeName(elementB, []), withClause, implementsClause);
     alias.name.staticElement = elementA;
     _resolveNode(alias, [elementA, elementB, elementC, elementD]);
-    JUnitTestCase.assertSame(elementB.type, elementA.supertype);
+    expect(elementA.supertype, same(elementB.type));
     List<InterfaceType> mixins = elementA.mixins;
-    EngineTestCase.assertLength(1, mixins);
-    JUnitTestCase.assertSame(elementC.type, mixins[0]);
+    expect(mixins, hasLength(1));
+    expect(mixins[0], same(elementC.type));
     List<InterfaceType> interfaces = elementA.interfaces;
-    EngineTestCase.assertLength(1, interfaces);
-    JUnitTestCase.assertSame(elementD.type, interfaces[0]);
+    expect(interfaces, hasLength(1));
+    expect(interfaces[0], same(elementD.type));
     _listener.assertNoErrors();
   }
 
@@ -10990,8 +11323,8 @@
     DartType parameterType = _resolveFormalParameter(node, [intType.element]);
     EngineTestCase.assertInstanceOf((obj) => obj is FunctionType, FunctionType, parameterType);
     FunctionType functionType = parameterType as FunctionType;
-    JUnitTestCase.assertSame(intType, functionType.returnType);
-    EngineTestCase.assertLength(1, functionType.parameters);
+    expect(functionType.returnType, same(intType));
+    expect(functionType.parameters, hasLength(1));
     _listener.assertNoErrors();
   }
 
@@ -10999,7 +11332,7 @@
     String parameterName = "p";
     FormalParameter node = AstFactory.fieldFormalParameter(Keyword.VAR, null, parameterName);
     node.identifier.staticElement = ElementFactory.requiredParameter(parameterName);
-    JUnitTestCase.assertSame(_typeProvider.dynamicType, _resolveFormalParameter(node, []));
+    expect(_resolveFormalParameter(node, []), same(_typeProvider.dynamicType));
     _listener.assertNoErrors();
   }
 
@@ -11009,7 +11342,7 @@
     String parameterName = "p";
     FormalParameter node = AstFactory.fieldFormalParameter(null, intTypeName, parameterName);
     node.identifier.staticElement = ElementFactory.requiredParameter(parameterName);
-    JUnitTestCase.assertSame(intType, _resolveFormalParameter(node, [intType.element]));
+    expect(_resolveFormalParameter(node, [intType.element]), same(intType));
     _listener.assertNoErrors();
   }
 
@@ -11017,7 +11350,7 @@
     // p
     FormalParameter node = AstFactory.simpleFormalParameter3("p");
     node.identifier.staticElement = new ParameterElementImpl.forNode(AstFactory.identifier3("p"));
-    JUnitTestCase.assertSame(_typeProvider.dynamicType, _resolveFormalParameter(node, []));
+    expect(_resolveFormalParameter(node, []), same(_typeProvider.dynamicType));
     _listener.assertNoErrors();
   }
 
@@ -11029,7 +11362,7 @@
     SimpleIdentifier identifier = node.identifier;
     ParameterElementImpl element = new ParameterElementImpl.forNode(identifier);
     identifier.staticElement = element;
-    JUnitTestCase.assertSame(intType, _resolveFormalParameter(node, [intElement]));
+    expect(_resolveFormalParameter(node, [intElement]), same(intType));
     _listener.assertNoErrors();
   }
 
@@ -11038,7 +11371,7 @@
     TypeName typeName = AstFactory.typeName(classA, []);
     typeName.type = null;
     _resolveNode(typeName, [classA]);
-    JUnitTestCase.assertSame(classA.type, typeName.type);
+    expect(typeName.type, same(classA.type));
     _listener.assertNoErrors();
   }
 
@@ -11049,10 +11382,10 @@
     typeName.type = null;
     _resolveNode(typeName, [classA, classB]);
     InterfaceType resultType = typeName.type as InterfaceType;
-    JUnitTestCase.assertSame(classA, resultType.element);
+    expect(resultType.element, same(classA));
     List<DartType> resultArguments = resultType.typeArguments;
-    EngineTestCase.assertLength(1, resultArguments);
-    JUnitTestCase.assertSame(classB.type, resultArguments[0]);
+    expect(resultArguments, hasLength(1));
+    expect(resultArguments[0], same(classB.type));
     _listener.assertNoErrors();
   }
 
@@ -11062,10 +11395,10 @@
     typeName.type = null;
     _resolveNode(typeName, [classA]);
     InterfaceType resultType = typeName.type as InterfaceType;
-    JUnitTestCase.assertSame(classA, resultType.element);
+    expect(resultType.element, same(classA));
     List<DartType> resultArguments = resultType.typeArguments;
-    EngineTestCase.assertLength(1, resultArguments);
-    JUnitTestCase.assertSame(DynamicTypeImpl.instance, resultArguments[0]);
+    expect(resultArguments, hasLength(1));
+    expect(resultArguments[0], same(DynamicTypeImpl.instance));
     _listener.assertNoErrors();
   }
 
@@ -11073,7 +11406,7 @@
     ClassElement classA = ElementFactory.classElement2("A", []);
     TypeName typeName = AstFactory.typeName4("void", []);
     _resolveNode(typeName, [classA]);
-    JUnitTestCase.assertSame(VoidTypeImpl.instance, typeName.type);
+    expect(typeName.type, same(VoidTypeImpl.instance));
     _listener.assertNoErrors();
   }
 
@@ -11092,11 +11425,11 @@
     _resolveNode(node, definedElements);
     SimpleIdentifier exceptionParameter = node.exceptionParameter;
     if (exceptionParameter != null) {
-      JUnitTestCase.assertSame(exceptionType, exceptionParameter.staticType);
+      expect(exceptionParameter.staticType, same(exceptionType));
     }
     SimpleIdentifier stackTraceParameter = node.stackTraceParameter;
     if (stackTraceParameter != null) {
-      JUnitTestCase.assertSame(stackTraceType, stackTraceParameter.staticType);
+      expect(stackTraceParameter.staticType, same(stackTraceType));
     }
   }
 
@@ -11133,7 +11466,7 @@
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(AnalysisDeltaTest);
   runReflectiveTests(ChangeSetTest);
   runReflectiveTests(EnclosedScopeTest);
diff --git a/pkg/analyzer/test/generated/scanner_test.dart b/pkg/analyzer/test/generated/scanner_test.dart
index 1135292..de61b98 100644
--- a/pkg/analyzer/test/generated/scanner_test.dart
+++ b/pkg/analyzer/test/generated/scanner_test.dart
@@ -7,89 +7,98 @@
 
 library engine.scanner_test;
 
-import 'package:analyzer/src/generated/java_core.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/scanner.dart';
 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap;
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'test_support.dart';
 import '../reflective_tests.dart';
 
 
-class CharSequenceReaderTest extends JUnitTestCase {
+class CharSequenceReaderTest {
   void test_advance() {
     CharSequenceReader reader = new CharSequenceReader("x");
-    JUnitTestCase.assertEquals(0x78, reader.advance());
-    JUnitTestCase.assertEquals(-1, reader.advance());
-    JUnitTestCase.assertEquals(-1, reader.advance());
+    expect(reader.advance(), 0x78);
+    expect(reader.advance(), -1);
+    expect(reader.advance(), -1);
   }
 
   void test_creation() {
-    JUnitTestCase.assertNotNull(new CharSequenceReader("x"));
+    expect(new CharSequenceReader("x"), isNotNull);
   }
 
   void test_getOffset() {
     CharSequenceReader reader = new CharSequenceReader("x");
-    JUnitTestCase.assertEquals(-1, reader.offset);
+    expect(reader.offset, -1);
     reader.advance();
-    JUnitTestCase.assertEquals(0, reader.offset);
+    expect(reader.offset, 0);
     reader.advance();
-    JUnitTestCase.assertEquals(0, reader.offset);
+    expect(reader.offset, 0);
   }
 
   void test_getString() {
     CharSequenceReader reader = new CharSequenceReader("xyzzy");
     reader.offset = 3;
-    JUnitTestCase.assertEquals("yzz", reader.getString(1, 0));
-    JUnitTestCase.assertEquals("zzy", reader.getString(2, 1));
+    expect(reader.getString(1, 0), "yzz");
+    expect(reader.getString(2, 1), "zzy");
   }
 
   void test_peek() {
     CharSequenceReader reader = new CharSequenceReader("xy");
-    JUnitTestCase.assertEquals(0x78, reader.peek());
-    JUnitTestCase.assertEquals(0x78, reader.peek());
+    expect(reader.peek(), 0x78);
+    expect(reader.peek(), 0x78);
     reader.advance();
-    JUnitTestCase.assertEquals(0x79, reader.peek());
-    JUnitTestCase.assertEquals(0x79, reader.peek());
+    expect(reader.peek(), 0x79);
+    expect(reader.peek(), 0x79);
     reader.advance();
-    JUnitTestCase.assertEquals(-1, reader.peek());
-    JUnitTestCase.assertEquals(-1, reader.peek());
+    expect(reader.peek(), -1);
+    expect(reader.peek(), -1);
   }
 
   void test_setOffset() {
     CharSequenceReader reader = new CharSequenceReader("xyz");
     reader.offset = 2;
-    JUnitTestCase.assertEquals(2, reader.offset);
+    expect(reader.offset, 2);
   }
 }
 
 class IncrementalScannerTest extends EngineTestCase {
   /**
-   * The first token from the token stream resulting from parsing the original source, or
-   * `null` if [scan] has not been invoked.
+   * The first token from the token stream resulting from parsing the original
+   * source, or `null` if [scan] has not been invoked.
    */
   Token _originalTokens;
 
   /**
-   * The scanner used to perform incremental scanning, or `null` if [scan] has not been
-   * invoked.
+   * The scanner used to perform incremental scanning, or `null` if [scan] has
+   * not been invoked.
    */
   IncrementalScanner _incrementalScanner;
 
   /**
-   * The first token from the token stream resulting from performing an incremental scan, or
-   * `null` if [scan] has not been invoked.
+   * The first token from the token stream resulting from performing an
+   * incremental scan, or `null` if [scan] has not been invoked.
    */
   Token _incrementalTokens;
 
+  void fail_insert_beginning() {
+    // This is currently reporting the changed range as being from 0 to 5, but
+    // that would force us to re-parse both classes, which is clearly sub-optimal.
+    //
+    // "class B {}"
+    // "class A {} class B {}"
+    _scan("", "", "class A {} ", "class B {}");
+    _assertTokens(-1, 4, ["class", "A", "{", "}", "class", "B", "{", "}"]);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
+  }
+
   void test_delete_identifier_beginning() {
     // "abs + b;"
     // "s + b;")
     _scan("", "ab", "", "s + b;");
     _assertTokens(-1, 1, ["s", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_delete_identifier_end() {
@@ -97,7 +106,7 @@
     // "a + b;")
     _scan("a", "bs", "", " + b;");
     _assertTokens(-1, 1, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_delete_identifier_middle() {
@@ -105,7 +114,7 @@
     // "as + b;")
     _scan("a", "b", "", "s + b;");
     _assertTokens(-1, 1, ["as", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_delete_mergeTokens() {
@@ -113,24 +122,40 @@
     // "ac;")
     _scan("a", " + b + ", "", "c;");
     _assertTokens(-1, 1, ["ac", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
-  void test_insert_afterIdentifier1() {
+  void test_delete_whitespace() {
+    // "a + b + c;"
+    // "a+ b + c;")
+    _scan("a", " ", "", "+ b + c;");
+    _assertTokens(1, 2, ["a", "+", "b", "+", "c", ";"]);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
+  }
+
+  void test_insert_afterIdentifier_firstToken() {
     // "a + b;"
     // "abs + b;"
     _scan("a", "", "bs", " + b;");
     _assertTokens(-1, 1, ["abs", "+", "b", ";"]);
     _assertReplaced(1, "+");
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
-  void test_insert_afterIdentifier2() {
+  void test_insert_afterIdentifier_lastToken() {
+    // "a + b"
+    // "a + bc")
+    _scan("a + b", "", "c", "");
+    _assertTokens(1, 3, ["a", "+", "bc"]);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
+  }
+
+  void test_insert_afterIdentifier_middleToken() {
     // "a + b;"
     // "a + by;"
     _scan("a + b", "", "y", ";");
     _assertTokens(1, 3, ["a", "+", "by", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_beforeIdentifier() {
@@ -138,7 +163,7 @@
     // "a + xb;")
     _scan("a + ", "", "x", "b;");
     _assertTokens(1, 3, ["a", "+", "xb", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_beforeIdentifier_firstToken() {
@@ -146,7 +171,7 @@
     // "xa + b;"
     _scan("", "", "x", "a + b;");
     _assertTokens(-1, 1, ["xa", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_convertOneFunctionToTwo() {
@@ -154,7 +179,15 @@
     // "f() => 0; g() {}"
     _scan("f()", "", " => 0; g()", " {}");
     _assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
+  }
+
+  void test_insert_convertOneFunctionToTwo_overlap() {
+    // "f() {}"
+    // "f() {} g() {}"
+    _scan("f() {", "", "} g() {", "}");
+    _assertTokens(4, 10, ["f", "(", ")", "{", "}", "g", "(", ")", "{", "}"]);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_end() {
@@ -162,7 +195,7 @@
     // "class A {} class B {}"
     _scan("class A {}", "", " class B {}", "");
     _assertTokens(3, 8, ["class", "A", "{", "}", "class", "B", "{", "}"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_insideIdentifier() {
@@ -170,24 +203,24 @@
     // "cow.b;"
     _scan("co", "", "w.", "b;");
     _assertTokens(-1, 3, ["cow", ".", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
-  void test_insert_newIdentifier1() {
-    // "a;  c;"
-    // "a; b c;"
-    _scan("a; ", "", "b", " c;");
-    _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
-  }
-
-  void test_insert_newIdentifier2() {
-    // "a;  c;"
-    // "a;b  c;"
-    _scan("a;", "", "b", "  c;");
+  void test_insert_newIdentifier_noSpaceBefore() {
+    // "a; c;"
+    // "a;b c;"
+    _scan("a;", "", "b", " c;");
     _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
     _assertReplaced(1, ";");
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
+  }
+
+  void test_insert_newIdentifier_spaceBefore() {
+    // "a; c;"
+    // "a; b c;"
+    _scan("a; ", "", "b ", "c;");
+    _assertTokens(1, 3, ["a", ";", "b", "c", ";"]);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_period() {
@@ -197,27 +230,27 @@
     _assertTokens(2, 4, ["a", "+", "b", ".", ";"]);
   }
 
-  void test_insert_period_betweenIdentifiers1() {
+  void test_insert_period_betweenIdentifiers_left() {
     // "a b;"
     // "a. b;"
     _scan("a", "", ".", " b;");
     _assertTokens(0, 2, ["a", ".", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
-  void test_insert_period_betweenIdentifiers2() {
-    // "a b;"
-    // "a .b;"
-    _scan("a ", "", ".", "b;");
-    _assertTokens(0, 2, ["a", ".", "b", ";"]);
-  }
-
-  void test_insert_period_betweenIdentifiers3() {
+  void test_insert_period_betweenIdentifiers_middle() {
     // "a  b;"
     // "a . b;"
     _scan("a ", "", ".", " b;");
     _assertTokens(0, 2, ["a", ".", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
+  }
+
+  void test_insert_period_betweenIdentifiers_right() {
+    // "a b;"
+    // "a .b;"
+    _scan("a ", "", ".", "b;");
+    _assertTokens(0, 2, ["a", ".", "b", ";"]);
   }
 
   void test_insert_period_insideExistingIdentifier() {
@@ -225,7 +258,7 @@
     // "a.b;"
     _scan("a", "", ".", "b;");
     _assertTokens(-1, 3, ["a", ".", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_insert_periodAndIdentifier() {
@@ -240,7 +273,7 @@
     // " a + b;"
     _scan("", "", " ", "a + b;");
     _assertTokens(0, 1, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   void test_insert_whitespace_betweenTokens() {
@@ -248,7 +281,7 @@
     // "a  + b;"
     _scan("a ", "", " ", "+ b;");
     _assertTokens(1, 2, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   void test_insert_whitespace_end_afterToken() {
@@ -256,7 +289,7 @@
     // "a + b; "
     _scan("a + b;", "", " ", "");
     _assertTokens(3, 4, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   void test_insert_whitespace_end_afterWhitespace() {
@@ -264,15 +297,18 @@
     // "a + b;  "
     _scan("a + b; ", "", " ", "");
     _assertTokens(3, 4, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   void test_insert_whitespace_withMultipleComments() {
     // "//comment", "//comment2", "a + b;"
     // "//comment", "//comment2", "a  + b;"
-    _scan(EngineTestCase.createSource(["//comment", "//comment2", "a"]), "", " ", " + b;");
+    _scan(r'''
+//comment
+//comment2
+a''', "", " ", " + b;");
     _assertTokens(1, 2, ["a", "+", "b", ";"]);
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   void test_replace_identifier_beginning() {
@@ -280,7 +316,7 @@
     // "fell + b;")
     _scan("", "b", "f", "ell + b;");
     _assertTokens(-1, 1, ["fell", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_replace_identifier_end() {
@@ -288,7 +324,7 @@
     // "belt + b;")
     _scan("bel", "l", "t", " + b;");
     _assertTokens(-1, 1, ["belt", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_replace_identifier_middle() {
@@ -296,7 +332,7 @@
     // "frost + b;")
     _scan("f", "ir", "ro", "st + b;");
     _assertTokens(-1, 1, ["frost", "+", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_replace_multiple_partialFirstAndLast() {
@@ -304,7 +340,7 @@
     // "ab * ab;")
     _scan("a", "a + b", "b * a", "b;");
     _assertTokens(-1, 3, ["ab", "*", "ab", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_replace_operator_oneForMany() {
@@ -312,7 +348,7 @@
     // "a * c - b;")
     _scan("a ", "+", "* c -", " b;");
     _assertTokens(0, 4, ["a", "*", "c", "-", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_replace_operator_oneForOne() {
@@ -320,7 +356,7 @@
     // "a * b;")
     _scan("a ", "+", "*", " b;");
     _assertTokens(0, 2, ["a", "*", "b", ";"]);
-    JUnitTestCase.assertTrue(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isTrue);
   }
 
   void test_tokenMap() {
@@ -331,45 +367,45 @@
     Token oldToken = _originalTokens;
     while (oldToken.type != TokenType.EOF) {
       Token newToken = tokenMap.get(oldToken);
-      JUnitTestCase.assertNotSame(oldToken, newToken);
-      JUnitTestCase.assertSame(oldToken.type, newToken.type);
-      JUnitTestCase.assertEquals(oldToken.lexeme, newToken.lexeme);
+      expect(newToken, isNot(same(oldToken)));
+      expect(newToken.type, same(oldToken.type));
+      expect(newToken.lexeme, oldToken.lexeme);
       oldToken = oldToken.next;
     }
-    JUnitTestCase.assertFalse(_incrementalScanner.hasNonWhitespaceChange);
+    expect(_incrementalScanner.hasNonWhitespaceChange, isFalse);
   }
 
   /**
-   * Assert that the token at the given offset was replaced with a new token having the given
-   * lexeme.
-   *
-   * @param tokenOffset the offset of the token being tested
-   * @param lexeme the expected lexeme of the new token
+   * Assert that the token at the given [offset] was replaced with a new token
+   * having the given [lexeme].
    */
-  void _assertReplaced(int tokenOffset, String lexeme) {
+  void _assertReplaced(int offset, String lexeme) {
     Token oldToken = _originalTokens;
-    for (int i = 0; i < tokenOffset; i++) {
+    for (int i = 0; i < offset; i++) {
       oldToken = oldToken.next;
     }
-    JUnitTestCase.assertEquals(lexeme, oldToken.lexeme);
+    expect(oldToken.lexeme, lexeme);
     Token newToken = _incrementalScanner.tokenMap.get(oldToken);
-    JUnitTestCase.assertNotNull(newToken);
-    JUnitTestCase.assertEquals(lexeme, newToken.lexeme);
-    JUnitTestCase.assertNotSame(oldToken, newToken);
+    expect(newToken, isNotNull);
+    expect(newToken.lexeme, lexeme);
+    expect(newToken, isNot(same(oldToken)));
   }
 
   /**
-   * Assert that the result of the incremental scan matches the given list of lexemes and that the
-   * left and right tokens correspond to the tokens at the given indices.
-   *
-   * @param leftIndex the expected index of the left token
-   * @param rightIndex the expected index of the right token
-   * @param lexemes the expected lexemes of the resulting tokens
+   * Assert that the result of the incremental scan matches the given list of
+   * [lexemes] and that the left and right tokens correspond to the tokens at
+   * the [leftIndex] and [rightIndex].
    */
   void _assertTokens(int leftIndex, int rightIndex, List<String> lexemes) {
     int count = lexemes.length;
-    JUnitTestCase.assertTrueMsg("Invalid left index", leftIndex >= -1 && leftIndex < count);
-    JUnitTestCase.assertTrueMsg("Invalid right index", rightIndex >= 0 && rightIndex <= count);
+    expect(
+        leftIndex >= -1 && leftIndex < count,
+        isTrue,
+        reason: "Invalid left index");
+    expect(
+        rightIndex >= 0 && rightIndex <= count,
+        isTrue,
+        reason: "Invalid right index");
     Token leftToken = null;
     Token rightToken = null;
     Token token = _incrementalTokens;
@@ -377,7 +413,7 @@
       leftToken = token.previous;
     }
     for (int i = 0; i < count; i++) {
-      JUnitTestCase.assertEquals(lexemes[i], token.lexeme);
+      expect(token.lexeme, lexemes[i]);
       if (i == leftIndex) {
         leftToken = token;
       }
@@ -389,76 +425,114 @@
     if (rightIndex >= count) {
       rightToken = token;
     }
-    JUnitTestCase.assertSameMsg("Too many tokens", TokenType.EOF, token.type);
+    expect(token.type, same(TokenType.EOF), reason: "Too many tokens");
     if (leftIndex >= 0) {
-      JUnitTestCase.assertNotNull(leftToken);
+      expect(leftToken, isNotNull);
     }
-    JUnitTestCase.assertSameMsg("Invalid left token", leftToken, _incrementalScanner.leftToken);
+    expect(
+        _incrementalScanner.leftToken,
+        same(leftToken),
+        reason: "Invalid left token");
     if (rightIndex >= 0) {
-      JUnitTestCase.assertNotNull(rightToken);
+      expect(rightToken, isNotNull);
     }
-    JUnitTestCase.assertSameMsg("Invalid right token", rightToken, _incrementalScanner.rightToken);
+    expect(
+        _incrementalScanner.rightToken,
+        same(rightToken),
+        reason: "Invalid right token");
   }
 
   /**
-   * Given a description of the original and modified contents, perform an incremental scan of the
-   * two pieces of text. Verify that the incremental scan produced the same tokens as those that
-   * would be produced by a full scan of the new contents.
+   * Given a description of the original and modified contents, perform an
+   * incremental scan of the two pieces of text. Verify that the incremental
+   * scan produced the same tokens as those that would be produced by a full
+   * scan of the new contents.
    *
-   * @param prefix the unchanged text before the edit region
-   * @param removed the text that was removed from the original contents
-   * @param added the text that was added to the modified contents
-   * @param suffix the unchanged text after the edit region
+   * The original content is the concatenation of the [prefix], [removed] and
+   * [suffix] fragments. The modeified content is the concatenation of the
+   * [prefix], [added] and [suffix] fragments.
    */
   void _scan(String prefix, String removed, String added, String suffix) {
     //
     // Compute the information needed to perform the test.
     //
-    String originalContents = "${prefix}${removed}${suffix}";
-    String modifiedContents = "${prefix}${added}${suffix}";
+    String originalContents = "$prefix$removed$suffix";
+    String modifiedContents = "$prefix$added$suffix";
     int replaceStart = prefix.length;
     Source source = new TestSource();
     //
     // Scan the original contents.
     //
     GatheringErrorListener originalListener = new GatheringErrorListener();
-    Scanner originalScanner = new Scanner(source, new CharSequenceReader(originalContents), originalListener);
+    Scanner originalScanner = new Scanner(
+        source,
+        new CharSequenceReader(originalContents),
+        originalListener);
     _originalTokens = originalScanner.tokenize();
-    JUnitTestCase.assertNotNull(_originalTokens);
+    expect(_originalTokens, isNotNull);
     //
     // Scan the modified contents.
     //
     GatheringErrorListener modifiedListener = new GatheringErrorListener();
-    Scanner modifiedScanner = new Scanner(source, new CharSequenceReader(modifiedContents), modifiedListener);
+    Scanner modifiedScanner = new Scanner(
+        source,
+        new CharSequenceReader(modifiedContents),
+        modifiedListener);
     Token modifiedTokens = modifiedScanner.tokenize();
-    JUnitTestCase.assertNotNull(modifiedTokens);
+    expect(modifiedTokens, isNotNull);
     //
     // Incrementally scan the modified contents.
     //
     GatheringErrorListener incrementalListener = new GatheringErrorListener();
-    _incrementalScanner = new IncrementalScanner(source, new CharSequenceReader(modifiedContents), incrementalListener);
-    _incrementalTokens = _incrementalScanner.rescan(_originalTokens, replaceStart, removed.length, added.length);
+    _incrementalScanner = new IncrementalScanner(
+        source,
+        new CharSequenceReader(modifiedContents),
+        incrementalListener);
+    _incrementalTokens = _incrementalScanner.rescan(
+        _originalTokens,
+        replaceStart,
+        removed.length,
+        added.length);
     //
-    // Validate that the results of the incremental scan are the same as the full scan of the
-    // modified source.
+    // Validate that the results of the incremental scan are the same as the
+    // full scan of the modified source.
     //
     Token incrementalToken = _incrementalTokens;
-    JUnitTestCase.assertNotNull(incrementalToken);
-    while (incrementalToken.type != TokenType.EOF && modifiedTokens.type != TokenType.EOF) {
-      JUnitTestCase.assertSameMsg("Wrong type for token", modifiedTokens.type, incrementalToken.type);
-      JUnitTestCase.assertEqualsMsg("Wrong offset for token", modifiedTokens.offset, incrementalToken.offset);
-      JUnitTestCase.assertEqualsMsg("Wrong length for token", modifiedTokens.length, incrementalToken.length);
-      JUnitTestCase.assertEqualsMsg("Wrong lexeme for token", modifiedTokens.lexeme, incrementalToken.lexeme);
+    expect(incrementalToken, isNotNull);
+    while (incrementalToken.type != TokenType.EOF
+        && modifiedTokens.type != TokenType.EOF) {
+      expect(
+          incrementalToken.type,
+          same(modifiedTokens.type),
+          reason: "Wrong type for token");
+      expect(
+          incrementalToken.offset,
+              modifiedTokens.offset,
+              reason: "Wrong offset for token");
+      expect(
+          incrementalToken.length,
+              modifiedTokens.length,
+              reason: "Wrong length for token");
+      expect(
+          incrementalToken.lexeme,
+              modifiedTokens.lexeme,
+              reason: "Wrong lexeme for token");
       incrementalToken = incrementalToken.next;
       modifiedTokens = modifiedTokens.next;
     }
-    JUnitTestCase.assertSameMsg("Too many tokens", TokenType.EOF, incrementalToken.type);
-    JUnitTestCase.assertSameMsg("Not enough tokens", TokenType.EOF, modifiedTokens.type);
+    expect(
+        incrementalToken.type,
+        same(TokenType.EOF),
+        reason: "Too many tokens");
+    expect(
+        modifiedTokens.type,
+        same(TokenType.EOF),
+        reason: "Not enough tokens");
     // TODO(brianwilkerson) Verify that the errors are correct?
   }
 }
 
-class KeywordStateTest extends JUnitTestCase {
+class KeywordStateTest {
   void test_KeywordState() {
     //
     // Generate the test data to be scanned.
@@ -487,21 +561,21 @@
       }
       if (i < keywordCount) {
         // keyword
-        JUnitTestCase.assertNotNull(state);
-        JUnitTestCase.assertNotNull(state.keyword());
-        JUnitTestCase.assertEquals(keywords[i], state.keyword());
+        expect(state, isNotNull);
+        expect(state.keyword(), isNotNull);
+        expect(state.keyword(), keywords[i]);
       } else if (i < keywordCount * 2) {
         // keyword + "x"
-        JUnitTestCase.assertNull(state);
+        expect(state, isNull);
       } else {
         // keyword.substring(0, keyword.length() - 1)
-        JUnitTestCase.assertNotNull(state);
+        expect(state, isNotNull);
       }
     }
   }
 }
 
-class ScannerTest extends JUnitTestCase {
+class ScannerTest {
   void fail_incomplete_string_interpolation() {
     // https://code.google.com/p/dart/issues/detail?id=18073
     _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"foo \${bar", [
@@ -586,8 +660,8 @@
     Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ "), AnalysisErrorListener.NULL_LISTENER);
     scanner.preserveComments = false;
     Token token = scanner.tokenize();
-    JUnitTestCase.assertNotNull(token);
-    JUnitTestCase.assertNull(token.precedingComments);
+    expect(token, isNotNull);
+    expect(token.precedingComments, isNull);
   }
 
   void test_comment_multi() {
@@ -1054,9 +1128,9 @@
     scanner.setSourceStart(3, 9);
     scanner.tokenize();
     List<int> lineStarts = scanner.lineStarts;
-    JUnitTestCase.assertNotNull(lineStarts);
-    JUnitTestCase.assertEquals(3, lineStarts.length);
-    JUnitTestCase.assertEquals(33, lineStarts[2]);
+    expect(lineStarts, isNotNull);
+    expect(lineStarts.length, 3);
+    expect(lineStarts[2], 33);
   }
 
   void test_slash() {
@@ -1078,11 +1152,11 @@
   void test_startAndEnd() {
     Token token = _scan("a");
     Token previous = token.previous;
-    JUnitTestCase.assertEquals(token, previous.next);
-    JUnitTestCase.assertEquals(previous, previous.previous);
+    expect(previous.next, token);
+    expect(previous.previous, previous);
     Token next = token.next;
-    JUnitTestCase.assertEquals(next, next.next);
-    JUnitTestCase.assertEquals(token, next.previous);
+    expect(next.next, next);
+    expect(next.previous, token);
   }
 
   void test_string_multi_double() {
@@ -1170,7 +1244,7 @@
 
   void test_string_raw_simple_unterminated_eol() {
     String source = "r'string";
-    _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "${source}\n", [new StringToken(TokenType.STRING, source, 0)]);
+    _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "$source\n", [new StringToken(TokenType.STRING, source, 0)]);
   }
 
   void test_string_simple_double() {
@@ -1264,7 +1338,7 @@
 
   void test_string_simple_unterminated_eol() {
     String source = "'string";
-    _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "${source}\r", [new StringToken(TokenType.STRING, source, 0)]);
+    _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "$source\r", [new StringToken(TokenType.STRING, source, 0)]);
   }
 
   void test_string_simple_unterminated_interpolation_block() {
@@ -1305,26 +1379,26 @@
     // Test without a trailing end-of-line marker
     //
     Token token = _scan(source);
-    JUnitTestCase.assertNotNull(token);
-    JUnitTestCase.assertEquals(TokenType.EOF, token.type);
+    expect(token, isNotNull);
+    expect(token.type, TokenType.EOF);
     Token comment = token.precedingComments;
-    JUnitTestCase.assertNotNull(comment);
-    JUnitTestCase.assertEquals(commentType, comment.type);
-    JUnitTestCase.assertEquals(0, comment.offset);
-    JUnitTestCase.assertEquals(source.length, comment.length);
-    JUnitTestCase.assertEquals(source, comment.lexeme);
+    expect(comment, isNotNull);
+    expect(comment.type, commentType);
+    expect(comment.offset, 0);
+    expect(comment.length, source.length);
+    expect(comment.lexeme, source);
     //
     // Test with a trailing end-of-line marker
     //
-    token = _scan("${source}\n");
-    JUnitTestCase.assertNotNull(token);
-    JUnitTestCase.assertEquals(TokenType.EOF, token.type);
+    token = _scan("$source\n");
+    expect(token, isNotNull);
+    expect(token.type, TokenType.EOF);
     comment = token.precedingComments;
-    JUnitTestCase.assertNotNull(comment);
-    JUnitTestCase.assertEquals(commentType, comment.type);
-    JUnitTestCase.assertEquals(0, comment.offset);
-    JUnitTestCase.assertEquals(source.length, comment.length);
-    JUnitTestCase.assertEquals(source, comment.lexeme);
+    expect(comment, isNotNull);
+    expect(comment.type, commentType);
+    expect(comment.offset, 0);
+    expect(comment.length, source.length);
+    expect(comment.lexeme, source);
   }
 
   /**
@@ -1364,24 +1438,24 @@
    */
   void _assertKeywordToken(String source) {
     Token token = _scan(source);
-    JUnitTestCase.assertNotNull(token);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type);
-    JUnitTestCase.assertEquals(0, token.offset);
-    JUnitTestCase.assertEquals(source.length, token.length);
-    JUnitTestCase.assertEquals(source, token.lexeme);
+    expect(token, isNotNull);
+    expect(token.type, TokenType.KEYWORD);
+    expect(token.offset, 0);
+    expect(token.length, source.length);
+    expect(token.lexeme, source);
     Object value = token.value();
-    JUnitTestCase.assertTrue(value is Keyword);
-    JUnitTestCase.assertEquals(source, (value as Keyword).syntax);
-    token = _scan(" ${source} ");
-    JUnitTestCase.assertNotNull(token);
-    JUnitTestCase.assertEquals(TokenType.KEYWORD, token.type);
-    JUnitTestCase.assertEquals(1, token.offset);
-    JUnitTestCase.assertEquals(source.length, token.length);
-    JUnitTestCase.assertEquals(source, token.lexeme);
+    expect(value is Keyword, isTrue);
+    expect((value as Keyword).syntax, source);
+    token = _scan(" $source ");
+    expect(token, isNotNull);
+    expect(token.type, TokenType.KEYWORD);
+    expect(token.offset, 1);
+    expect(token.length, source.length);
+    expect(token.lexeme, source);
     value = token.value();
-    JUnitTestCase.assertTrue(value is Keyword);
-    JUnitTestCase.assertEquals(source, (value as Keyword).syntax);
-    JUnitTestCase.assertEquals(TokenType.EOF, token.next.type);
+    expect(value is Keyword, isTrue);
+    expect((value as Keyword).syntax, source);
+    expect(token.next.type, TokenType.EOF);
   }
 
   void _assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expectedLocations) {
@@ -1389,11 +1463,11 @@
     _scanWithListener(source, listener);
     listener.assertNoErrors();
     LineInfo info = listener.getLineInfo(new TestSource());
-    JUnitTestCase.assertNotNull(info);
+    expect(info, isNotNull);
     for (ScannerTest_ExpectedLocation expectedLocation in expectedLocations) {
       LineInfo_Location location = info.getLocation(expectedLocation._offset);
-      JUnitTestCase.assertEquals(expectedLocation._lineNumber, location.lineNumber);
-      JUnitTestCase.assertEquals(expectedLocation._columnNumber, location.columnNumber);
+      expect(location.lineNumber, expectedLocation._lineNumber);
+      expect(location.columnNumber, expectedLocation._columnNumber);
     }
   }
 
@@ -1405,44 +1479,44 @@
    */
   Token _assertToken(TokenType expectedType, String source) {
     Token originalToken = _scan(source);
-    JUnitTestCase.assertNotNull(originalToken);
-    JUnitTestCase.assertEquals(expectedType, originalToken.type);
-    JUnitTestCase.assertEquals(0, originalToken.offset);
-    JUnitTestCase.assertEquals(source.length, originalToken.length);
-    JUnitTestCase.assertEquals(source, originalToken.lexeme);
+    expect(originalToken, isNotNull);
+    expect(originalToken.type, expectedType);
+    expect(originalToken.offset, 0);
+    expect(originalToken.length, source.length);
+    expect(originalToken.lexeme, source);
     if (expectedType == TokenType.SCRIPT_TAG) {
       // Adding space before the script tag is not allowed, and adding text at the end changes nothing.
       return originalToken;
     } else if (expectedType == TokenType.SINGLE_LINE_COMMENT) {
       // Adding space to an end-of-line comment changes the comment.
-      Token tokenWithSpaces = _scan(" ${source}");
-      JUnitTestCase.assertNotNull(tokenWithSpaces);
-      JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type);
-      JUnitTestCase.assertEquals(1, tokenWithSpaces.offset);
-      JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length);
-      JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme);
+      Token tokenWithSpaces = _scan(" $source");
+      expect(tokenWithSpaces, isNotNull);
+      expect(tokenWithSpaces.type, expectedType);
+      expect(tokenWithSpaces.offset, 1);
+      expect(tokenWithSpaces.length, source.length);
+      expect(tokenWithSpaces.lexeme, source);
       return originalToken;
     } else if (expectedType == TokenType.INT || expectedType == TokenType.DOUBLE) {
       Token tokenWithLowerD = _scan("${source}d");
-      JUnitTestCase.assertNotNull(tokenWithLowerD);
-      JUnitTestCase.assertEquals(expectedType, tokenWithLowerD.type);
-      JUnitTestCase.assertEquals(0, tokenWithLowerD.offset);
-      JUnitTestCase.assertEquals(source.length, tokenWithLowerD.length);
-      JUnitTestCase.assertEquals(source, tokenWithLowerD.lexeme);
+      expect(tokenWithLowerD, isNotNull);
+      expect(tokenWithLowerD.type, expectedType);
+      expect(tokenWithLowerD.offset, 0);
+      expect(tokenWithLowerD.length, source.length);
+      expect(tokenWithLowerD.lexeme, source);
       Token tokenWithUpperD = _scan("${source}D");
-      JUnitTestCase.assertNotNull(tokenWithUpperD);
-      JUnitTestCase.assertEquals(expectedType, tokenWithUpperD.type);
-      JUnitTestCase.assertEquals(0, tokenWithUpperD.offset);
-      JUnitTestCase.assertEquals(source.length, tokenWithUpperD.length);
-      JUnitTestCase.assertEquals(source, tokenWithUpperD.lexeme);
+      expect(tokenWithUpperD, isNotNull);
+      expect(tokenWithUpperD.type, expectedType);
+      expect(tokenWithUpperD.offset, 0);
+      expect(tokenWithUpperD.length, source.length);
+      expect(tokenWithUpperD.lexeme, source);
     }
-    Token tokenWithSpaces = _scan(" ${source} ");
-    JUnitTestCase.assertNotNull(tokenWithSpaces);
-    JUnitTestCase.assertEquals(expectedType, tokenWithSpaces.type);
-    JUnitTestCase.assertEquals(1, tokenWithSpaces.offset);
-    JUnitTestCase.assertEquals(source.length, tokenWithSpaces.length);
-    JUnitTestCase.assertEquals(source, tokenWithSpaces.lexeme);
-    JUnitTestCase.assertEquals(TokenType.EOF, originalToken.next.type);
+    Token tokenWithSpaces = _scan(" $source ");
+    expect(tokenWithSpaces, isNotNull);
+    expect(tokenWithSpaces.type, expectedType);
+    expect(tokenWithSpaces.offset, 1);
+    expect(tokenWithSpaces.length, source.length);
+    expect(tokenWithSpaces.lexeme, source);
+    expect(originalToken.next.type, TokenType.EOF);
     return originalToken;
   }
 
@@ -1459,18 +1533,18 @@
   }
 
   void _checkTokens(Token firstToken, List<Token> expectedTokens) {
-    JUnitTestCase.assertNotNull(firstToken);
+    expect(firstToken, isNotNull);
     Token token = firstToken;
     for (int i = 0; i < expectedTokens.length; i++) {
       Token expectedToken = expectedTokens[i];
-      JUnitTestCase.assertEqualsMsg("Wrong type for token ${i}", expectedToken.type, token.type);
-      JUnitTestCase.assertEqualsMsg("Wrong offset for token ${i}", expectedToken.offset, token.offset);
-      JUnitTestCase.assertEqualsMsg("Wrong length for token ${i}", expectedToken.length, token.length);
-      JUnitTestCase.assertEqualsMsg("Wrong lexeme for token ${i}", expectedToken.lexeme, token.lexeme);
+      expect(token.type, expectedToken.type, reason: "Wrong type for token $i");
+      expect(token.offset, expectedToken.offset, reason: "Wrong offset for token $i");
+      expect(token.length, expectedToken.length, reason: "Wrong length for token $i");
+      expect(token.lexeme, expectedToken.lexeme, reason: "Wrong lexeme for token $i");
       token = token.next;
-      JUnitTestCase.assertNotNull(token);
+      expect(token, isNotNull);
     }
-    JUnitTestCase.assertEquals(TokenType.EOF, token.type);
+    expect(token.type, TokenType.EOF);
   }
 
   Token _scan(String source) {
@@ -1513,14 +1587,14 @@
    * @param token the first token in the stream of tokens to be validated
    */
   void validate(Token token) {
-    JavaStringBuilder builder = new JavaStringBuilder();
-    _validateStream(builder, token);
-    if (builder.length > 0) {
-      JUnitTestCase.fail(builder.toString());
+    StringBuffer buffer = new StringBuffer();
+    _validateStream(buffer, token);
+    if (buffer.length > 0) {
+      fail(buffer.toString());
     }
   }
 
-  void _validateStream(JavaStringBuilder builder, Token token) {
+  void _validateStream(StringBuffer buffer, Token token) {
     if (token == null) {
       return;
     }
@@ -1528,24 +1602,24 @@
     int previousEnd = -1;
     Token currentToken = token;
     while (currentToken != null && currentToken.type != TokenType.EOF) {
-      _validateStream(builder, currentToken.precedingComments);
+      _validateStream(buffer, currentToken.precedingComments);
       TokenType type = currentToken.type;
       if (type == TokenType.OPEN_CURLY_BRACKET || type == TokenType.OPEN_PAREN || type == TokenType.OPEN_SQUARE_BRACKET || type == TokenType.STRING_INTERPOLATION_EXPRESSION) {
         if (currentToken is! BeginToken) {
-          builder.append("\r\nExpected BeginToken, found ");
-          builder.append(currentToken.runtimeType.toString());
-          builder.append(" ");
-          _writeToken(builder, currentToken);
+          buffer.write("\r\nExpected BeginToken, found ");
+          buffer.write(currentToken.runtimeType.toString());
+          buffer.write(" ");
+          _writeToken(buffer, currentToken);
         }
       }
       int currentStart = currentToken.offset;
       int currentLength = currentToken.length;
       int currentEnd = currentStart + currentLength - 1;
       if (currentStart <= previousEnd) {
-        builder.append("\r\nInvalid token sequence: ");
-        _writeToken(builder, previousToken);
-        builder.append(" followed by ");
-        _writeToken(builder, currentToken);
+        buffer.write("\r\nInvalid token sequence: ");
+        _writeToken(buffer, previousToken);
+        buffer.write(" followed by ");
+        _writeToken(buffer, currentToken);
       }
       previousEnd = currentEnd;
       previousToken = currentToken;
@@ -1553,88 +1627,88 @@
     }
   }
 
-  void _writeToken(JavaStringBuilder builder, Token token) {
-    builder.append("[");
-    builder.append(token.type);
-    builder.append(", '");
-    builder.append(token.lexeme);
-    builder.append("', ");
-    builder.append(token.offset);
-    builder.append(", ");
-    builder.append(token.length);
-    builder.append("]");
+  void _writeToken(StringBuffer buffer, Token token) {
+    buffer.write("[");
+    buffer.write(token.type);
+    buffer.write(", '");
+    buffer.write(token.lexeme);
+    buffer.write("', ");
+    buffer.write(token.offset);
+    buffer.write(", ");
+    buffer.write(token.length);
+    buffer.write("]");
   }
 }
 
 class TokenTypeTest extends EngineTestCase {
   void test_isOperator() {
-    JUnitTestCase.assertTrue(TokenType.AMPERSAND.isOperator);
-    JUnitTestCase.assertTrue(TokenType.AMPERSAND_AMPERSAND.isOperator);
-    JUnitTestCase.assertTrue(TokenType.AMPERSAND_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.BANG.isOperator);
-    JUnitTestCase.assertTrue(TokenType.BANG_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.BAR.isOperator);
-    JUnitTestCase.assertTrue(TokenType.BAR_BAR.isOperator);
-    JUnitTestCase.assertTrue(TokenType.BAR_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.CARET.isOperator);
-    JUnitTestCase.assertTrue(TokenType.CARET_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.EQ_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.GT.isOperator);
-    JUnitTestCase.assertTrue(TokenType.GT_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.GT_GT.isOperator);
-    JUnitTestCase.assertTrue(TokenType.GT_GT_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.INDEX.isOperator);
-    JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.IS.isOperator);
-    JUnitTestCase.assertTrue(TokenType.LT.isOperator);
-    JUnitTestCase.assertTrue(TokenType.LT_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.LT_LT.isOperator);
-    JUnitTestCase.assertTrue(TokenType.LT_LT_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.MINUS.isOperator);
-    JUnitTestCase.assertTrue(TokenType.MINUS_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.MINUS_MINUS.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PERCENT.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PERCENT_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PERIOD_PERIOD.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PLUS.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PLUS_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.PLUS_PLUS.isOperator);
-    JUnitTestCase.assertTrue(TokenType.QUESTION.isOperator);
-    JUnitTestCase.assertTrue(TokenType.SLASH.isOperator);
-    JUnitTestCase.assertTrue(TokenType.SLASH_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.STAR.isOperator);
-    JUnitTestCase.assertTrue(TokenType.STAR_EQ.isOperator);
-    JUnitTestCase.assertTrue(TokenType.TILDE.isOperator);
-    JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isOperator);
-    JUnitTestCase.assertTrue(TokenType.TILDE_SLASH_EQ.isOperator);
+    expect(TokenType.AMPERSAND.isOperator, isTrue);
+    expect(TokenType.AMPERSAND_AMPERSAND.isOperator, isTrue);
+    expect(TokenType.AMPERSAND_EQ.isOperator, isTrue);
+    expect(TokenType.BANG.isOperator, isTrue);
+    expect(TokenType.BANG_EQ.isOperator, isTrue);
+    expect(TokenType.BAR.isOperator, isTrue);
+    expect(TokenType.BAR_BAR.isOperator, isTrue);
+    expect(TokenType.BAR_EQ.isOperator, isTrue);
+    expect(TokenType.CARET.isOperator, isTrue);
+    expect(TokenType.CARET_EQ.isOperator, isTrue);
+    expect(TokenType.EQ.isOperator, isTrue);
+    expect(TokenType.EQ_EQ.isOperator, isTrue);
+    expect(TokenType.GT.isOperator, isTrue);
+    expect(TokenType.GT_EQ.isOperator, isTrue);
+    expect(TokenType.GT_GT.isOperator, isTrue);
+    expect(TokenType.GT_GT_EQ.isOperator, isTrue);
+    expect(TokenType.INDEX.isOperator, isTrue);
+    expect(TokenType.INDEX_EQ.isOperator, isTrue);
+    expect(TokenType.IS.isOperator, isTrue);
+    expect(TokenType.LT.isOperator, isTrue);
+    expect(TokenType.LT_EQ.isOperator, isTrue);
+    expect(TokenType.LT_LT.isOperator, isTrue);
+    expect(TokenType.LT_LT_EQ.isOperator, isTrue);
+    expect(TokenType.MINUS.isOperator, isTrue);
+    expect(TokenType.MINUS_EQ.isOperator, isTrue);
+    expect(TokenType.MINUS_MINUS.isOperator, isTrue);
+    expect(TokenType.PERCENT.isOperator, isTrue);
+    expect(TokenType.PERCENT_EQ.isOperator, isTrue);
+    expect(TokenType.PERIOD_PERIOD.isOperator, isTrue);
+    expect(TokenType.PLUS.isOperator, isTrue);
+    expect(TokenType.PLUS_EQ.isOperator, isTrue);
+    expect(TokenType.PLUS_PLUS.isOperator, isTrue);
+    expect(TokenType.QUESTION.isOperator, isTrue);
+    expect(TokenType.SLASH.isOperator, isTrue);
+    expect(TokenType.SLASH_EQ.isOperator, isTrue);
+    expect(TokenType.STAR.isOperator, isTrue);
+    expect(TokenType.STAR_EQ.isOperator, isTrue);
+    expect(TokenType.TILDE.isOperator, isTrue);
+    expect(TokenType.TILDE_SLASH.isOperator, isTrue);
+    expect(TokenType.TILDE_SLASH_EQ.isOperator, isTrue);
   }
 
   void test_isUserDefinableOperator() {
-    JUnitTestCase.assertTrue(TokenType.AMPERSAND.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.BAR.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.CARET.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.EQ_EQ.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.GT.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.GT_EQ.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.GT_GT.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.INDEX.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.INDEX_EQ.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.LT.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.LT_EQ.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.LT_LT.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.MINUS.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.PERCENT.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.PLUS.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.SLASH.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.STAR.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.TILDE.isUserDefinableOperator);
-    JUnitTestCase.assertTrue(TokenType.TILDE_SLASH.isUserDefinableOperator);
+    expect(TokenType.AMPERSAND.isUserDefinableOperator, isTrue);
+    expect(TokenType.BAR.isUserDefinableOperator, isTrue);
+    expect(TokenType.CARET.isUserDefinableOperator, isTrue);
+    expect(TokenType.EQ_EQ.isUserDefinableOperator, isTrue);
+    expect(TokenType.GT.isUserDefinableOperator, isTrue);
+    expect(TokenType.GT_EQ.isUserDefinableOperator, isTrue);
+    expect(TokenType.GT_GT.isUserDefinableOperator, isTrue);
+    expect(TokenType.INDEX.isUserDefinableOperator, isTrue);
+    expect(TokenType.INDEX_EQ.isUserDefinableOperator, isTrue);
+    expect(TokenType.LT.isUserDefinableOperator, isTrue);
+    expect(TokenType.LT_EQ.isUserDefinableOperator, isTrue);
+    expect(TokenType.LT_LT.isUserDefinableOperator, isTrue);
+    expect(TokenType.MINUS.isUserDefinableOperator, isTrue);
+    expect(TokenType.PERCENT.isUserDefinableOperator, isTrue);
+    expect(TokenType.PLUS.isUserDefinableOperator, isTrue);
+    expect(TokenType.SLASH.isUserDefinableOperator, isTrue);
+    expect(TokenType.STAR.isUserDefinableOperator, isTrue);
+    expect(TokenType.TILDE.isUserDefinableOperator, isTrue);
+    expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue);
   }
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(CharSequenceReaderTest);
   runReflectiveTests(IncrementalScannerTest);
   runReflectiveTests(KeywordStateTest);
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
index b8e8d5d..67ec5de 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
@@ -6,15 +6,15 @@
 
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/generated/error.dart';
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'resolver_test.dart';
-import 'test_support.dart';
 import '../reflective_tests.dart';
 
 
 class StaticTypeWarningCodeTest extends ResolverTestCase {
   void fail_inaccessibleSetter() {
-    Source source = addSource(EngineTestCase.createSource([]));
+    Source source = addSource(r'''
+''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INACCESSIBLE_SETTER]);
     verify([source]);
@@ -22,199 +22,224 @@
 
   void fail_undefinedEnumConstant() {
     // We need a way to set the parseEnum flag in the parser to true.
-    Source source = addSource(EngineTestCase.createSource(["enum E { ONE }", "E e() {", "  return E.TWO;", "}"]));
+    Source source = addSource(r'''
+enum E { ONE }
+E e() {
+  return E.TWO;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_ENUM_CONSTANT]);
     verify([source]);
   }
 
   void test_ambiguousImport_function() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "g() { return f(); }"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f() {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f() {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+g() { return f(); }''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+f() {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+f() {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_expectedOneListTypeArgument() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  <int, int> [];", "}"]));
+    Source source = addSource(r'''
+main() {
+  <int, int> [];
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_expectedTwoMapTypeArguments_one() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  <int> {};", "}"]));
+    Source source = addSource(r'''
+main() {
+  <int> {};
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_expectedTwoMapTypeArguments_three() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  <int, int, int> {};", "}"]));
+    Source source = addSource(r'''
+main() {
+  <int, int, int> {};
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_paramCount() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int x();",
-        "}",
-        "abstract class B {",
-        "  int x(int y);",
-        "}",
-        "class C implements A, B {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int x();
+}
+abstract class B {
+  int x(int y);
+}
+class C implements A, B {
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_paramType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  x(int i);",
-        "}",
-        "abstract class B {",
-        "  x(String s);",
-        "}",
-        "abstract class C implements A, B {}"]));
+    Source source = addSource(r'''
+abstract class A {
+  x(int i);
+}
+abstract class B {
+  x(String s);
+}
+abstract class C implements A, B {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
     verify([source]);
   }
 
   void test_inconsistentMethodInheritance_returnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int x();",
-        "}",
-        "abstract class B {",
-        "  String x();",
-        "}",
-        "abstract class C implements A, B {}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int x();
+}
+abstract class B {
+  String x();
+}
+abstract class C implements A, B {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_method_invocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static m() {}",
-        "}",
-        "main(A a) {",
-        "  a.m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() {}
+}
+main(A a) {
+  a.m();
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_method_reference() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static m() {}",
-        "}",
-        "main(A a) {",
-        "  a.m;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static m() {}
+}
+main(A a) {
+  a.m;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_propertyAccess_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static var f;",
-        "}",
-        "main(A a) {",
-        "  a.f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static var f;
+}
+main(A a) {
+  a.f;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_propertyAccess_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get f => 42;",
-        "}",
-        "main(A a) {",
-        "  a.f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get f => 42;
+}
+main(A a) {
+  a.f;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_instanceAccessToStaticMember_propertyAccess_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set f(x) {}",
-        "}",
-        "main(A a) {",
-        "  a.f = 42;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set f(x) {}
+}
+main(A a) {
+  a.f = 42;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_invalidAssignment_compoundAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class byte {",
-        "  int _value;",
-        "  byte(this._value);",
-        "  int operator +(int val) { return 0; }",
-        "}",
-        "",
-        "void main() {",
-        "  byte b = new byte(52);",
-        "  b += 3;",
-        "}"]));
+    Source source = addSource(r'''
+class byte {
+  int _value;
+  byte(this._value);
+  int operator +(int val) { return 0; }
+}
+
+void main() {
+  byte b = new byte(52);
+  b += 3;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_defaultValue_named() {
-    Source source = addSource(EngineTestCase.createSource(["f({String x: 0}) {", "}"]));
+    Source source = addSource(r'''
+f({String x: 0}) {
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_defaultValue_optional() {
-    Source source = addSource(EngineTestCase.createSource(["f([String x = 0]) {", "}"]));
+    Source source = addSource(r'''
+f([String x = 0]) {
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_instanceVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int x;",
-        "}",
-        "f() {",
-        "  A a;",
-        "  a.x = '0';",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+}
+f() {
+  A a;
+  a.x = '0';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_localVariable() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  int x;", "  x = '0';", "}"]));
+    Source source = addSource(r'''
+f() {
+  int x;
+  x = '0';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
@@ -222,27 +247,30 @@
 
   void test_invalidAssignment_regressionInIssue18468Fix() {
     // https://code.google.com/p/dart/issues/detail?id=18628
-    Source source = addSource(EngineTestCase.createSource(["class C<T> {", "  T t = int;", "}"]));
+    Source source = addSource(r'''
+class C<T> {
+  T t = int;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_staticVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int x;",
-        "}",
-        "f() {",
-        "  A.x = '0';",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+}
+f() {
+  A.x = '0';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_topLevelVariableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["int x = 'string';"]));
+    Source source = addSource("int x = 'string';");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
@@ -250,190 +278,225 @@
 
   void test_invalidAssignment_typeParameter() {
     // 14221
-    Source source = addSource(EngineTestCase.createSource([
-        "class B<T> {",
-        "  T value;",
-        "  void test(num n) {",
-        "    value = n;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class B<T> {
+  T value;
+  void test(num n) {
+    value = n;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invalidAssignment_variableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x = 'string';", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x = 'string';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_class() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  void m() {", "    A();", "  }", "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {
+    A();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]);
   }
 
   void test_invocationOfNonFunction_localVariable() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  int x;", "  return x();", "}"]));
+    Source source = addSource(r'''
+f() {
+  int x;
+  return x();
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]);
     verify([source]);
   }
 
   void test_invocationOfNonFunction_ordinaryInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int x;",
-        "}",
-        "class B {",
-        "  m() {",
-        "    A.x();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int x;
+}
+class B {
+  m() {
+    A.x();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]);
     // A call to verify(source) fails as A.x() cannot be resolved.
   }
 
   void test_invocationOfNonFunction_staticInvocation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int get g => 0;",
-        "  f() {",
-        "    A.g();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int get g => 0;
+  f() {
+    A.g();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]);
     // A call to verify(source) fails as g() cannot be resolved.
   }
 
   void test_invocationOfNonFunction_superExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get g => 0;",
-        "}",
-        "class B extends A {",
-        "  m() {",
-        "    var v = super.g();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get g => 0;
+}
+class B extends A {
+  m() {
+    var v = super.g();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]);
     verify([source]);
   }
 
   void test_invocationOfNonFunctionExpression_literal() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  3(5);", "}"]));
+    Source source = addSource(r'''
+f() {
+  3(5);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRESSION]);
     verify([source]);
   }
 
   void test_nonBoolCondition_conditional() {
-    Source source = addSource(EngineTestCase.createSource(["f() { return 3 ? 2 : 1; }"]));
+    Source source = addSource("f() { return 3 ? 2 : 1; }");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]);
     verify([source]);
   }
 
   void test_nonBoolCondition_do() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  do {} while (3);", "}"]));
+    Source source = addSource(r'''
+f() {
+  do {} while (3);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]);
     verify([source]);
   }
 
   void test_nonBoolCondition_if() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  if (3) return 2; else return 1;", "}"]));
+    Source source = addSource(r'''
+f() {
+  if (3) return 2; else return 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]);
     verify([source]);
   }
 
   void test_nonBoolCondition_while() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  while (3) {}", "}"]));
+    Source source = addSource(r'''
+f() {
+  while (3) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]);
     verify([source]);
   }
 
   void test_nonBoolExpression_functionType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "int makeAssertion() => 1;",
-        "f() {",
-        "  assert(makeAssertion);",
-        "}"]));
+    Source source = addSource(r'''
+int makeAssertion() => 1;
+f() {
+  assert(makeAssertion);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]);
     verify([source]);
   }
 
   void test_nonBoolExpression_interfaceType() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  assert(0);", "}"]));
+    Source source = addSource(r'''
+f() {
+  assert(0);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]);
     verify([source]);
   }
 
   void test_nonBoolNegationExpression() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  !42;", "}"]));
+    Source source = addSource(r'''
+f() {
+  !42;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_NEGATION_EXPRESSION]);
     verify([source]);
   }
 
   void test_nonBoolOperand_and_left() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(int left, bool right) {",
-        "  return left && right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(int left, bool right) {
+  return left && right;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]);
     verify([source]);
   }
 
   void test_nonBoolOperand_and_right() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(bool left, String right) {",
-        "  return left && right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(bool left, String right) {
+  return left && right;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]);
     verify([source]);
   }
 
   void test_nonBoolOperand_or_left() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(List<int> left, bool right) {",
-        "  return left || right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(List<int> left, bool right) {
+  return left || right;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]);
     verify([source]);
   }
 
   void test_nonBoolOperand_or_right() {
-    Source source = addSource(EngineTestCase.createSource([
-        "bool f(bool left, double right) {",
-        "  return left || right;",
-        "}"]));
+    Source source = addSource(r'''
+bool f(bool left, double right) {
+  return left || right;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_BOOL_OPERAND]);
     verify([source]);
   }
 
   void test_nonTypeAsTypeArgument_notAType() {
-    Source source = addSource(EngineTestCase.createSource(["int A;", "class B<E> {}", "f(B<A> b) {}"]));
+    Source source = addSource(r'''
+int A;
+class B<E> {}
+f(B<A> b) {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]);
     verify([source]);
   }
 
   void test_nonTypeAsTypeArgument_undefinedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource(["class B<E> {}", "f(B<A> b) {}"]));
+    Source source = addSource(r'''
+class B<E> {}
+f(B<A> b) {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]);
     verify([source]);
@@ -441,127 +504,133 @@
 
   void test_notEnoughRequiredArguments_mergedUnionTypeMethod() {
     enableUnionTypes(false);
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m(int x) => 0;",
-        "}",
-        "class B {",
-        "  String m(String x) => '0';",
-        "}",
-        "f(A a, B b) {",
-        "  var ab;",
-        "  if (0 < 1) {",
-        "    ab = a;",
-        "  } else {",
-        "    ab = b;",
-        "  }",
-        "  ab.m();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m(int x) => 0;
+}
+class B {
+  String m(String x) => '0';
+}
+f(A a, B b) {
+  var ab;
+  if (0 < 1) {
+    ab = a;
+  } else {
+    ab = b;
+  }
+  ab.m();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_expressionFunctionBody_function() {
-    Source source = addSource(EngineTestCase.createSource(["int f() => '0';"]));
+    Source source = addSource("int f() => '0';");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_expressionFunctionBody_getter() {
-    Source source = addSource(EngineTestCase.createSource(["int get g => '0';"]));
+    Source source = addSource("int get g => '0';");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_expressionFunctionBody_localFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  String m() {",
-        "    int f() => '0';",
-        "    return '0';",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  String m() {
+    int f() => '0';
+    return '0';
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_expressionFunctionBody_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int f() => '0';", "}"]));
+    Source source = addSource(r'''
+class A {
+  int f() => '0';
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_expressionFunctionBody_void() {
-    Source source = addSource(EngineTestCase.createSource(["void f() => 42;"]));
+    Source source = addSource("void f() => 42;");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_function() {
-    Source source = addSource(EngineTestCase.createSource(["int f() { return '0'; }"]));
+    Source source = addSource("int f() { return '0'; }");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_getter() {
-    Source source = addSource(EngineTestCase.createSource(["int get g { return '0'; }"]));
+    Source source = addSource("int get g { return '0'; }");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_localFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  String m() {",
-        "    int f() { return '0'; }",
-        "    return '0';",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  String m() {
+    int f() { return '0'; }
+    return '0';
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int f() { return '0'; }", "}"]));
+    Source source = addSource(r'''
+class A {
+  int f() { return '0'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_returnOfInvalidType_void() {
-    Source source = addSource(EngineTestCase.createSource(["void f() { return 42; }"]));
+    Source source = addSource("void f() { return 42; }");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_classTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class C {}",
-        "class G<E extends A> {}",
-        "class D = G<B> with C;"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class C {}
+class G<E extends A> {}
+class D = G<B> with C;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_extends() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "class C extends G<B>{}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+class C extends G<B>{}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
@@ -569,138 +638,138 @@
 
   void test_typeArgumentNotMatchingBounds_extends_regressionInIssue18468Fix() {
     // https://code.google.com/p/dart/issues/detail?id=18628
-    Source source = addSource(EngineTestCase.createSource([
-        "class X<T extends Type> {}",
-        "class Y<U> extends X<U> {}"]));
+    Source source = addSource(r'''
+class X<T extends Type> {}
+class Y<U> extends X<U> {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_fieldFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "class C {",
-        "  var f;",
-        "  C(G<B> this.f) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+class C {
+  var f;
+  C(G<B> this.f) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_functionReturnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "G<B> f() { return null; }"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+G<B> f() { return null; }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_functionTypeAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "typedef G<B> f();"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+typedef G<B> f();''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_functionTypedFormalParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "f(G<B> h()) {}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+f(G<B> h()) {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_implements() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "class C implements G<B>{}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+class C implements G<B>{}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "var b = 1 is G<B>;"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+var b = 1 is G<B>;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_methodReturnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "class C {",
-        "  G<B> m() { return null; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+class C {
+  G<B> m() { return null; }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_new() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "f() { return new G<B>(); }"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+f() { return new G<B>(); }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {}",
-        "class C extends B {}",
-        "class G<E extends B> {}",
-        "f() { return new G<A>(); }"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {}
+class C extends B {}
+class G<E extends B> {}
+f() { return new G<A>(); }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_parameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "f(G<B> g) {}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+f(G<B> g) {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_redirectingConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class X<T extends A> {",
-        "  X(int x, int y) {}",
-        "  factory X.name(int x, int y) = X<B>;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class X<T extends A> {
+  X(int x, int y) {}
+  factory X.name(int x, int y) = X<B>;
+}''');
     resolve(source);
     assertErrors(source, [
         StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS,
@@ -709,611 +778,667 @@
   }
 
   void test_typeArgumentNotMatchingBounds_typeArgumentList() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class C<E> {}",
-        "class D<E extends A> {}",
-        "C<D<B>> Var;"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class C<E> {}
+class D<E extends A> {}
+C<D<B>> Var;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_typeParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class C {}",
-        "class G<E extends A> {}",
-        "class D<F extends G<B>> {}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class C {}
+class G<E extends A> {}
+class D<F extends G<B>> {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_variableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "G<B> g;"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+G<B> g;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeArgumentNotMatchingBounds_with() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {}",
-        "class G<E extends A> {}",
-        "class C extends Object with G<B>{}"]));
+    Source source = addSource(r'''
+class A {}
+class B {}
+class G<E extends A> {}
+class C extends Object with G<B>{}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
     verify([source]);
   }
 
   void test_typeParameterSupertypeOfItsBound() {
-    Source source = addSource(EngineTestCase.createSource(["class A<T extends T> {", "}"]));
+    Source source = addSource(r'''
+class A<T extends T> {
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_BOUND]);
     verify([source]);
   }
 
   void test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  (p is String) && callMe(() { p.length; });",
-        "  p = 0;",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  (p is String) && callMe(() { p.length; });
+  p = 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_booleanAnd_useInRight_mutatedInLeft() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  ((p is String) && ((p = 42) == 42)) && p.length != 0;",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  ((p is String) && ((p = 42) == 42)) && p.length != 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_booleanAnd_useInRight_mutatedInRight() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  (p is String) && (((p = 42) == 42) && p.length != 0);",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  (p is String) && (((p = 42) == 42) && p.length != 0);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_after() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  p is String ? callMe(() { p.length; }) : 0;",
-        "  p = 42;",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  p is String ? callMe(() { p.length; }) : 0;
+  p = 42;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_before() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  p = 42;",
-        "  p is String ? callMe(() { p.length; }) : 0;",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  p = 42;
+  p is String ? callMe(() { p.length; }) : 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_conditional_useInThen_hasAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  p is String ? (p.length + (p = 42)) : 0;",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  p is String ? (p.length + (p = 42)) : 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_accessedInClosure_hasAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "callMe(f()) { f(); }",
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    callMe(() {",
-        "      p.length;",
-        "    });",
-        "  }",
-        "  p = 0;",
-        "}"]));
+    Source source = addSource(r'''
+callMe(f()) { f(); }
+main(Object p) {
+  if (p is String) {
+    callMe(() {
+      p.length;
+    });
+  }
+  p = 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_and_right_hasAssignment() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String && (p = null) == null) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String && (p = null) == null) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_extends_notMoreSpecific_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class A<T> {}",
-        "class B<S> extends A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class A<T> {}
+class B<S> extends A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_extends_notMoreSpecific_notMoreSpecificTypeArg() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class A<T> {}",
-        "class B<S> extends A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B<int>) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class A<T> {}
+class B<S> extends A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B<int>) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_after() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p.length;",
-        "    p = 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p.length;
+    p = 0;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_before() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p = 0;",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p = 0;
+    p.length;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_inClosure_anonymous_after() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "  () {p = 0;};",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p.length;
+  }
+  () {p = 0;};
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_inClosure_anonymous_before() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  () {p = 0;};",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  () {p = 0;};
+  if (p is String) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_inClosure_function_after() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "  f() {p = 0;};",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  if (p is String) {
+    p.length;
+  }
+  f() {p = 0;};
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_hasAssignment_inClosure_function_before() {
-    Source source = addSource(EngineTestCase.createSource([
-        "main(Object p) {",
-        "  f() {p = 0;};",
-        "  if (p is String) {",
-        "    p.length;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+main(Object p) {
+  f() {p = 0;};
+  if (p is String) {
+    p.length;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_implements_notMoreSpecific_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class A<T> {}",
-        "class B<S> implements A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class A<T> {}
+class B<S> implements A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_typePromotion_if_with_notMoreSpecific_dynamic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class V {}",
-        "class A<T> {}",
-        "class B<S> extends Object with A<S> {",
-        "  var b;",
-        "}",
-        "",
-        "main(A<V> p) {",
-        "  if (p is B) {",
-        "    p.b;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class V {}
+class A<T> {}
+class B<S> extends Object with A<S> {
+  var b;
+}
+
+main(A<V> p) {
+  if (p is B) {
+    p.b;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedFunction() {
-    Source source = addSource(EngineTestCase.createSource(["void f() {", "  g();", "}"]));
+    Source source = addSource(r'''
+void f() {
+  g();
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]);
   }
 
   void test_undefinedFunction_hasImportPrefix() {
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as f;", "main() { return f(); }"]));
+    Source source = addSource(r'''
+import 'lib.dart' as f;
+main() { return f(); }''');
     addNamedSource("/lib.dart", "library lib;");
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]);
   }
 
   void test_undefinedFunction_inCatch() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void f() {",
-        "  try {",
-        "  } on Object {",
-        "    g();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+void f() {
+  try {
+  } on Object {
+    g();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]);
   }
 
   void test_undefinedFunction_inImportedLib() {
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as f;", "main() { return f.g(); }"]));
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "h() {}"]));
+    Source source = addSource(r'''
+import 'lib.dart' as f;
+main() { return f.g(); }''');
+    addNamedSource("/lib.dart", r'''
+library lib;
+h() {}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_FUNCTION]);
   }
 
   void test_undefinedGetter() {
-    Source source = addSource(EngineTestCase.createSource(["class T {}", "f(T e) { return e.m; }"]));
+    Source source = addSource(r'''
+class T {}
+f(T e) { return e.m; }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedGetter_proxy_annotation_fakeProxy() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class Fake {",
-        "  const Fake();",
-        "}",
-        "const proxy = const Fake();",
-        "@proxy class PrefixProxy {}",
-        "main() {",
-        "  new PrefixProxy().foo;",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+class Fake {
+  const Fake();
+}
+const proxy = const Fake();
+@proxy class PrefixProxy {}
+main() {
+  new PrefixProxy().foo;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedGetter_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "var a = A.B;"]));
+    Source source = addSource(r'''
+class A {}
+var a = A.B;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedGetter_void() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class T {",
-        "  void m() {}",
-        "}",
-        "f(T e) { return e.m().f; }"]));
+    Source source = addSource(r'''
+class T {
+  void m() {}
+}
+f(T e) { return e.m().f; }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedGetter_wrongNumberOfTypeArguments_tooLittle() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<K, V> {",
-        "  K element;",
-        "}",
-        "main(A<int> a) {",
-        "  a.element.anyGetterExistsInDynamic;",
-        "}"]));
+    Source source = addSource(r'''
+class A<K, V> {
+  K element;
+}
+main(A<int> a) {
+  a.element.anyGetterExistsInDynamic;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_undefinedGetter_wrongNumberOfTypeArguments_tooMany() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  E element;",
-        "}",
-        "main(A<int,int> a) {",
-        "  a.element.anyGetterExistsInDynamic;",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  E element;
+}
+main(A<int,int> a) {
+  a.element.anyGetterExistsInDynamic;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_undefinedGetter_wrongOfTypeArgument() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<E> {",
-        "  E element;",
-        "}",
-        "main(A<NoSuchType> a) {",
-        "  a.element.anyGetterExistsInDynamic;",
-        "}"]));
+    Source source = addSource(r'''
+class A<E> {
+  E element;
+}
+main(A<NoSuchType> a) {
+  a.element.anyGetterExistsInDynamic;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]);
     verify([source]);
   }
 
   void test_undefinedMethod() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  void m() {", "    n();", "  }", "}"]));
+    Source source = addSource(r'''
+class A {
+  void m() {
+    n();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_assignmentExpression() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B {",
-        "  f(A a) {",
-        "    A a2 = new A();",
-        "    a += a2;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B {
+  f(A a) {
+    A a2 = new A();
+    a += a2;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_ignoreTypePropagation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  m() {}",
-        "}",
-        "class C {",
-        "  f() {",
-        "    A a = new B();",
-        "    a.m();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  m() {}
+}
+class C {
+  f() {
+    A a = new B();
+    a.m();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_private() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {", "  _foo() {}", "}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  test() {",
-        "    _foo();",
-        "  }",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  _foo() {}
+}''');
+    Source source = addSource(r'''
+import 'lib.dart';
+class B extends A {
+  test() {
+    _foo();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedMethod_proxy_annotation_fakeProxy() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "class Fake {",
-        "  const Fake();",
-        "}",
-        "const proxy = const Fake();",
-        "@proxy class PrefixProxy {}",
-        "main() {",
-        "  new PrefixProxy().foo();",
-        "}"]));
+    Source source = addSource(r'''
+library L;
+class Fake {
+  const Fake();
+}
+const proxy = const Fake();
+@proxy class PrefixProxy {}
+main() {
+  new PrefixProxy().foo();
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedOperator_indexBoth() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  a[0]++;", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  a[0]++;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_indexGetter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  a[0];", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  a[0];
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_indexSetter() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  a[0] = 1;", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  a[0] = 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_plus() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  a + 1;", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  a + 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_postfixExpression() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  a++;", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  a++;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedOperator_prefixExpression() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a) {", "  ++a;", "}"]));
+    Source source = addSource(r'''
+class A {}
+f(A a) {
+  ++a;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
   }
 
   void test_undefinedSetter() {
-    Source source = addSource(EngineTestCase.createSource(["class T {}", "f(T e1) { e1.m = 0; }"]));
+    Source source = addSource(r'''
+class T {}
+f(T e1) { e1.m = 0; }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
   void test_undefinedSetter_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f() { A.B = 0;}"]));
+    Source source = addSource(r'''
+class A {}
+f() { A.B = 0;}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
   void test_undefinedSetter_void() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class T {",
-        "  void m() {}",
-        "}",
-        "f(T e) { e.m().f = 0; }"]));
+    Source source = addSource(r'''
+class T {
+  void m() {}
+}
+f(T e) { e.m().f = 0; }''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
   void test_undefinedSuperMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class B extends A {",
-        "  m() { return super.m(); }",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class B extends A {
+  m() { return super.m(); }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_METHOD]);
   }
 
   void test_unqualifiedReferenceToNonLocalStaticMember_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int get a => 0;",
-        "}",
-        "class B extends A {",
-        "  int b() {",
-        "    return a;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int get a => 0;
+}
+class B extends A {
+  int b() {
+    return a;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_unqualifiedReferenceToNonLocalStaticMember_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static void a() {}",
-        "}",
-        "class B extends A {",
-        "  void b() {",
-        "    a();",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static void a() {}
+}
+class B extends A {
+  void b() {
+    a();
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_unqualifiedReferenceToNonLocalStaticMember_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set a(x) {}",
-        "}",
-        "class B extends A {",
-        "  b(y) {",
-        "    a = y;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set a(x) {}
+}
+class B extends A {
+  b(y) {
+    a = y;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOCAL_STATIC_MEMBER]);
     verify([source]);
   }
 
   void test_wrongNumberOfTypeArguments_classAlias() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class M {}",
-        "class B<F extends num> = A<F> with M;"]));
+    Source source = addSource(r'''
+class A {}
+class M {}
+class B<F extends num> = A<F> with M;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_wrongNumberOfTypeArguments_tooFew() {
-    Source source = addSource(EngineTestCase.createSource(["class A<E, F> {}", "A<A> a = null;"]));
+    Source source = addSource(r'''
+class A<E, F> {}
+A<A> a = null;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_wrongNumberOfTypeArguments_tooMany() {
-    Source source = addSource(EngineTestCase.createSource(["class A<E> {}", "A<A, A> a = null;"]));
+    Source source = addSource(r'''
+class A<E> {}
+A<A, A> a = null;''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_wrongNumberOfTypeArguments_typeTest_tooFew() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<K, V> {}",
-        "f(p) {",
-        "  return p is C<A>;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<K, V> {}
+f(p) {
+  return p is C<A>;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
   }
 
   void test_wrongNumberOfTypeArguments_typeTest_tooMany() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<E> {}",
-        "f(p) {",
-        "  return p is C<A, A>;",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<E> {}
+f(p) {
+  return p is C<A, A>;
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS]);
     verify([source]);
@@ -1321,6 +1446,6 @@
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(StaticTypeWarningCodeTest);
 }
diff --git a/pkg/analyzer/test/generated/static_warning_code_test.dart b/pkg/analyzer/test/generated/static_warning_code_test.dart
index a4807c9..f8b0893 100644
--- a/pkg/analyzer/test/generated/static_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_test.dart
@@ -4,11 +4,10 @@
 
 library engine.static_warning_code_test;
 
-import 'package:analyzer/src/generated/java_junit.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/parser.dart' show ParserErrorCode;
-import 'package:unittest/unittest.dart' as _ut;
+import 'package:unittest/unittest.dart';
 import 'resolver_test.dart';
 import 'test_support.dart';
 import '../reflective_tests.dart';
@@ -16,14 +15,18 @@
 
 class StaticWarningCodeTest extends ResolverTestCase {
   void fail_undefinedGetter() {
-    Source source = addSource(EngineTestCase.createSource([]));
+    Source source = addSource(r'''
+''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]);
     verify([source]);
   }
 
   void fail_undefinedIdentifier_commentReference() {
-    Source source = addSource(EngineTestCase.createSource(["/** [m] xxx [new B.c] */", "class A {", "}"]));
+    Source source = addSource(r'''
+/** [m] xxx [new B.c] */
+class A {
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.UNDEFINED_IDENTIFIER,
@@ -31,30 +34,42 @@
   }
 
   void fail_undefinedSetter() {
-    Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", "  C.m = 0;", "}"]));
+    Source source = addSource(r'''
+class C {}
+f(var p) {
+  C.m = 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]);
     verify([source]);
   }
 
   void test_ambiguousImport_as() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "f(p) {p as N;}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+f(p) {p as N;}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_extends() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "class A extends N {}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+class A extends N {}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.AMBIGUOUS_IMPORT,
@@ -62,12 +77,16 @@
   }
 
   void test_ambiguousImport_implements() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "class A implements N {}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+class A implements N {}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.AMBIGUOUS_IMPORT,
@@ -75,14 +94,20 @@
   }
 
   void test_ambiguousImport_inPart() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library lib;",
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "part 'part.dart';"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
-    Source partSource = addNamedSource("/part.dart", EngineTestCase.createSource(["part of lib;", "class A extends N {}"]));
+    Source source = addSource(r'''
+library lib;
+import 'lib1.dart';
+import 'lib2.dart';
+part 'part.dart';''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
+    Source partSource = addNamedSource("/part.dart", r'''
+part of lib;
+class A extends N {}''');
     resolve(source);
     assertErrors(partSource, [
         StaticWarningCode.AMBIGUOUS_IMPORT,
@@ -90,54 +115,70 @@
   }
 
   void test_ambiguousImport_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library L;",
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "f() {new N();}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+library L;
+import 'lib1.dart';
+import 'lib2.dart';
+f() {new N();}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_is() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "f(p) {p is N;}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+f(p) {p is N;}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_qualifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "g() { N.FOO; }"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+g() { N.FOO; }''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_typeAnnotation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "typedef N FT(N p);",
-        "N f(N p) {",
-        "  N v;",
-        "  return null;",
-        "}",
-        "class A {",
-        "  N m() { return null; }",
-        "}",
-        "class B<T extends N> {}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+typedef N FT(N p);
+N f(N p) {
+  N v;
+  return null;
+}
+class A {
+  N m() { return null; }
+}
+class B<T extends N> {}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.AMBIGUOUS_IMPORT,
@@ -150,142 +191,161 @@
   }
 
   void test_ambiguousImport_typeArgument_annotation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "class A<T> {}",
-        "A<N> f() { return null; }"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+class A<T> {}
+A<N> f() { return null; }''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_typeArgument_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "class A<T> {}",
-        "f() {new A<N>();}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+class A<T> {}
+f() {new A<N>();}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+class N {}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class N {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_varRead() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "f() { g(v); }",
-        "g(p) {}"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "var v;"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "var v;"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+f() { g(v); }
+g(p) {}''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+var v;''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+var v;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_ambiguousImport_varWrite() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib1.dart';",
-        "import 'lib2.dart';",
-        "f() { v = 0; }"]));
-    addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "var v;"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "var v;"]));
+    Source source = addSource(r'''
+import 'lib1.dart';
+import 'lib2.dart';
+f() { v = 0; }''');
+    addNamedSource("/lib1.dart", r'''
+library lib1;
+var v;''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+var v;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]);
   }
 
   void test_argumentTypeNotAssignable_ambiguousClassName() {
     // See dartbug.com/19624
-    Source source = addNamedSource("/lib1.dart", EngineTestCase.createSource([
-        "library lib1;",
-        "import 'lib2.dart';",
-        "class _A {}",
-        "f() {",
-        "  g((_A a) {});",
-        "}"]));
-    addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class _A {}", "g(h(_A a)) {}"]));
+    Source source = addNamedSource("/lib1.dart", r'''
+library lib1;
+import 'lib2.dart';
+class _A {}
+f() {
+  g((_A a) {});
+}''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class _A {}
+g(h(_A a)) {}''');
     resolve(source);
     // The name _A is private to the library it's defined in, so this is a type mismatch.
     // Furthermore, the error message should mention both _A and the filenames
     // so the user can figure out what's going on.
     List<AnalysisError> errors = analysisContext2.computeErrors(source);
-    EngineTestCase.assertLength(1, errors);
+    expect(errors, hasLength(1));
     AnalysisError error = errors[0];
-    JUnitTestCase.assertEquals(error.errorCode, StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE);
+    expect(StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, error.errorCode);
     String message = error.message;
-    JUnitTestCase.assertTrue(message.indexOf("_A") != -1);
-    JUnitTestCase.assertTrue(message.indexOf("lib1.dart") != -1);
-    JUnitTestCase.assertTrue(message.indexOf("lib2.dart") != -1);
+    expect(message.indexOf("_A") != -1, isTrue);
+    expect(message.indexOf("lib1.dart") != -1, isTrue);
+    expect(message.indexOf("lib2.dart") != -1, isTrue);
   }
 
   void test_argumentTypeNotAssignable_annotation_namedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A.fromInt(int p);",
-        "}",
-        "@A.fromInt('0')",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A.fromInt(int p);
+}
+@A.fromInt('0')
+main() {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_annotation_unnamedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(int p);",
-        "}",
-        "@A('0')",
-        "main() {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(int p);
+}
+@A('0')
+main() {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_binary() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  operator +(int p) {}",
-        "}",
-        "f(A a) {",
-        "  a + '0';",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  operator +(int p) {}
+}
+f(A a) {
+  a + '0';
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_cascadeSecond() {
-    Source source = addSource(EngineTestCase.createSource([
-        "// filler filler filler filler filler filler filler filler filler filler",
-        "class A {",
-        "  B ma() { return new B(); }",
-        "}",
-        "class B {",
-        "  mb(String p) {}",
-        "}",
-        "",
-        "main() {",
-        "  A a = new A();",
-        "  a..  ma().mb(0);",
-        "}"]));
+    Source source = addSource(r'''
+// filler filler filler filler filler filler filler filler filler filler
+class A {
+  B ma() { return new B(); }
+}
+class B {
+  mb(String p) {}
+}
+
+main() {
+  A a = new A();
+  a..  ma().mb(0);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_const() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(String p);",
-        "}",
-        "main() {",
-        "  const A(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(String p);
+}
+main() {
+  const A(42);
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE,
@@ -294,643 +354,734 @@
   }
 
   void test_argumentTypeNotAssignable_const_super() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  const A(String p);",
-        "}",
-        "class B extends A {",
-        "  const B() : super(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  const A(String p);
+}
+class B extends A {
+  const B() : super(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_functionExpressionInvocation_required() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  (int x) {} ('');", "}"]));
+    Source source = addSource(r'''
+main() {
+  (int x) {} ('');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_index() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  operator [](int index) {}",
-        "}",
-        "f(A a) {",
-        "  a['0'];",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  operator [](int index) {}
+}
+f(A a) {
+  a['0'];
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_callParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  call(int p) {}",
-        "}",
-        "f(A a) {",
-        "  a('0');",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  call(int p) {}
+}
+f(A a) {
+  a('0');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_callVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  call(int p) {}",
-        "}",
-        "main() {",
-        "  A a = new A();",
-        "  a('0');",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  call(int p) {}
+}
+main() {
+  A a = new A();
+  a('0');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_functionParameter() {
-    Source source = addSource(EngineTestCase.createSource(["a(b(int p)) {", "  b('0');", "}"]));
+    Source source = addSource(r'''
+a(b(int p)) {
+  b('0');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_functionParameter_generic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<K, V> {",
-        "  m(f(K k), V v) {",
-        "    f(v);",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A<K, V> {
+  m(f(K k), V v) {
+    f(v);
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_functionTypes_optional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "void acceptFunNumOptBool(void funNumOptBool([bool b])) {}",
-        "void funNumBool(bool b) {}",
-        "main() {",
-        "  acceptFunNumOptBool(funNumBool);",
-        "}"]));
+    Source source = addSource(r'''
+void acceptFunNumOptBool(void funNumOptBool([bool b])) {}
+void funNumBool(bool b) {}
+main() {
+  acceptFunNumOptBool(funNumBool);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_generic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  m(T t) {}",
-        "}",
-        "f(A<String> a) {",
-        "  a.m(1);",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  m(T t) {}
+}
+f(A<String> a) {
+  a.m(1);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_named() {
-    Source source = addSource(EngineTestCase.createSource(["f({String p}) {}", "main() {", "  f(p: 42);", "}"]));
+    Source source = addSource(r'''
+f({String p}) {}
+main() {
+  f(p: 42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_optional() {
-    Source source = addSource(EngineTestCase.createSource(["f([String p]) {}", "main() {", "  f(42);", "}"]));
+    Source source = addSource(r'''
+f([String p]) {}
+main() {
+  f(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_required() {
-    Source source = addSource(EngineTestCase.createSource(["f(String p) {}", "main() {", "  f(42);", "}"]));
+    Source source = addSource(r'''
+f(String p) {}
+main() {
+  f(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_typedef_generic() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A<T>(T p);", "f(A<int> a) {", "  a('1');", "}"]));
+    Source source = addSource(r'''
+typedef A<T>(T p);
+f(A<int> a) {
+  a('1');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_typedef_local() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef A(int p);",
-        "A getA() => null;",
-        "main() {",
-        "  A a = getA();",
-        "  a('1');",
-        "}"]));
+    Source source = addSource(r'''
+typedef A(int p);
+A getA() => null;
+main() {
+  A a = getA();
+  a('1');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_invocation_typedef_parameter() {
-    Source source = addSource(EngineTestCase.createSource(["typedef A(int p);", "f(A a) {", "  a('1');", "}"]));
+    Source source = addSource(r'''
+typedef A(int p);
+f(A a) {
+  a('1');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_new_generic() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  A(T p) {}",
-        "}",
-        "main() {",
-        "  new A<String>(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A<T> {
+  A(T p) {}
+}
+main() {
+  new A<String>(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_new_optional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A([String p]) {}",
-        "}",
-        "main() {",
-        "  new A(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A([String p]) {}
+}
+main() {
+  new A(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_argumentTypeNotAssignable_new_required() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A(String p) {}",
-        "}",
-        "main() {",
-        "  new A(42);",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A(String p) {}
+}
+main() {
+  new A(42);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_assignmentToConst_instanceVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static const v = 0;",
-        "}",
-        "f() {",
-        "  A.v = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static const v = 0;
+}
+f() {
+  A.v = 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
     verify([source]);
   }
 
   void test_assignmentToConst_instanceVariable_plusEq() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static const v = 0;",
-        "}",
-        "f() {",
-        "  A.v += 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static const v = 0;
+}
+f() {
+  A.v += 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
     verify([source]);
   }
 
   void test_assignmentToConst_localVariable() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  const x = 0;", "  x = 1;", "}"]));
+    Source source = addSource(r'''
+f() {
+  const x = 0;
+  x = 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
     verify([source]);
   }
 
   void test_assignmentToConst_localVariable_plusEq() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  const x = 0;", "  x += 1;", "}"]));
+    Source source = addSource(r'''
+f() {
+  const x = 0;
+  x += 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]);
     verify([source]);
   }
 
   void test_assignmentToFinal_instanceVariable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v = 0;",
-        "}",
-        "f() {",
-        "  A a = new A();",
-        "  a.v = 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v = 0;
+}
+f() {
+  A a = new A();
+  a.v = 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_instanceVariable_plusEq() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final v = 0;",
-        "}",
-        "f() {",
-        "  A a = new A();",
-        "  a.v += 1;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final v = 0;
+}
+f() {
+  A a = new A();
+  a.v += 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_localVariable() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x = 1;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x = 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_localVariable_plusEq() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x += 1;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x += 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_postfixMinusMinus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x--;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x--;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_postfixPlusPlus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x++;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x++;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_prefixMinusMinus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  --x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  --x;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_prefixPlusPlus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  ++x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  ++x;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_suffixMinusMinus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x--;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x--;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_suffixPlusPlus() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final x = 0;", "  x++;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final x = 0;
+  x++;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinal_topLevelVariable() {
-    Source source = addSource(EngineTestCase.createSource(["final x = 0;", "f() { x = 1; }"]));
+    Source source = addSource(r'''
+final x = 0;
+f() { x = 1; }''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]);
     verify([source]);
   }
 
   void test_assignmentToFinalNoSetter_prefixedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "}",
-        "main() {",
-        "  A a = new A();",
-        "  a.x = 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+}
+main() {
+  A a = new A();
+  a.x = 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
     verify([source]);
   }
 
   void test_assignmentToFinalNoSetter_propertyAccess() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get x => 0;",
-        "}",
-        "class B {",
-        "  static A a;",
-        "}",
-        "main() {",
-        "  B.a.x = 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get x => 0;
+}
+class B {
+  static A a;
+}
+main() {
+  B.a.x = 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL_NO_SETTER]);
     verify([source]);
   }
 
   void test_assignmentToFunction() {
-    Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", "  f = null;", "}"]));
+    Source source = addSource(r'''
+f() {}
+main() {
+  f = null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FUNCTION]);
     verify([source]);
   }
 
   void test_assignmentToMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m() {}",
-        "}",
-        "f(A a) {",
-        "  a.m = () {};",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+f(A a) {
+  a.m = () {};
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]);
     verify([source]);
   }
 
   void test_caseBlockNotTerminated() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int p) {",
-        "  switch (p) {",
-        "    case 0:",
-        "      f(p);",
-        "    case 1:",
-        "      break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int p) {
+  switch (p) {
+    case 0:
+      f(p);
+    case 1:
+      break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]);
     verify([source]);
   }
 
   void test_castToNonType() {
-    Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(String s) { var x = s as A; }"]));
+    Source source = addSource(r'''
+var A = 0;
+f(String s) { var x = s as A; }''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]);
     verify([source]);
   }
 
   void test_concreteClassWithAbstractMember() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m();", "}"]));
+    Source source = addSource(r'''
+class A {
+  m();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingDartImport() {
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "import 'dart:async';",
-        "Future f = null;",
-        "Stream s;"]));
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class Future {}"]));
+    Source source = addSource(r'''
+import 'lib.dart';
+import 'dart:async';
+Future f = null;
+Stream s;''');
+    addNamedSource("/lib.dart", r'''
+library lib;
+class Future {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set v(x) {}",
-        "}",
-        "class B extends A {",
-        "  var v;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set v(x) {}
+}
+class B extends A {
+  var v;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get v => 0;",
-        "}",
-        "class B extends A {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get v => 0;
+}
+class B extends A {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static v() {}",
-        "}",
-        "class B extends A {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static v() {}
+}
+class B extends A {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set v(x) {}",
-        "}",
-        "class B extends A {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set v(x) {}
+}
+class B extends A {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int v;",
-        "}",
-        "class B extends A {}",
-        "class C extends B {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int v;
+}
+class B extends A {}
+class C extends B {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class M {",
-        "  static int v;",
-        "}",
-        "class B extends Object with M {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class M {
+  static int v;
+}
+class B extends Object with M {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceGetterAndSuperclassMember_direct_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int v;",
-        "}",
-        "class B extends A {",
-        "  get v => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int v;
+}
+class B extends A {
+  get v => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingInstanceMethodSetter_sameClass() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  set foo(a) {}", "  foo() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  set foo(a) {}
+  foo() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
     verify([source]);
   }
 
   void test_conflictingInstanceMethodSetter_setterInInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  set foo(a);",
-        "}",
-        "abstract class B implements A {",
-        "  foo() {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  set foo(a);
+}
+abstract class B implements A {
+  foo() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
     verify([source]);
   }
 
   void test_conflictingInstanceMethodSetter_setterInSuper() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set foo(a) {}",
-        "}",
-        "class B extends A {",
-        "  foo() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set foo(a) {}
+}
+class B extends A {
+  foo() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER]);
     verify([source]);
   }
 
   void test_conflictingInstanceMethodSetter2() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  foo() {}", "  set foo(a) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  foo() {}
+  set foo(a) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_METHOD_SETTER2]);
     verify([source]);
   }
 
   void test_conflictingInstanceSetterAndSuperclassMember() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static int v;",
-        "}",
-        "class B extends A {",
-        "  set v(x) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static int v;
+}
+class B extends A {
+  set v(x) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingStaticGetterAndInstanceSetter_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set x(int p) {}",
-        "}",
-        "class B extends Object with A {",
-        "  static get x => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(int p) {}
+}
+class B extends Object with A {
+  static get x => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
     verify([source]);
   }
 
   void test_conflictingStaticGetterAndInstanceSetter_superClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set x(int p) {}",
-        "}",
-        "class B extends A {",
-        "  static get x => 0;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set x(int p) {}
+}
+class B extends A {
+  static get x => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
     verify([source]);
   }
 
   void test_conflictingStaticGetterAndInstanceSetter_thisClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get x => 0;",
-        "  set x(int p) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get x => 0;
+  set x(int p) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]);
     verify([source]);
   }
 
   void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get x => 0;",
-        "  static set x(int p) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get x => 0;
+  static set x(int p) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_conflictingStaticSetterAndInstanceMember_thisClass_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  x() {}", "  static set x(int p) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  x() {}
+  static set x(int p) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_constWithAbstractClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  const A();",
-        "}",
-        "void f() {",
-        "  A a = const A();",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  const A();
+}
+void f() {
+  A a = const A();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]);
     verify([source]);
   }
 
   void test_equalKeysInMap() {
-    Source source = addSource(EngineTestCase.createSource(["var m = {'a' : 0, 'b' : 1, 'a' : 2};"]));
+    Source source = addSource("var m = {'a' : 0, 'b' : 1, 'a' : 2};");
     resolve(source);
     assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
     verify([source]);
   }
 
   void test_equalKeysInMap_withEqualTypeParams() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  const A();",
-        "}",
-        "var m = {const A<int>(): 0, const A<int>(): 1};"]));
+    Source source = addSource(r'''
+class A<T> {
+  const A();
+}
+var m = {const A<int>(): 0, const A<int>(): 1};''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]);
     verify([source]);
@@ -938,21 +1089,21 @@
 
   void test_equalKeysInMap_withUnequalTypeParams() {
     // No error should be produced because A<int> and A<num> are different types.
-    Source source = addSource(EngineTestCase.createSource([
-        "class A<T> {",
-        "  const A();",
-        "}",
-        "var m = {const A<int>(): 0, const A<num>(): 1};"]));
+    Source source = addSource(r'''
+class A<T> {
+  const A();
+}
+var m = {const A<int>(): 0, const A<num>(): 1};''');
     resolve(source);
     assertNoErrors(source);
     verify([source]);
   }
 
   void test_exportDuplicatedLibraryName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library test;",
-        "export 'lib1.dart';",
-        "export 'lib2.dart';"]));
+    Source source = addSource(r'''
+library test;
+export 'lib1.dart';
+export 'lib2.dart';''');
     addNamedSource("/lib1.dart", "library lib;");
     addNamedSource("/lib2.dart", "library lib;");
     resolve(source);
@@ -961,39 +1112,54 @@
   }
 
   void test_extraPositionalArguments() {
-    Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", "  f(0, 1, '2');", "}"]));
+    Source source = addSource(r'''
+f() {}
+main() {
+  f(0, 1, '2');
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
     verify([source]);
   }
 
   void test_extraPositionalArguments_functionExpression() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  (int x) {} (0, 1);", "}"]));
+    Source source = addSource(r'''
+main() {
+  (int x) {} (0, 1);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]);
     verify([source]);
   }
 
   void test_fieldInitializedInInitializerAndDeclaration_final() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  final int x = 0;",
-        "  A() : x = 1 {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x = 0;
+  A() : x = 1 {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]);
     verify([source]);
   }
 
   void test_fieldInitializerNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A() : x = '';", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A() : x = '';
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_fieldInitializingFormalNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  int x;", "  A(String this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  int x;
+  A(String this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE]);
     verify([source]);
@@ -1009,88 +1175,111 @@
    * the broader code
    */
   void test_finalInitializedInDeclarationAndConstructor_initializers() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x = 0;", "  A() : x = 0 {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x = 0;
+  A() : x = 0 {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]);
     verify([source]);
   }
 
   void test_finalInitializedInDeclarationAndConstructor_initializingFormal() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final x = 0;", "  A(this.x) {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final x = 0;
+  A(this.x) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]);
     verify([source]);
   }
 
   void test_finalNotInitialized_inConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final int x;", "  A() {}", "}"]));
+    Source source = addSource(r'''
+class A {
+  final int x;
+  A() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_instanceField_final() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  final F;", "}"]));
+    Source source = addSource(r'''
+class A {
+  final F;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_instanceField_final_static() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  static final F;", "}"]));
+    Source source = addSource(r'''
+class A {
+  static final F;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_library_final() {
-    Source source = addSource(EngineTestCase.createSource(["final F;"]));
+    Source source = addSource("final F;");
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_finalNotInitialized_local_final() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  final int x;", "}"]));
+    Source source = addSource(r'''
+f() {
+  final int x;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]);
     verify([source]);
   }
 
   void test_functionWithoutCall_direct() {
-    Source source = addSource(EngineTestCase.createSource(["class A implements Function {", "}"]));
+    Source source = addSource(r'''
+class A implements Function {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
     verify([source]);
   }
 
   void test_functionWithoutCall_indirect_extends() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements Function {",
-        "}",
-        "class B extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A implements Function {
+}
+class B extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
     verify([source]);
   }
 
   void test_functionWithoutCall_indirect_implements() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A implements Function {",
-        "}",
-        "class B implements A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A implements Function {
+}
+class B implements A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]);
     verify([source]);
   }
 
   void test_importDuplicatedLibraryName() {
-    Source source = addSource(EngineTestCase.createSource([
-        "library test;",
-        "import 'lib1.dart';",
-        "import 'lib2.dart';"]));
+    Source source = addSource(r'''
+library test;
+import 'lib1.dart';
+import 'lib2.dart';''');
     addNamedSource("/lib1.dart", "library lib;");
     addNamedSource("/lib2.dart", "library lib;");
     resolve(source);
@@ -1103,163 +1292,165 @@
 
   void test_importOfNonLibrary() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["part of lib;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library lib;",
-        "import 'lib1.dart' deferred as p;",
-        "var a = new p.A();"])], <ErrorCode> [
+        r'''
+part of lib;
+class A {}''',
+        r'''
+library lib;
+import 'lib1.dart' deferred as p;
+var a = new p.A();'''], <ErrorCode> [
         CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY,
         ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.IMPORT_OF_NON_LIBRARY]);
   }
 
   void test_inconsistentMethodInheritanceGetterAndMethod() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int x();",
-        "}",
-        "abstract class B {",
-        "  int get x;",
-        "}",
-        "class C implements A, B {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int x();
+}
+abstract class B {
+  int get x;
+}
+class C implements A, B {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_field() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static var n;",
-        "}",
-        "class B extends A {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static var n;
+}
+class B extends A {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_field2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static var n;",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static var n;
+}
+class B extends A {
+}
+class C extends B {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get n {return 0;}",
-        "}",
-        "class B extends A {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get n {return 0;}
+}
+class B extends A {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_getter2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static get n {return 0;}",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static get n {return 0;}
+}
+class B extends A {
+}
+class C extends B {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static n () {}",
-        "}",
-        "class B extends A {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static n () {}
+}
+class B extends A {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_method2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static n () {}",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static n () {}
+}
+class B extends A {
+}
+class C extends B {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set n(int x) {}",
-        "}",
-        "class B extends A {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set n(int x) {}
+}
+class B extends A {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_instanceMethodNameCollidesWithSuperclassStatic_setter2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  static set n(int x) {}",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  void n() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  static set n(int x) {}
+}
+class B extends A {
+}
+class C extends B {
+  void n() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_SUPERCLASS_STATIC]);
     verify([source]);
   }
 
   void test_invalidGetterOverrideReturnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get g { return 0; }",
-        "}",
-        "class B extends A {",
-        "  String get g { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get g { return 0; }
+}
+class B extends A {
+  String get g { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidGetterOverrideReturnType_implicit() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  String f;",
-        "}",
-        "class B extends A {",
-        "  int f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  String f;
+}
+class B extends A {
+  int f;
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE,
@@ -1269,105 +1460,105 @@
 
   void test_invalidGetterOverrideReturnType_twoInterfaces() {
     // test from language/override_inheritance_field_test_11.dart
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  int get getter => null;",
-        "}",
-        "abstract class J {",
-        "  num get getter => null;",
-        "}",
-        "abstract class A implements I, J {}",
-        "class B extends A {",
-        "  String get getter => null;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  int get getter => null;
+}
+abstract class J {
+  num get getter => null;
+}
+abstract class A implements I, J {}
+class B extends A {
+  String get getter => null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidGetterOverrideReturnType_twoInterfaces_conflicting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I<U> {",
-        "  U get g => null;",
-        "}",
-        "abstract class J<V> {",
-        "  V get g => null;",
-        "}",
-        "class B implements I<int>, J<String> {",
-        "  double get g => null;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I<U> {
+  U get g => null;
+}
+abstract class J<V> {
+  V get g => null;
+}
+class B implements I<int>, J<String> {
+  double get g => null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNamedParamType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({int a}) {}",
-        "}",
-        "class B implements A {",
-        "  m({String a}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({int a}) {}
+}
+class B implements A {
+  m({String a}) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNormalParamType_interface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(int a) {}",
-        "}",
-        "class B implements A {",
-        "  m(String a) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(int a) {}
+}
+class B implements A {
+  m(String a) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNormalParamType_superclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(int a) {}",
-        "}",
-        "class B extends A {",
-        "  m(String a) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(int a) {}
+}
+class B extends A {
+  m(String a) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNormalParamType_superclass_interface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I<U> {",
-        "  m(U u) => null;",
-        "}",
-        "abstract class J<V> {",
-        "  m(V v) => null;",
-        "}",
-        "class B extends I<int> implements J<String> {",
-        "  m(double d) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I<U> {
+  m(U u) => null;
+}
+abstract class J<V> {
+  m(V v) => null;
+}
+class B extends I<int> implements J<String> {
+  m(double d) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideNormalParamType_twoInterfaces() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  m(int n);",
-        "}",
-        "abstract class J {",
-        "  m(num n);",
-        "}",
-        "abstract class A implements I, J {}",
-        "class B extends A {",
-        "  m(String n) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  m(int n);
+}
+abstract class J {
+  m(num n);
+}
+abstract class A implements I, J {}
+class B extends A {
+  m(String n) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
@@ -1375,279 +1566,279 @@
 
   void test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() {
     // language/override_inheritance_generic_test/08
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I<U> {",
-        "  m(U u) => null;",
-        "}",
-        "abstract class J<V> {",
-        "  m(V v) => null;",
-        "}",
-        "class B implements I<int>, J<String> {",
-        "  m(double d) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I<U> {
+  m(U u) => null;
+}
+abstract class J<V> {
+  m(V v) => null;
+}
+class B implements I<int>, J<String> {
+  m(double d) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideOptionalParamType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m([int a]) {}",
-        "}",
-        "class B implements A {",
-        "  m([String a]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m([int a]) {}
+}
+class B implements A {
+  m([String a]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideOptionalParamType_twoInterfaces() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  m([int n]);",
-        "}",
-        "abstract class J {",
-        "  m([num n]);",
-        "}",
-        "abstract class A implements I, J {}",
-        "class B extends A {",
-        "  m([String n]) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  m([int n]);
+}
+abstract class J {
+  m([num n]);
+}
+abstract class A implements I, J {}
+class B extends A {
+  m([String n]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_interface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B implements A {",
-        "  String m() { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() { return 0; }
+}
+class B implements A {
+  String m() { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_interface_grandparent() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int m();",
-        "}",
-        "abstract class B implements A {",
-        "}",
-        "class C implements B {",
-        "  String m() { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int m();
+}
+abstract class B implements A {
+}
+class C implements B {
+  String m() { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_mixin() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B extends Object with A {",
-        "  String m() { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() { return 0; }
+}
+class B extends Object with A {
+  String m() { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_superclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "  String m() { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() { return 0; }
+}
+class B extends A {
+  String m() { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_superclass_grandparent() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "}",
-        "class C extends B {",
-        "  String m() { return 'a'; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() { return 0; }
+}
+class B extends A {
+}
+class C extends B {
+  String m() { return 'a'; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_twoInterfaces() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  int m();",
-        "}",
-        "abstract class J {",
-        "  num m();",
-        "}",
-        "abstract class A implements I, J {}",
-        "class B extends A {",
-        "  String m() => '';",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  int m();
+}
+abstract class J {
+  num m();
+}
+abstract class A implements I, J {}
+class B extends A {
+  String m() => '';
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidMethodOverrideReturnType_void() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int m() { return 0; }",
-        "}",
-        "class B extends A {",
-        "  void m() {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int m() { return 0; }
+}
+class B extends A {
+  void m() {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({int p : 0}) {}",
-        "}",
-        "class B extends A {",
-        "  m({int p : 1}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({int p : 0}) {}
+}
+class B extends A {
+  m({int p : 1}) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]);
     verify([source]);
   }
 
   void test_invalidOverrideDifferentDefaultValues_positional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m([int p = 0]) {}",
-        "}",
-        "class B extends A {",
-        "  m([int p = 1]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m([int p = 0]) {}
+}
+class B extends A {
+  m([int p = 1]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL]);
     verify([source]);
   }
 
   void test_invalidOverrideNamed_fewerNamedParameters() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({a, b}) {}",
-        "}",
-        "class B extends A {",
-        "  m({a}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({a, b}) {}
+}
+class B extends A {
+  m({a}) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
     verify([source]);
   }
 
   void test_invalidOverrideNamed_missingNamedParameter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m({a, b}) {}",
-        "}",
-        "class B extends A {",
-        "  m({a, c}) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m({a, b}) {}
+}
+class B extends A {
+  m({a, c}) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]);
     verify([source]);
   }
 
   void test_invalidOverridePositional_optional() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m([a, b]) {}",
-        "}",
-        "class B extends A {",
-        "  m([a]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m([a, b]) {}
+}
+class B extends A {
+  m([a]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
     verify([source]);
   }
 
   void test_invalidOverridePositional_optionalAndRequired() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(a, b, [c, d]) {}",
-        "}",
-        "class B extends A {",
-        "  m(a, b, [c]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(a, b, [c, d]) {}
+}
+class B extends A {
+  m(a, b, [c]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
     verify([source]);
   }
 
   void test_invalidOverridePositional_optionalAndRequired2() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(a, b, [c, d]) {}",
-        "}",
-        "class B extends A {",
-        "  m(a, [c, d]) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(a, b, [c, d]) {}
+}
+class B extends A {
+  m(a, [c, d]) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]);
     verify([source]);
   }
 
   void test_invalidOverrideRequired() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  m(a) {}",
-        "}",
-        "class B extends A {",
-        "  m(a, b) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  m(a) {}
+}
+class B extends A {
+  m(a, b) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]);
     verify([source]);
   }
 
   void test_invalidSetterOverrideNormalParamType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  void set s(int v) {}",
-        "}",
-        "class B extends A {",
-        "  void set s(String v) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  void set s(int v) {}
+}
+class B extends A {
+  void set s(String v) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidSetterOverrideNormalParamType_superclass_interface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  set setter14(int _) => null;",
-        "}",
-        "abstract class J {",
-        "  set setter14(num _) => null;",
-        "}",
-        "abstract class A extends I implements J {}",
-        "class B extends A {",
-        "  set setter14(String _) => null;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  set setter14(int _) => null;
+}
+abstract class J {
+  set setter14(num _) => null;
+}
+abstract class A extends I implements J {}
+class B extends A {
+  set setter14(String _) => null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
@@ -1655,115 +1846,117 @@
 
   void test_invalidSetterOverrideNormalParamType_twoInterfaces() {
     // test from language/override_inheritance_field_test_34.dart
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I {",
-        "  set setter14(int _) => null;",
-        "}",
-        "abstract class J {",
-        "  set setter14(num _) => null;",
-        "}",
-        "abstract class A implements I, J {}",
-        "class B extends A {",
-        "  set setter14(String _) => null;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I {
+  set setter14(int _) => null;
+}
+abstract class J {
+  set setter14(num _) => null;
+}
+abstract class A implements I, J {}
+class B extends A {
+  set setter14(String _) => null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class I<U> {",
-        "  set s(U u) {}",
-        "}",
-        "abstract class J<V> {",
-        "  set s(V v) {}",
-        "}",
-        "class B implements I<int>, J<String> {",
-        "  set s(double d) {}",
-        "}"]));
+    Source source = addSource(r'''
+abstract class I<U> {
+  set s(U u) {}
+}
+abstract class J<V> {
+  set s(V v) {}
+}
+class B implements I<int>, J<String> {
+  set s(double d) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
     verify([source]);
   }
 
   void test_listElementTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = <String> [42];"]));
+    Source source = addSource("var v = <String> [42];");
     resolve(source);
     assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_mapKeyTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = <String, int > {1 : 2};"]));
+    Source source = addSource("var v = <String, int > {1 : 2};");
     resolve(source);
     assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_mapValueTypeNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource(["var v = <String, String> {'a' : 2};"]));
+    Source source = addSource("var v = <String, String> {'a' : 2};");
     resolve(source);
     assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]);
     verify([source]);
   }
 
   void test_mismatchedAccessorTypes_class() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get g { return 0; }",
-        "  set g(String v) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get g { return 0; }
+  set g(String v) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
     verify([source]);
   }
 
   void test_mismatchedAccessorTypes_getterAndSuperSetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int get g { return 0; }",
-        "}",
-        "class B extends A {",
-        "  set g(String v) {}",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int get g { return 0; }
+}
+class B extends A {
+  set g(String v) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
     verify([source]);
   }
 
   void test_mismatchedAccessorTypes_setterAndSuperGetter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set g(int v) {}",
-        "}",
-        "class B extends A {",
-        "  String get g { return ''; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set g(int v) {}
+}
+class B extends A {
+  String get g { return ''; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
     verify([source]);
   }
 
   void test_mismatchedAccessorTypes_topLevel() {
-    Source source = addSource(EngineTestCase.createSource(["int get g { return 0; }", "set g(String v) {}"]));
+    Source source = addSource(r'''
+int get g { return 0; }
+set g(String v) {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
     verify([source]);
   }
 
   void test_mixedReturnTypes_localFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  m(int x) {",
-        "    return (int y) {",
-        "      if (y < 0) {",
-        "        return;",
-        "      }",
-        "      return 0;",
-        "    };",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  m(int x) {
+    return (int y) {
+      if (y < 0) {
+        return;
+      }
+      return 0;
+    };
+  }
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.MIXED_RETURN_TYPES,
@@ -1772,15 +1965,15 @@
   }
 
   void test_mixedReturnTypes_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  m(int x) {",
-        "    if (x < 0) {",
-        "      return;",
-        "    }",
-        "    return 0;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class C {
+  m(int x) {
+    if (x < 0) {
+      return;
+    }
+    return 0;
+  }
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.MIXED_RETURN_TYPES,
@@ -1789,13 +1982,13 @@
   }
 
   void test_mixedReturnTypes_topLevelFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int x) {",
-        "  if (x < 0) {",
-        "    return;",
-        "  }",
-        "  return 0;",
-        "}"]));
+    Source source = addSource(r'''
+f(int x) {
+  if (x < 0) {
+    return;
+  }
+  return 0;
+}''');
     resolve(source);
     assertErrors(source, [
         StaticWarningCode.MIXED_RETURN_TYPES,
@@ -1804,49 +1997,55 @@
   }
 
   void test_newWithAbstractClass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {}",
-        "void f() {",
-        "  A a = new A();",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {}
+void f() {
+  A a = new A();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]);
     verify([source]);
   }
 
   void test_newWithInvalidTypeParameters() {
-    Source source = addSource(EngineTestCase.createSource(["class A {}", "f() { return new A<A>(); }"]));
+    Source source = addSource(r'''
+class A {}
+f() { return new A<A>(); }''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_newWithInvalidTypeParameters_tooFew() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<K, V> {}",
-        "f(p) {",
-        "  return new C<A>();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<K, V> {}
+f(p) {
+  return new C<A>();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_newWithInvalidTypeParameters_tooMany() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {}",
-        "class C<E> {}",
-        "f(p) {",
-        "  return new C<A, A>();",
-        "}"]));
+    Source source = addSource(r'''
+class A {}
+class C<E> {}
+f(p) {
+  return new C<A, A>();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]);
     verify([source]);
   }
 
   void test_newWithNonType() {
-    Source source = addSource(EngineTestCase.createSource(["var A = 0;", "void f() {", "  var a = new A();", "}"]));
+    Source source = addSource(r'''
+var A = 0;
+void f() {
+  var a = new A();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]);
     verify([source]);
@@ -1854,12 +2053,12 @@
 
   void test_newWithNonType_fromLibrary() {
     Source source1 = addNamedSource("lib.dart", "class B {}");
-    Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([
-        "import 'lib.dart' as lib;",
-        "void f() {",
-        "  var a = new lib.A();",
-        "}",
-        "lib.B b;"]));
+    Source source2 = addNamedSource("lib2.dart", r'''
+import 'lib.dart' as lib;
+void f() {
+  var a = new lib.A();
+}
+lib.B b;''');
     resolve(source1);
     resolve(source2);
     assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]);
@@ -1867,57 +2066,57 @@
   }
 
   void test_newWithUndefinedConstructor() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "f() {",
-        "  new A.name();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+f() {
+  new A.name();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]);
     // no verify(), 'name' is not resolved
   }
 
   void test_newWithUndefinedConstructorDefault() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A.name() {}",
-        "}",
-        "f() {",
-        "  new A();",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A.name() {}
+}
+f() {
+  new A();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAULT]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberFivePlus() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m();",
-        "  n();",
-        "  o();",
-        "  p();",
-        "  q();",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m();
+  n();
+  o();
+  p();
+  q();
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FIVE_PLUS]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberFour() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m();",
-        "  n();",
-        "  o();",
-        "  p();",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m();
+  n();
+  o();
+  p();
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]);
     verify([source]);
@@ -1925,13 +2124,13 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class M {}",
-        "abstract class A {}",
-        "abstract class I {",
-        "  m();",
-        "}",
-        "class B = A with M implements I;"]));
+    Source source = addSource(r'''
+abstract class M {}
+abstract class A {}
+abstract class I {
+  m();
+}
+class B = A with M implements I;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -1939,12 +2138,12 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class M {",
-        "  m();",
-        "}",
-        "abstract class A {}",
-        "class B = A with M;"]));
+    Source source = addSource(r'''
+abstract class M {
+  m();
+}
+abstract class A {}
+class B = A with M;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -1952,12 +2151,12 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
     // 15979
-    Source source = addSource(EngineTestCase.createSource([
-        "class M {}",
-        "abstract class A {",
-        "  m();",
-        "}",
-        "class B = A with M;"]));
+    Source source = addSource(r'''
+class M {}
+abstract class A {
+  m();
+}
+class B = A with M;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -1965,62 +2164,62 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
     // 15028
-    Source source = addSource(EngineTestCase.createSource([
-        "class C {",
-        "  foo(int x) => x;",
-        "}",
-        "abstract class D {",
-        "  foo(x, [y]);",
-        "}",
-        "class E extends C implements D {}"]));
+    Source source = addSource(r'''
+class C {
+  foo(int x) => x;
+}
+abstract class D {
+  foo(x, [y]);
+}
+class E extends C implements D {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  int get g {return 1;}",
-        "}",
-        "class C implements I {",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  int get g {return 1;}
+}
+class C implements I {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int get g;",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int get g;
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  m(p) {}",
-        "}",
-        "class C implements I {",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  m(p) {}
+}
+class C implements I {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m(p);",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m(p);
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -2028,15 +2227,15 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount() {
     // 7640
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  int x(int a);",
-        "}",
-        "abstract class B {",
-        "  int x(int a, [int b]);",
-        "}",
-        "class C implements A, B {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  int x(int a);
+}
+abstract class B {
+  int x(int a, [int b]);
+}
+class C implements A, B {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -2044,70 +2243,70 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() {
     // 15001
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A { get g1; get g2; }",
-        "abstract class B implements A { get g1 => 1; }",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+abstract class A { get g1; get g2; }
+abstract class B implements A { get g1 => 1; }
+class C extends Object with B {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() {
     // 15001
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A { m1(); m2(); }",
-        "abstract class B implements A { m1() => 1; }",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+abstract class A { m1(); m2(); }
+abstract class B implements A { m1() => 1; }
+class C extends Object with B {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() {
     // 15001
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A { set s1(v); set s2(v); }",
-        "abstract class B implements A { set s1(v) {} }",
-        "class C extends Object with B {}"]));
+    Source source = addSource(r'''
+abstract class A { set s1(v); set s2(v); }
+abstract class B implements A { set s1(v) {} }
+class C extends Object with B {}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter() {
     // test from language/override_inheritance_abstract_test_14.dart
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  set field(_);",
-        "}",
-        "abstract class I {",
-        "  var field;",
-        "}",
-        "class B extends A implements I {",
-        "  get field => 0;",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  set field(_);
+}
+abstract class I {
+  var field;
+}
+class B extends A implements I {
+  get field => 0;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  set s(int i) {}",
-        "}",
-        "class C implements I {",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  set s(int i) {}
+}
+class C implements I {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  set s(int i);",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  set s(int i);
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -2115,15 +2314,15 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() {
     // bug 11154
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get a => 'a';",
-        "}",
-        "abstract class B implements A {",
-        "  get b => 'b';",
-        "}",
-        "class C extends B {",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get a => 'a';
+}
+abstract class B implements A {
+  get b => 'b';
+}
+class C extends B {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -2131,13 +2330,13 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingGetter() {
     // 16133
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  var v;",
-        "}",
-        "class C implements I {",
-        "  set v(_) {}",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  var v;
+}
+class C implements I {
+  set v(_) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
@@ -2145,40 +2344,40 @@
 
   void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_missingSetter() {
     // 16133
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  var v;",
-        "}",
-        "class C implements I {",
-        "  get v => 1;",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  var v;
+}
+class C implements I {
+  get v => 1;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberThree() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m();",
-        "  n();",
-        "  o();",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m();
+  n();
+  o();
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]);
     verify([source]);
   }
 
   void test_nonAbstractClassInheritsAbstractMemberTwo() {
-    Source source = addSource(EngineTestCase.createSource([
-        "abstract class A {",
-        "  m();",
-        "  n();",
-        "}",
-        "class C extends A {",
-        "}"]));
+    Source source = addSource(r'''
+abstract class A {
+  m();
+  n();
+}
+class C extends A {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
     verify([source]);
@@ -2186,187 +2385,215 @@
 
   void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_missingBoth() {
     // 16133
-    Source source = addSource(EngineTestCase.createSource([
-        "class I {",
-        "  var v;",
-        "}",
-        "class C implements I {",
-        "}"]));
+    Source source = addSource(r'''
+class I {
+  var v;
+}
+class C implements I {
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_noElement() {
-    Source source = addSource(EngineTestCase.createSource(["f() {", "  try {", "  } on T catch (e) {", "  }", "}"]));
+    Source source = addSource(r'''
+f() {
+  try {
+  } on T catch (e) {
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
     verify([source]);
   }
 
   void test_nonTypeInCatchClause_notType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "var T = 0;",
-        "f() {",
-        "  try {",
-        "  } on T catch (e) {",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+var T = 0;
+f() {
+  try {
+  } on T catch (e) {
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]);
     verify([source]);
   }
 
   void test_nonVoidReturnForOperator() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int operator []=(a, b) { return a; }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int operator []=(a, b) { return a; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]);
     verify([source]);
   }
 
   void test_nonVoidReturnForSetter_function() {
-    Source source = addSource(EngineTestCase.createSource(["int set x(int v) {", "  return 42;", "}"]));
+    Source source = addSource(r'''
+int set x(int v) {
+  return 42;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
     verify([source]);
   }
 
   void test_nonVoidReturnForSetter_method() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  int set x(int v) {",
-        "    return 42;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  int set x(int v) {
+    return 42;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]);
     verify([source]);
   }
 
   void test_notAType() {
-    Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {", "  f v = null;", "}"]));
+    Source source = addSource(r'''
+f() {}
+main() {
+  f v = null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NOT_A_TYPE]);
     verify([source]);
   }
 
   void test_notEnoughRequiredArguments() {
-    Source source = addSource(EngineTestCase.createSource(["f(int a, String b) {}", "main() {", "  f();", "}"]));
+    Source source = addSource(r'''
+f(int a, String b) {}
+main() {
+  f();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_notEnoughRequiredArguments_functionExpression() {
-    Source source = addSource(EngineTestCase.createSource(["main() {", "  (int x) {} ();", "}"]));
+    Source source = addSource(r'''
+main() {
+  (int x) {} ();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_notEnoughRequiredArguments_getterReturningFunction() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef Getter(self);",
-        "Getter getter = (x) => x;",
-        "main() {",
-        "  getter();",
-        "}"]));
+    Source source = addSource(r'''
+typedef Getter(self);
+Getter getter = (x) => x;
+main() {
+  getter();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]);
     verify([source]);
   }
 
   void test_partOfDifferentLibrary() {
-    Source source = addSource(EngineTestCase.createSource(["library lib;", "part 'part.dart';"]));
-    addNamedSource("/part.dart", EngineTestCase.createSource(["part of lub;"]));
+    Source source = addSource(r'''
+library lib;
+part 'part.dart';''');
+    addNamedSource("/part.dart", "part of lub;");
     resolve(source);
     assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]);
     verify([source]);
   }
 
   void test_redirectToInvalidFunctionType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B {",
-        "  A(int p) {}",
-        "}",
-        "class B {",
-        "  factory B() = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B {
+  A(int p) {}
+}
+class B {
+  factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]);
     verify([source]);
   }
 
   void test_redirectToInvalidReturnType() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  A() {}",
-        "}",
-        "class B {",
-        "  factory B() = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  A() {}
+}
+class B {
+  factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]);
     verify([source]);
   }
 
   void test_redirectToMissingConstructor_named() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B{",
-        "  A() {}",
-        "}",
-        "class B {",
-        "  factory B() = A.name;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B{
+  A() {}
+}
+class B {
+  factory B() = A.name;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_redirectToMissingConstructor_unnamed() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A implements B{",
-        "  A.name() {}",
-        "}",
-        "class B {",
-        "  factory B() = A;",
-        "}"]));
+    Source source = addSource(r'''
+class A implements B{
+  A.name() {}
+}
+class B {
+  factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]);
   }
 
   void test_redirectToNonClass_notAType() {
-    Source source = addSource(EngineTestCase.createSource(["class B {", "  int A;", "  factory B() = A;", "}"]));
+    Source source = addSource(r'''
+class B {
+  int A;
+  factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
     verify([source]);
   }
 
   void test_redirectToNonClass_undefinedIdentifier() {
-    Source source = addSource(EngineTestCase.createSource(["class B {", "  factory B() = A;", "}"]));
+    Source source = addSource(r'''
+class B {
+  factory B() = A;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]);
     verify([source]);
   }
 
   void test_returnWithoutValue_factoryConstructor() {
-    Source source = addSource(EngineTestCase.createSource(["class A { factory A() { return; } }"]));
+    Source source = addSource("class A { factory A() { return; } }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
     verify([source]);
   }
 
   void test_returnWithoutValue_function() {
-    Source source = addSource(EngineTestCase.createSource(["int f() { return; }"]));
+    Source source = addSource("int f() { return; }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
     verify([source]);
   }
 
   void test_returnWithoutValue_method() {
-    Source source = addSource(EngineTestCase.createSource(["class A { int m() { return; } }"]));
+    Source source = addSource("class A { int m() { return; } }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
     verify([source]);
@@ -2375,72 +2602,90 @@
   void test_returnWithoutValue_mixedReturnTypes_function() {
     // Tests that only the RETURN_WITHOUT_VALUE warning is created, and no MIXED_RETURN_TYPES are
     // created.
-    Source source = addSource(EngineTestCase.createSource([
-        "int f(int x) {",
-        "  if (x < 0) {",
-        "    return 1;",
-        "  }",
-        "  return;",
-        "}"]));
+    Source source = addSource(r'''
+int f(int x) {
+  if (x < 0) {
+    return 1;
+  }
+  return;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_method_invocation() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m() {}", "}", "main() {", "  A.m();", "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+main() {
+  A.m();
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_method_reference() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  m() {}", "}", "main() {", "  A.m;", "}"]));
+    Source source = addSource(r'''
+class A {
+  m() {}
+}
+main() {
+  A.m;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_propertyAccess_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A {", "  var f;", "}", "main() {", "  A.f;", "}"]));
+    Source source = addSource(r'''
+class A {
+  var f;
+}
+main() {
+  A.f;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_propertyAccess_getter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  get f => 42;",
-        "}",
-        "main() {",
-        "  A.f;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  get f => 42;
+}
+main() {
+  A.f;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_staticAccessToInstanceMember_propertyAccess_setter() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class A {",
-        "  set f(x) {}",
-        "}",
-        "main() {",
-        "  A.f = 42;",
-        "}"]));
+    Source source = addSource(r'''
+class A {
+  set f(x) {}
+}
+main() {
+  A.f = 42;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]);
     verify([source]);
   }
 
   void test_switchExpressionNotAssignable() {
-    Source source = addSource(EngineTestCase.createSource([
-        "f(int p) {",
-        "  switch (p) {",
-        "    case 'a': break;",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+f(int p) {
+  switch (p) {
+    case 'a': break;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]);
     verify([source]);
@@ -2448,218 +2693,267 @@
 
   void test_typeAnnotationDeferredClass_asExpression() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f(var v) {",
-        "  v as a.A;",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f(var v) {
+  v as a.A;
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_catchClause() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f(var v) {",
-        "  try {",
-        "  } on a.A {",
-        "  }",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f(var v) {
+  try {
+  } on a.A {
+  }
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_fieldFormalParameter() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class C {",
-        "  var v;",
-        "  C(a.A this.v);",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class C {
+  var v;
+  C(a.A this.v);
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_functionDeclaration_returnType() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "a.A f() { return null; }"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+a.A f() { return null; }'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f(a.A g()) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f(a.A g()) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_isExpression() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f(var v) {",
-        "  bool b = v is a.A;",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f(var v) {
+  bool b = v is a.A;
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_methodDeclaration_returnType() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class C {",
-        "  a.A m() { return null; }",
-        "}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class C {
+  a.A m() { return null; }
+}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_simpleFormalParameter() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "f(a.A v) {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+f(a.A v) {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_typeArgumentList() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class C<E> {}",
-        "C<a.A> c;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class C<E> {}
+C<a.A> c;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_typeArgumentList2() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class C<E, F> {}",
-        "C<a.A, a.A> c;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class C<E, F> {}
+C<a.A, a.A> c;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [
         StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS,
         StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_typeParameter_bound() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "class C<E extends a.A> {}"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+class C<E extends a.A> {}'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeAnnotationDeferredClass_variableDeclarationList() {
     resolveWithAndWithoutExperimental(<String> [
-        EngineTestCase.createSource(["library lib1;", "class A {}"]),
-        EngineTestCase.createSource([
-        "library root;",
-        "import 'lib1.dart' deferred as a;",
-        "a.A v;"])], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
+        r'''
+library lib1;
+class A {}''',
+        r'''
+library root;
+import 'lib1.dart' deferred as a;
+a.A v;'''], <ErrorCode> [ParserErrorCode.DEFERRED_IMPORTS_NOT_SUPPORTED], <ErrorCode> [StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]);
   }
 
   void test_typeParameterReferencedByStatic_field() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static K k;", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static K k;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typeParameterReferencedByStatic_getter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static K get k => null;", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static K get k => null;
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typeParameterReferencedByStatic_methodBodyReference() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static m() {", "    K k;", "  }", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static m() {
+    K k;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typeParameterReferencedByStatic_methodParameter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static m(K k) {}", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static m(K k) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typeParameterReferencedByStatic_methodReturn() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static K m() { return null; }", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static K m() { return null; }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typeParameterReferencedByStatic_setter() {
-    Source source = addSource(EngineTestCase.createSource(["class A<K> {", "  static set s(K k) {}", "}"]));
+    Source source = addSource(r'''
+class A<K> {
+  static set s(K k) {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
     verify([source]);
   }
 
   void test_typePromotion_functionType_arg_InterToDyn() {
-    Source source = addSource(EngineTestCase.createSource([
-        "typedef FuncDyn(x);",
-        "typedef FuncA(A a);",
-        "class A {}",
-        "class B {}",
-        "main(FuncA f) {",
-        "  if (f is FuncDyn) {",
-        "    f(new B());",
-        "  }",
-        "}"]));
+    Source source = addSource(r'''
+typedef FuncDyn(x);
+typedef FuncA(A a);
+class A {}
+class B {}
+main(FuncA f) {
+  if (f is FuncDyn) {
+    f(new B());
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]);
   }
 
   void test_typeTestNonType() {
-    Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(var p) {", "  if (p is A) {", "  }", "}"]));
+    Source source = addSource(r'''
+var A = 0;
+f(var p) {
+  if (p is A) {
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.TYPE_TEST_NON_TYPE]);
     verify([source]);
   }
 
   void test_undefinedClass_instanceCreation() {
-    Source source = addSource(EngineTestCase.createSource(["f() { new C(); }"]));
+    Source source = addSource("f() { new C(); }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
   }
 
   void test_undefinedClass_variableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["f() { C c; }"]));
+    Source source = addSource("f() { C c; }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
   }
 
   void test_undefinedClassBoolean_variableDeclaration() {
-    Source source = addSource(EngineTestCase.createSource(["f() { boolean v; }"]));
+    Source source = addSource("f() { boolean v; }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]);
   }
 
   void test_undefinedGetter_fromLibrary() {
     Source source1 = addNamedSource("lib.dart", "");
-    Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([
-        "import 'lib.dart' as lib;",
-        "void f() {",
-        "  var g = lib.gg;",
-        "}"]));
+    Source source2 = addNamedSource("lib2.dart", r'''
+import 'lib.dart' as lib;
+void f() {
+  var g = lib.gg;
+}''');
     resolve(source1);
     resolve(source2);
     assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]);
@@ -2667,72 +2961,100 @@
   }
 
   void test_undefinedIdentifier_for() {
-    Source source = addSource(EngineTestCase.createSource(["f(var l) {", "  for (e in l) {", "  }", "}"]));
+    Source source = addSource(r'''
+f(var l) {
+  for (e in l) {
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_function() {
-    Source source = addSource(EngineTestCase.createSource(["int a() => b;"]));
+    Source source = addSource("int a() => b;");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_function_prefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class C {}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as b;", "", "int a() => b;", "b.C c;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class C {}''');
+    Source source = addSource(r'''
+import 'lib.dart' as b;
+
+int a() => b;
+b.C c;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
     verify([source]);
   }
 
   void test_undefinedIdentifier_initializer() {
-    Source source = addSource(EngineTestCase.createSource(["var a = b;"]));
+    Source source = addSource("var a = b;");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_initializer_prefix() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class C {}"]));
-    Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as b;", "", "var a = b;", "b.C c;"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class C {}''');
+    Source source = addSource(r'''
+import 'lib.dart' as b;
+
+var a = b;
+b.C c;''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_methodInvocation() {
-    Source source = addSource(EngineTestCase.createSource(["f() { C.m(); }"]));
+    Source source = addSource("f() { C.m(); }");
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_private_getter() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {", "  var _foo;", "}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  test() {",
-        "    var v = _foo;",
-        "  }",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  var _foo;
+}''');
+    Source source = addSource(r'''
+import 'lib.dart';
+class B extends A {
+  test() {
+    var v = _foo;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedIdentifier_private_setter() {
-    addNamedSource("/lib.dart", EngineTestCase.createSource(["library lib;", "class A {", "  var _foo;", "}"]));
-    Source source = addSource(EngineTestCase.createSource([
-        "import 'lib.dart';",
-        "class B extends A {",
-        "  test() {",
-        "    _foo = 42;",
-        "  }",
-        "}"]));
+    addNamedSource("/lib.dart", r'''
+library lib;
+class A {
+  var _foo;
+}''');
+    Source source = addSource(r'''
+import 'lib.dart';
+class B extends A {
+  test() {
+    _foo = 42;
+  }
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]);
   }
 
   void test_undefinedNamedParameter() {
-    Source source = addSource(EngineTestCase.createSource(["f({a, b}) {}", "main() {", "  f(c: 1);", "}"]));
+    Source source = addSource(r'''
+f({a, b}) {}
+main() {
+  f(c: 1);
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]);
     // no verify(), 'c' is not resolved
@@ -2740,75 +3062,86 @@
 
   void test_undefinedSetter() {
     Source source1 = addNamedSource("lib.dart", "");
-    Source source2 = addNamedSource("lib2.dart", EngineTestCase.createSource([
-        "import 'lib.dart' as lib;",
-        "void f() {",
-        "  lib.gg = null;",
-        "}"]));
+    Source source2 = addNamedSource("lib2.dart", r'''
+import 'lib.dart' as lib;
+void f() {
+  lib.gg = null;
+}''');
     resolve(source1);
     resolve(source2);
     assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]);
   }
 
   void test_undefinedStaticMethodOrGetter_getter() {
-    Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", "  f(C.m);", "}"]));
+    Source source = addSource(r'''
+class C {}
+f(var p) {
+  f(C.m);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedStaticMethodOrGetter_getter_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class S {",
-        "  static int get g => 0;",
-        "}",
-        "class C extends S {}",
-        "f(var p) {",
-        "  f(C.g);",
-        "}"]));
+    Source source = addSource(r'''
+class S {
+  static int get g => 0;
+}
+class C extends S {}
+f(var p) {
+  f(C.g);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   void test_undefinedStaticMethodOrGetter_method() {
-    Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var p) {", "  f(C.m());", "}"]));
+    Source source = addSource(r'''
+class C {}
+f(var p) {
+  f(C.m());
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedStaticMethodOrGetter_method_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class S {",
-        "  static m() {}",
-        "}",
-        "class C extends S {}",
-        "f(var p) {",
-        "  f(C.m());",
-        "}"]));
+    Source source = addSource(r'''
+class S {
+  static m() {}
+}
+class C extends S {}
+f(var p) {
+  f(C.m());
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]);
   }
 
   void test_undefinedStaticMethodOrGetter_setter_inSuperclass() {
-    Source source = addSource(EngineTestCase.createSource([
-        "class S {",
-        "  static set s(int i) {}",
-        "}",
-        "class C extends S {}",
-        "f(var p) {",
-        "  f(C.s = 1);",
-        "}"]));
+    Source source = addSource(r'''
+class S {
+  static set s(int i) {}
+}
+class C extends S {}
+f(var p) {
+  f(C.s = 1);
+}''');
     resolve(source);
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
   void test_voidReturnForGetter() {
-    Source source = addSource(EngineTestCase.createSource(["class S {", "  void get value {}", "}"]));
+    Source source = addSource(r'''
+class S {
+  void get value {}
+}''');
     resolve(source);
     assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]);
   }
 }
 
 main() {
-  _ut.groupSep = ' | ';
+  groupSep = ' | ';
   runReflectiveTests(StaticWarningCodeTest);
 }
diff --git a/pkg/analyzer/test/generated/test_all.dart b/pkg/analyzer/test/generated/test_all.dart
index 9c29923..a5690b6 100644
--- a/pkg/analyzer/test/generated/test_all.dart
+++ b/pkg/analyzer/test/generated/test_all.dart
@@ -19,6 +19,7 @@
 import 'scanner_test.dart' as scanner_test;
 import 'static_type_warning_code_test.dart' as static_type_warning_code_test;
 import 'static_warning_code_test.dart' as static_warning_code_test;
+import 'utilities_test.dart' as utilities_test;
 
 /// Utility for manually running all tests.
 main() {
@@ -37,5 +38,6 @@
     scanner_test.main();
     static_type_warning_code_test.main();
     static_warning_code_test.main();
+    utilities_test.main();
   });
 }
diff --git a/pkg/analyzer/test/generated/test_support.dart b/pkg/analyzer/test/generated/test_support.dart
index cb249cb..60c3ce6 100644
--- a/pkg/analyzer/test/generated/test_support.dart
+++ b/pkg/analyzer/test/generated/test_support.dart
@@ -15,16 +15,17 @@
 import 'package:analyzer/src/generated/error.dart';
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
-import 'package:analyzer/src/generated/java_junit.dart';
-import 'package:analyzer/src/generated/scanner.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:unittest/unittest.dart';
 
 
 /**
  * The class `EngineTestCase` defines utility methods for making assertions.
  */
-class EngineTestCase extends JUnitTestCase {
-  static int _PRINT_RANGE = 6;
+class EngineTestCase {
+  void setUp() {}
+
+  void tearDown() {}
 
   /**
    * Assert that the given collection has the same number of elements as the number of specified
@@ -44,18 +45,18 @@
         }
       }
       if (!found) {
-        JavaStringBuilder msg = new JavaStringBuilder();
-        msg.append("Expected element named: ");
-        msg.append(elemName);
-        msg.append("\n  but found: ");
+        StringBuffer buffer = new StringBuffer();
+        buffer.write("Expected element named: ");
+        buffer.write(elemName);
+        buffer.write("\n  but found: ");
         for (Element elem in elements) {
-          msg.append(elem.name);
-          msg.append(", ");
+          buffer.write(elem.name);
+          buffer.write(", ");
         }
-        JUnitTestCase.fail(msg.toString());
+        fail(buffer.toString());
       }
     }
-    assertLength(names.length, elements);
+    expect(elements, hasLength(names.length));
   }
 
   AnalysisContextImpl createAnalysisContext() {
@@ -77,8 +78,7 @@
         return accessor;
       }
     }
-    JUnitTestCase.fail(
-        "Could not find getter named ${getterName} in ${type.displayName}");
+    fail("Could not find getter named $getterName in ${type.displayName}");
     return null;
   }
 
@@ -95,220 +95,11 @@
         return method;
       }
     }
-    JUnitTestCase.fail(
-        "Could not find method named ${methodName} in ${type.displayName}");
+    fail("Could not find method named $methodName in ${type.displayName}");
     return null;
   }
 
   /**
-   * Assert that the tokens in the actual stream of tokens have the same types and lexemes as the
-   * tokens in the expected stream of tokens. Note that this does not assert anything about the
-   * offsets of the tokens (although the lengths will be equal).
-   *
-   * @param expectedStream the head of the stream of tokens that were expected
-   * @param actualStream the head of the stream of tokens that were actually found
-   * @throws AssertionFailedError if the two streams of tokens are not the same
-   */
-  static void assertAllMatch(Token expectedStream, Token actualStream) {
-    Token left = expectedStream;
-    Token right = actualStream;
-    while (left.type != TokenType.EOF && right.type != TokenType.EOF) {
-      assertMatches(left, right);
-      left = left.next;
-      right = right.next;
-    }
-  }
-
-  /**
-   * Assert that the given collection is non-`null` and has the expected number of elements.
-   *
-   * @param expectedSize the expected number of elements
-   * @param c the collection being tested
-   * @throws AssertionFailedError if the list is `null` or does not have the expected number
-   *           of elements
-   */
-  static void assertCollectionSize(int expectedSize, Iterable c) {
-    if (c == null) {
-      JUnitTestCase.fail(
-          "Expected collection of size ${expectedSize}; found null");
-    } else if (c.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected collection of size ${expectedSize}; contained ${c.length} elements");
-    }
-  }
-
-  /**
-   * Assert that the given array is non-`null` and contains the expected elements. The
-   * elements can appear in any order.
-   *
-   * @param array the array being tested
-   * @param expectedElements the expected elements
-   * @throws AssertionFailedError if the array is `null` or does not contain the expected
-   *           elements
-   */
-  static void assertContains(List<Object> array,
-      List<Object> expectedElements) {
-    int expectedSize = expectedElements.length;
-    if (array == null) {
-      JUnitTestCase.fail(
-          "Expected array of length ${expectedSize}; found null");
-    }
-    if (array.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected array of length ${expectedSize}; contained ${array.length} elements");
-    }
-    List<bool> found = new List<bool>.filled(expectedSize, false);
-    for (int i = 0; i < expectedSize; i++) {
-      _privateAssertContains(array, found, expectedElements[i]);
-    }
-  }
-
-  /**
-   * Assert that a given String is equal to an expected value.
-   *
-   * @param expected the expected String value
-   * @param actual the actual String value
-   */
-  static void assertEqualString(String expected, String actual) {
-    if (actual == null || expected == null) {
-      if (identical(actual, expected)) {
-        return;
-      }
-      if (actual == null) {
-        JUnitTestCase.assertTrueMsg(
-            "Content not as expected: is 'null' expected: ${expected}",
-            false);
-      } else {
-        JUnitTestCase.assertTrueMsg(
-            "Content not as expected: expected 'null' is: ${actual}",
-            false);
-      }
-    }
-    int diffPos = _getDiffPos(expected, actual);
-    if (diffPos != -1) {
-      int diffAhead = Math.max(0, diffPos - _PRINT_RANGE);
-      int diffAfter = Math.min(actual.length, diffPos + _PRINT_RANGE);
-      String diffStr =
-          "${actual.substring(diffAhead, diffPos)}^${actual.substring(diffPos, diffAfter)}";
-      // use detailed message
-      String message =
-          "Content not as expected: is\n${actual}\nDiffers at pos ${diffPos}: ${diffStr}\nexpected:\n${expected}";
-      JUnitTestCase.assertEqualsMsg(message, expected, actual);
-    }
-  }
-
-  /**
-   * Assert that the array of actual values contain exactly the same values as those in the array of
-   * expected value, with the exception that the order of the elements is not required to be the
-   * same.
-   *
-   * @param expectedValues the values that are expected to be found
-   * @param actualValues the actual values that are being compared against the expected values
-   */
-  static void assertEqualsIgnoreOrder(List<Object> expectedValues,
-      List<Object> actualValues) {
-    JUnitTestCase.assertNotNull(actualValues);
-    int expectedLength = expectedValues.length;
-    JUnitTestCase.assertEquals(expectedLength, actualValues.length);
-    List<bool> found = new List<bool>.filled(expectedLength, false);
-    for (int i = 0; i < expectedLength; i++) {
-      found[i] = false;
-    }
-    for (Object actualValue in actualValues) {
-      bool wasExpected = false;
-      for (int i = 0; i < expectedLength; i++) {
-        if (!found[i] && expectedValues[i] == actualValue) {
-          found[i] = true;
-          wasExpected = true;
-          break;
-        }
-      }
-      if (!wasExpected) {
-        JUnitTestCase.fail("The actual value ${actualValue} was not expected");
-      }
-    }
-  }
-
-  /**
-   * Assert that the given array is non-`null` and has exactly expected elements.
-   *
-   * @param array the array being tested
-   * @param expectedElements the expected elements
-   * @throws AssertionFailedError if the array is `null` or does not have the expected
-   *           elements
-   */
-  static void assertExactElementsInArray(List<Object> array,
-      List<Object> expectedElements) {
-    int expectedSize = expectedElements.length;
-    if (array == null) {
-      JUnitTestCase.fail("Expected array of size ${expectedSize}; found null");
-    }
-    if (array.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected array of size ${expectedSize}; contained ${array.length} elements");
-    }
-    for (int i = 0; i < expectedSize; i++) {
-      Object element = array[i];
-      Object expectedElement = expectedElements[i];
-      if (element != expectedElement) {
-        JUnitTestCase.fail(
-            "Expected ${expectedElement} at [${i}]; found ${element}");
-      }
-    }
-  }
-
-  /**
-   * Assert that the given list is non-`null` and has exactly expected elements.
-   *
-   * @param list the list being tested
-   * @param expectedElements the expected elements
-   * @throws AssertionFailedError if the list is `null` or does not have the expected elements
-   */
-  static void assertExactElementsInList(List list,
-      List<Object> expectedElements) {
-    int expectedSize = expectedElements.length;
-    if (list == null) {
-      JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
-    }
-    if (list.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected list of size ${expectedSize}; contained ${list.length} elements");
-    }
-    for (int i = 0; i < expectedSize; i++) {
-      Object element = list[i];
-      Object expectedElement = expectedElements[i];
-      if (element != expectedElement) {
-        JUnitTestCase.fail(
-            "Expected ${expectedElement} at [${i}]; found ${element}");
-      }
-    }
-  }
-
-  /**
-   * Assert that the given list is non-`null` and has exactly expected elements.
-   *
-   * @param set the list being tested
-   * @param expectedElements the expected elements
-   * @throws AssertionFailedError if the list is `null` or does not have the expected elements
-   */
-  static void assertExactElementsInSet(Set set, List<Object> expectedElements) {
-    int expectedSize = expectedElements.length;
-    if (set == null) {
-      JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
-    }
-    if (set.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected list of size ${expectedSize}; contained ${set.length} elements");
-    }
-    for (int i = 0; i < expectedSize; i++) {
-      Object expectedElement = expectedElements[i];
-      if (!set.contains(expectedElement)) {
-        JUnitTestCase.fail("Expected ${expectedElement} in set${set}");
-      }
-    }
-  }
-
-  /**
    * Assert that the given object is an instance of the expected class.
    *
    * @param expectedClass the class that the object is expected to be an instance of
@@ -319,177 +110,23 @@
   static Object assertInstanceOf(Predicate<Object> predicate,
       Type expectedClass, Object object) {
     if (!predicate(object)) {
-      JUnitTestCase.fail(
-          "Expected instance of ${expectedClass.toString()}, found ${(object == null ? "null" : object.runtimeType.toString())}");
+      fail("Expected instance of $expectedClass, found ${object == null ? "null" : object.runtimeType}");
     }
     return object;
   }
 
   /**
-   * Assert that the given array is non-`null` and has the expected number of elements.
-   *
-   * @param expectedLength the expected number of elements
-   * @param array the array being tested
-   * @throws AssertionFailedError if the array is `null` or does not have the expected number
-   *           of elements
-   */
-  static void assertLength(int expectedLength, List<Object> array) {
-    if (array == null) {
-      JUnitTestCase.fail(
-          "Expected array of length ${expectedLength}; found null");
-    } else if (array.length != expectedLength) {
-      JUnitTestCase.fail(
-          "Expected array of length ${expectedLength}; contained ${array.length} elements");
-    }
-  }
-
-  /**
-   * Assert that the actual token has the same type and lexeme as the expected token. Note that this
-   * does not assert anything about the offsets of the tokens (although the lengths will be equal).
-   *
-   * @param expectedToken the token that was expected
-   * @param actualToken the token that was found
-   * @throws AssertionFailedError if the two tokens are not the same
-   */
-  static void assertMatches(Token expectedToken, Token actualToken) {
-    JUnitTestCase.assertEquals(expectedToken.type, actualToken.type);
-    if (expectedToken is KeywordToken) {
-      assertInstanceOf((obj) => obj is KeywordToken, KeywordToken, actualToken);
-      JUnitTestCase.assertEquals(
-          expectedToken.keyword,
-          (actualToken as KeywordToken).keyword);
-    } else if (expectedToken is StringToken) {
-      assertInstanceOf((obj) => obj is StringToken, StringToken, actualToken);
-      JUnitTestCase.assertEquals(
-          expectedToken.lexeme,
-          (actualToken as StringToken).lexeme);
-    }
-  }
-
-  /**
-   * Assert that the given list is non-`null` and has the expected number of elements.
-   *
-   * @param expectedSize the expected number of elements
-   * @param list the list being tested
-   * @throws AssertionFailedError if the list is `null` or does not have the expected number
-   *           of elements
-   */
-  static void assertSizeOfList(int expectedSize, List list) {
-    if (list == null) {
-      JUnitTestCase.fail("Expected list of size ${expectedSize}; found null");
-    } else if (list.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected list of size ${expectedSize}; contained ${list.length} elements");
-    }
-  }
-
-  /**
-   * Assert that the given map is non-`null` and has the expected number of elements.
-   *
-   * @param expectedSize the expected number of elements
-   * @param map the map being tested
-   * @throws AssertionFailedError if the map is `null` or does not have the expected number of
-   *           elements
-   */
-  static void assertSizeOfMap(int expectedSize, Map map) {
-    if (map == null) {
-      JUnitTestCase.fail("Expected map of size ${expectedSize}; found null");
-    } else if (map.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected map of size ${expectedSize}; contained ${map.length} elements");
-    }
-  }
-
-  /**
-   * Assert that the given set is non-`null` and has the expected number of elements.
-   *
-   * @param expectedSize the expected number of elements
-   * @param set the set being tested
-   * @throws AssertionFailedError if the set is `null` or does not have the expected number of
-   *           elements
-   */
-  static void assertSizeOfSet(int expectedSize, Set set) {
-    if (set == null) {
-      JUnitTestCase.fail("Expected set of size ${expectedSize}; found null");
-    } else if (set.length != expectedSize) {
-      JUnitTestCase.fail(
-          "Expected set of size ${expectedSize}; contained ${set.length} elements");
-    }
-  }
-
-  /**
-   * Convert the given array of lines into a single source string.
-   *
-   * @param lines the lines to be merged into a single source string
-   * @return the source string composed of the given lines
-   */
-  static String createSource(List<String> lines) {
-    PrintStringWriter writer = new PrintStringWriter();
-    for (String line in lines) {
-      writer.println(line);
-    }
-    return writer.toString();
-  }
-
-  /**
    * @return the [AstNode] with requested type at offset of the "prefix".
    */
   static AstNode findNode(AstNode root, String code, String prefix,
       Predicate<AstNode> predicate) {
     int offset = code.indexOf(prefix);
     if (offset == -1) {
-      throw new IllegalArgumentException("Not found '${prefix}'.");
+      throw new IllegalArgumentException("Not found '$prefix'.");
     }
     AstNode node = new NodeLocator.con1(offset).searchWithin(root);
     return node.getAncestor(predicate);
   }
-
-  /**
-   * Calculate the offset where the given strings differ.
-   *
-   * @param str1 the first String to compare
-   * @param str2 the second String to compare
-   * @return the offset at which the strings differ (or <code>-1</code> if they do not)
-   */
-  static int _getDiffPos(String str1, String str2) {
-    int len1 = Math.min(str1.length, str2.length);
-    int diffPos = -1;
-    for (int i = 0; i < len1; i++) {
-      if (str1.codeUnitAt(i) != str2.codeUnitAt(i)) {
-        diffPos = i;
-        break;
-      }
-    }
-    if (diffPos == -1 && str1.length != str2.length) {
-      diffPos = len1;
-    }
-    return diffPos;
-  }
-
-  static void _privateAssertContains(List<Object> array, List<bool> found,
-      Object element) {
-    if (element == null) {
-      for (int i = 0; i < array.length; i++) {
-        if (!found[i]) {
-          if (array[i] == null) {
-            found[i] = true;
-            return;
-          }
-        }
-      }
-      JUnitTestCase.fail("Does not contain null");
-    } else {
-      for (int i = 0; i < array.length; i++) {
-        if (!found[i]) {
-          if (element == array[i]) {
-            found[i] = true;
-            return;
-          }
-        }
-      }
-      JUnitTestCase.fail("Does not contain ${element}");
-    }
-  }
 }
 
 /**
@@ -603,14 +240,12 @@
    *           expected
    */
   void assertErrorsWithCodes(List<ErrorCode> expectedErrorCodes) {
-    JavaStringBuilder builder = new JavaStringBuilder();
+    StringBuffer buffer = new StringBuffer();
     //
     // Verify that the expected error codes have a non-empty message.
     //
     for (ErrorCode errorCode in expectedErrorCodes) {
-      JUnitTestCase.assertFalseMsg(
-          "Empty error code message",
-          errorCode.message.isEmpty);
+      expect(errorCode.message.isEmpty, isFalse, reason: "Empty error code message");
     }
     //
     // Compute the expected number of each type of error.
@@ -642,9 +277,7 @@
     //
     // Compare the expected and actual number of each type of error.
     //
-    for (MapEntry<ErrorCode, int> entry in getMapEntrySet(expectedCounts)) {
-      ErrorCode code = entry.getKey();
-      int expectedCount = entry.getValue();
+    expectedCounts.forEach((ErrorCode code, int expectedCount) {
       int actualCount;
       List<AnalysisError> list = errorsByCode.remove(code);
       if (list == null) {
@@ -653,48 +286,45 @@
         actualCount = list.length;
       }
       if (actualCount != expectedCount) {
-        if (builder.length == 0) {
-          builder.append("Expected ");
+        if (buffer.length == 0) {
+          buffer.write("Expected ");
         } else {
-          builder.append("; ");
+          buffer.write("; ");
         }
-        builder.append(expectedCount);
-        builder.append(" errors of type ");
-        builder.append("${code.runtimeType.toString()}.${code}");
-        builder.append(", found ");
-        builder.append(actualCount);
+        buffer.write(expectedCount);
+        buffer.write(" errors of type ");
+        buffer.write("${code.runtimeType}.$code");
+        buffer.write(", found ");
+        buffer.write(actualCount);
       }
-    }
+    });
     //
     // Check that there are no more errors in the actual-errors map,
     // otherwise record message.
     //
-    for (MapEntry<ErrorCode, List<AnalysisError>> entry in getMapEntrySet(
-        errorsByCode)) {
-      ErrorCode code = entry.getKey();
-      List<AnalysisError> actualErrors = entry.getValue();
+    errorsByCode.forEach((ErrorCode code, List<AnalysisError> actualErrors) {
       int actualCount = actualErrors.length;
-      if (builder.length == 0) {
-        builder.append("Expected ");
+      if (buffer.length == 0) {
+        buffer.write("Expected ");
       } else {
-        builder.append("; ");
+        buffer.write("; ");
       }
-      builder.append("0 errors of type ");
-      builder.append("${code.runtimeType.toString()}.${code}");
-      builder.append(", found ");
-      builder.append(actualCount);
-      builder.append(" (");
+      buffer.write("0 errors of type ");
+      buffer.write("${code.runtimeType}.$code");
+      buffer.write(", found ");
+      buffer.write(actualCount);
+      buffer.write(" (");
       for (int i = 0; i < actualErrors.length; i++) {
         AnalysisError error = actualErrors[i];
         if (i > 0) {
-          builder.append(", ");
+          buffer.write(", ");
         }
-        builder.append(error.offset);
+        buffer.write(error.offset);
       }
-      builder.append(")");
-    }
-    if (builder.length > 0) {
-      JUnitTestCase.fail(builder.toString());
+      buffer.write(")");
+    });
+    if (buffer.length > 0) {
+      fail(buffer.toString());
     }
   }
 
@@ -728,8 +358,7 @@
     }
     if (expectedErrorCount != actualErrorCount ||
         expectedWarningCount != actualWarningCount) {
-      JUnitTestCase.fail(
-          "Expected ${expectedErrorCount} errors and ${expectedWarningCount} warnings, found ${actualErrorCount} errors and ${actualWarningCount} warnings");
+      fail("Expected $expectedErrorCount errors and $expectedWarningCount warnings, found $actualErrorCount errors and $actualWarningCount warnings");
     }
   }
 
@@ -825,17 +454,18 @@
    * @throws AssertionFailedError with
    */
   void _fail(List<AnalysisError> expectedErrors) {
-    PrintStringWriter writer = new PrintStringWriter();
-    writer.print("Expected ");
-    writer.print(expectedErrors.length);
-    writer.print(" errors:");
+    StringBuffer buffer = new StringBuffer();
+    buffer.write("Expected ");
+    buffer.write(expectedErrors.length);
+    buffer.write(" errors:");
     for (AnalysisError error in expectedErrors) {
       Source source = error.source;
       LineInfo lineInfo = _lineInfoMap[source];
-      writer.newLine();
+      buffer.writeln();
       if (lineInfo == null) {
         int offset = error.offset;
-        writer.printf(
+        StringUtils.printf(
+            buffer,
             "  %s %s (%d..%d)",
             [
                 source == null ? "" : source.shortName,
@@ -844,7 +474,8 @@
                 offset + error.length]);
       } else {
         LineInfo_Location location = lineInfo.getLocation(error.offset);
-        writer.printf(
+        StringUtils.printf(
+            buffer,
             "  %s %s (%d, %d/%d)",
             [
                 source == null ? "" : source.shortName,
@@ -854,17 +485,18 @@
                 error.length]);
       }
     }
-    writer.newLine();
-    writer.print("found ");
-    writer.print(_errors.length);
-    writer.print(" errors:");
+    buffer.writeln();
+    buffer.write("found ");
+    buffer.write(_errors.length);
+    buffer.write(" errors:");
     for (AnalysisError error in _errors) {
       Source source = error.source;
       LineInfo lineInfo = _lineInfoMap[source];
-      writer.newLine();
+      buffer.writeln();
       if (lineInfo == null) {
         int offset = error.offset;
-        writer.printf(
+        StringUtils.printf(
+            buffer,
             "  %s %s (%d..%d): %s",
             [
                 source == null ? "" : source.shortName,
@@ -874,7 +506,8 @@
                 error.message]);
       } else {
         LineInfo_Location location = lineInfo.getLocation(error.offset);
-        writer.printf(
+        StringUtils.printf(
+            buffer,
             "  %s %s (%d, %d/%d): %s",
             [
                 source == null ? "" : source.shortName,
@@ -885,7 +518,7 @@
                 error.message]);
       }
     }
-    JUnitTestCase.fail(writer.toString());
+    fail(buffer.toString());
   }
 
   /**
diff --git a/pkg/analyzer/test/generated/utilities_test.dart b/pkg/analyzer/test/generated/utilities_test.dart
new file mode 100644
index 0000000..5aea6b7
--- /dev/null
+++ b/pkg/analyzer/test/generated/utilities_test.dart
@@ -0,0 +1,5308 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// This code was auto-generated, is not intended to be edited, and is subject to
+// significant change. Please see the README file for more information.
+
+library engine.utilities_test;
+
+import 'dart:collection';
+
+import 'package:analyzer/src/generated/ast.dart';
+import 'package:analyzer/src/generated/engine.dart';
+import 'package:analyzer/src/generated/java_core.dart';
+import 'package:analyzer/src/generated/java_engine.dart';
+import 'package:analyzer/src/generated/scanner.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/testing/ast_factory.dart';
+import 'package:analyzer/src/generated/testing/token_factory.dart';
+import 'package:analyzer/src/generated/utilities_collection.dart';
+import 'package:unittest/unittest.dart';
+
+import '../reflective_tests.dart';
+import 'test_support.dart';
+
+main() {
+  groupSep = ' | ';
+  runReflectiveTests(AstClonerTest);
+  runReflectiveTests(NodeReplacerTest);
+  runReflectiveTests(LineInfoTest);
+  runReflectiveTests(SourceRangeTest);
+  runReflectiveTests(BooleanArrayTest);
+  runReflectiveTests(DirectedGraphTest);
+  runReflectiveTests(ListUtilitiesTest);
+  runReflectiveTests(MultipleMapIteratorTest);
+  runReflectiveTests(SingleMapIteratorTest);
+  runReflectiveTests(TokenMapTest);
+  runReflectiveTests(StringUtilitiesTest);
+}
+
+class AstClonerTest extends EngineTestCase {
+  void test_visitAdjacentStrings() {
+    _assertClone(
+        AstFactory.adjacentStrings([AstFactory.string2("a"), AstFactory.string2("b")]));
+  }
+
+  void test_visitAnnotation_constant() {
+    _assertClone(AstFactory.annotation(AstFactory.identifier3("A")));
+  }
+
+  void test_visitAnnotation_constructor() {
+    _assertClone(
+        AstFactory.annotation2(
+            AstFactory.identifier3("A"),
+            AstFactory.identifier3("c"),
+            AstFactory.argumentList([])));
+  }
+
+  void test_visitArgumentList() {
+    _assertClone(
+        AstFactory.argumentList(
+            [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+  }
+
+  void test_visitAsExpression() {
+    _assertClone(
+        AstFactory.asExpression(
+            AstFactory.identifier3("e"),
+            AstFactory.typeName4("T", [])));
+  }
+
+  void test_visitAssertStatement() {
+    _assertClone(AstFactory.assertStatement(AstFactory.identifier3("a")));
+  }
+
+  void test_visitAssignmentExpression() {
+    _assertClone(
+        AstFactory.assignmentExpression(
+            AstFactory.identifier3("a"),
+            TokenType.EQ,
+            AstFactory.identifier3("b")));
+  }
+
+  void test_visitAwaitExpression() {
+    _assertClone(AstFactory.awaitExpression(AstFactory.identifier3("a")));
+  }
+
+  void test_visitBinaryExpression() {
+    _assertClone(
+        AstFactory.binaryExpression(
+            AstFactory.identifier3("a"),
+            TokenType.PLUS,
+            AstFactory.identifier3("b")));
+  }
+
+  void test_visitBlockFunctionBody() {
+    _assertClone(AstFactory.blockFunctionBody2([]));
+  }
+
+  void test_visitBlock_empty() {
+    _assertClone(AstFactory.block([]));
+  }
+
+  void test_visitBlock_nonEmpty() {
+    _assertClone(
+        AstFactory.block([AstFactory.breakStatement(), AstFactory.breakStatement()]));
+  }
+
+  void test_visitBooleanLiteral_false() {
+    _assertClone(AstFactory.booleanLiteral(false));
+  }
+
+  void test_visitBooleanLiteral_true() {
+    _assertClone(AstFactory.booleanLiteral(true));
+  }
+
+  void test_visitBreakStatement_label() {
+    _assertClone(AstFactory.breakStatement2("l"));
+  }
+
+  void test_visitBreakStatement_noLabel() {
+    _assertClone(AstFactory.breakStatement());
+  }
+
+  void test_visitCascadeExpression_field() {
+    _assertClone(
+        AstFactory.cascadeExpression(
+            AstFactory.identifier3("a"),
+            [
+                AstFactory.cascadedPropertyAccess("b"),
+                AstFactory.cascadedPropertyAccess("c")]));
+  }
+
+  void test_visitCascadeExpression_index() {
+    _assertClone(
+        AstFactory.cascadeExpression(
+            AstFactory.identifier3("a"),
+            [
+                AstFactory.cascadedIndexExpression(AstFactory.integer(0)),
+                AstFactory.cascadedIndexExpression(AstFactory.integer(1))]));
+  }
+
+  void test_visitCascadeExpression_method() {
+    _assertClone(
+        AstFactory.cascadeExpression(
+            AstFactory.identifier3("a"),
+            [
+                AstFactory.cascadedMethodInvocation("b", []),
+                AstFactory.cascadedMethodInvocation("c", [])]));
+  }
+
+  void test_visitCatchClause_catch_noStack() {
+    _assertClone(AstFactory.catchClause("e", []));
+  }
+
+  void test_visitCatchClause_catch_stack() {
+    _assertClone(AstFactory.catchClause2("e", "s", []));
+  }
+
+  void test_visitCatchClause_on() {
+    _assertClone(AstFactory.catchClause3(AstFactory.typeName4("E", []), []));
+  }
+
+  void test_visitCatchClause_on_catch() {
+    _assertClone(
+        AstFactory.catchClause4(AstFactory.typeName4("E", []), "e", []));
+  }
+
+  void test_visitClassDeclaration_abstract() {
+    _assertClone(
+        AstFactory.classDeclaration(Keyword.ABSTRACT, "C", null, null, null, null, []));
+  }
+
+  void test_visitClassDeclaration_empty() {
+    _assertClone(
+        AstFactory.classDeclaration(null, "C", null, null, null, null, []));
+  }
+
+  void test_visitClassDeclaration_extends() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            null,
+            null,
+            []));
+  }
+
+  void test_visitClassDeclaration_extends_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            null,
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_extends_with() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            AstFactory.withClause([AstFactory.typeName4("M", [])]),
+            null,
+            []));
+  }
+
+  void test_visitClassDeclaration_extends_with_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            AstFactory.withClause([AstFactory.typeName4("M", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            null,
+            null,
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_multipleMember() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            null,
+            null,
+            null,
+            [
+                AstFactory.fieldDeclaration2(
+                    false,
+                    Keyword.VAR,
+                    [AstFactory.variableDeclaration("a")]),
+                AstFactory.fieldDeclaration2(
+                    false,
+                    Keyword.VAR,
+                    [AstFactory.variableDeclaration("b")])]));
+  }
+
+  void test_visitClassDeclaration_parameters() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            null,
+            null,
+            null,
+            []));
+  }
+
+  void test_visitClassDeclaration_parameters_extends() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            null,
+            null,
+            []));
+  }
+
+  void test_visitClassDeclaration_parameters_extends_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            null,
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_parameters_extends_with() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            AstFactory.withClause([AstFactory.typeName4("M", [])]),
+            null,
+            []));
+  }
+
+  void test_visitClassDeclaration_parameters_extends_with_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            AstFactory.extendsClause(AstFactory.typeName4("A", [])),
+            AstFactory.withClause([AstFactory.typeName4("M", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_parameters_implements() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            null,
+            null,
+            AstFactory.implementsClause([AstFactory.typeName4("B", [])]),
+            []));
+  }
+
+  void test_visitClassDeclaration_singleMember() {
+    _assertClone(
+        AstFactory.classDeclaration(
+            null,
+            "C",
+            null,
+            null,
+            null,
+            null,
+            [
+                AstFactory.fieldDeclaration2(
+                    false,
+                    Keyword.VAR,
+                    [AstFactory.variableDeclaration("a")])]));
+  }
+
+  void test_visitClassDeclaration_withMetadata() {
+    ClassDeclaration declaration =
+        AstFactory.classDeclaration(null, "C", null, null, null, null, []);
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitClassTypeAlias_abstract() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            null,
+            Keyword.ABSTRACT,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            null));
+  }
+
+  void test_visitClassTypeAlias_abstract_implements() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            null,
+            Keyword.ABSTRACT,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("I", [])])));
+  }
+
+  void test_visitClassTypeAlias_generic() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            null,
+            AstFactory.typeName4("S", [AstFactory.typeName4("E", [])]),
+            AstFactory.withClause(
+                [AstFactory.typeName4("M1", [AstFactory.typeName4("E", [])])]),
+            null));
+  }
+
+  void test_visitClassTypeAlias_implements() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            null,
+            null,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("I", [])])));
+  }
+
+  void test_visitClassTypeAlias_minimal() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            null,
+            null,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            null));
+  }
+
+  void test_visitClassTypeAlias_parameters_abstract() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            Keyword.ABSTRACT,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            null));
+  }
+
+  void test_visitClassTypeAlias_parameters_abstract_implements() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            Keyword.ABSTRACT,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("I", [])])));
+  }
+
+  void test_visitClassTypeAlias_parameters_implements() {
+    _assertClone(
+        AstFactory.classTypeAlias(
+            "C",
+            AstFactory.typeParameterList(["E"]),
+            null,
+            AstFactory.typeName4("S", []),
+            AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+            AstFactory.implementsClause([AstFactory.typeName4("I", [])])));
+  }
+
+  void test_visitClassTypeAlias_withMetadata() {
+    ClassTypeAlias declaration = AstFactory.classTypeAlias(
+        "C",
+        null,
+        null,
+        AstFactory.typeName4("S", []),
+        AstFactory.withClause([AstFactory.typeName4("M1", [])]),
+        null);
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitComment() {
+    _assertClone(
+        Comment.createBlockComment(
+            <Token>[TokenFactory.tokenFromString("/* comment */")]));
+  }
+
+  void test_visitCommentReference() {
+    _assertClone(new CommentReference(null, AstFactory.identifier3("a")));
+  }
+
+  void test_visitCompilationUnit_declaration() {
+    _assertClone(
+        AstFactory.compilationUnit2(
+            [
+                AstFactory.topLevelVariableDeclaration2(
+                    Keyword.VAR,
+                    [AstFactory.variableDeclaration("a")])]));
+  }
+
+  void test_visitCompilationUnit_directive() {
+    _assertClone(
+        AstFactory.compilationUnit3([AstFactory.libraryDirective2("l")]));
+  }
+
+  void test_visitCompilationUnit_directive_declaration() {
+    _assertClone(
+        AstFactory.compilationUnit4(
+            AstFactory.list([AstFactory.libraryDirective2("l")]),
+            AstFactory.list(
+                [
+                    AstFactory.topLevelVariableDeclaration2(
+                        Keyword.VAR,
+                        [AstFactory.variableDeclaration("a")])])));
+  }
+
+  void test_visitCompilationUnit_empty() {
+    _assertClone(AstFactory.compilationUnit());
+  }
+
+  void test_visitCompilationUnit_script() {
+    _assertClone(AstFactory.compilationUnit5("!#/bin/dartvm"));
+  }
+
+  void test_visitCompilationUnit_script_declaration() {
+    _assertClone(
+        AstFactory.compilationUnit6(
+            "!#/bin/dartvm",
+            [
+                AstFactory.topLevelVariableDeclaration2(
+                    Keyword.VAR,
+                    [AstFactory.variableDeclaration("a")])]));
+  }
+
+  void test_visitCompilationUnit_script_directive() {
+    _assertClone(
+        AstFactory.compilationUnit7(
+            "!#/bin/dartvm",
+            [AstFactory.libraryDirective2("l")]));
+  }
+
+  void test_visitCompilationUnit_script_directives_declarations() {
+    _assertClone(
+        AstFactory.compilationUnit8(
+            "!#/bin/dartvm",
+            AstFactory.list([AstFactory.libraryDirective2("l")]),
+            AstFactory.list(
+                [
+                    AstFactory.topLevelVariableDeclaration2(
+                        Keyword.VAR,
+                        [AstFactory.variableDeclaration("a")])])));
+  }
+
+  void test_visitConditionalExpression() {
+    _assertClone(
+        AstFactory.conditionalExpression(
+            AstFactory.identifier3("a"),
+            AstFactory.identifier3("b"),
+            AstFactory.identifier3("c")));
+  }
+
+  void test_visitConstructorDeclaration_const() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            Keyword.CONST,
+            null,
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList([]),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_external() {
+    _assertClone(
+        AstFactory.constructorDeclaration(
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList([]),
+            null));
+  }
+
+  void test_visitConstructorDeclaration_minimal() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            null,
+            null,
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList([]),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_multipleInitializers() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            null,
+            null,
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList([]),
+            AstFactory.list(
+                [
+                    AstFactory.constructorFieldInitializer(false, "a", AstFactory.identifier3("b")),
+                    AstFactory.constructorFieldInitializer(
+                        false,
+                        "c",
+                        AstFactory.identifier3("d"))]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_multipleParameters() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            null,
+            null,
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList(
+                [
+                    AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
+                    AstFactory.simpleFormalParameter(Keyword.VAR, "b")]),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_named() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            null,
+            null,
+            AstFactory.identifier3("C"),
+            "m",
+            AstFactory.formalParameterList([]),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_singleInitializer() {
+    _assertClone(
+        AstFactory.constructorDeclaration2(
+            null,
+            null,
+            AstFactory.identifier3("C"),
+            null,
+            AstFactory.formalParameterList([]),
+            AstFactory.list(
+                [
+                    AstFactory.constructorFieldInitializer(
+                        false,
+                        "a",
+                        AstFactory.identifier3("b"))]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitConstructorDeclaration_withMetadata() {
+    ConstructorDeclaration declaration = AstFactory.constructorDeclaration2(
+        null,
+        null,
+        AstFactory.identifier3("C"),
+        null,
+        AstFactory.formalParameterList([]),
+        null,
+        AstFactory.blockFunctionBody2([]));
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitConstructorFieldInitializer_withThis() {
+    _assertClone(
+        AstFactory.constructorFieldInitializer(true, "a", AstFactory.identifier3("b")));
+  }
+
+  void test_visitConstructorFieldInitializer_withoutThis() {
+    _assertClone(
+        AstFactory.constructorFieldInitializer(
+            false,
+            "a",
+            AstFactory.identifier3("b")));
+  }
+
+  void test_visitConstructorName_named_prefix() {
+    _assertClone(
+        AstFactory.constructorName(AstFactory.typeName4("p.C.n", []), null));
+  }
+
+  void test_visitConstructorName_unnamed_noPrefix() {
+    _assertClone(
+        AstFactory.constructorName(AstFactory.typeName4("C", []), null));
+  }
+
+  void test_visitConstructorName_unnamed_prefix() {
+    _assertClone(
+        AstFactory.constructorName(
+            AstFactory.typeName3(AstFactory.identifier5("p", "C"), []),
+            null));
+  }
+
+  void test_visitContinueStatement_label() {
+    _assertClone(AstFactory.continueStatement("l"));
+  }
+
+  void test_visitContinueStatement_noLabel() {
+    _assertClone(AstFactory.continueStatement());
+  }
+
+  void test_visitDefaultFormalParameter_named_noValue() {
+    _assertClone(
+        AstFactory.namedFormalParameter(AstFactory.simpleFormalParameter3("p"), null));
+  }
+
+  void test_visitDefaultFormalParameter_named_value() {
+    _assertClone(
+        AstFactory.namedFormalParameter(
+            AstFactory.simpleFormalParameter3("p"),
+            AstFactory.integer(0)));
+  }
+
+  void test_visitDefaultFormalParameter_positional_noValue() {
+    _assertClone(
+        AstFactory.positionalFormalParameter(
+            AstFactory.simpleFormalParameter3("p"),
+            null));
+  }
+
+  void test_visitDefaultFormalParameter_positional_value() {
+    _assertClone(
+        AstFactory.positionalFormalParameter(
+            AstFactory.simpleFormalParameter3("p"),
+            AstFactory.integer(0)));
+  }
+
+  void test_visitDoStatement() {
+    _assertClone(
+        AstFactory.doStatement(AstFactory.block([]), AstFactory.identifier3("c")));
+  }
+
+  void test_visitDoubleLiteral() {
+    _assertClone(AstFactory.doubleLiteral(4.2));
+  }
+
+  void test_visitEmptyFunctionBody() {
+    _assertClone(AstFactory.emptyFunctionBody());
+  }
+
+  void test_visitEmptyStatement() {
+    _assertClone(AstFactory.emptyStatement());
+  }
+
+  void test_visitExportDirective_combinator() {
+    _assertClone(
+        AstFactory.exportDirective2(
+            "a.dart",
+            [AstFactory.showCombinator([AstFactory.identifier3("A")])]));
+  }
+
+  void test_visitExportDirective_combinators() {
+    _assertClone(
+        AstFactory.exportDirective2(
+            "a.dart",
+            [
+                AstFactory.showCombinator([AstFactory.identifier3("A")]),
+                AstFactory.hideCombinator([AstFactory.identifier3("B")])]));
+  }
+
+  void test_visitExportDirective_minimal() {
+    _assertClone(AstFactory.exportDirective2("a.dart", []));
+  }
+
+  void test_visitExportDirective_withMetadata() {
+    ExportDirective directive = AstFactory.exportDirective2("a.dart", []);
+    directive.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(directive);
+  }
+
+  void test_visitExpressionFunctionBody() {
+    _assertClone(
+        AstFactory.expressionFunctionBody(AstFactory.identifier3("a")));
+  }
+
+  void test_visitExpressionStatement() {
+    _assertClone(AstFactory.expressionStatement(AstFactory.identifier3("a")));
+  }
+
+  void test_visitExtendsClause() {
+    _assertClone(AstFactory.extendsClause(AstFactory.typeName4("C", [])));
+  }
+
+  void test_visitFieldDeclaration_instance() {
+    _assertClone(
+        AstFactory.fieldDeclaration2(
+            false,
+            Keyword.VAR,
+            [AstFactory.variableDeclaration("a")]));
+  }
+
+  void test_visitFieldDeclaration_static() {
+    _assertClone(
+        AstFactory.fieldDeclaration2(
+            true,
+            Keyword.VAR,
+            [AstFactory.variableDeclaration("a")]));
+  }
+
+  void test_visitFieldDeclaration_withMetadata() {
+    FieldDeclaration declaration = AstFactory.fieldDeclaration2(
+        false,
+        Keyword.VAR,
+        [AstFactory.variableDeclaration("a")]);
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitFieldFormalParameter_functionTyped() {
+    _assertClone(
+        AstFactory.fieldFormalParameter(
+            null,
+            AstFactory.typeName4("A", []),
+            "a",
+            AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("b")])));
+  }
+
+  void test_visitFieldFormalParameter_keyword() {
+    _assertClone(AstFactory.fieldFormalParameter(Keyword.VAR, null, "a"));
+  }
+
+  void test_visitFieldFormalParameter_keywordAndType() {
+    _assertClone(
+        AstFactory.fieldFormalParameter(
+            Keyword.FINAL,
+            AstFactory.typeName4("A", []),
+            "a"));
+  }
+
+  void test_visitFieldFormalParameter_type() {
+    _assertClone(
+        AstFactory.fieldFormalParameter(null, AstFactory.typeName4("A", []), "a"));
+  }
+
+  void test_visitForEachStatement_declared() {
+    _assertClone(
+        AstFactory.forEachStatement(
+            AstFactory.declaredIdentifier3("a"),
+            AstFactory.identifier3("b"),
+            AstFactory.block([])));
+  }
+
+  void test_visitForEachStatement_variable() {
+    _assertClone(
+        new ForEachStatement.con2(
+            null,
+            TokenFactory.tokenFromKeyword(Keyword.FOR),
+            TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+            AstFactory.identifier3("a"),
+            TokenFactory.tokenFromKeyword(Keyword.IN),
+            AstFactory.identifier3("b"),
+            TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+            AstFactory.block([])));
+  }
+
+  void test_visitForEachStatement_variable_await() {
+    _assertClone(
+        new ForEachStatement.con2(
+            TokenFactory.tokenFromString("await"),
+            TokenFactory.tokenFromKeyword(Keyword.FOR),
+            TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
+            AstFactory.identifier3("a"),
+            TokenFactory.tokenFromKeyword(Keyword.IN),
+            AstFactory.identifier3("b"),
+            TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_c() {
+    _assertClone(
+        AstFactory.forStatement(
+            null,
+            AstFactory.identifier3("c"),
+            null,
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_cu() {
+    _assertClone(
+        AstFactory.forStatement(
+            null,
+            AstFactory.identifier3("c"),
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_e() {
+    _assertClone(
+        AstFactory.forStatement(
+            AstFactory.identifier3("e"),
+            null,
+            null,
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_ec() {
+    _assertClone(
+        AstFactory.forStatement(
+            AstFactory.identifier3("e"),
+            AstFactory.identifier3("c"),
+            null,
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_ecu() {
+    _assertClone(
+        AstFactory.forStatement(
+            AstFactory.identifier3("e"),
+            AstFactory.identifier3("c"),
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_eu() {
+    _assertClone(
+        AstFactory.forStatement(
+            AstFactory.identifier3("e"),
+            null,
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_i() {
+    _assertClone(
+        AstFactory.forStatement2(
+            AstFactory.variableDeclarationList2(
+                Keyword.VAR,
+                [AstFactory.variableDeclaration("i")]),
+            null,
+            null,
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_ic() {
+    _assertClone(
+        AstFactory.forStatement2(
+            AstFactory.variableDeclarationList2(
+                Keyword.VAR,
+                [AstFactory.variableDeclaration("i")]),
+            AstFactory.identifier3("c"),
+            null,
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_icu() {
+    _assertClone(
+        AstFactory.forStatement2(
+            AstFactory.variableDeclarationList2(
+                Keyword.VAR,
+                [AstFactory.variableDeclaration("i")]),
+            AstFactory.identifier3("c"),
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_iu() {
+    _assertClone(
+        AstFactory.forStatement2(
+            AstFactory.variableDeclarationList2(
+                Keyword.VAR,
+                [AstFactory.variableDeclaration("i")]),
+            null,
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitForStatement_u() {
+    _assertClone(
+        AstFactory.forStatement(
+            null,
+            null,
+            AstFactory.list([AstFactory.identifier3("u")]),
+            AstFactory.block([])));
+  }
+
+  void test_visitFormalParameterList_empty() {
+    _assertClone(AstFactory.formalParameterList([]));
+  }
+
+  void test_visitFormalParameterList_n() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("a"),
+                    AstFactory.integer(0))]));
+  }
+
+  void test_visitFormalParameterList_nn() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("a"),
+                    AstFactory.integer(0)),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1))]));
+  }
+
+  void test_visitFormalParameterList_p() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("a"),
+                    AstFactory.integer(0))]));
+  }
+
+  void test_visitFormalParameterList_pp() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("a"),
+                    AstFactory.integer(0)),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1))]));
+  }
+
+  void test_visitFormalParameterList_r() {
+    _assertClone(
+        AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("a")]));
+  }
+
+  void test_visitFormalParameterList_rn() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1))]));
+  }
+
+  void test_visitFormalParameterList_rnn() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1)),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(2))]));
+  }
+
+  void test_visitFormalParameterList_rp() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1))]));
+  }
+
+  void test_visitFormalParameterList_rpp() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("b"),
+                    AstFactory.integer(1)),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(2))]));
+  }
+
+  void test_visitFormalParameterList_rr() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.simpleFormalParameter3("b")]));
+  }
+
+  void test_visitFormalParameterList_rrn() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.simpleFormalParameter3("b"),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(3))]));
+  }
+
+  void test_visitFormalParameterList_rrnn() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.simpleFormalParameter3("b"),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(3)),
+                AstFactory.namedFormalParameter(
+                    AstFactory.simpleFormalParameter3("d"),
+                    AstFactory.integer(4))]));
+  }
+
+  void test_visitFormalParameterList_rrp() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.simpleFormalParameter3("b"),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(3))]));
+  }
+
+  void test_visitFormalParameterList_rrpp() {
+    _assertClone(
+        AstFactory.formalParameterList(
+            [
+                AstFactory.simpleFormalParameter3("a"),
+                AstFactory.simpleFormalParameter3("b"),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("c"),
+                    AstFactory.integer(3)),
+                AstFactory.positionalFormalParameter(
+                    AstFactory.simpleFormalParameter3("d"),
+                    AstFactory.integer(4))]));
+  }
+
+  void test_visitFunctionDeclarationStatement() {
+    _assertClone(
+        AstFactory.functionDeclarationStatement(
+            null,
+            null,
+            "f",
+            AstFactory.functionExpression()));
+  }
+
+  void test_visitFunctionDeclaration_getter() {
+    _assertClone(
+        AstFactory.functionDeclaration(
+            null,
+            Keyword.GET,
+            "f",
+            AstFactory.functionExpression()));
+  }
+
+  void test_visitFunctionDeclaration_normal() {
+    _assertClone(
+        AstFactory.functionDeclaration(
+            null,
+            null,
+            "f",
+            AstFactory.functionExpression()));
+  }
+
+  void test_visitFunctionDeclaration_setter() {
+    _assertClone(
+        AstFactory.functionDeclaration(
+            null,
+            Keyword.SET,
+            "f",
+            AstFactory.functionExpression()));
+  }
+
+  void test_visitFunctionDeclaration_withMetadata() {
+    FunctionDeclaration declaration = AstFactory.functionDeclaration(
+        null,
+        null,
+        "f",
+        AstFactory.functionExpression());
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitFunctionExpression() {
+    _assertClone(AstFactory.functionExpression());
+  }
+
+  void test_visitFunctionExpressionInvocation() {
+    _assertClone(
+        AstFactory.functionExpressionInvocation(AstFactory.identifier3("f"), []));
+  }
+
+  void test_visitFunctionTypeAlias_generic() {
+    _assertClone(
+        AstFactory.typeAlias(
+            AstFactory.typeName4("A", []),
+            "F",
+            AstFactory.typeParameterList(["B"]),
+            AstFactory.formalParameterList([])));
+  }
+
+  void test_visitFunctionTypeAlias_nonGeneric() {
+    _assertClone(
+        AstFactory.typeAlias(
+            AstFactory.typeName4("A", []),
+            "F",
+            null,
+            AstFactory.formalParameterList([])));
+  }
+
+  void test_visitFunctionTypeAlias_withMetadata() {
+    FunctionTypeAlias declaration = AstFactory.typeAlias(
+        AstFactory.typeName4("A", []),
+        "F",
+        null,
+        AstFactory.formalParameterList([]));
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitFunctionTypedFormalParameter_noType() {
+    _assertClone(AstFactory.functionTypedFormalParameter(null, "f", []));
+  }
+
+  void test_visitFunctionTypedFormalParameter_type() {
+    _assertClone(
+        AstFactory.functionTypedFormalParameter(
+            AstFactory.typeName4("T", []),
+            "f",
+            []));
+  }
+
+  void test_visitIfStatement_withElse() {
+    _assertClone(
+        AstFactory.ifStatement2(
+            AstFactory.identifier3("c"),
+            AstFactory.block([]),
+            AstFactory.block([])));
+  }
+
+  void test_visitIfStatement_withoutElse() {
+    _assertClone(
+        AstFactory.ifStatement(AstFactory.identifier3("c"), AstFactory.block([])));
+  }
+
+  void test_visitImplementsClause_multiple() {
+    _assertClone(
+        AstFactory.implementsClause(
+            [AstFactory.typeName4("A", []), AstFactory.typeName4("B", [])]));
+  }
+
+  void test_visitImplementsClause_single() {
+    _assertClone(AstFactory.implementsClause([AstFactory.typeName4("A", [])]));
+  }
+
+  void test_visitImportDirective_combinator() {
+    _assertClone(
+        AstFactory.importDirective3(
+            "a.dart",
+            null,
+            [AstFactory.showCombinator([AstFactory.identifier3("A")])]));
+  }
+
+  void test_visitImportDirective_combinators() {
+    _assertClone(
+        AstFactory.importDirective3(
+            "a.dart",
+            null,
+            [
+                AstFactory.showCombinator([AstFactory.identifier3("A")]),
+                AstFactory.hideCombinator([AstFactory.identifier3("B")])]));
+  }
+
+  void test_visitImportDirective_minimal() {
+    _assertClone(AstFactory.importDirective3("a.dart", null, []));
+  }
+
+  void test_visitImportDirective_prefix() {
+    _assertClone(AstFactory.importDirective3("a.dart", "p", []));
+  }
+
+  void test_visitImportDirective_prefix_combinator() {
+    _assertClone(
+        AstFactory.importDirective3(
+            "a.dart",
+            "p",
+            [AstFactory.showCombinator([AstFactory.identifier3("A")])]));
+  }
+
+  void test_visitImportDirective_prefix_combinators() {
+    _assertClone(
+        AstFactory.importDirective3(
+            "a.dart",
+            "p",
+            [
+                AstFactory.showCombinator([AstFactory.identifier3("A")]),
+                AstFactory.hideCombinator([AstFactory.identifier3("B")])]));
+  }
+
+  void test_visitImportDirective_withMetadata() {
+    ImportDirective directive = AstFactory.importDirective3("a.dart", null, []);
+    directive.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(directive);
+  }
+
+  void test_visitImportHideCombinator_multiple() {
+    _assertClone(
+        AstFactory.hideCombinator(
+            [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+  }
+
+  void test_visitImportHideCombinator_single() {
+    _assertClone(AstFactory.hideCombinator([AstFactory.identifier3("a")]));
+  }
+
+  void test_visitImportShowCombinator_multiple() {
+    _assertClone(
+        AstFactory.showCombinator(
+            [AstFactory.identifier3("a"), AstFactory.identifier3("b")]));
+  }
+
+  void test_visitImportShowCombinator_single() {
+    _assertClone(AstFactory.showCombinator([AstFactory.identifier3("a")]));
+  }
+
+  void test_visitIndexExpression() {
+    _assertClone(
+        AstFactory.indexExpression(
+            AstFactory.identifier3("a"),
+            AstFactory.identifier3("i")));
+  }
+
+  void test_visitInstanceCreationExpression_const() {
+    _assertClone(
+        AstFactory.instanceCreationExpression2(
+            Keyword.CONST,
+            AstFactory.typeName4("C", []),
+            []));
+  }
+
+  void test_visitInstanceCreationExpression_named() {
+    _assertClone(
+        AstFactory.instanceCreationExpression3(
+            Keyword.NEW,
+            AstFactory.typeName4("C", []),
+            "c",
+            []));
+  }
+
+  void test_visitInstanceCreationExpression_unnamed() {
+    _assertClone(
+        AstFactory.instanceCreationExpression2(
+            Keyword.NEW,
+            AstFactory.typeName4("C", []),
+            []));
+  }
+
+  void test_visitIntegerLiteral() {
+    _assertClone(AstFactory.integer(42));
+  }
+
+  void test_visitInterpolationExpression_expression() {
+    _assertClone(
+        AstFactory.interpolationExpression(AstFactory.identifier3("a")));
+  }
+
+  void test_visitInterpolationExpression_identifier() {
+    _assertClone(AstFactory.interpolationExpression2("a"));
+  }
+
+  void test_visitInterpolationString() {
+    _assertClone(AstFactory.interpolationString("'x", "x"));
+  }
+
+  void test_visitIsExpression_negated() {
+    _assertClone(
+        AstFactory.isExpression(
+            AstFactory.identifier3("a"),
+            true,
+            AstFactory.typeName4("C", [])));
+  }
+
+  void test_visitIsExpression_normal() {
+    _assertClone(
+        AstFactory.isExpression(
+            AstFactory.identifier3("a"),
+            false,
+            AstFactory.typeName4("C", [])));
+  }
+
+  void test_visitLabel() {
+    _assertClone(AstFactory.label2("a"));
+  }
+
+  void test_visitLabeledStatement_multiple() {
+    _assertClone(
+        AstFactory.labeledStatement(
+            AstFactory.list([AstFactory.label2("a"), AstFactory.label2("b")]),
+            AstFactory.returnStatement()));
+  }
+
+  void test_visitLabeledStatement_single() {
+    _assertClone(
+        AstFactory.labeledStatement(
+            AstFactory.list([AstFactory.label2("a")]),
+            AstFactory.returnStatement()));
+  }
+
+  void test_visitLibraryDirective() {
+    _assertClone(AstFactory.libraryDirective2("l"));
+  }
+
+  void test_visitLibraryDirective_withMetadata() {
+    LibraryDirective directive = AstFactory.libraryDirective2("l");
+    directive.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(directive);
+  }
+
+  void test_visitLibraryIdentifier_multiple() {
+    _assertClone(
+        AstFactory.libraryIdentifier(
+            [
+                AstFactory.identifier3("a"),
+                AstFactory.identifier3("b"),
+                AstFactory.identifier3("c")]));
+  }
+
+  void test_visitLibraryIdentifier_single() {
+    _assertClone(AstFactory.libraryIdentifier([AstFactory.identifier3("a")]));
+  }
+
+  void test_visitListLiteral_const() {
+    _assertClone(AstFactory.listLiteral2(Keyword.CONST, null, []));
+  }
+
+  void test_visitListLiteral_empty() {
+    _assertClone(AstFactory.listLiteral([]));
+  }
+
+  void test_visitListLiteral_nonEmpty() {
+    _assertClone(
+        AstFactory.listLiteral(
+            [
+                AstFactory.identifier3("a"),
+                AstFactory.identifier3("b"),
+                AstFactory.identifier3("c")]));
+  }
+
+  void test_visitMapLiteralEntry() {
+    _assertClone(AstFactory.mapLiteralEntry("a", AstFactory.identifier3("b")));
+  }
+
+  void test_visitMapLiteral_const() {
+    _assertClone(AstFactory.mapLiteral(Keyword.CONST, null, []));
+  }
+
+  void test_visitMapLiteral_empty() {
+    _assertClone(AstFactory.mapLiteral2([]));
+  }
+
+  void test_visitMapLiteral_nonEmpty() {
+    _assertClone(
+        AstFactory.mapLiteral2(
+            [
+                AstFactory.mapLiteralEntry("a", AstFactory.identifier3("a")),
+                AstFactory.mapLiteralEntry("b", AstFactory.identifier3("b")),
+                AstFactory.mapLiteralEntry("c", AstFactory.identifier3("c"))]));
+  }
+
+  void test_visitMethodDeclaration_external() {
+    _assertClone(
+        AstFactory.methodDeclaration(
+            null,
+            null,
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([])));
+  }
+
+  void test_visitMethodDeclaration_external_returnType() {
+    _assertClone(
+        AstFactory.methodDeclaration(
+            null,
+            AstFactory.typeName4("T", []),
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([])));
+  }
+
+  void test_visitMethodDeclaration_getter() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            null,
+            Keyword.GET,
+            null,
+            AstFactory.identifier3("m"),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_getter_returnType() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            AstFactory.typeName4("T", []),
+            Keyword.GET,
+            null,
+            AstFactory.identifier3("m"),
+            null,
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_getter_seturnType() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            AstFactory.typeName4("T", []),
+            Keyword.SET,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList(
+                [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_minimal() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            null,
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_multipleParameters() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            null,
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList(
+                [
+                    AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
+                    AstFactory.simpleFormalParameter(Keyword.VAR, "b")]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_operator() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            null,
+            null,
+            Keyword.OPERATOR,
+            AstFactory.identifier3("+"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_operator_returnType() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            AstFactory.typeName4("T", []),
+            null,
+            Keyword.OPERATOR,
+            AstFactory.identifier3("+"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_returnType() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            AstFactory.typeName4("T", []),
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_setter() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            null,
+            null,
+            Keyword.SET,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList(
+                [AstFactory.simpleFormalParameter(Keyword.VAR, "v")]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_static() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            Keyword.STATIC,
+            null,
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_static_returnType() {
+    _assertClone(
+        AstFactory.methodDeclaration2(
+            Keyword.STATIC,
+            AstFactory.typeName4("T", []),
+            null,
+            null,
+            AstFactory.identifier3("m"),
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody2([])));
+  }
+
+  void test_visitMethodDeclaration_withMetadata() {
+    MethodDeclaration declaration = AstFactory.methodDeclaration2(
+        null,
+        null,
+        null,
+        null,
+        AstFactory.identifier3("m"),
+        AstFactory.formalParameterList([]),
+        AstFactory.blockFunctionBody2([]));
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitMethodInvocation_noTarget() {
+    _assertClone(AstFactory.methodInvocation2("m", []));
+  }
+
+  void test_visitMethodInvocation_target() {
+    _assertClone(
+        AstFactory.methodInvocation(AstFactory.identifier3("t"), "m", []));
+  }
+
+  void test_visitNamedExpression() {
+    _assertClone(AstFactory.namedExpression2("a", AstFactory.identifier3("b")));
+  }
+
+  void test_visitNamedFormalParameter() {
+    _assertClone(
+        AstFactory.namedFormalParameter(
+            AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
+            AstFactory.integer(0)));
+  }
+
+  void test_visitNativeClause() {
+    _assertClone(AstFactory.nativeClause("code"));
+  }
+
+  void test_visitNativeFunctionBody() {
+    _assertClone(AstFactory.nativeFunctionBody("str"));
+  }
+
+  void test_visitNullLiteral() {
+    _assertClone(AstFactory.nullLiteral());
+  }
+
+  void test_visitParenthesizedExpression() {
+    _assertClone(
+        AstFactory.parenthesizedExpression(AstFactory.identifier3("a")));
+  }
+
+  void test_visitPartDirective() {
+    _assertClone(AstFactory.partDirective2("a.dart"));
+  }
+
+  void test_visitPartDirective_withMetadata() {
+    PartDirective directive = AstFactory.partDirective2("a.dart");
+    directive.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(directive);
+  }
+
+  void test_visitPartOfDirective() {
+    _assertClone(
+        AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"])));
+  }
+
+  void test_visitPartOfDirective_withMetadata() {
+    PartOfDirective directive =
+        AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["l"]));
+    directive.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(directive);
+  }
+
+  void test_visitPositionalFormalParameter() {
+    _assertClone(
+        AstFactory.positionalFormalParameter(
+            AstFactory.simpleFormalParameter(Keyword.VAR, "a"),
+            AstFactory.integer(0)));
+  }
+
+  void test_visitPostfixExpression() {
+    _assertClone(
+        AstFactory.postfixExpression(AstFactory.identifier3("a"), TokenType.PLUS_PLUS));
+  }
+
+  void test_visitPrefixExpression() {
+    _assertClone(
+        AstFactory.prefixExpression(TokenType.MINUS, AstFactory.identifier3("a")));
+  }
+
+  void test_visitPrefixedIdentifier() {
+    _assertClone(AstFactory.identifier5("a", "b"));
+  }
+
+  void test_visitPropertyAccess() {
+    _assertClone(AstFactory.propertyAccess2(AstFactory.identifier3("a"), "b"));
+  }
+
+  void test_visitRedirectingConstructorInvocation_named() {
+    _assertClone(AstFactory.redirectingConstructorInvocation2("c", []));
+  }
+
+  void test_visitRedirectingConstructorInvocation_unnamed() {
+    _assertClone(AstFactory.redirectingConstructorInvocation([]));
+  }
+
+  void test_visitRethrowExpression() {
+    _assertClone(AstFactory.rethrowExpression());
+  }
+
+  void test_visitReturnStatement_expression() {
+    _assertClone(AstFactory.returnStatement2(AstFactory.identifier3("a")));
+  }
+
+  void test_visitReturnStatement_noExpression() {
+    _assertClone(AstFactory.returnStatement());
+  }
+
+  void test_visitScriptTag() {
+    String scriptTag = "!#/bin/dart.exe";
+    _assertClone(AstFactory.scriptTag(scriptTag));
+  }
+
+  void test_visitSimpleFormalParameter_keyword() {
+    _assertClone(AstFactory.simpleFormalParameter(Keyword.VAR, "a"));
+  }
+
+  void test_visitSimpleFormalParameter_keyword_type() {
+    _assertClone(
+        AstFactory.simpleFormalParameter2(
+            Keyword.FINAL,
+            AstFactory.typeName4("A", []),
+            "a"));
+  }
+
+  void test_visitSimpleFormalParameter_type() {
+    _assertClone(
+        AstFactory.simpleFormalParameter4(AstFactory.typeName4("A", []), "a"));
+  }
+
+  void test_visitSimpleIdentifier() {
+    _assertClone(AstFactory.identifier3("a"));
+  }
+
+  void test_visitSimpleStringLiteral() {
+    _assertClone(AstFactory.string2("a"));
+  }
+
+  void test_visitStringInterpolation() {
+    _assertClone(
+        AstFactory.string(
+            [
+                AstFactory.interpolationString("'a", "a"),
+                AstFactory.interpolationExpression(AstFactory.identifier3("e")),
+                AstFactory.interpolationString("b'", "b")]));
+  }
+
+  void test_visitSuperConstructorInvocation() {
+    _assertClone(AstFactory.superConstructorInvocation([]));
+  }
+
+  void test_visitSuperConstructorInvocation_named() {
+    _assertClone(AstFactory.superConstructorInvocation2("c", []));
+  }
+
+  void test_visitSuperExpression() {
+    _assertClone(AstFactory.superExpression());
+  }
+
+  void test_visitSwitchCase_multipleLabels() {
+    _assertClone(
+        AstFactory.switchCase2(
+            AstFactory.list([AstFactory.label2("l1"), AstFactory.label2("l2")]),
+            AstFactory.identifier3("a"),
+            [AstFactory.block([])]));
+  }
+
+  void test_visitSwitchCase_multipleStatements() {
+    _assertClone(
+        AstFactory.switchCase(
+            AstFactory.identifier3("a"),
+            [AstFactory.block([]), AstFactory.block([])]));
+  }
+
+  void test_visitSwitchCase_noLabels() {
+    _assertClone(
+        AstFactory.switchCase(AstFactory.identifier3("a"), [AstFactory.block([])]));
+  }
+
+  void test_visitSwitchCase_singleLabel() {
+    _assertClone(
+        AstFactory.switchCase2(
+            AstFactory.list([AstFactory.label2("l1")]),
+            AstFactory.identifier3("a"),
+            [AstFactory.block([])]));
+  }
+
+  void test_visitSwitchDefault_multipleLabels() {
+    _assertClone(
+        AstFactory.switchDefault(
+            AstFactory.list([AstFactory.label2("l1"), AstFactory.label2("l2")]),
+            [AstFactory.block([])]));
+  }
+
+  void test_visitSwitchDefault_multipleStatements() {
+    _assertClone(
+        AstFactory.switchDefault2([AstFactory.block([]), AstFactory.block([])]));
+  }
+
+  void test_visitSwitchDefault_noLabels() {
+    _assertClone(AstFactory.switchDefault2([AstFactory.block([])]));
+  }
+
+  void test_visitSwitchDefault_singleLabel() {
+    _assertClone(
+        AstFactory.switchDefault(
+            AstFactory.list([AstFactory.label2("l1")]),
+            [AstFactory.block([])]));
+  }
+
+  void test_visitSwitchStatement() {
+    _assertClone(
+        AstFactory.switchStatement(
+            AstFactory.identifier3("a"),
+            [
+                AstFactory.switchCase(AstFactory.string2("b"), [AstFactory.block([])]),
+                AstFactory.switchDefault2([AstFactory.block([])])]));
+  }
+
+  void test_visitSymbolLiteral_multiple() {
+    _assertClone(AstFactory.symbolLiteral(["a", "b", "c"]));
+  }
+
+  void test_visitSymbolLiteral_single() {
+    _assertClone(AstFactory.symbolLiteral(["a"]));
+  }
+
+  void test_visitThisExpression() {
+    _assertClone(AstFactory.thisExpression());
+  }
+
+  void test_visitThrowStatement() {
+    _assertClone(AstFactory.throwExpression2(AstFactory.identifier3("e")));
+  }
+
+  void test_visitTopLevelVariableDeclaration_multiple() {
+    _assertClone(
+        AstFactory.topLevelVariableDeclaration2(
+            Keyword.VAR,
+            [AstFactory.variableDeclaration("a")]));
+  }
+
+  void test_visitTopLevelVariableDeclaration_single() {
+    _assertClone(
+        AstFactory.topLevelVariableDeclaration2(
+            Keyword.VAR,
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]));
+  }
+
+  void test_visitTryStatement_catch() {
+    _assertClone(
+        AstFactory.tryStatement2(
+            AstFactory.block([]),
+            [AstFactory.catchClause3(AstFactory.typeName4("E", []), [])]));
+  }
+
+  void test_visitTryStatement_catchFinally() {
+    _assertClone(
+        AstFactory.tryStatement3(
+            AstFactory.block([]),
+            AstFactory.list([AstFactory.catchClause3(AstFactory.typeName4("E", []), [])]),
+            AstFactory.block([])));
+  }
+
+  void test_visitTryStatement_catches() {
+    _assertClone(
+        AstFactory.tryStatement2(
+            AstFactory.block([]),
+            [
+                AstFactory.catchClause3(AstFactory.typeName4("E", []), []),
+                AstFactory.catchClause3(AstFactory.typeName4("F", []), [])]));
+  }
+
+  void test_visitTryStatement_finally() {
+    _assertClone(
+        AstFactory.tryStatement(AstFactory.block([]), AstFactory.block([])));
+  }
+
+  void test_visitTypeArgumentList_multiple() {
+    _assertClone(
+        AstFactory.typeArgumentList(
+            [AstFactory.typeName4("E", []), AstFactory.typeName4("F", [])]));
+  }
+
+  void test_visitTypeArgumentList_single() {
+    _assertClone(AstFactory.typeArgumentList([AstFactory.typeName4("E", [])]));
+  }
+
+  void test_visitTypeName_multipleArgs() {
+    _assertClone(
+        AstFactory.typeName4(
+            "C",
+            [AstFactory.typeName4("D", []), AstFactory.typeName4("E", [])]));
+  }
+
+  void test_visitTypeName_nestedArg() {
+    _assertClone(
+        AstFactory.typeName4(
+            "C",
+            [AstFactory.typeName4("D", [AstFactory.typeName4("E", [])])]));
+  }
+
+  void test_visitTypeName_noArgs() {
+    _assertClone(AstFactory.typeName4("C", []));
+  }
+
+  void test_visitTypeName_singleArg() {
+    _assertClone(AstFactory.typeName4("C", [AstFactory.typeName4("D", [])]));
+  }
+
+  void test_visitTypeParameterList_multiple() {
+    _assertClone(AstFactory.typeParameterList(["E", "F"]));
+  }
+
+  void test_visitTypeParameterList_single() {
+    _assertClone(AstFactory.typeParameterList(["E"]));
+  }
+
+  void test_visitTypeParameter_withExtends() {
+    _assertClone(AstFactory.typeParameter2("E", AstFactory.typeName4("C", [])));
+  }
+
+  void test_visitTypeParameter_withMetadata() {
+    TypeParameter parameter = AstFactory.typeParameter("E");
+    parameter.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(parameter);
+  }
+
+  void test_visitTypeParameter_withoutExtends() {
+    _assertClone(AstFactory.typeParameter("E"));
+  }
+
+  void test_visitVariableDeclarationList_const_type() {
+    _assertClone(
+        AstFactory.variableDeclarationList(
+            Keyword.CONST,
+            AstFactory.typeName4("C", []),
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]));
+  }
+
+  void test_visitVariableDeclarationList_final_noType() {
+    _assertClone(
+        AstFactory.variableDeclarationList2(
+            Keyword.FINAL,
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]));
+  }
+
+  void test_visitVariableDeclarationList_final_withMetadata() {
+    VariableDeclarationList declarationList =
+        AstFactory.variableDeclarationList2(
+            Keyword.FINAL,
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]);
+    declarationList.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declarationList);
+  }
+
+  void test_visitVariableDeclarationList_type() {
+    _assertClone(
+        AstFactory.variableDeclarationList(
+            null,
+            AstFactory.typeName4("C", []),
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]));
+  }
+
+  void test_visitVariableDeclarationList_var() {
+    _assertClone(
+        AstFactory.variableDeclarationList2(
+            Keyword.VAR,
+            [AstFactory.variableDeclaration("a"), AstFactory.variableDeclaration("b")]));
+  }
+
+  void test_visitVariableDeclarationStatement() {
+    _assertClone(
+        AstFactory.variableDeclarationStatement(
+            null,
+            AstFactory.typeName4("C", []),
+            [AstFactory.variableDeclaration("c")]));
+  }
+
+  void test_visitVariableDeclaration_initialized() {
+    _assertClone(
+        AstFactory.variableDeclaration2("a", AstFactory.identifier3("b")));
+  }
+
+  void test_visitVariableDeclaration_uninitialized() {
+    _assertClone(AstFactory.variableDeclaration("a"));
+  }
+
+  void test_visitVariableDeclaration_withMetadata() {
+    VariableDeclaration declaration = AstFactory.variableDeclaration("a");
+    declaration.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("deprecated"))]);
+    _assertClone(declaration);
+  }
+
+  void test_visitWhileStatement() {
+    _assertClone(
+        AstFactory.whileStatement(AstFactory.identifier3("c"), AstFactory.block([])));
+  }
+
+  void test_visitWithClause_multiple() {
+    _assertClone(
+        AstFactory.withClause(
+            [
+                AstFactory.typeName4("A", []),
+                AstFactory.typeName4("B", []),
+                AstFactory.typeName4("C", [])]));
+  }
+
+  void test_visitWithClause_single() {
+    _assertClone(AstFactory.withClause([AstFactory.typeName4("A", [])]));
+  }
+
+  void test_visitYieldStatement() {
+    _assertClone(AstFactory.yieldStatement(AstFactory.identifier3("A")));
+  }
+
+  /**
+   * Assert that an `AstCloner` will produce the expected AST structure when
+   * visiting the given [node].
+   *
+   * @param node the AST node being visited to produce the cloned structure
+   * @throws AFE if the visitor does not produce the expected source for the given node
+   */
+  void _assertClone(AstNode node) {
+    AstNode clone = node.accept(new AstCloner());
+    AstCloneComparator comparitor = new AstCloneComparator(false);
+    if (!comparitor.isEqualNodes(node, clone)) {
+      fail("Failed to clone ${node.runtimeType.toString()}");
+    }
+
+    clone = node.accept(new AstCloner(true));
+    comparitor = new AstCloneComparator(true);
+    if (!comparitor.isEqualNodes(node, clone)) {
+      fail("Failed to clone ${node.runtimeType.toString()}");
+    }
+  }
+}
+
+class AstCloneComparator extends AstComparator {
+  final bool expectTokensCopied;
+
+  AstCloneComparator(this.expectTokensCopied);
+
+  @override
+  bool isEqualNodes(AstNode first, AstNode second) {
+    if (first != null && identical(first, second)) {
+      fail('Failed to copy node: $first (${first.offset})');
+      return false;
+    }
+    return super.isEqualNodes(first, second);
+  }
+
+  @override
+  bool isEqualTokens(Token first, Token second) {
+    if (expectTokensCopied && first != null && identical(first, second)) {
+      fail('Failed to copy token: ${first.lexeme} (${first.offset})');
+      return false;
+    }
+    return super.isEqualTokens(first, second);
+  }
+}
+
+class BooleanArrayTest {
+  void test_get_negative() {
+    try {
+      BooleanArray.get(0, -1);
+      fail("Expected ");
+    } on RangeError catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_get_tooBig() {
+    try {
+      BooleanArray.get(0, 31);
+      fail("Expected ");
+    } on RangeError catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_get_valid() {
+    expect(BooleanArray.get(0, 0), false);
+    expect(BooleanArray.get(1, 0), true);
+    expect(BooleanArray.get(0, 30), false);
+    expect(BooleanArray.get(1 << 30, 30), true);
+  }
+
+  void test_set_negative() {
+    try {
+      BooleanArray.set(0, -1, true);
+      fail("Expected ");
+    } on RangeError catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_set_tooBig() {
+    try {
+      BooleanArray.set(0, 32, true);
+      fail("Expected ");
+    } on RangeError catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_set_valueChanging() {
+    expect(BooleanArray.set(0, 0, true), 1);
+    expect(BooleanArray.set(1, 0, false), 0);
+    expect(BooleanArray.set(0, 30, true), 1 << 30);
+    expect(BooleanArray.set(1 << 30, 30, false), 0);
+  }
+
+  void test_set_valuePreserving() {
+    expect(BooleanArray.set(0, 0, false), 0);
+    expect(BooleanArray.set(1, 0, true), 1);
+    expect(BooleanArray.set(0, 30, false), 0);
+    expect(BooleanArray.set(1 << 30, 30, true), 1 << 30);
+  }
+}
+
+class DirectedGraphTest extends EngineTestCase {
+  void test_addEdge() {
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    expect(graph.isEmpty, isTrue);
+    graph.addEdge(new DirectedGraphTest_Node(), new DirectedGraphTest_Node());
+    expect(graph.isEmpty, isFalse);
+  }
+
+  void test_addNode() {
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    expect(graph.isEmpty, isTrue);
+    graph.addNode(new DirectedGraphTest_Node());
+    expect(graph.isEmpty, isFalse);
+  }
+
+  void test_containsPath_noCycles() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node3);
+    expect(graph.containsPath(node1, node1), isTrue);
+    expect(graph.containsPath(node1, node2), isTrue);
+    expect(graph.containsPath(node1, node3), isTrue);
+    expect(graph.containsPath(node2, node1), isFalse);
+    expect(graph.containsPath(node2, node2), isTrue);
+    expect(graph.containsPath(node2, node3), isTrue);
+    expect(graph.containsPath(node3, node1), isFalse);
+    expect(graph.containsPath(node3, node2), isFalse);
+    expect(graph.containsPath(node3, node3), isTrue);
+  }
+
+  void test_containsPath_withCycles() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node4 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node1);
+    graph.addEdge(node1, node3);
+    graph.addEdge(node3, node4);
+    graph.addEdge(node4, node3);
+    expect(graph.containsPath(node1, node1), isTrue);
+    expect(graph.containsPath(node1, node2), isTrue);
+    expect(graph.containsPath(node1, node3), isTrue);
+    expect(graph.containsPath(node1, node4), isTrue);
+    expect(graph.containsPath(node2, node1), isTrue);
+    expect(graph.containsPath(node2, node2), isTrue);
+    expect(graph.containsPath(node2, node3), isTrue);
+    expect(graph.containsPath(node2, node4), isTrue);
+    expect(graph.containsPath(node3, node1), isFalse);
+    expect(graph.containsPath(node3, node2), isFalse);
+    expect(graph.containsPath(node3, node3), isTrue);
+    expect(graph.containsPath(node3, node4), isTrue);
+    expect(graph.containsPath(node4, node1), isFalse);
+    expect(graph.containsPath(node4, node2), isFalse);
+    expect(graph.containsPath(node4, node3), isTrue);
+    expect(graph.containsPath(node4, node4), isTrue);
+  }
+
+  void test_creation() {
+    expect(new DirectedGraph<DirectedGraphTest_Node>(), isNotNull);
+  }
+
+  void test_findCycleContaining_complexCycle() {
+    // Two overlapping loops: (1, 2, 3) and (3, 4, 5)
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node4 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node5 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node3);
+    graph.addEdge(node3, node1);
+    graph.addEdge(node3, node4);
+    graph.addEdge(node4, node5);
+    graph.addEdge(node5, node3);
+    List<DirectedGraphTest_Node> cycle = graph.findCycleContaining(node1);
+    expect(cycle, hasLength(5));
+    expect(cycle.contains(node1), isTrue);
+    expect(cycle.contains(node2), isTrue);
+    expect(cycle.contains(node3), isTrue);
+    expect(cycle.contains(node4), isTrue);
+    expect(cycle.contains(node5), isTrue);
+  }
+
+  void test_findCycleContaining_cycle() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node3);
+    graph.addEdge(node2, new DirectedGraphTest_Node());
+    graph.addEdge(node3, node1);
+    graph.addEdge(node3, new DirectedGraphTest_Node());
+    List<DirectedGraphTest_Node> cycle = graph.findCycleContaining(node1);
+    expect(cycle, hasLength(3));
+    expect(cycle.contains(node1), isTrue);
+    expect(cycle.contains(node2), isTrue);
+    expect(cycle.contains(node3), isTrue);
+  }
+
+  void test_findCycleContaining_notInGraph() {
+    DirectedGraphTest_Node node = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    List<DirectedGraphTest_Node> cycle = graph.findCycleContaining(node);
+    expect(cycle, hasLength(1));
+    expect(cycle[0], node);
+  }
+
+  void test_findCycleContaining_null() {
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    try {
+      graph.findCycleContaining(null);
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_findCycleContaining_singleton() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node3);
+    List<DirectedGraphTest_Node> cycle = graph.findCycleContaining(node1);
+    expect(cycle, hasLength(1));
+    expect(cycle[0], node1);
+  }
+
+  void test_getNodeCount() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    expect(graph.nodeCount, 0);
+    graph.addNode(node1);
+    expect(graph.nodeCount, 1);
+    graph.addNode(node2);
+    expect(graph.nodeCount, 2);
+    graph.removeNode(node1);
+    expect(graph.nodeCount, 1);
+  }
+
+  void test_getTails() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    expect(graph.getTails(node1), hasLength(0));
+    graph.addEdge(node1, node2);
+    expect(graph.getTails(node1), hasLength(1));
+    graph.addEdge(node1, node3);
+    expect(graph.getTails(node1), hasLength(2));
+  }
+
+  void test_removeAllNodes() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    List<DirectedGraphTest_Node> nodes = new List<DirectedGraphTest_Node>();
+    nodes.add(node1);
+    nodes.add(node2);
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node1);
+    expect(graph.isEmpty, isFalse);
+    graph.removeAllNodes(nodes);
+    expect(graph.isEmpty, isTrue);
+  }
+
+  void test_removeEdge() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node1, node3);
+    expect(graph.getTails(node1), hasLength(2));
+    graph.removeEdge(node1, node2);
+    expect(graph.getTails(node1), hasLength(1));
+  }
+
+  void test_removeNode() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node1, node3);
+    expect(graph.getTails(node1), hasLength(2));
+    graph.removeNode(node2);
+    expect(graph.getTails(node1), hasLength(1));
+  }
+
+  void test_removeSink() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    expect(graph.removeSink(), same(node2));
+    expect(graph.removeSink(), same(node1));
+    expect(graph.isEmpty, isTrue);
+  }
+
+  void test_topologicalSort_noCycles() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node1, node3);
+    graph.addEdge(node2, node3);
+    List<List<DirectedGraphTest_Node>> topologicalSort =
+        graph.computeTopologicalSort();
+    expect(topologicalSort, hasLength(3));
+    expect(topologicalSort[0], hasLength(1));
+    expect(topologicalSort[0][0], node3);
+    expect(topologicalSort[1], hasLength(1));
+    expect(topologicalSort[1][0], node2);
+    expect(topologicalSort[2], hasLength(1));
+    expect(topologicalSort[2][0], node1);
+  }
+
+  void test_topologicalSort_withCycles() {
+    DirectedGraphTest_Node node1 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node2 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node3 = new DirectedGraphTest_Node();
+    DirectedGraphTest_Node node4 = new DirectedGraphTest_Node();
+    DirectedGraph<DirectedGraphTest_Node> graph =
+        new DirectedGraph<DirectedGraphTest_Node>();
+    graph.addEdge(node1, node2);
+    graph.addEdge(node2, node1);
+    graph.addEdge(node1, node3);
+    graph.addEdge(node3, node4);
+    graph.addEdge(node4, node3);
+    List<List<DirectedGraphTest_Node>> topologicalSort =
+        graph.computeTopologicalSort();
+    expect(topologicalSort, hasLength(2));
+    expect(topologicalSort[0], unorderedEquals([node3, node4]));
+    expect(topologicalSort[1], unorderedEquals([node1, node2]));
+  }
+}
+
+/**
+ * Instances of the class `Node` represent simple nodes used for testing purposes.
+ */
+class DirectedGraphTest_Node {
+}
+
+class Getter_NodeReplacerTest_testAnnotatedNode implements
+    NodeReplacerTest_Getter {
+  @override
+  Comment get(AnnotatedNode node) => node.documentationComment;
+}
+
+class Getter_NodeReplacerTest_testNormalFormalParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(NormalFormalParameter node) => node.identifier;
+}
+
+class Getter_NodeReplacerTest_testNormalFormalParameter_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Comment get(NormalFormalParameter node) => node.documentationComment;
+}
+
+class Getter_NodeReplacerTest_testTypedLiteral implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeArgumentList get(TypedLiteral node) => node.typeArguments;
+}
+
+class Getter_NodeReplacerTest_testUriBasedDirective implements
+    NodeReplacerTest_Getter {
+  @override
+  StringLiteral get(UriBasedDirective node) => node.uri;
+}
+
+class Getter_NodeReplacerTest_test_annotation implements NodeReplacerTest_Getter
+    {
+  @override
+  ArgumentList get(Annotation node) => node.arguments;
+}
+
+class Getter_NodeReplacerTest_test_annotation_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Identifier get(Annotation node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_annotation_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(Annotation node) => node.constructorName;
+}
+
+class Getter_NodeReplacerTest_test_asExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(AsExpression node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_asExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(AsExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_assertStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(AssertStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_assignmentExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(AssignmentExpression node) => node.rightHandSide;
+}
+
+class Getter_NodeReplacerTest_test_assignmentExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(AssignmentExpression node) => node.leftHandSide;
+}
+
+class Getter_NodeReplacerTest_test_binaryExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(BinaryExpression node) => node.leftOperand;
+}
+
+class Getter_NodeReplacerTest_test_binaryExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(BinaryExpression node) => node.rightOperand;
+}
+
+class Getter_NodeReplacerTest_test_blockFunctionBody implements
+    NodeReplacerTest_Getter {
+  @override
+  Block get(BlockFunctionBody node) => node.block;
+}
+
+class Getter_NodeReplacerTest_test_breakStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(BreakStatement node) => node.label;
+}
+
+class Getter_NodeReplacerTest_test_cascadeExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(CascadeExpression node) => node.target;
+}
+
+class Getter_NodeReplacerTest_test_catchClause implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(CatchClause node) => node.stackTraceParameter;
+}
+
+class Getter_NodeReplacerTest_test_catchClause_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(CatchClause node) => node.exceptionParameter;
+}
+
+class Getter_NodeReplacerTest_test_catchClause_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(CatchClause node) => node.exceptionType;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  ImplementsClause get(ClassDeclaration node) => node.implementsClause;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  WithClause get(ClassDeclaration node) => node.withClause;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  NativeClause get(ClassDeclaration node) => node.nativeClause;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration_4 implements
+    NodeReplacerTest_Getter {
+  @override
+  ExtendsClause get(ClassDeclaration node) => node.extendsClause;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration_5 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeParameterList get(ClassDeclaration node) => node.typeParameters;
+}
+
+class Getter_NodeReplacerTest_test_classDeclaration_6 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ClassDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_classTypeAlias implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(ClassTypeAlias node) => node.superclass;
+}
+
+class Getter_NodeReplacerTest_test_classTypeAlias_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  ImplementsClause get(ClassTypeAlias node) => node.implementsClause;
+}
+
+class Getter_NodeReplacerTest_test_classTypeAlias_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  WithClause get(ClassTypeAlias node) => node.withClause;
+}
+
+class Getter_NodeReplacerTest_test_classTypeAlias_4 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ClassTypeAlias node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_classTypeAlias_5 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeParameterList get(ClassTypeAlias node) => node.typeParameters;
+}
+
+class Getter_NodeReplacerTest_test_commentReference implements
+    NodeReplacerTest_Getter {
+  @override
+  Identifier get(CommentReference node) => node.identifier;
+}
+
+class Getter_NodeReplacerTest_test_compilationUnit implements
+    NodeReplacerTest_Getter {
+  @override
+  ScriptTag get(CompilationUnit node) => node.scriptTag;
+}
+
+class Getter_NodeReplacerTest_test_conditionalExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ConditionalExpression node) => node.elseExpression;
+}
+
+class Getter_NodeReplacerTest_test_conditionalExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ConditionalExpression node) => node.thenExpression;
+}
+
+class Getter_NodeReplacerTest_test_conditionalExpression_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ConditionalExpression node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_constructorDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  ConstructorName get(ConstructorDeclaration node) =>
+      node.redirectedConstructor;
+}
+
+class Getter_NodeReplacerTest_test_constructorDeclaration_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ConstructorDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_constructorDeclaration_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Identifier get(ConstructorDeclaration node) => node.returnType;
+}
+
+class Getter_NodeReplacerTest_test_constructorDeclaration_4 implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(ConstructorDeclaration node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_constructorDeclaration_5 implements
+    NodeReplacerTest_Getter {
+  @override
+  FunctionBody get(ConstructorDeclaration node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_constructorFieldInitializer implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ConstructorFieldInitializer node) => node.fieldName;
+}
+
+class Getter_NodeReplacerTest_test_constructorFieldInitializer_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ConstructorFieldInitializer node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_constructorName implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(ConstructorName node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_constructorName_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ConstructorName node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_continueStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ContinueStatement node) => node.label;
+}
+
+class Getter_NodeReplacerTest_test_declaredIdentifier implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(DeclaredIdentifier node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_declaredIdentifier_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(DeclaredIdentifier node) => node.identifier;
+}
+
+class Getter_NodeReplacerTest_test_defaultFormalParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  NormalFormalParameter get(DefaultFormalParameter node) => node.parameter;
+}
+
+class Getter_NodeReplacerTest_test_defaultFormalParameter_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(DefaultFormalParameter node) => node.defaultValue;
+}
+
+class Getter_NodeReplacerTest_test_doStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(DoStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_doStatement_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(DoStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_enumConstantDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(EnumConstantDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_enumDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(EnumDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_expressionFunctionBody implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ExpressionFunctionBody node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_expressionStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ExpressionStatement node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_extendsClause implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(ExtendsClause node) => node.superclass;
+}
+
+class Getter_NodeReplacerTest_test_fieldDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  VariableDeclarationList get(FieldDeclaration node) => node.fields;
+}
+
+class Getter_NodeReplacerTest_test_fieldFormalParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(FieldFormalParameter node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_fieldFormalParameter_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(FieldFormalParameter node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withIdentifier implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(ForEachStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withIdentifier_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ForEachStatement node) => node.identifier;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withIdentifier_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ForEachStatement node) => node.iterator;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ForEachStatement node) => node.iterator;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable_2
+    implements NodeReplacerTest_Getter {
+  @override
+  DeclaredIdentifier get(ForEachStatement node) => node.loopVariable;
+}
+
+class Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable_3
+    implements NodeReplacerTest_Getter {
+  @override
+  Statement get(ForEachStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withInitialization implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(ForStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withInitialization_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ForStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withInitialization_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ForStatement node) => node.initialization;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withVariables implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(ForStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withVariables_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  VariableDeclarationList get(ForStatement node) => node.variables;
+}
+
+class Getter_NodeReplacerTest_test_forStatement_withVariables_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ForStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_functionDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(FunctionDeclaration node) => node.returnType;
+}
+
+class Getter_NodeReplacerTest_test_functionDeclarationStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  FunctionDeclaration get(FunctionDeclarationStatement node) =>
+      node.functionDeclaration;
+}
+
+class Getter_NodeReplacerTest_test_functionDeclaration_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  FunctionExpression get(FunctionDeclaration node) => node.functionExpression;
+}
+
+class Getter_NodeReplacerTest_test_functionDeclaration_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(FunctionDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_functionExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(FunctionExpression node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_functionExpressionInvocation implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(FunctionExpressionInvocation node) => node.function;
+}
+
+class Getter_NodeReplacerTest_test_functionExpressionInvocation_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  ArgumentList get(FunctionExpressionInvocation node) => node.argumentList;
+}
+
+class Getter_NodeReplacerTest_test_functionExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  FunctionBody get(FunctionExpression node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_functionTypeAlias implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeParameterList get(FunctionTypeAlias node) => node.typeParameters;
+}
+
+class Getter_NodeReplacerTest_test_functionTypeAlias_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(FunctionTypeAlias node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_functionTypeAlias_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(FunctionTypeAlias node) => node.returnType;
+}
+
+class Getter_NodeReplacerTest_test_functionTypeAlias_4 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(FunctionTypeAlias node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_functionTypedFormalParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(FunctionTypedFormalParameter node) => node.returnType;
+}
+
+class Getter_NodeReplacerTest_test_functionTypedFormalParameter_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(FunctionTypedFormalParameter node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_ifStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(IfStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_ifStatement_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(IfStatement node) => node.elseStatement;
+}
+
+class Getter_NodeReplacerTest_test_ifStatement_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(IfStatement node) => node.thenStatement;
+}
+
+class Getter_NodeReplacerTest_test_importDirective implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(ImportDirective node) => node.prefix;
+}
+
+class Getter_NodeReplacerTest_test_indexExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(IndexExpression node) => node.target;
+}
+
+class Getter_NodeReplacerTest_test_indexExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(IndexExpression node) => node.index;
+}
+
+class Getter_NodeReplacerTest_test_instanceCreationExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  ArgumentList get(InstanceCreationExpression node) => node.argumentList;
+}
+
+class Getter_NodeReplacerTest_test_instanceCreationExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  ConstructorName get(InstanceCreationExpression node) => node.constructorName;
+}
+
+class Getter_NodeReplacerTest_test_interpolationExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(InterpolationExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_isExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(IsExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_isExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(IsExpression node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_label implements NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(Label node) => node.label;
+}
+
+class Getter_NodeReplacerTest_test_labeledStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(LabeledStatement node) => node.statement;
+}
+
+class Getter_NodeReplacerTest_test_libraryDirective implements
+    NodeReplacerTest_Getter {
+  @override
+  LibraryIdentifier get(LibraryDirective node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_mapLiteralEntry implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(MapLiteralEntry node) => node.value;
+}
+
+class Getter_NodeReplacerTest_test_mapLiteralEntry_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(MapLiteralEntry node) => node.key;
+}
+
+class Getter_NodeReplacerTest_test_methodDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(MethodDeclaration node) => node.returnType;
+}
+
+class Getter_NodeReplacerTest_test_methodDeclaration_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  FunctionBody get(MethodDeclaration node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_methodDeclaration_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(MethodDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_methodDeclaration_4 implements
+    NodeReplacerTest_Getter {
+  @override
+  FormalParameterList get(MethodDeclaration node) => node.parameters;
+}
+
+class Getter_NodeReplacerTest_test_methodInvocation implements
+    NodeReplacerTest_Getter {
+  @override
+  ArgumentList get(MethodInvocation node) => node.argumentList;
+}
+
+class Getter_NodeReplacerTest_test_methodInvocation_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(MethodInvocation node) => node.target;
+}
+
+class Getter_NodeReplacerTest_test_methodInvocation_3 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(MethodInvocation node) => node.methodName;
+}
+
+class Getter_NodeReplacerTest_test_namedExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Label get(NamedExpression node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_namedExpression_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(NamedExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_nativeClause implements
+    NodeReplacerTest_Getter {
+  @override
+  StringLiteral get(NativeClause node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_nativeFunctionBody implements
+    NodeReplacerTest_Getter {
+  @override
+  StringLiteral get(NativeFunctionBody node) => node.stringLiteral;
+}
+
+class Getter_NodeReplacerTest_test_parenthesizedExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ParenthesizedExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_partOfDirective implements
+    NodeReplacerTest_Getter {
+  @override
+  LibraryIdentifier get(PartOfDirective node) => node.libraryName;
+}
+
+class Getter_NodeReplacerTest_test_postfixExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(PostfixExpression node) => node.operand;
+}
+
+class Getter_NodeReplacerTest_test_prefixExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(PrefixExpression node) => node.operand;
+}
+
+class Getter_NodeReplacerTest_test_prefixedIdentifier implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(PrefixedIdentifier node) => node.identifier;
+}
+
+class Getter_NodeReplacerTest_test_prefixedIdentifier_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(PrefixedIdentifier node) => node.prefix;
+}
+
+class Getter_NodeReplacerTest_test_propertyAccess implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(PropertyAccess node) => node.target;
+}
+
+class Getter_NodeReplacerTest_test_propertyAccess_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(PropertyAccess node) => node.propertyName;
+}
+
+class Getter_NodeReplacerTest_test_redirectingConstructorInvocation implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(RedirectingConstructorInvocation node) =>
+      node.constructorName;
+}
+
+class Getter_NodeReplacerTest_test_redirectingConstructorInvocation_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  ArgumentList get(RedirectingConstructorInvocation node) => node.argumentList;
+}
+
+class Getter_NodeReplacerTest_test_returnStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ReturnStatement node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_simpleFormalParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(SimpleFormalParameter node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_superConstructorInvocation implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(SuperConstructorInvocation node) => node.constructorName;
+}
+
+class Getter_NodeReplacerTest_test_superConstructorInvocation_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  ArgumentList get(SuperConstructorInvocation node) => node.argumentList;
+}
+
+class Getter_NodeReplacerTest_test_switchCase implements NodeReplacerTest_Getter
+    {
+  @override
+  Expression get(SwitchCase node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_switchStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(SwitchStatement node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_throwExpression implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(ThrowExpression node) => node.expression;
+}
+
+class Getter_NodeReplacerTest_test_topLevelVariableDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  VariableDeclarationList get(TopLevelVariableDeclaration node) =>
+      node.variables;
+}
+
+class Getter_NodeReplacerTest_test_tryStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Block get(TryStatement node) => node.finallyBlock;
+}
+
+class Getter_NodeReplacerTest_test_tryStatement_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Block get(TryStatement node) => node.body;
+}
+
+class Getter_NodeReplacerTest_test_typeName implements NodeReplacerTest_Getter {
+  @override
+  TypeArgumentList get(TypeName node) => node.typeArguments;
+}
+
+class Getter_NodeReplacerTest_test_typeName_2 implements NodeReplacerTest_Getter
+    {
+  @override
+  Identifier get(TypeName node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_typeParameter implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(TypeParameter node) => node.bound;
+}
+
+class Getter_NodeReplacerTest_test_typeParameter_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(TypeParameter node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_variableDeclaration implements
+    NodeReplacerTest_Getter {
+  @override
+  SimpleIdentifier get(VariableDeclaration node) => node.name;
+}
+
+class Getter_NodeReplacerTest_test_variableDeclarationList implements
+    NodeReplacerTest_Getter {
+  @override
+  TypeName get(VariableDeclarationList node) => node.type;
+}
+
+class Getter_NodeReplacerTest_test_variableDeclarationStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  VariableDeclarationList get(VariableDeclarationStatement node) =>
+      node.variables;
+}
+
+class Getter_NodeReplacerTest_test_variableDeclaration_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(VariableDeclaration node) => node.initializer;
+}
+
+class Getter_NodeReplacerTest_test_whileStatement implements
+    NodeReplacerTest_Getter {
+  @override
+  Expression get(WhileStatement node) => node.condition;
+}
+
+class Getter_NodeReplacerTest_test_whileStatement_2 implements
+    NodeReplacerTest_Getter {
+  @override
+  Statement get(WhileStatement node) => node.body;
+}
+
+class LineInfoTest {
+  void test_creation() {
+    expect(new LineInfo(<int>[0]), isNotNull);
+  }
+
+  void test_creation_empty() {
+    try {
+      new LineInfo(<int>[]);
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_creation_null() {
+    try {
+      new LineInfo(null);
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_firstLine() {
+    LineInfo info = new LineInfo(<int>[0, 12, 34]);
+    LineInfo_Location location = info.getLocation(4);
+    expect(location.lineNumber, 1);
+    expect(location.columnNumber, 5);
+  }
+
+  void test_lastLine() {
+    LineInfo info = new LineInfo(<int>[0, 12, 34]);
+    LineInfo_Location location = info.getLocation(36);
+    expect(location.lineNumber, 3);
+    expect(location.columnNumber, 3);
+  }
+
+  void test_middleLine() {
+    LineInfo info = new LineInfo(<int>[0, 12, 34]);
+    LineInfo_Location location = info.getLocation(12);
+    expect(location.lineNumber, 2);
+    expect(location.columnNumber, 1);
+  }
+}
+
+class ListGetter_NodeReplacerTest_testAnnotatedNode extends
+    NodeReplacerTest_ListGetter<AnnotatedNode, Annotation> {
+  ListGetter_NodeReplacerTest_testAnnotatedNode(int arg0) : super(arg0);
+
+  @override
+  NodeList<Annotation> getList(AnnotatedNode node) => node.metadata;
+}
+
+class ListGetter_NodeReplacerTest_testNamespaceDirective extends
+    NodeReplacerTest_ListGetter<NamespaceDirective, Combinator> {
+  ListGetter_NodeReplacerTest_testNamespaceDirective(int arg0) : super(arg0);
+
+  @override
+  NodeList<Combinator> getList(NamespaceDirective node) => node.combinators;
+}
+
+class ListGetter_NodeReplacerTest_testNormalFormalParameter extends
+    NodeReplacerTest_ListGetter<NormalFormalParameter, Annotation> {
+  ListGetter_NodeReplacerTest_testNormalFormalParameter(int arg0) : super(arg0);
+
+  @override
+  NodeList<Annotation> getList(NormalFormalParameter node) => node.metadata;
+}
+
+class ListGetter_NodeReplacerTest_testSwitchMember extends
+    NodeReplacerTest_ListGetter<SwitchMember, Label> {
+  ListGetter_NodeReplacerTest_testSwitchMember(int arg0) : super(arg0);
+
+  @override
+  NodeList<Label> getList(SwitchMember node) => node.labels;
+}
+
+class ListGetter_NodeReplacerTest_testSwitchMember_2 extends
+    NodeReplacerTest_ListGetter<SwitchMember, Statement> {
+  ListGetter_NodeReplacerTest_testSwitchMember_2(int arg0) : super(arg0);
+
+  @override
+  NodeList<Statement> getList(SwitchMember node) => node.statements;
+}
+
+class ListGetter_NodeReplacerTest_test_adjacentStrings extends
+    NodeReplacerTest_ListGetter<AdjacentStrings, StringLiteral> {
+  ListGetter_NodeReplacerTest_test_adjacentStrings(int arg0) : super(arg0);
+
+  @override
+  NodeList<StringLiteral> getList(AdjacentStrings node) => node.strings;
+}
+
+class ListGetter_NodeReplacerTest_test_adjacentStrings_2 extends
+    NodeReplacerTest_ListGetter<AdjacentStrings, StringLiteral> {
+  ListGetter_NodeReplacerTest_test_adjacentStrings_2(int arg0) : super(arg0);
+
+  @override
+  NodeList<StringLiteral> getList(AdjacentStrings node) => node.strings;
+}
+
+class ListGetter_NodeReplacerTest_test_argumentList extends
+    NodeReplacerTest_ListGetter<ArgumentList, Expression> {
+  ListGetter_NodeReplacerTest_test_argumentList(int arg0) : super(arg0);
+
+  @override
+  NodeList<Expression> getList(ArgumentList node) => node.arguments;
+}
+
+class ListGetter_NodeReplacerTest_test_block extends
+    NodeReplacerTest_ListGetter<Block, Statement> {
+  ListGetter_NodeReplacerTest_test_block(int arg0) : super(arg0);
+
+  @override
+  NodeList<Statement> getList(Block node) => node.statements;
+}
+
+class ListGetter_NodeReplacerTest_test_cascadeExpression extends
+    NodeReplacerTest_ListGetter<CascadeExpression, Expression> {
+  ListGetter_NodeReplacerTest_test_cascadeExpression(int arg0) : super(arg0);
+
+  @override
+  NodeList<Expression> getList(CascadeExpression node) => node.cascadeSections;
+}
+
+class ListGetter_NodeReplacerTest_test_classDeclaration extends
+    NodeReplacerTest_ListGetter<ClassDeclaration, ClassMember> {
+  ListGetter_NodeReplacerTest_test_classDeclaration(int arg0) : super(arg0);
+
+  @override
+  NodeList<ClassMember> getList(ClassDeclaration node) => node.members;
+}
+
+class ListGetter_NodeReplacerTest_test_comment extends
+    NodeReplacerTest_ListGetter<Comment, CommentReference> {
+  ListGetter_NodeReplacerTest_test_comment(int arg0) : super(arg0);
+
+  @override
+  NodeList<CommentReference> getList(Comment node) => node.references;
+}
+
+class ListGetter_NodeReplacerTest_test_compilationUnit extends
+    NodeReplacerTest_ListGetter<CompilationUnit, Directive> {
+  ListGetter_NodeReplacerTest_test_compilationUnit(int arg0) : super(arg0);
+
+  @override
+  NodeList<Directive> getList(CompilationUnit node) => node.directives;
+}
+
+class ListGetter_NodeReplacerTest_test_compilationUnit_2 extends
+    NodeReplacerTest_ListGetter<CompilationUnit, CompilationUnitMember> {
+  ListGetter_NodeReplacerTest_test_compilationUnit_2(int arg0) : super(arg0);
+
+  @override
+  NodeList<CompilationUnitMember> getList(CompilationUnit node) =>
+      node.declarations;
+}
+
+class ListGetter_NodeReplacerTest_test_constructorDeclaration extends
+    NodeReplacerTest_ListGetter<ConstructorDeclaration, ConstructorInitializer> {
+  ListGetter_NodeReplacerTest_test_constructorDeclaration(int arg0)
+      : super(arg0);
+
+  @override
+  NodeList<ConstructorInitializer> getList(ConstructorDeclaration node) =>
+      node.initializers;
+}
+
+class ListGetter_NodeReplacerTest_test_forStatement_withInitialization extends
+    NodeReplacerTest_ListGetter<ForStatement, Expression> {
+  ListGetter_NodeReplacerTest_test_forStatement_withInitialization(int arg0)
+      : super(arg0);
+
+  @override
+  NodeList<Expression> getList(ForStatement node) => node.updaters;
+}
+
+class ListGetter_NodeReplacerTest_test_forStatement_withVariables extends
+    NodeReplacerTest_ListGetter<ForStatement, Expression> {
+  ListGetter_NodeReplacerTest_test_forStatement_withVariables(int arg0)
+      : super(arg0);
+
+  @override
+  NodeList<Expression> getList(ForStatement node) => node.updaters;
+}
+
+class ListGetter_NodeReplacerTest_test_formalParameterList extends
+    NodeReplacerTest_ListGetter<FormalParameterList, FormalParameter> {
+  ListGetter_NodeReplacerTest_test_formalParameterList(int arg0) : super(arg0);
+
+  @override
+  NodeList<FormalParameter> getList(FormalParameterList node) =>
+      node.parameters;
+}
+
+class ListGetter_NodeReplacerTest_test_hideCombinator extends
+    NodeReplacerTest_ListGetter<HideCombinator, SimpleIdentifier> {
+  ListGetter_NodeReplacerTest_test_hideCombinator(int arg0) : super(arg0);
+
+  @override
+  NodeList<SimpleIdentifier> getList(HideCombinator node) => node.hiddenNames;
+}
+
+class ListGetter_NodeReplacerTest_test_implementsClause extends
+    NodeReplacerTest_ListGetter<ImplementsClause, TypeName> {
+  ListGetter_NodeReplacerTest_test_implementsClause(int arg0) : super(arg0);
+
+  @override
+  NodeList<TypeName> getList(ImplementsClause node) => node.interfaces;
+}
+
+class ListGetter_NodeReplacerTest_test_labeledStatement extends
+    NodeReplacerTest_ListGetter<LabeledStatement, Label> {
+  ListGetter_NodeReplacerTest_test_labeledStatement(int arg0) : super(arg0);
+
+  @override
+  NodeList<Label> getList(LabeledStatement node) => node.labels;
+}
+
+class ListGetter_NodeReplacerTest_test_libraryIdentifier extends
+    NodeReplacerTest_ListGetter<LibraryIdentifier, SimpleIdentifier> {
+  ListGetter_NodeReplacerTest_test_libraryIdentifier(int arg0) : super(arg0);
+
+  @override
+  NodeList<SimpleIdentifier> getList(LibraryIdentifier node) => node.components;
+}
+
+class ListGetter_NodeReplacerTest_test_listLiteral extends
+    NodeReplacerTest_ListGetter<ListLiteral, Expression> {
+  ListGetter_NodeReplacerTest_test_listLiteral(int arg0) : super(arg0);
+
+  @override
+  NodeList<Expression> getList(ListLiteral node) => node.elements;
+}
+
+class ListGetter_NodeReplacerTest_test_mapLiteral extends
+    NodeReplacerTest_ListGetter<MapLiteral, MapLiteralEntry> {
+  ListGetter_NodeReplacerTest_test_mapLiteral(int arg0) : super(arg0);
+
+  @override
+  NodeList<MapLiteralEntry> getList(MapLiteral node) => node.entries;
+}
+
+class ListGetter_NodeReplacerTest_test_showCombinator extends
+    NodeReplacerTest_ListGetter<ShowCombinator, SimpleIdentifier> {
+  ListGetter_NodeReplacerTest_test_showCombinator(int arg0) : super(arg0);
+
+  @override
+  NodeList<SimpleIdentifier> getList(ShowCombinator node) => node.shownNames;
+}
+
+class ListGetter_NodeReplacerTest_test_stringInterpolation extends
+    NodeReplacerTest_ListGetter<StringInterpolation, InterpolationElement> {
+  ListGetter_NodeReplacerTest_test_stringInterpolation(int arg0) : super(arg0);
+
+  @override
+  NodeList<InterpolationElement> getList(StringInterpolation node) =>
+      node.elements;
+}
+
+class ListGetter_NodeReplacerTest_test_switchStatement extends
+    NodeReplacerTest_ListGetter<SwitchStatement, SwitchMember> {
+  ListGetter_NodeReplacerTest_test_switchStatement(int arg0) : super(arg0);
+
+  @override
+  NodeList<SwitchMember> getList(SwitchStatement node) => node.members;
+}
+
+class ListGetter_NodeReplacerTest_test_tryStatement extends
+    NodeReplacerTest_ListGetter<TryStatement, CatchClause> {
+  ListGetter_NodeReplacerTest_test_tryStatement(int arg0) : super(arg0);
+
+  @override
+  NodeList<CatchClause> getList(TryStatement node) => node.catchClauses;
+}
+
+class ListGetter_NodeReplacerTest_test_typeArgumentList extends
+    NodeReplacerTest_ListGetter<TypeArgumentList, TypeName> {
+  ListGetter_NodeReplacerTest_test_typeArgumentList(int arg0) : super(arg0);
+
+  @override
+  NodeList<TypeName> getList(TypeArgumentList node) => node.arguments;
+}
+
+class ListGetter_NodeReplacerTest_test_typeParameterList extends
+    NodeReplacerTest_ListGetter<TypeParameterList, TypeParameter> {
+  ListGetter_NodeReplacerTest_test_typeParameterList(int arg0) : super(arg0);
+
+  @override
+  NodeList<TypeParameter> getList(TypeParameterList node) =>
+      node.typeParameters;
+}
+
+class ListGetter_NodeReplacerTest_test_variableDeclarationList extends
+    NodeReplacerTest_ListGetter<VariableDeclarationList, VariableDeclaration> {
+  ListGetter_NodeReplacerTest_test_variableDeclarationList(int arg0)
+      : super(arg0);
+
+  @override
+  NodeList<VariableDeclaration> getList(VariableDeclarationList node) =>
+      node.variables;
+}
+
+class ListGetter_NodeReplacerTest_test_withClause extends
+    NodeReplacerTest_ListGetter<WithClause, TypeName> {
+  ListGetter_NodeReplacerTest_test_withClause(int arg0) : super(arg0);
+
+  @override
+  NodeList<TypeName> getList(WithClause node) => node.mixinTypes;
+}
+
+class ListUtilitiesTest {
+  void test_addAll_emptyToEmpty() {
+    List<String> list = new List<String>();
+    List<String> elements = [];
+    ListUtilities.addAll(list, elements);
+    expect(list.length, 0);
+  }
+
+  void test_addAll_emptyToNonEmpty() {
+    List<String> list = new List<String>();
+    list.add("a");
+    List<String> elements = [];
+    ListUtilities.addAll(list, elements);
+    expect(list.length, 1);
+  }
+
+  void test_addAll_nonEmptyToEmpty() {
+    List<String> list = new List<String>();
+    List<String> elements = ["b", "c"];
+    ListUtilities.addAll(list, elements);
+    expect(list.length, 2);
+  }
+
+  void test_addAll_nonEmptyToNonEmpty() {
+    List<String> list = new List<String>();
+    list.add("a");
+    List<String> elements = ["b", "c"];
+    ListUtilities.addAll(list, elements);
+    expect(list.length, 3);
+  }
+}
+
+class MultipleMapIteratorTest extends EngineTestCase {
+  void test_multipleMaps_firstEmpty() {
+    Map<String, String> map1 = new HashMap<String, String>();
+    Map<String, String> map2 = new HashMap<String, String>();
+    map2["k2"] = "v2";
+    Map<String, String> map3 = new HashMap<String, String>();
+    map3["k3"] = "v3";
+    MultipleMapIterator<String, String> iterator =
+        _iterator([map1, map2, map3]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_multipleMaps_lastEmpty() {
+    Map<String, String> map1 = new HashMap<String, String>();
+    map1["k1"] = "v1";
+    Map<String, String> map2 = new HashMap<String, String>();
+    map2["k2"] = "v2";
+    Map<String, String> map3 = new HashMap<String, String>();
+    MultipleMapIterator<String, String> iterator =
+        _iterator([map1, map2, map3]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_multipleMaps_middleEmpty() {
+    Map<String, String> map1 = new HashMap<String, String>();
+    map1["k1"] = "v1";
+    Map<String, String> map2 = new HashMap<String, String>();
+    Map<String, String> map3 = new HashMap<String, String>();
+    map3["k3"] = "v3";
+    MultipleMapIterator<String, String> iterator =
+        _iterator([map1, map2, map3]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_multipleMaps_nonEmpty() {
+    Map<String, String> map1 = new HashMap<String, String>();
+    map1["k1"] = "v1";
+    Map<String, String> map2 = new HashMap<String, String>();
+    map2["k2"] = "v2";
+    Map<String, String> map3 = new HashMap<String, String>();
+    map3["k3"] = "v3";
+    MultipleMapIterator<String, String> iterator =
+        _iterator([map1, map2, map3]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_noMap() {
+    MultipleMapIterator<String, String> iterator = _iterator([]);
+    expect(iterator.moveNext(), isFalse);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_singleMap_empty() {
+    Map<String, String> map = new HashMap<String, String>();
+    MultipleMapIterator<String, String> iterator = _iterator(<Map>[map]);
+    expect(iterator.moveNext(), isFalse);
+    try {
+      iterator.key;
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+    try {
+      iterator.value;
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+    try {
+      iterator.value = "x";
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_singleMap_multiple() {
+    Map<String, String> map = new HashMap<String, String>();
+    map["k1"] = "v1";
+    map["k2"] = "v2";
+    map["k3"] = "v3";
+    MultipleMapIterator<String, String> iterator = _iterator([map]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_singleMap_single() {
+    String key = "key";
+    String value = "value";
+    Map<String, String> map = new HashMap<String, String>();
+    map[key] = value;
+    MultipleMapIterator<String, String> iterator = _iterator([map]);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.key, same(key));
+    expect(iterator.value, same(value));
+    String newValue = "newValue";
+    iterator.value = newValue;
+    expect(iterator.value, same(newValue));
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  MultipleMapIterator<String, String> _iterator(List<Map> maps) {
+    return new MultipleMapIterator<String, String>(maps);
+  }
+}
+
+class NodeReplacerTest extends EngineTestCase {
+  void test_adjacentStrings() {
+    AdjacentStrings node =
+        AstFactory.adjacentStrings([AstFactory.string2("a"), AstFactory.string2("b")]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_adjacentStrings_2(0));
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_adjacentStrings(1));
+  }
+
+  void test_annotation() {
+    Annotation node = AstFactory.annotation2(
+        AstFactory.identifier3("C"),
+        AstFactory.identifier3("c"),
+        AstFactory.argumentList([AstFactory.integer(0)]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_annotation());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_annotation_3());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_annotation_2());
+  }
+
+  void test_argumentList() {
+    ArgumentList node = AstFactory.argumentList([AstFactory.integer(0)]);
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_argumentList(0));
+  }
+
+  void test_asExpression() {
+    AsExpression node = AstFactory.asExpression(
+        AstFactory.integer(0),
+        AstFactory.typeName3(
+            AstFactory.identifier3("a"),
+            [AstFactory.typeName4("C", [])]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_asExpression_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_asExpression());
+  }
+
+  void test_assertStatement() {
+    AssertStatement node =
+        AstFactory.assertStatement(AstFactory.booleanLiteral(true));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_assertStatement());
+  }
+
+  void test_assignmentExpression() {
+    AssignmentExpression node = AstFactory.assignmentExpression(
+        AstFactory.identifier3("l"),
+        TokenType.EQ,
+        AstFactory.identifier3("r"));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_assignmentExpression_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_assignmentExpression());
+  }
+
+  void test_binaryExpression() {
+    BinaryExpression node = AstFactory.binaryExpression(
+        AstFactory.identifier3("l"),
+        TokenType.PLUS,
+        AstFactory.identifier3("r"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_binaryExpression());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_binaryExpression_2());
+  }
+
+  void test_block() {
+    Block node = AstFactory.block([AstFactory.emptyStatement()]);
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_block(0));
+  }
+
+  void test_blockFunctionBody() {
+    BlockFunctionBody node = AstFactory.blockFunctionBody(AstFactory.block([]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_blockFunctionBody());
+  }
+
+  void test_breakStatement() {
+    BreakStatement node = AstFactory.breakStatement2("l");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_breakStatement());
+  }
+
+  void test_cascadeExpression() {
+    CascadeExpression node = AstFactory.cascadeExpression(
+        AstFactory.integer(0),
+        [AstFactory.propertyAccess(null, AstFactory.identifier3("b"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_cascadeExpression());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_cascadeExpression(0));
+  }
+
+  void test_catchClause() {
+    CatchClause node = AstFactory.catchClause5(
+        AstFactory.typeName4("E", []),
+        "e",
+        "s",
+        [AstFactory.emptyStatement()]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_catchClause_3());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_catchClause_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_catchClause());
+  }
+
+  void test_classDeclaration() {
+    ClassDeclaration node = AstFactory.classDeclaration(
+        null,
+        "A",
+        AstFactory.typeParameterList(["E"]),
+        AstFactory.extendsClause(AstFactory.typeName4("B", [])),
+        AstFactory.withClause([AstFactory.typeName4("C", [])]),
+        AstFactory.implementsClause([AstFactory.typeName4("D", [])]),
+        [
+            AstFactory.fieldDeclaration2(
+                false,
+                null,
+                [AstFactory.variableDeclaration("f")])]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    node.nativeClause = AstFactory.nativeClause("");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration_6());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration_5());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration_4());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classDeclaration_3());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_classDeclaration(0));
+    _testAnnotatedNode(node);
+  }
+
+  void test_classTypeAlias() {
+    ClassTypeAlias node = AstFactory.classTypeAlias(
+        "A",
+        AstFactory.typeParameterList(["E"]),
+        null,
+        AstFactory.typeName4("B", []),
+        AstFactory.withClause([AstFactory.typeName4("C", [])]),
+        AstFactory.implementsClause([AstFactory.typeName4("D", [])]));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classTypeAlias_4());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classTypeAlias_5());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classTypeAlias());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classTypeAlias_3());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_classTypeAlias_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_comment() {
+    Comment node = Comment.createEndOfLineComment(new List<Token>(0));
+    node.references.add(
+        new CommentReference(null, AstFactory.identifier3("x")));
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_comment(0));
+  }
+
+  void test_commentReference() {
+    CommentReference node =
+        new CommentReference(null, AstFactory.identifier3("x"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_commentReference());
+  }
+
+  void test_compilationUnit() {
+    CompilationUnit node = AstFactory.compilationUnit8(
+        "",
+        AstFactory.list([AstFactory.libraryDirective2("lib")]),
+        AstFactory.list(
+            [
+                AstFactory.topLevelVariableDeclaration2(
+                    null,
+                    [AstFactory.variableDeclaration("X")])]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_compilationUnit());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_compilationUnit(0));
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_compilationUnit_2(0));
+  }
+
+  void test_conditionalExpression() {
+    ConditionalExpression node = AstFactory.conditionalExpression(
+        AstFactory.booleanLiteral(true),
+        AstFactory.integer(0),
+        AstFactory.integer(1));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_conditionalExpression_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_conditionalExpression_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_conditionalExpression());
+  }
+
+  void test_constructorDeclaration() {
+    ConstructorDeclaration node = AstFactory.constructorDeclaration2(
+        null,
+        null,
+        AstFactory.identifier3("C"),
+        "d",
+        AstFactory.formalParameterList([]),
+        AstFactory.list(
+            [AstFactory.constructorFieldInitializer(false, "x", AstFactory.integer(0))]),
+        AstFactory.emptyFunctionBody());
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    node.redirectedConstructor =
+        AstFactory.constructorName(AstFactory.typeName4("B", []), "a");
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorDeclaration_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorDeclaration_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorDeclaration_4());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorDeclaration());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorDeclaration_5());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_constructorDeclaration(0));
+    _testAnnotatedNode(node);
+  }
+
+  void test_constructorFieldInitializer() {
+    ConstructorFieldInitializer node =
+        AstFactory.constructorFieldInitializer(false, "f", AstFactory.integer(0));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorFieldInitializer());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_constructorFieldInitializer_2());
+  }
+
+  void test_constructorName() {
+    ConstructorName node =
+        AstFactory.constructorName(AstFactory.typeName4("C", []), "n");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_constructorName());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_constructorName_2());
+  }
+
+  void test_continueStatement() {
+    ContinueStatement node = AstFactory.continueStatement("l");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_continueStatement());
+  }
+
+  void test_declaredIdentifier() {
+    DeclaredIdentifier node =
+        AstFactory.declaredIdentifier4(AstFactory.typeName4("C", []), "i");
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_declaredIdentifier());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_declaredIdentifier_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_defaultFormalParameter() {
+    DefaultFormalParameter node = AstFactory.positionalFormalParameter(
+        AstFactory.simpleFormalParameter3("p"),
+        AstFactory.integer(0));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_defaultFormalParameter());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_defaultFormalParameter_2());
+  }
+
+  void test_doStatement() {
+    DoStatement node =
+        AstFactory.doStatement(AstFactory.block([]), AstFactory.booleanLiteral(true));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_doStatement_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_doStatement());
+  }
+
+  void test_enumConstantDeclaration() {
+    EnumConstantDeclaration node = new EnumConstantDeclaration(
+        Comment.createEndOfLineComment(new List<Token>(0)),
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]),
+        AstFactory.identifier3("C"));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_enumConstantDeclaration());
+    _testAnnotatedNode(node);
+  }
+
+  void test_enumDeclaration() {
+    EnumDeclaration node = AstFactory.enumDeclaration2("E", ["ONE", "TWO"]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_enumDeclaration());
+    _testAnnotatedNode(node);
+  }
+
+  void test_exportDirective() {
+    ExportDirective node =
+        AstFactory.exportDirective2("", [AstFactory.hideCombinator2(["C"])]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _testNamespaceDirective(node);
+  }
+
+  void test_expressionFunctionBody() {
+    ExpressionFunctionBody node =
+        AstFactory.expressionFunctionBody(AstFactory.integer(0));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_expressionFunctionBody());
+  }
+
+  void test_expressionStatement() {
+    ExpressionStatement node =
+        AstFactory.expressionStatement(AstFactory.integer(0));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_expressionStatement());
+  }
+
+  void test_extendsClause() {
+    ExtendsClause node =
+        AstFactory.extendsClause(AstFactory.typeName4("S", []));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_extendsClause());
+  }
+
+  void test_fieldDeclaration() {
+    FieldDeclaration node = AstFactory.fieldDeclaration(
+        false,
+        null,
+        AstFactory.typeName4("C", []),
+        [AstFactory.variableDeclaration("c")]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_fieldDeclaration());
+    _testAnnotatedNode(node);
+  }
+
+  void test_fieldFormalParameter() {
+    FieldFormalParameter node = AstFactory.fieldFormalParameter(
+        null,
+        AstFactory.typeName4("C", []),
+        "f",
+        AstFactory.formalParameterList([]));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_fieldFormalParameter_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_fieldFormalParameter());
+    _testNormalFormalParameter(node);
+  }
+
+  void test_forEachStatement_withIdentifier() {
+    ForEachStatement node = AstFactory.forEachStatement2(
+        AstFactory.identifier3("i"),
+        AstFactory.identifier3("l"),
+        AstFactory.block([]));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withIdentifier_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withIdentifier_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withIdentifier());
+  }
+
+  void test_forEachStatement_withLoopVariable() {
+    ForEachStatement node = AstFactory.forEachStatement(
+        AstFactory.declaredIdentifier3("e"),
+        AstFactory.identifier3("l"),
+        AstFactory.block([]));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forEachStatement_withLoopVariable_3());
+  }
+
+  void test_forStatement_withInitialization() {
+    ForStatement node = AstFactory.forStatement(
+        AstFactory.identifier3("a"),
+        AstFactory.booleanLiteral(true),
+        AstFactory.list([AstFactory.integer(0)]),
+        AstFactory.block([]));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withInitialization_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withInitialization_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withInitialization());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_forStatement_withInitialization(0));
+  }
+
+  void test_forStatement_withVariables() {
+    ForStatement node = AstFactory.forStatement2(
+        AstFactory.variableDeclarationList2(
+            null,
+            [AstFactory.variableDeclaration("i")]),
+        AstFactory.booleanLiteral(true),
+        AstFactory.list([AstFactory.integer(0)]),
+        AstFactory.block([]));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withVariables_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withVariables_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_forStatement_withVariables());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_forStatement_withVariables(0));
+  }
+
+  void test_formalParameterList() {
+    FormalParameterList node =
+        AstFactory.formalParameterList([AstFactory.simpleFormalParameter3("p")]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_formalParameterList(0));
+  }
+
+  void test_functionDeclaration() {
+    FunctionDeclaration node = AstFactory.functionDeclaration(
+        AstFactory.typeName4("R", []),
+        null,
+        "f",
+        AstFactory.functionExpression2(
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody(AstFactory.block([]))));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionDeclaration());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionDeclaration_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionDeclaration_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_functionDeclarationStatement() {
+    FunctionDeclarationStatement node = AstFactory.functionDeclarationStatement(
+        AstFactory.typeName4("R", []),
+        null,
+        "f",
+        AstFactory.functionExpression2(
+            AstFactory.formalParameterList([]),
+            AstFactory.blockFunctionBody(AstFactory.block([]))));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionDeclarationStatement());
+  }
+
+  void test_functionExpression() {
+    FunctionExpression node = AstFactory.functionExpression2(
+        AstFactory.formalParameterList([]),
+        AstFactory.blockFunctionBody(AstFactory.block([])));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_functionExpression());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionExpression_2());
+  }
+
+  void test_functionExpressionInvocation() {
+    FunctionExpressionInvocation node = AstFactory.functionExpressionInvocation(
+        AstFactory.identifier3("f"),
+        [AstFactory.integer(0)]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionExpressionInvocation());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionExpressionInvocation_2());
+  }
+
+  void test_functionTypeAlias() {
+    FunctionTypeAlias node = AstFactory.typeAlias(
+        AstFactory.typeName4("R", []),
+        "F",
+        AstFactory.typeParameterList(["E"]),
+        AstFactory.formalParameterList([]));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionTypeAlias_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionTypeAlias_4());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_functionTypeAlias());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionTypeAlias_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_functionTypedFormalParameter() {
+    FunctionTypedFormalParameter node = AstFactory.functionTypedFormalParameter(
+        AstFactory.typeName4("R", []),
+        "f",
+        [AstFactory.simpleFormalParameter3("p")]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionTypedFormalParameter());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_functionTypedFormalParameter_2());
+    _testNormalFormalParameter(node);
+  }
+
+  void test_hideCombinator() {
+    HideCombinator node = AstFactory.hideCombinator2(["A", "B"]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_hideCombinator(0));
+  }
+
+  void test_ifStatement() {
+    IfStatement node = AstFactory.ifStatement2(
+        AstFactory.booleanLiteral(true),
+        AstFactory.block([]),
+        AstFactory.block([]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_ifStatement());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_ifStatement_3());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_ifStatement_2());
+  }
+
+  void test_implementsClause() {
+    ImplementsClause node = AstFactory.implementsClause(
+        [AstFactory.typeName4("I", []), AstFactory.typeName4("J", [])]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_implementsClause(0));
+  }
+
+  void test_importDirective() {
+    ImportDirective node = AstFactory.importDirective3(
+        "",
+        "p",
+        [AstFactory.showCombinator2(["A"]), AstFactory.hideCombinator2(["B"])]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_importDirective());
+    _testNamespaceDirective(node);
+  }
+
+  void test_indexExpression() {
+    IndexExpression node = AstFactory.indexExpression(
+        AstFactory.identifier3("a"),
+        AstFactory.identifier3("i"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_indexExpression());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_indexExpression_2());
+  }
+
+  void test_instanceCreationExpression() {
+    InstanceCreationExpression node = AstFactory.instanceCreationExpression3(
+        null,
+        AstFactory.typeName4("C", []),
+        "c",
+        [AstFactory.integer(2)]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_instanceCreationExpression_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_instanceCreationExpression());
+  }
+
+  void test_interpolationExpression() {
+    InterpolationExpression node = AstFactory.interpolationExpression2("x");
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_interpolationExpression());
+  }
+
+  void test_isExpression() {
+    IsExpression node = AstFactory.isExpression(
+        AstFactory.identifier3("v"),
+        false,
+        AstFactory.typeName4("T", []));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_isExpression());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_isExpression_2());
+  }
+
+  void test_label() {
+    Label node = AstFactory.label2("l");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_label());
+  }
+
+  void test_labeledStatement() {
+    LabeledStatement node = AstFactory.labeledStatement(
+        AstFactory.list([AstFactory.label2("l")]),
+        AstFactory.block([]));
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_labeledStatement(0));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_labeledStatement());
+  }
+
+  void test_libraryDirective() {
+    LibraryDirective node = AstFactory.libraryDirective2("lib");
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_libraryDirective());
+    _testAnnotatedNode(node);
+  }
+
+  void test_libraryIdentifier() {
+    LibraryIdentifier node = AstFactory.libraryIdentifier2(["lib"]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_libraryIdentifier(0));
+  }
+
+  void test_listLiteral() {
+    ListLiteral node = AstFactory.listLiteral2(
+        null,
+        AstFactory.typeArgumentList([AstFactory.typeName4("E", [])]),
+        [AstFactory.identifier3("e")]);
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_listLiteral(0));
+    _testTypedLiteral(node);
+  }
+
+  void test_mapLiteral() {
+    MapLiteral node = AstFactory.mapLiteral(
+        null,
+        AstFactory.typeArgumentList([AstFactory.typeName4("E", [])]),
+        [AstFactory.mapLiteralEntry("k", AstFactory.identifier3("v"))]);
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_mapLiteral(0));
+    _testTypedLiteral(node);
+  }
+
+  void test_mapLiteralEntry() {
+    MapLiteralEntry node =
+        AstFactory.mapLiteralEntry("k", AstFactory.identifier3("v"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_mapLiteralEntry_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_mapLiteralEntry());
+  }
+
+  void test_methodDeclaration() {
+    MethodDeclaration node = AstFactory.methodDeclaration2(
+        null,
+        AstFactory.typeName4("A", []),
+        null,
+        null,
+        AstFactory.identifier3("m"),
+        AstFactory.formalParameterList([]),
+        AstFactory.blockFunctionBody(AstFactory.block([])));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_methodDeclaration());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_methodDeclaration_3());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_methodDeclaration_4());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_methodDeclaration_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_methodInvocation() {
+    MethodInvocation node = AstFactory.methodInvocation(
+        AstFactory.identifier3("t"),
+        "m",
+        [AstFactory.integer(0)]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_methodInvocation_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_methodInvocation_3());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_methodInvocation());
+  }
+
+  void test_namedExpression() {
+    NamedExpression node =
+        AstFactory.namedExpression2("l", AstFactory.identifier3("v"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_namedExpression());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_namedExpression_2());
+  }
+
+  void test_nativeClause() {
+    NativeClause node = AstFactory.nativeClause("");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_nativeClause());
+  }
+
+  void test_nativeFunctionBody() {
+    NativeFunctionBody node = AstFactory.nativeFunctionBody("m");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_nativeFunctionBody());
+  }
+
+  void test_parenthesizedExpression() {
+    ParenthesizedExpression node =
+        AstFactory.parenthesizedExpression(AstFactory.integer(0));
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_parenthesizedExpression());
+  }
+
+  void test_partDirective() {
+    PartDirective node = AstFactory.partDirective2("");
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _testUriBasedDirective(node);
+  }
+
+  void test_partOfDirective() {
+    PartOfDirective node =
+        AstFactory.partOfDirective(AstFactory.libraryIdentifier2(["lib"]));
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_partOfDirective());
+    _testAnnotatedNode(node);
+  }
+
+  void test_postfixExpression() {
+    PostfixExpression node = AstFactory.postfixExpression(
+        AstFactory.identifier3("x"),
+        TokenType.MINUS_MINUS);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_postfixExpression());
+  }
+
+  void test_prefixExpression() {
+    PrefixExpression node =
+        AstFactory.prefixExpression(TokenType.PLUS_PLUS, AstFactory.identifier3("y"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_prefixExpression());
+  }
+
+  void test_prefixedIdentifier() {
+    PrefixedIdentifier node = AstFactory.identifier5("a", "b");
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_prefixedIdentifier_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_prefixedIdentifier());
+  }
+
+  void test_propertyAccess() {
+    PropertyAccess node =
+        AstFactory.propertyAccess2(AstFactory.identifier3("x"), "y");
+    _assertReplace(node, new Getter_NodeReplacerTest_test_propertyAccess());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_propertyAccess_2());
+  }
+
+  void test_redirectingConstructorInvocation() {
+    RedirectingConstructorInvocation node =
+        AstFactory.redirectingConstructorInvocation2("c", [AstFactory.integer(0)]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_redirectingConstructorInvocation());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_redirectingConstructorInvocation_2());
+  }
+
+  void test_returnStatement() {
+    ReturnStatement node = AstFactory.returnStatement2(AstFactory.integer(0));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_returnStatement());
+  }
+
+  void test_showCombinator() {
+    ShowCombinator node = AstFactory.showCombinator2(["X", "Y"]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_showCombinator(0));
+  }
+
+  void test_simpleFormalParameter() {
+    SimpleFormalParameter node =
+        AstFactory.simpleFormalParameter4(AstFactory.typeName4("T", []), "p");
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_simpleFormalParameter());
+    _testNormalFormalParameter(node);
+  }
+
+  void test_stringInterpolation() {
+    StringInterpolation node =
+        AstFactory.string([AstFactory.interpolationExpression2("a")]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_stringInterpolation(0));
+  }
+
+  void test_superConstructorInvocation() {
+    SuperConstructorInvocation node =
+        AstFactory.superConstructorInvocation2("s", [AstFactory.integer(1)]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_superConstructorInvocation());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_superConstructorInvocation_2());
+  }
+
+  void test_switchCase() {
+    SwitchCase node = AstFactory.switchCase2(
+        AstFactory.list([AstFactory.label2("l")]),
+        AstFactory.integer(0),
+        [AstFactory.block([])]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_switchCase());
+    _testSwitchMember(node);
+  }
+
+  void test_switchDefault() {
+    SwitchDefault node = AstFactory.switchDefault(
+        AstFactory.list([AstFactory.label2("l")]),
+        [AstFactory.block([])]);
+    _testSwitchMember(node);
+  }
+
+  void test_switchStatement() {
+    SwitchStatement node = AstFactory.switchStatement(
+        AstFactory.identifier3("x"),
+        [
+            AstFactory.switchCase2(
+                AstFactory.list([AstFactory.label2("l")]),
+                AstFactory.integer(0),
+                [AstFactory.block([])]),
+            AstFactory.switchDefault(
+                AstFactory.list([AstFactory.label2("l")]),
+                [AstFactory.block([])])]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_switchStatement());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_switchStatement(0));
+  }
+
+  void test_throwExpression() {
+    ThrowExpression node =
+        AstFactory.throwExpression2(AstFactory.identifier3("e"));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_throwExpression());
+  }
+
+  void test_topLevelVariableDeclaration() {
+    TopLevelVariableDeclaration node = AstFactory.topLevelVariableDeclaration(
+        null,
+        AstFactory.typeName4("T", []),
+        [AstFactory.variableDeclaration("t")]);
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_topLevelVariableDeclaration());
+    _testAnnotatedNode(node);
+  }
+
+  void test_tryStatement() {
+    TryStatement node = AstFactory.tryStatement3(
+        AstFactory.block([]),
+        AstFactory.list([AstFactory.catchClause("e", [AstFactory.block([])])]),
+        AstFactory.block([]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_tryStatement_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_tryStatement());
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_tryStatement(0));
+  }
+
+  void test_typeArgumentList() {
+    TypeArgumentList node =
+        AstFactory.typeArgumentList([AstFactory.typeName4("A", [])]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_typeArgumentList(0));
+  }
+
+  void test_typeName() {
+    TypeName node = AstFactory.typeName4(
+        "T",
+        [AstFactory.typeName4("E", []), AstFactory.typeName4("F", [])]);
+    _assertReplace(node, new Getter_NodeReplacerTest_test_typeName_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_typeName());
+  }
+
+  void test_typeParameter() {
+    TypeParameter node =
+        AstFactory.typeParameter2("E", AstFactory.typeName4("B", []));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_typeParameter_2());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_typeParameter());
+  }
+
+  void test_typeParameterList() {
+    TypeParameterList node = AstFactory.typeParameterList(["A", "B"]);
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_typeParameterList(0));
+  }
+
+  void test_variableDeclaration() {
+    VariableDeclaration node =
+        AstFactory.variableDeclaration2("a", AstFactory.nullLiteral());
+    node.documentationComment =
+        Comment.createEndOfLineComment(new List<Token>(0));
+    node.metadata =
+        AstFactory.list([AstFactory.annotation(AstFactory.identifier3("a"))]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_variableDeclaration());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_variableDeclaration_2());
+    _testAnnotatedNode(node);
+  }
+
+  void test_variableDeclarationList() {
+    VariableDeclarationList node = AstFactory.variableDeclarationList(
+        null,
+        AstFactory.typeName4("T", []),
+        [AstFactory.variableDeclaration("a")]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_variableDeclarationList());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_test_variableDeclarationList(0));
+  }
+
+  void test_variableDeclarationStatement() {
+    VariableDeclarationStatement node = AstFactory.variableDeclarationStatement(
+        null,
+        AstFactory.typeName4("T", []),
+        [AstFactory.variableDeclaration("a")]);
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_test_variableDeclarationStatement());
+  }
+
+  void test_whileStatement() {
+    WhileStatement node = AstFactory.whileStatement(
+        AstFactory.booleanLiteral(true),
+        AstFactory.block([]));
+    _assertReplace(node, new Getter_NodeReplacerTest_test_whileStatement());
+    _assertReplace(node, new Getter_NodeReplacerTest_test_whileStatement_2());
+  }
+
+  void test_withClause() {
+    WithClause node = AstFactory.withClause([AstFactory.typeName4("M", [])]);
+    _assertReplace(node, new ListGetter_NodeReplacerTest_test_withClause(0));
+  }
+
+  void _assertReplace(AstNode parent, NodeReplacerTest_Getter getter) {
+    AstNode child = getter.get(parent);
+    if (child != null) {
+      AstNode clone = child.accept(new AstCloner());
+      NodeReplacer.replace(child, clone);
+      expect(getter.get(parent), clone);
+      expect(clone.parent, parent);
+    }
+  }
+
+  void _testAnnotatedNode(AnnotatedNode node) {
+    _assertReplace(node, new Getter_NodeReplacerTest_testAnnotatedNode());
+    _assertReplace(node, new ListGetter_NodeReplacerTest_testAnnotatedNode(0));
+  }
+
+  void _testNamespaceDirective(NamespaceDirective node) {
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_testNamespaceDirective(0));
+    _testUriBasedDirective(node);
+  }
+
+  void _testNormalFormalParameter(NormalFormalParameter node) {
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_testNormalFormalParameter_2());
+    _assertReplace(
+        node,
+        new Getter_NodeReplacerTest_testNormalFormalParameter());
+    _assertReplace(
+        node,
+        new ListGetter_NodeReplacerTest_testNormalFormalParameter(0));
+  }
+
+  void _testSwitchMember(SwitchMember node) {
+    _assertReplace(node, new ListGetter_NodeReplacerTest_testSwitchMember(0));
+    _assertReplace(node, new ListGetter_NodeReplacerTest_testSwitchMember_2(0));
+  }
+
+  void _testTypedLiteral(TypedLiteral node) {
+    _assertReplace(node, new Getter_NodeReplacerTest_testTypedLiteral());
+  }
+
+  void _testUriBasedDirective(UriBasedDirective node) {
+    _assertReplace(node, new Getter_NodeReplacerTest_testUriBasedDirective());
+    _testAnnotatedNode(node);
+  }
+}
+
+abstract class NodeReplacerTest_Getter<P, C> {
+  C get(P parent);
+}
+
+abstract class NodeReplacerTest_ListGetter<P extends AstNode, C extends AstNode>
+    implements NodeReplacerTest_Getter<P, C> {
+  final int _index;
+
+  NodeReplacerTest_ListGetter(this._index);
+
+  @override
+  C get(P parent) {
+    NodeList<C> list = getList(parent);
+    if (list.isEmpty) {
+      return null;
+    }
+    return list[_index];
+  }
+
+  NodeList<C> getList(P parent);
+}
+
+class SingleMapIteratorTest extends EngineTestCase {
+  void test_empty() {
+    Map<String, String> map = new HashMap<String, String>();
+    SingleMapIterator<String, String> iterator =
+        new SingleMapIterator<String, String>(map);
+    expect(iterator.moveNext(), isFalse);
+    try {
+      iterator.key;
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+    try {
+      iterator.value;
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+    try {
+      iterator.value = "x";
+      fail("Expected NoSuchElementException");
+    } on NoSuchElementException catch (exception) {
+      // Expected
+    }
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_multiple() {
+    Map<String, String> map = new HashMap<String, String>();
+    map["k1"] = "v1";
+    map["k2"] = "v2";
+    map["k3"] = "v3";
+    SingleMapIterator<String, String> iterator =
+        new SingleMapIterator<String, String>(map);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.moveNext(), isFalse);
+  }
+
+  void test_single() {
+    String key = "key";
+    String value = "value";
+    Map<String, String> map = new HashMap<String, String>();
+    map[key] = value;
+    SingleMapIterator<String, String> iterator =
+        new SingleMapIterator<String, String>(map);
+    expect(iterator.moveNext(), isTrue);
+    expect(iterator.key, same(key));
+    expect(iterator.value, same(value));
+    String newValue = "newValue";
+    iterator.value = newValue;
+    expect(iterator.value, same(newValue));
+    expect(iterator.moveNext(), isFalse);
+  }
+}
+
+class SourceRangeTest {
+  void test_access() {
+    SourceRange r = new SourceRange(10, 1);
+    expect(r.offset, 10);
+    expect(r.length, 1);
+    expect(r.end, 10 + 1);
+    // to check
+    r.hashCode;
+  }
+
+  void test_contains() {
+    SourceRange r = new SourceRange(5, 10);
+    expect(r.contains(5), isTrue);
+    expect(r.contains(10), isTrue);
+    expect(r.contains(14), isTrue);
+    expect(r.contains(0), isFalse);
+    expect(r.contains(15), isFalse);
+  }
+
+  void test_containsExclusive() {
+    SourceRange r = new SourceRange(5, 10);
+    expect(r.containsExclusive(5), isFalse);
+    expect(r.containsExclusive(10), isTrue);
+    expect(r.containsExclusive(14), isTrue);
+    expect(r.containsExclusive(0), isFalse);
+    expect(r.containsExclusive(15), isFalse);
+  }
+
+  void test_coveredBy() {
+    SourceRange r = new SourceRange(5, 10);
+    // ends before
+    expect(r.coveredBy(new SourceRange(20, 10)), isFalse);
+    // starts after
+    expect(r.coveredBy(new SourceRange(0, 3)), isFalse);
+    // only intersects
+    expect(r.coveredBy(new SourceRange(0, 10)), isFalse);
+    expect(r.coveredBy(new SourceRange(10, 10)), isFalse);
+    // covered
+    expect(r.coveredBy(new SourceRange(0, 20)), isTrue);
+    expect(r.coveredBy(new SourceRange(5, 10)), isTrue);
+  }
+
+  void test_covers() {
+    SourceRange r = new SourceRange(5, 10);
+    // ends before
+    expect(r.covers(new SourceRange(0, 3)), isFalse);
+    // starts after
+    expect(r.covers(new SourceRange(20, 3)), isFalse);
+    // only intersects
+    expect(r.covers(new SourceRange(0, 10)), isFalse);
+    expect(r.covers(new SourceRange(10, 10)), isFalse);
+    // covers
+    expect(r.covers(new SourceRange(5, 10)), isTrue);
+    expect(r.covers(new SourceRange(6, 9)), isTrue);
+    expect(r.covers(new SourceRange(6, 8)), isTrue);
+  }
+
+  void test_endsIn() {
+    SourceRange r = new SourceRange(5, 10);
+    // ends before
+    expect(r.endsIn(new SourceRange(20, 10)), isFalse);
+    // starts after
+    expect(r.endsIn(new SourceRange(0, 3)), isFalse);
+    // ends
+    expect(r.endsIn(new SourceRange(10, 20)), isTrue);
+    expect(r.endsIn(new SourceRange(0, 20)), isTrue);
+  }
+
+  void test_equals() {
+    SourceRange r = new SourceRange(10, 1);
+    expect(r == null, isFalse);
+    expect(r == this, isFalse);
+    expect(r == new SourceRange(20, 2), isFalse);
+    expect(r == new SourceRange(10, 1), isTrue);
+    expect(r == r, isTrue);
+  }
+
+  void test_getExpanded() {
+    SourceRange r = new SourceRange(5, 3);
+    expect(r.getExpanded(0), r);
+    expect(r.getExpanded(2), new SourceRange(3, 7));
+    expect(r.getExpanded(-1), new SourceRange(6, 1));
+  }
+
+  void test_getMoveEnd() {
+    SourceRange r = new SourceRange(5, 3);
+    expect(r.getMoveEnd(0), r);
+    expect(r.getMoveEnd(3), new SourceRange(5, 6));
+    expect(r.getMoveEnd(-1), new SourceRange(5, 2));
+  }
+
+  void test_getTranslated() {
+    SourceRange r = new SourceRange(5, 3);
+    expect(r.getTranslated(0), r);
+    expect(r.getTranslated(2), new SourceRange(7, 3));
+    expect(r.getTranslated(-1), new SourceRange(4, 3));
+  }
+
+  void test_getUnion() {
+    expect(new SourceRange(10, 10).getUnion(new SourceRange(15, 10)), new SourceRange(10, 15));
+    expect(new SourceRange(15, 10).getUnion(new SourceRange(10, 10)), new SourceRange(10, 15));
+    // "other" is covered/covers
+    expect(new SourceRange(10, 10).getUnion(new SourceRange(15, 2)), new SourceRange(10, 10));
+    expect(new SourceRange(15, 2).getUnion(new SourceRange(10, 10)), new SourceRange(10, 10));
+  }
+
+  void test_intersects() {
+    SourceRange r = new SourceRange(5, 3);
+    // null
+    expect(r.intersects(null), isFalse);
+    // ends before
+    expect(r.intersects(new SourceRange(0, 5)), isFalse);
+    // begins after
+    expect(r.intersects(new SourceRange(8, 5)), isFalse);
+    // begins on same offset
+    expect(r.intersects(new SourceRange(5, 1)), isTrue);
+    // begins inside, ends inside
+    expect(r.intersects(new SourceRange(6, 1)), isTrue);
+    // begins inside, ends after
+    expect(r.intersects(new SourceRange(6, 10)), isTrue);
+    // begins before, ends after
+    expect(r.intersects(new SourceRange(0, 10)), isTrue);
+  }
+
+  void test_startsIn() {
+    SourceRange r = new SourceRange(5, 10);
+    // ends before
+    expect(r.startsIn(new SourceRange(20, 10)), isFalse);
+    // starts after
+    expect(r.startsIn(new SourceRange(0, 3)), isFalse);
+    // starts
+    expect(r.startsIn(new SourceRange(5, 1)), isTrue);
+    expect(r.startsIn(new SourceRange(0, 20)), isTrue);
+  }
+
+  void test_toString() {
+    SourceRange r = new SourceRange(10, 1);
+    expect(r.toString(), "[offset=10, length=1]");
+  }
+}
+
+class StringUtilitiesTest {
+  void test_EMPTY() {
+    expect(StringUtilities.EMPTY, "");
+    expect(StringUtilities.EMPTY.isEmpty, isTrue);
+  }
+
+  void test_EMPTY_ARRAY() {
+    expect(StringUtilities.EMPTY_ARRAY.length, 0);
+  }
+
+  void test_endsWith3() {
+    expect(StringUtilities.endsWith3("abc", 0x61, 0x62, 0x63), isTrue);
+    expect(StringUtilities.endsWith3("abcdefghi", 0x67, 0x68, 0x69), isTrue);
+    expect(StringUtilities.endsWith3("abcdefghi", 0x64, 0x65, 0x61), isFalse);
+    // missing
+  }
+
+  void test_endsWithChar() {
+    expect(StringUtilities.endsWithChar("a", 0x61), isTrue);
+    expect(StringUtilities.endsWithChar("b", 0x61), isFalse);
+    expect(StringUtilities.endsWithChar("", 0x61), isFalse);
+  }
+
+  void test_indexOf1() {
+    expect(StringUtilities.indexOf1("a", 0, 0x61), 0);
+    expect(StringUtilities.indexOf1("abcdef", 0, 0x61), 0);
+    expect(StringUtilities.indexOf1("abcdef", 0, 0x63), 2);
+    expect(StringUtilities.indexOf1("abcdef", 0, 0x66), 5);
+    expect(StringUtilities.indexOf1("abcdef", 0, 0x7A), -1);
+    expect(StringUtilities.indexOf1("abcdef", 1, 0x61), -1);
+    // before start
+  }
+
+  void test_indexOf2() {
+    expect(StringUtilities.indexOf2("ab", 0, 0x61, 0x62), 0);
+    expect(StringUtilities.indexOf2("abcdef", 0, 0x61, 0x62), 0);
+    expect(StringUtilities.indexOf2("abcdef", 0, 0x63, 0x64), 2);
+    expect(StringUtilities.indexOf2("abcdef", 0, 0x65, 0x66), 4);
+    expect(StringUtilities.indexOf2("abcdef", 0, 0x64, 0x61), -1);
+    expect(StringUtilities.indexOf2("abcdef", 1, 0x61, 0x62), -1);
+    // before start
+  }
+
+  void test_indexOf4() {
+    expect(StringUtilities.indexOf4("abcd", 0, 0x61, 0x62, 0x63, 0x64), 0);
+    expect(StringUtilities.indexOf4("abcdefghi", 0, 0x61, 0x62, 0x63, 0x64), 0);
+    expect(StringUtilities.indexOf4("abcdefghi", 0, 0x63, 0x64, 0x65, 0x66), 2);
+    expect(StringUtilities.indexOf4("abcdefghi", 0, 0x66, 0x67, 0x68, 0x69), 5);
+    expect(StringUtilities.indexOf4("abcdefghi", 0, 0x64, 0x65, 0x61, 0x64), -1);
+    expect(StringUtilities.indexOf4("abcdefghi", 1, 0x61, 0x62, 0x63, 0x64), -1);
+    // before start
+  }
+
+  void test_indexOf5() {
+    expect(StringUtilities.indexOf5("abcde", 0, 0x61, 0x62, 0x63, 0x64, 0x65), 0);
+    expect(StringUtilities.indexOf5("abcdefghi", 0, 0x61, 0x62, 0x63, 0x64, 0x65), 0);
+    expect(StringUtilities.indexOf5("abcdefghi", 0, 0x63, 0x64, 0x65, 0x66, 0x67), 2);
+    expect(StringUtilities.indexOf5("abcdefghi", 0, 0x65, 0x66, 0x67, 0x68, 0x69), 4);
+    expect(StringUtilities.indexOf5("abcdefghi", 0, 0x64, 0x65, 0x66, 0x69, 0x6E), -1);
+    expect(StringUtilities.indexOf5("abcdefghi", 1, 0x61, 0x62, 0x63, 0x64, 0x65), -1);
+    // before start
+  }
+
+  void test_isEmpty() {
+    expect(StringUtilities.isEmpty(""), isTrue);
+    expect(StringUtilities.isEmpty(" "), isFalse);
+    expect(StringUtilities.isEmpty("a"), isFalse);
+    expect(StringUtilities.isEmpty(StringUtilities.EMPTY), isTrue);
+  }
+
+  void test_isTagName() {
+    expect(StringUtilities.isTagName(null), isFalse);
+    expect(StringUtilities.isTagName(""), isFalse);
+    expect(StringUtilities.isTagName("-"), isFalse);
+    expect(StringUtilities.isTagName("0"), isFalse);
+    expect(StringUtilities.isTagName("0a"), isFalse);
+    expect(StringUtilities.isTagName("a b"), isFalse);
+    expect(StringUtilities.isTagName("a0"), isTrue);
+    expect(StringUtilities.isTagName("a"), isTrue);
+    expect(StringUtilities.isTagName("ab"), isTrue);
+    expect(StringUtilities.isTagName("a-b"), isTrue);
+  }
+
+  void test_printListOfQuotedNames_empty() {
+    try {
+      StringUtilities.printListOfQuotedNames(new List<String>(0));
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_printListOfQuotedNames_five() {
+    expect(StringUtilities.printListOfQuotedNames(<String>["a", "b", "c", "d", "e"]), "'a', 'b', 'c', 'd' and 'e'");
+  }
+
+  void test_printListOfQuotedNames_null() {
+    try {
+      StringUtilities.printListOfQuotedNames(null);
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_printListOfQuotedNames_one() {
+    try {
+      StringUtilities.printListOfQuotedNames(<String>["a"]);
+      fail("Expected IllegalArgumentException");
+    } on IllegalArgumentException catch (exception) {
+      // Expected
+    }
+  }
+
+  void test_printListOfQuotedNames_three() {
+    expect(StringUtilities.printListOfQuotedNames(<String>["a", "b", "c"]), "'a', 'b' and 'c'");
+  }
+
+  void test_printListOfQuotedNames_two() {
+    expect(StringUtilities.printListOfQuotedNames(<String>["a", "b"]), "'a' and 'b'");
+  }
+
+  void test_startsWith2() {
+    expect(StringUtilities.startsWith2("ab", 0, 0x61, 0x62), isTrue);
+    expect(StringUtilities.startsWith2("abcdefghi", 0, 0x61, 0x62), isTrue);
+    expect(StringUtilities.startsWith2("abcdefghi", 2, 0x63, 0x64), isTrue);
+    expect(StringUtilities.startsWith2("abcdefghi", 5, 0x66, 0x67), isTrue);
+    expect(StringUtilities.startsWith2("abcdefghi", 0, 0x64, 0x64), isFalse);
+    // missing
+  }
+
+  void test_startsWith3() {
+    expect(StringUtilities.startsWith3("abc", 0, 0x61, 0x62, 0x63), isTrue);
+    expect(StringUtilities.startsWith3("abcdefghi", 0, 0x61, 0x62, 0x63), isTrue);
+    expect(StringUtilities.startsWith3("abcdefghi", 2, 0x63, 0x64, 0x65), isTrue);
+    expect(StringUtilities.startsWith3("abcdefghi", 6, 0x67, 0x68, 0x69), isTrue);
+    expect(StringUtilities.startsWith3("abcdefghi", 0, 0x64, 0x65, 0x61), isFalse);
+    // missing
+  }
+
+  void test_startsWith4() {
+    expect(StringUtilities.startsWith4("abcd", 0, 0x61, 0x62, 0x63, 0x64), isTrue);
+    expect(StringUtilities.startsWith4("abcdefghi", 0, 0x61, 0x62, 0x63, 0x64), isTrue);
+    expect(StringUtilities.startsWith4("abcdefghi", 2, 0x63, 0x64, 0x65, 0x66), isTrue);
+    expect(StringUtilities.startsWith4("abcdefghi", 5, 0x66, 0x67, 0x68, 0x69), isTrue);
+    expect(StringUtilities.startsWith4("abcdefghi", 0, 0x64, 0x65, 0x61, 0x64), isFalse);
+    // missing
+  }
+
+  void test_startsWith5() {
+    expect(StringUtilities.startsWith5("abcde", 0, 0x61, 0x62, 0x63, 0x64, 0x65), isTrue);
+    expect(StringUtilities.startsWith5("abcdefghi", 0, 0x61, 0x62, 0x63, 0x64, 0x65), isTrue);
+    expect(StringUtilities.startsWith5("abcdefghi", 2, 0x63, 0x64, 0x65, 0x66, 0x67), isTrue);
+    expect(StringUtilities.startsWith5("abcdefghi", 4, 0x65, 0x66, 0x67, 0x68, 0x69), isTrue);
+    expect(StringUtilities.startsWith5("abcdefghi", 0, 0x61, 0x62, 0x63, 0x62, 0x61), isFalse);
+    // missing
+  }
+
+  void test_startsWith6() {
+    expect(StringUtilities.startsWith6("abcdef", 0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66), isTrue);
+    expect(StringUtilities.startsWith6(
+            "abcdefghi",
+            0,
+            0x61,
+            0x62,
+            0x63,
+            0x64,
+            0x65,
+            0x66), isTrue);
+    expect(StringUtilities.startsWith6(
+            "abcdefghi",
+            2,
+            0x63,
+            0x64,
+            0x65,
+            0x66,
+            0x67,
+            0x68), isTrue);
+    expect(StringUtilities.startsWith6(
+            "abcdefghi",
+            3,
+            0x64,
+            0x65,
+            0x66,
+            0x67,
+            0x68,
+            0x69), isTrue);
+    expect(StringUtilities.startsWith6(
+            "abcdefghi",
+            0,
+            0x61,
+            0x62,
+            0x63,
+            0x64,
+            0x65,
+            0x67), isFalse);
+    // missing
+  }
+
+  void test_startsWithChar() {
+    expect(StringUtilities.startsWithChar("a", 0x61), isTrue);
+    expect(StringUtilities.startsWithChar("b", 0x61), isFalse);
+    expect(StringUtilities.startsWithChar("", 0x61), isFalse);
+  }
+
+  void test_substringBefore() {
+    expect(StringUtilities.substringBefore(null, ""), null);
+    expect(StringUtilities.substringBefore(null, "a"), null);
+    expect(StringUtilities.substringBefore("", "a"), "");
+    expect(StringUtilities.substringBefore("abc", "a"), "");
+    expect(StringUtilities.substringBefore("abcba", "b"), "a");
+    expect(StringUtilities.substringBefore("abc", "c"), "ab");
+    expect(StringUtilities.substringBefore("abc", "d"), "abc");
+    expect(StringUtilities.substringBefore("abc", ""), "");
+    expect(StringUtilities.substringBefore("abc", null), "abc");
+  }
+
+  void test_substringBeforeChar() {
+    expect(StringUtilities.substringBeforeChar(null, 0x61), null);
+    expect(StringUtilities.substringBeforeChar("", 0x61), "");
+    expect(StringUtilities.substringBeforeChar("abc", 0x61), "");
+    expect(StringUtilities.substringBeforeChar("abcba", 0x62), "a");
+    expect(StringUtilities.substringBeforeChar("abc", 0x63), "ab");
+    expect(StringUtilities.substringBeforeChar("abc", 0x64), "abc");
+  }
+}
+
+/**
+ * Instances of the class `TestLogger` implement a logger that can be used by tests.
+ */
+class TestLogger implements Logger {
+  /**
+   * The number of error messages that were logged.
+   */
+  int _errorCount = 0;
+
+  /**
+   * The number of informational messages that were logged.
+   */
+  int _infoCount = 0;
+
+  /**
+   * Return the number of error messages that were logged.
+   *
+   * @return the number of error messages that were logged
+   */
+  int get errorCount => _errorCount;
+
+  /**
+   * Return the number of informational messages that were logged.
+   *
+   * @return the number of informational messages that were logged
+   */
+  int get infoCount => _infoCount;
+
+  @override
+  void logError(String message) {
+    _errorCount++;
+  }
+
+  @override
+  void logError2(String message, Exception exception) {
+    _errorCount++;
+  }
+
+  @override
+  void logInformation(String message) {
+    _infoCount++;
+  }
+
+  @override
+  void logInformation2(String message, Exception exception) {
+    _infoCount++;
+  }
+}
+
+
+class TokenMapTest {
+  void test_creation() {
+    expect(new TokenMap(), isNotNull);
+  }
+
+  void test_get_absent() {
+    TokenMap tokenMap = new TokenMap();
+    expect(tokenMap.get(TokenFactory.tokenFromType(TokenType.AT)), isNull);
+  }
+
+  void test_get_added() {
+    TokenMap tokenMap = new TokenMap();
+    Token key = TokenFactory.tokenFromType(TokenType.AT);
+    Token value = TokenFactory.tokenFromType(TokenType.AT);
+    tokenMap.put(key, value);
+    expect(tokenMap.get(key), same(value));
+  }
+}
diff --git a/pkg/analyzer/test/task/task_dart_test.dart b/pkg/analyzer/test/task/task_dart_test.dart
index b9e86ec..9a44b7d 100644
--- a/pkg/analyzer/test/task/task_dart_test.dart
+++ b/pkg/analyzer/test/task/task_dart_test.dart
@@ -61,7 +61,9 @@
   }
 
   void test_perform_valid() {
-    var content = EngineTestCase.createSource(["library lib;", "class A {}"]);
+    var content = """
+library lib;
+class A {}""";
     Source source = new TestSource('/test.dart', content);
     InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
     CompilationUnit unit = parseUnit(context, source, content);
diff --git a/pkg/analyzer2dart/lib/src/cps_generator.dart b/pkg/analyzer2dart/lib/src/cps_generator.dart
index 7acf504..a8c7698 100644
--- a/pkg/analyzer2dart/lib/src/cps_generator.dart
+++ b/pkg/analyzer2dart/lib/src/cps_generator.dart
@@ -6,6 +6,7 @@
 

 import 'package:analyzer/analyzer.dart';

 

+import 'package:compiler/implementation/dart_types.dart' as dart2js;

 import 'package:compiler/implementation/elements/elements.dart' as dart2js;

 import 'package:analyzer/src/generated/source.dart';

 import 'package:analyzer/src/generated/element.dart' as analyzer;

@@ -45,8 +46,7 @@
       function.parameters.forEach((analyzer.ParameterElement parameter) {

         // TODO(johnniwinther): Support "closure variables", that is variables

         // accessed from an inner function.

-        irBuilder.createParameter(converter.convertElement(parameter),

-                                  isClosureVariable: false);

+        irBuilder.createParameter(converter.convertElement(parameter));

       });

       // Visit the body directly to avoid processing the signature as

       // expressions.

@@ -69,6 +69,12 @@
   }

 

   @override

+  ir.Node visitMethodInvocation(MethodInvocation node) {

+    // Overridden to avoid eager visits of the receiver and arguments.

+    return handleMethodInvocation(node);

+  }

+

+  @override

   ir.Primitive visitDynamicInvocation(MethodInvocation node,

                                       AccessSemantics semantics) {

     // TODO(johnniwinther): Handle implicit `this`.

@@ -76,7 +82,8 @@
     List<ir.Definition> arguments = visitArguments(node.argumentList);

     return irBuilder.buildDynamicInvocation(

         receiver,

-        createSelectorFromMethodInvocation(node, node.methodName.name),

+        createSelectorFromMethodInvocation(

+            node.argumentList, node.methodName.name),

         arguments);

   }

 

@@ -88,11 +95,33 @@
     List<ir.Definition> arguments = visitArguments(node.argumentList);

     return irBuilder.buildStaticInvocation(

         element,

-        createSelectorFromMethodInvocation(node, node.methodName.name),

+        createSelectorFromMethodInvocation(

+            node.argumentList, node.methodName.name),

         arguments);

   }

 

   @override

+  ir.Primitive visitInstanceCreationExpression(

+      InstanceCreationExpression node) {

+    analyzer.Element staticElement = node.staticElement;

+    if (staticElement != null) {

+      dart2js.Element element = converter.convertElement(staticElement);

+      dart2js.DartType type = converter.convertType(node.staticType);

+      List<ir.Definition> arguments = visitArguments(node.argumentList);

+      String name = '';

+      if (node.constructorName.name != null) {

+        name = node.constructorName.name.name;

+      }

+      return irBuilder.buildConstructorInvocation(

+          element,

+          createSelectorFromMethodInvocation(node.argumentList, name),

+          type,

+          arguments);

+    }

+    return giveUp(node, "Unresolved constructor invocation.");

+  }

+

+  @override

   ir.Constant visitNullLiteral(NullLiteral node) {

     return irBuilder.buildNullLiteral();

   }

@@ -137,6 +166,12 @@
   }

 

   @override

+  ir.Node visitPropertyAccess(PropertyAccess node) {

+    // Overridden to avoid eager visits of the receiver.

+    return handlePropertyAccess(node);

+  }

+

+  @override

   ir.Node visitLocalVariableAccess(AstNode node, AccessSemantics semantics) {

     return handleLocalAccess(node, semantics);

   }

@@ -155,11 +190,43 @@
         initialValue: initialValue);

   }

 

-  ir.Primitive handleLocalAccess(AstNode node, AccessSemantics semantics) {

+  dart2js.Element getLocal(AstNode node, AccessSemantics semantics) {

     analyzer.Element element = semantics.element;

     dart2js.Element target = converter.convertElement(element);

     assert(invariant(node, target.isLocal, '$target expected to be local.'));

-    return irBuilder.buildLocalGet(target);

+    return target;

+  }

+

+  ir.Primitive handleLocalAccess(AstNode node, AccessSemantics semantics) {

+    return irBuilder.buildLocalGet(getLocal(node, semantics));

+  }

+

+  ir.Primitive handleLocalAssignment(AssignmentExpression node,

+                                     AccessSemantics semantics) {

+    if (node.operator.lexeme != '=') {

+      return giveUp(node, 'Assignment operator: ${node.operator.lexeme}');

+    }

+    return irBuilder.buildLocalSet(

+        getLocal(node, semantics),

+        build(node.rightHandSide));

+  }

+

+  @override

+  ir.Node visitAssignmentExpression(AssignmentExpression node) {

+    // Avoid eager visiting of left and right hand side.

+    return handleAssignmentExpression(node);

+  }

+

+  @override

+  ir.Node visitLocalVariableAssignment(AssignmentExpression node,

+                                       AccessSemantics semantics) {

+    return handleLocalAssignment(node, semantics);

+  }

+

+  @override

+  ir.Node visitParameterAssignment(AssignmentExpression node,

+                                   AccessSemantics semantics) {

+    return handleLocalAssignment(node, semantics);

   }

 

   @override

@@ -230,4 +297,24 @@
         subbuild(node.thenStatement),

         subbuild(node.elseStatement));

   }

+

+  @override

+  visitBlock(Block node) {

+    irBuilder.buildBlock(node.statements, build);

+  }

+

+  @override

+  visitForStatement(ForStatement node) {

+    // TODO(johnniwinther): Support `for` as a jump target.

+    SubbuildFunction buildInitializer;

+    if (node.variables != null) {

+      buildInitializer = subbuild(node.variables);

+    } else {

+      buildInitializer = subbuild(node.initialization);

+    }

+    irBuilder.buildFor(buildInitializer: buildInitializer,

+                       buildCondition: subbuild(node.condition),

+                       buildBody: subbuild(node.body),

+                       buildUpdate: subbuildSequence(node.updaters));

+  }

 }

diff --git a/pkg/analyzer2dart/lib/src/dart_backend.dart b/pkg/analyzer2dart/lib/src/dart_backend.dart
index 8409515..ab0f644 100644
--- a/pkg/analyzer2dart/lib/src/dart_backend.dart
+++ b/pkg/analyzer2dart/lib/src/dart_backend.dart
@@ -21,7 +21,11 @@
     mainFunction: convertedWorld.mainFunction,
     computeElementAst: (Element element) {
       return DartBackend.createElementAst(
-          null, null, null, null, convertedWorld.getIr(element));
+          null, // No compiler.
+          null, // No tracer.
+          DART_CONSTANT_SYSTEM,
+          element,
+          convertedWorld.getIr(element));
     },
     shouldOutput: (_) => true,
     isSafeToRemoveTypeDeclarations: (_) => false);
diff --git a/pkg/analyzer2dart/lib/src/element_converter.dart b/pkg/analyzer2dart/lib/src/element_converter.dart
index 6148b59..e6400c3 100644
--- a/pkg/analyzer2dart/lib/src/element_converter.dart
+++ b/pkg/analyzer2dart/lib/src/element_converter.dart
@@ -153,4 +153,10 @@
       analyzer.LocalVariableElement input) {
     return new LocalVariableElementY(converter, input);
   }
+
+  @override
+  dart2js.ConstructorElement visitConstructorElement(
+      analyzer.ConstructorElement input) {
+    return new ConstructorElementY(converter, input);
+  }
 }
diff --git a/pkg/analyzer2dart/lib/src/identifier_semantics.dart b/pkg/analyzer2dart/lib/src/identifier_semantics.dart
index ccfd78f..026e00a 100644
--- a/pkg/analyzer2dart/lib/src/identifier_semantics.dart
+++ b/pkg/analyzer2dart/lib/src/identifier_semantics.dart
@@ -69,6 +69,7 @@
  * Data structure used to classify the semantics of a property access or method
  * or function invocation.
  */
+// TODO(paulberry,johnniwinther): Support index operations in AccessSemantics.
 class AccessSemantics {
   /**
    * The kind of access.
@@ -199,253 +200,264 @@
   }
 }
 
-/**
- * Return the semantics for [node].
- */
-AccessSemantics classifyMethodInvocation(MethodInvocation node) {
-  Expression target = node.realTarget;
-  Element staticElement = node.methodName.staticElement;
-  if (target == null) {
-    if (staticElement is FunctionElement) {
-      if (staticElement.enclosingElement is CompilationUnitElement) {
+// TODO(johnniwinther,paulberry): This should be a constant.
+final AccessSemanticsVisitor ACCESS_SEMANTICS_VISITOR =
+    new AccessSemanticsVisitor();
+
+// TODO(johnniwinther,paulberry): This should extend a non-recursive visitor.
+class AccessSemanticsVisitor extends RecursiveAstVisitor<AccessSemantics> {
+  /**
+   * Return the semantics for [node].
+   */
+  @override
+  AccessSemantics visitMethodInvocation(MethodInvocation node) {
+    Expression target = node.realTarget;
+    Element staticElement = node.methodName.staticElement;
+    if (target == null) {
+      if (staticElement is FunctionElement) {
+        if (staticElement.enclosingElement is CompilationUnitElement) {
+          return new AccessSemantics.staticMethod(
+              node.methodName,
+              staticElement,
+              null,
+              isInvoke: true);
+        } else {
+          return new AccessSemantics.localFunction(
+              node.methodName,
+              staticElement,
+              isInvoke: true);
+        }
+      } else if (staticElement is MethodElement && staticElement.isStatic) {
         return new AccessSemantics.staticMethod(
             node.methodName,
             staticElement,
-            null,
-            isInvoke: true);
-      } else {
-        return new AccessSemantics.localFunction(
-            node.methodName,
-            staticElement,
-            isInvoke: true);
-      }
-    } else if (staticElement is MethodElement && staticElement.isStatic) {
-      return new AccessSemantics.staticMethod(
-          node.methodName,
-          staticElement,
-          staticElement.enclosingElement,
-          isInvoke: true);
-    } else if (staticElement is PropertyAccessorElement) {
-      if (staticElement.isSynthetic) {
-        if (staticElement.enclosingElement is CompilationUnitElement) {
-          return new AccessSemantics.staticField(
-              node.methodName,
-              staticElement.variable,
-              null,
-              isInvoke: true);
-        } else if (staticElement.isStatic) {
-          return new AccessSemantics.staticField(
-              node.methodName,
-              staticElement.variable,
-              staticElement.enclosingElement,
-              isInvoke: true);
-        }
-      } else {
-        if (staticElement.enclosingElement is CompilationUnitElement) {
-          return new AccessSemantics.staticProperty(
-              node.methodName,
-              staticElement,
-              null,
-              isInvoke: true);
-        } else if (staticElement.isStatic) {
-          return new AccessSemantics.staticProperty(
-              node.methodName,
-              staticElement,
-              staticElement.enclosingElement,
-              isInvoke: true);
-        }
-      }
-    } else if (staticElement is LocalVariableElement) {
-      return new AccessSemantics.localVariable(
-          node.methodName,
-          staticElement,
-          isInvoke: true);
-    } else if (staticElement is ParameterElement) {
-      return new AccessSemantics.parameter(
-          node.methodName,
-          staticElement,
-          isInvoke: true);
-    }
-  } else if (target is Identifier) {
-    Element targetStaticElement = target.staticElement;
-    if (targetStaticElement is PrefixElement) {
-      if (staticElement == null) {
-        return new AccessSemantics.dynamic(
-            node.methodName,
-            null,
+            staticElement.enclosingElement,
             isInvoke: true);
       } else if (staticElement is PropertyAccessorElement) {
         if (staticElement.isSynthetic) {
-          return new AccessSemantics.staticField(
+          if (staticElement.enclosingElement is CompilationUnitElement) {
+            return new AccessSemantics.staticField(
+                node.methodName,
+                staticElement.variable,
+                null,
+                isInvoke: true);
+          } else if (staticElement.isStatic) {
+            return new AccessSemantics.staticField(
+                node.methodName,
+                staticElement.variable,
+                staticElement.enclosingElement,
+                isInvoke: true);
+          }
+        } else {
+          if (staticElement.enclosingElement is CompilationUnitElement) {
+            return new AccessSemantics.staticProperty(
+                node.methodName,
+                staticElement,
+                null,
+                isInvoke: true);
+          } else if (staticElement.isStatic) {
+            return new AccessSemantics.staticProperty(
+                node.methodName,
+                staticElement,
+                staticElement.enclosingElement,
+                isInvoke: true);
+          }
+        }
+      } else if (staticElement is LocalVariableElement) {
+        return new AccessSemantics.localVariable(
+            node.methodName,
+            staticElement,
+            isInvoke: true);
+      } else if (staticElement is ParameterElement) {
+        return new AccessSemantics.parameter(
+            node.methodName,
+            staticElement,
+            isInvoke: true);
+      }
+    } else if (target is Identifier) {
+      Element targetStaticElement = target.staticElement;
+      if (targetStaticElement is PrefixElement) {
+        if (staticElement == null) {
+          return new AccessSemantics.dynamic(
               node.methodName,
-              staticElement.variable,
               null,
               isInvoke: true);
+        } else if (staticElement is PropertyAccessorElement) {
+          if (staticElement.isSynthetic) {
+            return new AccessSemantics.staticField(
+                node.methodName,
+                staticElement.variable,
+                null,
+                isInvoke: true);
+          } else {
+            return new AccessSemantics.staticProperty(
+                node.methodName,
+                staticElement,
+                null,
+                isInvoke: true);
+          }
         } else {
-          return new AccessSemantics.staticProperty(
+          return new AccessSemantics.staticMethod(
               node.methodName,
               staticElement,
               null,
               isInvoke: true);
         }
-      } else {
-        return new AccessSemantics.staticMethod(
-            node.methodName,
-            staticElement,
-            null,
-            isInvoke: true);
-      }
-    } else if (targetStaticElement is ClassElement) {
-      if (staticElement is PropertyAccessorElement) {
-        if (staticElement.isSynthetic) {
-          return new AccessSemantics.staticField(
-              node.methodName,
-              staticElement.variable,
-              targetStaticElement,
-              isInvoke: true);
+      } else if (targetStaticElement is ClassElement) {
+        if (staticElement is PropertyAccessorElement) {
+          if (staticElement.isSynthetic) {
+            return new AccessSemantics.staticField(
+                node.methodName,
+                staticElement.variable,
+                targetStaticElement,
+                isInvoke: true);
+          } else {
+            return new AccessSemantics.staticProperty(
+                node.methodName,
+                staticElement,
+                targetStaticElement,
+                isInvoke: true);
+          }
         } else {
-          return new AccessSemantics.staticProperty(
+          return new AccessSemantics.staticMethod(
               node.methodName,
               staticElement,
               targetStaticElement,
               isInvoke: true);
         }
+      }
+    }
+    return new AccessSemantics.dynamic(node.methodName, target, isInvoke: true);
+  }
+
+  /**
+   * Return the access semantics for [node].
+   */
+  @override
+  AccessSemantics visitPrefixedIdentifier(PrefixedIdentifier node) {
+    return _classifyPrefixed(node.prefix, node.identifier);
+  }
+
+  /**
+   * Helper function for classifying an expression of type
+   * Identifier.SimpleIdentifier.
+   */
+  AccessSemantics _classifyPrefixed(Identifier lhs, SimpleIdentifier rhs) {
+    Element lhsElement = lhs.staticElement;
+    Element rhsElement = rhs.staticElement;
+    if (lhsElement is PrefixElement) {
+      if (rhsElement is PropertyAccessorElement) {
+        if (rhsElement.isSynthetic) {
+          return new AccessSemantics.staticField(rhs, rhsElement.variable, null);
+        } else {
+          return new AccessSemantics.staticProperty(rhs, rhsElement, null);
+        }
+      } else if (rhsElement is FunctionElement) {
+        return new AccessSemantics.staticMethod(rhs, rhsElement, null);
       } else {
-        return new AccessSemantics.staticMethod(
-            node.methodName,
-            staticElement,
-            targetStaticElement,
-            isInvoke: true);
+        return new AccessSemantics.dynamic(rhs, null);
       }
-    }
-  }
-  return new AccessSemantics.dynamic(node.methodName, target, isInvoke: true);
-}
-
-/**
- * Return the access semantics for [node].
- */
-AccessSemantics classifyPrefixedIdentifier(PrefixedIdentifier node) {
-  return _classifyPrefixed(node.prefix, node.identifier);
-}
-
-/**
- * Helper function for classifying an expression of type
- * Identifier.SimpleIdentifier.
- */
-AccessSemantics _classifyPrefixed(Identifier lhs, SimpleIdentifier rhs) {
-  Element lhsElement = lhs.staticElement;
-  Element rhsElement = rhs.staticElement;
-  if (lhsElement is PrefixElement) {
-    if (rhsElement is PropertyAccessorElement) {
-      if (rhsElement.isSynthetic) {
-        return new AccessSemantics.staticField(rhs, rhsElement.variable, null);
+    } else if (lhsElement is ClassElement) {
+      if (rhsElement is PropertyAccessorElement && rhsElement.isSynthetic) {
+        return new AccessSemantics.staticField(
+            rhs,
+            rhsElement.variable,
+            lhsElement);
+      } else if (rhsElement is MethodElement) {
+        return new AccessSemantics.staticMethod(rhs, rhsElement, lhsElement);
       } else {
-        return new AccessSemantics.staticProperty(rhs, rhsElement, null);
+        return new AccessSemantics.staticProperty(rhs, rhsElement, lhsElement);
       }
-    } else if (rhsElement is FunctionElement) {
-      return new AccessSemantics.staticMethod(rhs, rhsElement, null);
     } else {
-      return new AccessSemantics.dynamic(rhs, null);
+      return new AccessSemantics.dynamic(rhs, lhs);
     }
-  } else if (lhsElement is ClassElement) {
-    if (rhsElement is PropertyAccessorElement && rhsElement.isSynthetic) {
-      return new AccessSemantics.staticField(
-          rhs,
-          rhsElement.variable,
-          lhsElement);
-    } else if (rhsElement is MethodElement) {
-      return new AccessSemantics.staticMethod(rhs, rhsElement, lhsElement);
-    } else {
-      return new AccessSemantics.staticProperty(rhs, rhsElement, lhsElement);
-    }
-  } else {
-    return new AccessSemantics.dynamic(rhs, lhs);
   }
-}
 
-/**
- * Return the access semantics for [node].
- */
-AccessSemantics classifyPropertyAccess(PropertyAccess node) {
-  if (node.target is Identifier) {
-    return _classifyPrefixed(node.target, node.propertyName);
-  } else {
-    return new AccessSemantics.dynamic(node.propertyName, node.realTarget);
+  /**
+   * Return the access semantics for [node].
+   */
+  @override
+  AccessSemantics visitPropertyAccess(PropertyAccess node) {
+    if (node.target is Identifier) {
+      return _classifyPrefixed(node.target, node.propertyName);
+    } else {
+      return new AccessSemantics.dynamic(node.propertyName, node.realTarget);
+    }
   }
-}
 
-/**
- * Return the access semantics for [node].
- *
- * Note: if [node] is the right hand side of a [PropertyAccess] or
- * [PrefixedIdentifier], or the method name of a [MethodInvocation], the return
- * value is null, since the semantics are determined by the parent.  In
- * practice these cases should never arise because the parent will visit the
- * parent node before visiting this one.
- */
-AccessSemantics classifySimpleIdentifier(SimpleIdentifier node) {
-  AstNode parent = node.parent;
-  if (node.inDeclarationContext()) {
-    // This identifier is a declaration, not a use.
-    return null;
-  }
-  if (parent is TypeName) {
-    // TODO(paulberry): handle this case.  Or, perhaps it would be better to
-    // require clients not to visit the children of a TypeName when visiting
-    // the AST structure.
-    //
-    // TODO(paulberry): be sure to consider type literals, e.g.:
-    //   class A {}
-    //   var a = A;
-    return null;
-  }
-  if ((parent is PropertyAccess && parent.propertyName == node) ||
-      (parent is PrefixedIdentifier && parent.identifier == node) ||
-      (parent is MethodInvocation && parent.methodName == node)) {
-    // The access semantics are determined by the parent.
-    return null;
-  }
-  // TODO(paulberry): handle PrefixElement.
-  Element staticElement = node.staticElement;
-  if (staticElement is PropertyAccessorElement) {
-    if (staticElement.isSynthetic) {
-      if (staticElement.enclosingElement is CompilationUnitElement) {
-        return new AccessSemantics.staticField(
-            node,
-            staticElement.variable,
-            null);
-      } else if (staticElement.isStatic) {
-        return new AccessSemantics.staticField(
-            node,
-            staticElement.variable,
-            staticElement.enclosingElement);
-      }
-    } else {
-      if (staticElement.enclosingElement is CompilationUnitElement) {
-        return new AccessSemantics.staticProperty(node, staticElement, null);
-      } else if (staticElement.isStatic) {
-        return new AccessSemantics.staticProperty(
-            node,
-            staticElement,
-            staticElement.enclosingElement);
-      }
+  /**
+   * Return the access semantics for [node].
+   *
+   * Note: if [node] is the right hand side of a [PropertyAccess] or
+   * [PrefixedIdentifier], or the method name of a [MethodInvocation], the return
+   * value is null, since the semantics are determined by the parent.  In
+   * practice these cases should never arise because the parent will visit the
+   * parent node before visiting this one.
+   */
+  @override
+  AccessSemantics visitSimpleIdentifier(SimpleIdentifier node) {
+    AstNode parent = node.parent;
+    if (node.inDeclarationContext()) {
+      // This identifier is a declaration, not a use.
+      return null;
     }
-  } else if (staticElement is LocalVariableElement) {
-    return new AccessSemantics.localVariable(node, staticElement);
-  } else if (staticElement is ParameterElement) {
-    return new AccessSemantics.parameter(node, staticElement);
-  } else if (staticElement is FunctionElement) {
-    if (staticElement.enclosingElement is CompilationUnitElement) {
-      return new AccessSemantics.staticMethod(node, staticElement, null);
-    } else {
-      return new AccessSemantics.localFunction(node, staticElement);
+    if (parent is TypeName) {
+      // TODO(paulberry): handle this case.  Or, perhaps it would be better to
+      // require clients not to visit the children of a TypeName when visiting
+      // the AST structure.
+      //
+      // TODO(paulberry): be sure to consider type literals, e.g.:
+      //   class A {}
+      //   var a = A;
+      return null;
     }
-  } else if (staticElement is MethodElement && staticElement.isStatic) {
-    return new AccessSemantics.staticMethod(
-        node,
-        staticElement,
-        staticElement.enclosingElement);
+    if ((parent is PropertyAccess && parent.propertyName == node) ||
+        (parent is PrefixedIdentifier && parent.identifier == node) ||
+        (parent is MethodInvocation && parent.methodName == node)) {
+      // The access semantics are determined by the parent.
+      return null;
+    }
+    // TODO(paulberry): handle PrefixElement.
+    Element staticElement = node.staticElement;
+    if (staticElement is PropertyAccessorElement) {
+      if (staticElement.isSynthetic) {
+        if (staticElement.enclosingElement is CompilationUnitElement) {
+          return new AccessSemantics.staticField(
+              node,
+              staticElement.variable,
+              null);
+        } else if (staticElement.isStatic) {
+          return new AccessSemantics.staticField(
+              node,
+              staticElement.variable,
+              staticElement.enclosingElement);
+        }
+      } else {
+        if (staticElement.enclosingElement is CompilationUnitElement) {
+          return new AccessSemantics.staticProperty(node, staticElement, null);
+        } else if (staticElement.isStatic) {
+          return new AccessSemantics.staticProperty(
+              node,
+              staticElement,
+              staticElement.enclosingElement);
+        }
+      }
+    } else if (staticElement is LocalVariableElement) {
+      return new AccessSemantics.localVariable(node, staticElement);
+    } else if (staticElement is ParameterElement) {
+      return new AccessSemantics.parameter(node, staticElement);
+    } else if (staticElement is FunctionElement) {
+      if (staticElement.enclosingElement is CompilationUnitElement) {
+        return new AccessSemantics.staticMethod(node, staticElement, null);
+      } else {
+        return new AccessSemantics.localFunction(node, staticElement);
+      }
+    } else if (staticElement is MethodElement && staticElement.isStatic) {
+      return new AccessSemantics.staticMethod(
+          node,
+          staticElement,
+          staticElement.enclosingElement);
+    }
+    return new AccessSemantics.dynamic(node, null);
   }
-  return new AccessSemantics.dynamic(node, null);
-}
+}
\ No newline at end of file
diff --git a/pkg/analyzer2dart/lib/src/modely.dart b/pkg/analyzer2dart/lib/src/modely.dart
index ea65b24..390ea7c 100644
--- a/pkg/analyzer2dart/lib/src/modely.dart
+++ b/pkg/analyzer2dart/lib/src/modely.dart
@@ -345,21 +345,8 @@
   bool get isAbstract => false;

 }

 

-class TopLevelFunctionElementY extends ElementY

-    with AnalyzableElementY, AstElementY, TopLevelElementMixin

-    implements dart2js.FunctionElement {

-  analyzer.FunctionElement get element => super.element;

-

-  @override

-  dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION;

-

-  @override

-  dart2js.FunctionType get type => converter.convertType(element.type);

-

-  TopLevelFunctionElementY(ElementConverter converter,

-                           analyzer.FunctionElement element)

-      : super(converter, element);

-

+abstract class FunctionElementMixin

+    implements ElementY, dart2js.FunctionElement {

   @override

   get abstractField => unsupported('abstractField');

 

@@ -376,6 +363,25 @@
   bool get hasFunctionSignature => unsupported('hasFunctionSignature');

 }

 

+class TopLevelFunctionElementY extends ElementY

+    with AnalyzableElementY,

+         AstElementY,

+         TopLevelElementMixin,

+         FunctionElementMixin

+    implements dart2js.FunctionElement {

+  analyzer.FunctionElement get element => super.element;

+

+  @override

+  dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION;

+

+  @override

+  dart2js.FunctionType get type => converter.convertType(element.type);

+

+  TopLevelFunctionElementY(ElementConverter converter,

+                           analyzer.FunctionElement element)

+      : super(converter, element);

+}

+

 class ParameterElementY extends ElementY

     with AnalyzableElementY, AstElementY

     implements dart2js.ParameterElement {

@@ -679,6 +685,9 @@
   @override

   bool get isConst => element.isConst;

 

+  @override

+  bool get isStatic => false;

+

   LocalVariableElementY(ElementConverter converter,

                         analyzer.LocalVariableElement element)

       : super(converter, element);

@@ -688,4 +697,47 @@
 

   @override

   dart2js.DartType get type => unsupported('type');

+}

+

+class ConstructorElementY extends ElementY

+    with AnalyzableElementY,

+         AstElementY,

+         FunctionElementMixin

+    implements dart2js.ConstructorElement {

+

+  analyzer.ConstructorElement get element => super.element;

+

+  @override

+  dart2js.ClassElement get enclosingClass {

+    return converter.convertElement(element.enclosingElement);

+  }

+

+  // TODO(johnniwinther): Support redirecting/factory constructors.

+  @override

+  dart2js.ElementKind get kind => dart2js.ElementKind.GENERATIVE_CONSTRUCTOR;

+

+  ConstructorElementY(ElementConverter converter,

+                      analyzer.ConstructorElement element)

+      : super(converter, element);

+

+  @override

+  computeEffectiveTargetType(_) => unsupported('computeEffectiveTargetType');

+

+  @override

+  get definingConstructor => unsupported('definingConstructor');

+

+  @override

+  get effectiveTarget => unsupported('effectiveTarget');

+

+  @override

+  get immediateRedirectionTarget => unsupported('immediateRedirectionTarget');

+

+  @override

+  bool get isRedirectingFactory => unsupported('isRedirectingFactory');

+

+  @override

+  get nestedClosures => unsupported('nestedClosures');

+

+  @override

+  get type => unsupported('type');

 }
\ No newline at end of file
diff --git a/pkg/analyzer2dart/lib/src/semantic_visitor.dart b/pkg/analyzer2dart/lib/src/semantic_visitor.dart
index b0b955c..d53051c 100644
--- a/pkg/analyzer2dart/lib/src/semantic_visitor.dart
+++ b/pkg/analyzer2dart/lib/src/semantic_visitor.dart
@@ -77,7 +77,11 @@
       node.target.accept(this);

     }

     node.argumentList.accept(this);

-    AccessSemantics semantics = classifyMethodInvocation(node);

+    return handleMethodInvocation(node);

+  }

+

+  R handleMethodInvocation(MethodInvocation node) {

+    AccessSemantics semantics = node.accept(ACCESS_SEMANTICS_VISITOR);

     switch (semantics.kind) {

       case AccessKind.DYNAMIC:

         return visitDynamicInvocation(node, semantics);

@@ -105,18 +109,26 @@
     if (node.target != null) {

       node.target.accept(this);

     }

-    return _handlePropertyAccess(node, classifyPropertyAccess(node));

+    return handlePropertyAccess(node);

+  }

+

+  R handlePropertyAccess(PropertyAccess node) {

+    return _handlePropertyAccess(node, node.accept(ACCESS_SEMANTICS_VISITOR));

   }

 

   @override

   R visitPrefixedIdentifier(PrefixedIdentifier node) {

     node.prefix.accept(this);

-    return _handlePropertyAccess(node, classifyPrefixedIdentifier(node));

+    return handlePrefixedIdentifier(node);

+  }

+

+  R handlePrefixedIdentifier(PrefixedIdentifier node) {

+    return _handlePropertyAccess(node, node.accept(ACCESS_SEMANTICS_VISITOR));

   }

 

   @override

   R visitSimpleIdentifier(SimpleIdentifier node) {

-    AccessSemantics semantics = classifySimpleIdentifier(node);

+    AccessSemantics semantics = node.accept(ACCESS_SEMANTICS_VISITOR);

     if (semantics != null) {

       return _handlePropertyAccess(node, semantics);

     } else {

@@ -174,4 +186,74 @@
             'Unexpected ${semantics} in _handlePropertyAccess.');

     }

   }

+

+  R visitDynamicPropertyAssignment(AssignmentExpression node,

+                                   AccessSemantics semantics) {

+    return giveUp(node, 'visitDynamicPropertyAssignment of $semantics');

+  }

+

+  R visitLocalFunctionAssignment(AssignmentExpression node,

+                                 AccessSemantics semantics) {

+    return giveUp(node, 'visitLocalFunctionAssignment of $semantics');

+  }

+

+  R visitLocalVariableAssignment(AssignmentExpression node,

+                                 AccessSemantics semantics) {

+    return giveUp(node, 'visitLocalVariableAssignment of $semantics');

+  }

+

+  R visitParameterAssignment(AssignmentExpression node,

+                             AccessSemantics semantics) {

+    return giveUp(node, 'visitParameterAssignment of $semantics');

+  }

+

+  R visitStaticFieldAssignment(AssignmentExpression node,

+                               AccessSemantics semantics) {

+    return giveUp(node, 'visitStaticFieldAssignment of $semantics');

+  }

+

+  R visitStaticMethodAssignment(AssignmentExpression node,

+                                AccessSemantics semantics) {

+    return giveUp(node, 'visitStaticMethodAssignment of $semantics');

+  }

+

+  R visitStaticPropertyAssignment(AssignmentExpression node,

+                                  AccessSemantics semantics) {

+    return giveUp(node, 'visitStaticPropertyAssignment of $semantics');

+  }

+

+  @override

+  R visitAssignmentExpression(AssignmentExpression node) {

+    super.visitAssignmentExpression(node);

+    return handleAssignmentExpression(node);

+  }

+

+  R handleAssignmentExpression(AssignmentExpression node) {

+    AccessSemantics semantics =

+        node.leftHandSide.accept(ACCESS_SEMANTICS_VISITOR);

+    if (semantics == null) {

+      return giveUp(node, 'handleAssignmentExpression with no AccessSemantics');

+    } else {

+      switch (semantics.kind) {

+        case AccessKind.DYNAMIC:

+          return visitDynamicPropertyAssignment(node, semantics);

+        case AccessKind.LOCAL_FUNCTION:

+          return visitLocalFunctionAssignment(node, semantics);

+        case AccessKind.LOCAL_VARIABLE:

+          return visitLocalVariableAssignment(node, semantics);

+        case AccessKind.PARAMETER:

+          return visitParameterAssignment(node, semantics);

+        case AccessKind.STATIC_FIELD:

+          return visitStaticFieldAssignment(node, semantics);

+        case AccessKind.STATIC_METHOD:

+          return visitStaticMethodAssignment(node, semantics);

+        case AccessKind.STATIC_PROPERTY:

+          return visitStaticPropertyAssignment(node, semantics);

+        default:

+          // Unexpected access kind.

+          return giveUp(node,

+              'Unexpected ${semantics} in _handlePropertyAccess.');

+      }

+    }

+  }

 }

diff --git a/pkg/analyzer2dart/lib/src/tree_shaker.dart b/pkg/analyzer2dart/lib/src/tree_shaker.dart
index ba24c4c..47a653f 100644
--- a/pkg/analyzer2dart/lib/src/tree_shaker.dart
+++ b/pkg/analyzer2dart/lib/src/tree_shaker.dart
@@ -207,7 +207,6 @@
     _addElement(_world.mainFunction);
     while (_queue.isNotEmpty) {
       Element element = _queue.removeLast();
-      print('Tree shaker handling $element');
       if (element is ExecutableElement) {
         MethodAnalysis analysis = _localComputer.analyzeMethod(element);
         _world.executableElements[element] = analysis.declaration;
@@ -233,7 +232,6 @@
                 '$element (${element.runtimeType})');
       }
     }
-    print('Tree shaking done');
     return _world;
   }
 }
@@ -261,8 +259,8 @@
   @override
   void visitDynamicInvocation(MethodInvocation node,
       AccessSemantics semantics) {
-    analysis.invokes.add(
-        createSelectorFromMethodInvocation(node, node.methodName.name));
+    analysis.invokes.add(createSelectorFromMethodInvocation(
+        node.argumentList, node.methodName.name));
   }
 
   @override
@@ -288,21 +286,24 @@
       AccessSemantics semantics) {
     // Invocation of a static field.
     analysis.accesses.add(semantics.element);
-    analysis.invokes.add(createSelectorFromMethodInvocation(node, 'call'));
+    analysis.invokes.add(createSelectorFromMethodInvocation(
+        node.argumentList, 'call'));
   }
 
+  @override
   void visitStaticMethodInvocation(MethodInvocation node,
       AccessSemantics semantics) {
     analysis.calls.add(semantics.element);
   }
 
+  @override
   void visitStaticPropertyInvocation(MethodInvocation node,
       AccessSemantics semantics) {
     // Invocation of a property.  TODO(paulberry): handle this.
     super.visitStaticPropertyInvocation(node, semantics);
   }
 
-  void visitDynamicAccess(AstNode node, AccessSemantics semantics) {
+  void handleDynamicAccess(AccessSemantics semantics) {
     if (semantics.isRead) {
       analysis.invokes.add(
           new Selector.getter(semantics.identifier.name, null));
@@ -315,27 +316,38 @@
     }
   }
 
+  @override
+  void visitDynamicAccess(AstNode node, AccessSemantics semantics) {
+    handleDynamicAccess(semantics);
+  }
+
+  @override
   void visitLocalFunctionAccess(AstNode node, AccessSemantics semantics) {
     // Locals don't need to be tree shaken.
   }
 
+  @override
   void visitLocalVariableAccess(AstNode node, AccessSemantics semantics) {
     // Locals don't need to be tree shaken.
   }
 
+  @override
   void visitParameterAccess(AstNode node, AccessSemantics semantics) {
     // Locals don't need to be tree shaken.
   }
 
+  @override
   void visitStaticFieldAccess(AstNode node, AccessSemantics semantics) {
     analysis.accesses.add(semantics.element);
   }
 
+  @override
   void visitStaticMethodAccess(AstNode node, AccessSemantics semantics) {
     // Method tear-off.  TODO(paulberry): implement.
     super.visitStaticMethodAccess(node, semantics);
   }
 
+  @override
   void visitStaticPropertyAccess(AstNode node, AccessSemantics semantics) {
     // TODO(paulberry): implement.
     super.visitStaticPropertyAccess(node, semantics);
@@ -374,4 +386,9 @@
     // reported as a compile time error.
     analysis.calls.add(node.staticElement);
   }
+
+  @override
+  void handleAssignmentExpression(AssignmentExpression node) {
+    // Don't special-case assignment expressions.
+  }
 }
diff --git a/pkg/analyzer2dart/lib/src/util.dart b/pkg/analyzer2dart/lib/src/util.dart
index 6eee618..c7fe801 100644
--- a/pkg/analyzer2dart/lib/src/util.dart
+++ b/pkg/analyzer2dart/lib/src/util.dart
@@ -11,13 +11,13 @@
 import 'package:compiler/implementation/universe/universe.dart';

 import 'package:compiler/implementation/source_file.dart';

 

-Selector createSelectorFromMethodInvocation(MethodInvocation node,

+Selector createSelectorFromMethodInvocation(ArgumentList node,

                                             String name) {

   int arity = 0;

   List<String> namedArguments = <String>[];

-  for (var x in node.argumentList.arguments) {

-    if (x is NamedExpression) {

-      namedArguments.add(x.name.label.name);

+  for (Expression argument in node.arguments) {

+    if (argument is NamedExpression) {

+      namedArguments.add(argument.name.label.name);

     } else {

       arity++;

     }

diff --git a/pkg/analyzer2dart/test/end2end_data.dart b/pkg/analyzer2dart/test/end2end_data.dart
new file mode 100644
index 0000000..455f790
--- /dev/null
+++ b/pkg/analyzer2dart/test/end2end_data.dart
@@ -0,0 +1,561 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Test data for the end2end test.
+library test.end2end.data;
+
+import 'test_helper.dart' show Group;
+import 'test_helper.dart' as base show TestSpec;
+
+class TestSpec extends base.TestSpec {
+  const TestSpec(String input, [String output])
+      : super(input, output != null ? output : input);
+}
+
+const List<Group> TEST_DATA = const <Group>[
+  const Group('Empty main', const <TestSpec>[
+    const TestSpec('''
+main() {}
+'''),
+
+    const TestSpec('''
+main() {}
+foo() {}
+''', '''
+main() {}
+'''),
+  ]),
+  const Group('Simple call-chains', const <TestSpec>[
+    const TestSpec('''
+foo() {}
+main() {
+  foo();
+}
+'''),
+
+    const TestSpec('''
+bar() {}
+foo() {
+  bar();
+}
+main() {
+  foo();
+}
+'''),
+
+    const TestSpec('''
+bar() {
+  main();
+}
+foo() {
+  bar();
+}
+main() {
+  foo();
+}
+'''),
+
+  ]),
+  const Group('Literals', const <TestSpec>[
+    const TestSpec('''
+main() {
+  return 0;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  return 1.5;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  return true;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  return false;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  return "a";
+}
+'''),
+
+    const TestSpec('''
+main() {
+  return "a" "b";
+}
+''', '''
+main() {
+  return "ab";
+}
+'''),
+  ]),
+
+  const Group('Parameters', const <TestSpec>[
+    const TestSpec('''
+main(args) {}
+'''),
+
+    const TestSpec('''
+main(a, b) {}
+'''),
+  ]),
+
+  const Group('Typed parameters', const <TestSpec>[
+    const TestSpec('''
+void main(args) {}
+'''),
+
+    const TestSpec('''
+main(int a, String b) {}
+'''),
+
+    const TestSpec('''
+main(Comparator a, List b) {}
+'''),
+
+    const TestSpec('''
+main(Comparator<dynamic> a, List<dynamic> b) {}
+''','''
+main(Comparator a, List b) {}
+'''),
+
+    const TestSpec('''
+main(Map a, Map<dynamic, List<int>> b) {}
+'''),
+  ]),
+
+  const Group('Pass arguments', const <TestSpec>[
+    const TestSpec('''
+foo(a) {}
+main() {
+  foo(null);
+}
+'''),
+
+    const TestSpec('''
+bar(b, c) {}
+foo(a) {}
+main() {
+  foo(null);
+  bar(0, "");
+}
+'''),
+
+    const TestSpec('''
+bar(b) {}
+foo(a) {
+  bar(a);
+}
+main() {
+  foo(null);
+}
+'''),
+  ]),
+
+  const Group('Top level field access', const <TestSpec>[
+    const TestSpec('''
+main(args) {
+  return deprecated;
+}
+'''),
+  ]),
+
+  const Group('Local variables', const <TestSpec>[
+    const TestSpec('''
+main() {
+  var a;
+  return a;
+}
+''','''
+main() {}
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  return a;
+}
+''','''
+main() {
+  return 0;
+}
+'''),
+  ]),
+
+  const Group('Local variable writes', const <TestSpec>[
+    const TestSpec('''
+main() {
+  var a;
+  a = 10;
+  return a;
+}
+''', '''
+main() {
+  return 10;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  a = 10;
+  return a;
+}
+''', '''
+main() {
+  return 10;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  print(a);
+  a = "";
+  print(a);
+  return a;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  print(a);
+  a = "";
+  print(a);
+  return a;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    a = "";
+  }
+  print(a);
+  return a;
+}
+'''),
+  ]),
+
+  const Group('Dynamic access', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return a.foo;
+}
+'''),
+
+    const TestSpec('''
+main() {
+  var a = "";
+  return a.foo;
+}
+''','''
+main() {
+  return "".foo;
+}
+'''),
+  ]),
+
+  const Group('Dynamic invocation', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return a.foo(0);
+}
+'''),
+
+    const TestSpec('''
+main() {
+  var a = "";
+  return a.foo(0, 1);
+}
+''','''
+main() {
+  return "".foo(0, 1);
+}
+'''),
+  ]),
+
+  const Group('Binary expressions', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return a + deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a - deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a * deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a / deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a ~/ deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a % deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a < deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a <= deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a > deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a >= deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a << deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a >> deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a & deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a | deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a ^ deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a == deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a != deprecated;
+}
+''','''
+main(a) {
+  return !(a == deprecated);
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a && deprecated;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a || deprecated;
+}
+'''),
+  ]),
+
+  const Group('If statement', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  }
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  } else {
+    print(1);
+  }
+}
+''','''
+main(a) {
+  a ? print(0) : print(1);
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  } else {
+    print(1);
+    print(2);
+  }
+}
+'''),
+  ]),
+
+  const Group('Conditional expression', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return a ? print(0) : print(1);
+}
+'''),
+  ]),
+
+  // These test that unreachable statements are skipped within a block.
+  const Group('Block statements', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return 0;
+  return 1;
+}
+''', '''
+main(a) {
+  return 0;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    return 0;
+    return 1;
+  } else {
+    return 2;
+    return 3;
+  }
+}
+''', '''
+main(a) {
+  return a ? 0 : 2;
+}
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+    return 0;
+    return 1;
+  } else {
+    print(2);
+    return 2;
+    return 3;
+  }
+}
+''', '''
+main(a) {
+  if (a) {
+    print(0);
+    return 0;
+  } else {
+    print(2);
+    return 2;
+  }
+}
+'''),
+  ]),
+
+  const Group('Constructor invocation', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  new Object();
+}
+'''),
+
+const TestSpec('''
+main(a) {
+  new Deprecated("");
+}
+'''),
+  ]),
+
+  const Group('For loop', const <TestSpec>[
+    const TestSpec('''
+main() {
+  for (;;) {}
+}
+''', '''
+main() {
+  while (true) {}
+}
+'''),
+
+const TestSpec('''
+main() {
+  for (int i = 0; i < 10; i = i + 1) {
+    print(i);
+  }
+}
+''', '''
+main() {
+  var i = 0;
+  while (i < 10) {
+    print(i);
+    ++i;
+  }
+}
+'''),
+
+const TestSpec('''
+main(i) {
+  for (i = 0; i < 10; i = i + 1) {
+    print(i);
+  }
+}
+''', '''
+main(i) {
+  i = 0;
+  while (i < 10) {
+    print(i);
+    ++i;
+  }
+}
+'''),
+  ]),
+];
diff --git a/pkg/analyzer2dart/test/end2end_test.dart b/pkg/analyzer2dart/test/end2end_test.dart
index 8bdbfff..3cfde57 100644
--- a/pkg/analyzer2dart/test/end2end_test.dart
+++ b/pkg/analyzer2dart/test/end2end_test.dart
@@ -3,8 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 /// End-to-end test of the analyzer2dart compiler.
-
-import 'dart:async';
+library test.end2end;
 
 import 'mock_sdk.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
@@ -18,491 +17,17 @@
 import '../lib/src/converted_world.dart';
 import '../lib/src/dart_backend.dart';
 
+import 'test_helper.dart' hide TestSpec;
+import 'output_helper.dart';
+import 'end2end_data.dart';
+
 main() {
-  test('Empty main', () {
-    String expectedResult =  '''
-main() {}
-''';
-    checkResult('''
-main() {}''',
-        expectedResult);
-
-    checkResult('''
-main() {}
-foo() {}''',
-        expectedResult);
-  });
-
-  test('Simple call-chains', () {
-    checkResult('''
-foo() {}
-main() {
-  foo();
-}
-''');
-
-    checkResult('''
-bar() {}
-foo() {
-  bar();
-}
-main() {
-  foo();
-}
-''');
-
-    checkResult('''
-bar() {
-  main();
-}
-foo() {
-  bar();
-}
-main() {
-  foo();
-}
-''');
-  });
-
-  test('Literals', () {
-    checkResult('''
-main() {
-  return 0;
-}
-''');
-
-    checkResult('''
-main() {
-  return 1.5;
-}
-''');
-
-    checkResult('''
-main() {
-  return true;
-}
-''');
-
-    checkResult('''
-main() {
-  return false;
-}
-''');
-
-    checkResult('''
-main() {
-  return "a";
-}
-''');
-
-    checkResult('''
-main() {
-  return "a" "b";
-}
-''', '''
-main() {
-  return "ab";
-}
-''');
-  });
-
-  test('Parameters', () {
-    checkResult('''
-main(args) {}
-''');
-
-    checkResult('''
-main(a, b) {}
-''');
-  });
-
-  test('Typed parameters', () {
-    checkResult('''
-void main(args) {}
-''');
-
-    checkResult('''
-main(int a, String b) {}
-''');
-
-    checkResult('''
-main(Comparator a, List b) {}
-''');
-
-    checkResult('''
-main(Comparator<dynamic> a, List<dynamic> b) {}
-''', '''
-main(Comparator a, List b) {}
-''');
-
-    checkResult('''
-main(Map a, Map<dynamic, List<int>> b) {}
-''');
-  });
-
-  test('Pass arguments', () {
-    checkResult('''
-foo(a) {}
-main() {
-  foo(null);
-}
-''');
-
-    checkResult('''
-bar(b, c) {}
-foo(a) {}
-main() {
-  foo(null);
-  bar(0, "");
-}
-''');
-
-    checkResult('''
-bar(b) {}
-foo(a) {
-  bar(a);
-}
-main() {
-  foo(null);
-}
-''');
-  });
-
-  test('Top level field access', () {
-    checkResult('''
-main(args) {
-  return deprecated;
-}
-''');
-  });
-
-  test('Local variables', () {
-    checkResult('''
-main() {
-  var a;
-  return a;
-}
-''', '''
-main() {}
-''');
-
-    checkResult('''
-main() {
-  var a = 0;
-  return a;
-}
-''', '''
-main() {
-  return 0;
-}
-''');
-  });
-
-  test('Dynamic access', () {
-    checkResult('''
-main(a) {
-  return a.foo;
-}
-''', '''
-main(a) {
-  return a.foo;
-}
-''');
-
-    checkResult('''
-main() {
-  var a = "";
-  return a.foo;
-}
-''', '''
-main() {
-  return "".foo;
-}
-''');
-  });
-
-  test('Dynamic invocation', () {
-    checkResult('''
-main(a) {
-  return a.foo(0);
-}
-''', '''
-main(a) {
-  return a.foo(0);
-}
-''');
-
-    checkResult('''
-main() {
-  var a = "";
-  return a.foo(0, 1);
-}
-''', '''
-main() {
-  return "".foo(0, 1);
-}
-''');
-  });
-
-  test('Binary expressions', () {
-    checkResult('''
-main(a) {
-  return a + deprecated;
-}
-''', '''
-main(a) {
-  return a + deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a - deprecated;
-}
-''', '''
-main(a) {
-  return a - deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a * deprecated;
-}
-''', '''
-main(a) {
-  return a * deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a / deprecated;
-}
-''', '''
-main(a) {
-  return a / deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a ~/ deprecated;
-}
-''', '''
-main(a) {
-  return a ~/ deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a % deprecated;
-}
-''', '''
-main(a) {
-  return a % deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a < deprecated;
-}
-''', '''
-main(a) {
-  return a < deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a <= deprecated;
-}
-''', '''
-main(a) {
-  return a <= deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a > deprecated;
-}
-''', '''
-main(a) {
-  return a > deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a >= deprecated;
-}
-''', '''
-main(a) {
-  return a >= deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a << deprecated;
-}
-''', '''
-main(a) {
-  return a << deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a >> deprecated;
-}
-''', '''
-main(a) {
-  return a >> deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a & deprecated;
-}
-''', '''
-main(a) {
-  return a & deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a | deprecated;
-}
-''', '''
-main(a) {
-  return a | deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a ^ deprecated;
-}
-''', '''
-main(a) {
-  return a ^ deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a == deprecated;
-}
-''', '''
-main(a) {
-  return a == deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a != deprecated;
-}
-''', '''
-main(a) {
-  return !(a == deprecated);
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a || deprecated;
-}
-''', '''
-main(a) {
-  return a || deprecated;
-}
-''');
-
-    checkResult('''
-main(a) {
-  return a && deprecated;
-}
-''', '''
-main(a) {
-  return a && deprecated;
-}
-''');
-  });
-
-  test('If statement', () {
-    checkResult('''
-main(a) {
-  if (a) {
-    print(0);
-  }
-}
-''', '''
-main(a) {
-  if (a) {
-    print(0);
-  }
-}
-''');
-
-    checkResult('''
-main(a) {
-  if (a) {
-    print(0);
-  } else {
-    print(1);
-  }
-}
-''', '''
-main(a) {
-  a ? print(0) : print(1);
-}
-''');
-
-    checkResult('''
-main(a) {
-  if (a) {
-    print(0);
-  } else {
-    print(1);
-    print(2);
-  }
-}
-''', '''
-main(a) {
-  if (a) {
-    print(0);
-  } else {
-    print(1);
-    print(2);
-  }
-}
-''');
-  });
-
-  test('If statement', () {
-    checkResult('''
-main(a) {
-  return a ? print(0) : print(1);
-}
-''', '''
-main(a) {
-  return a ? print(0) : print(1);
-}
-''');
-  });
+  performTests(TEST_DATA, unittester, checkResult);
 }
 
-checkResult(String input, [String expectedOutput]) {
-  if (expectedOutput == null) {
-    expectedOutput = input;
-  }
+checkResult(TestSpec result) {
+  String input = result.input;
+  String expectedOutput = result.output;
 
   CollectingOutputProvider outputProvider = new CollectingOutputProvider();
   MemoryResourceProvider provider = new MemoryResourceProvider();
@@ -518,26 +43,3 @@
   String output = outputProvider.output.text;
   expect(output, equals(expectedOutput));
 }
-
-class CollectingOutputProvider {
-  StringBufferSink output;
-
-  EventSink<String> call(String name, String extension) {
-    return output = new StringBufferSink();
-  }
-}
-
-class StringBufferSink implements EventSink<String> {
-  StringBuffer sb = new StringBuffer();
-
-  void add(String text) {
-    sb.write(text);
-  }
-
-  void addError(errorEvent, [StackTrace stackTrace]) {}
-
-  void close() {}
-
-  String get text => sb.toString();
-}
-
diff --git a/pkg/analyzer2dart/test/identifier_semantics_test.dart b/pkg/analyzer2dart/test/identifier_semantics_test.dart
index 9d929c7..3ccc46f 100644
--- a/pkg/analyzer2dart/test/identifier_semantics_test.dart
+++ b/pkg/analyzer2dart/test/identifier_semantics_test.dart
@@ -2119,22 +2119,22 @@
 
   @override
   visitMethodInvocation(MethodInvocation node) {
-    onAccess(node, classifyMethodInvocation(node));
+    onAccess(node, node.accept(ACCESS_SEMANTICS_VISITOR));
   }
 
   @override
   visitPrefixedIdentifier(PrefixedIdentifier node) {
-    onAccess(node, classifyPrefixedIdentifier(node));
+    onAccess(node, node.accept(ACCESS_SEMANTICS_VISITOR));
   }
 
   @override
   visitPropertyAccess(PropertyAccess node) {
-    onAccess(node, classifyPropertyAccess(node));
+    onAccess(node, node.accept(ACCESS_SEMANTICS_VISITOR));
   }
 
   @override
   visitSimpleIdentifier(SimpleIdentifier node) {
-    AccessSemantics semantics = classifySimpleIdentifier(node);
+    AccessSemantics semantics = node.accept(ACCESS_SEMANTICS_VISITOR);
     if (semantics != null) {
       onAccess(node, semantics);
     }
diff --git a/pkg/analyzer2dart/test/output_helper.dart b/pkg/analyzer2dart/test/output_helper.dart
new file mode 100644
index 0000000..5a3f6b4
--- /dev/null
+++ b/pkg/analyzer2dart/test/output_helper.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Helper classes for testing compiler output.
+library test.output_helper;
+
+import 'dart:async';
+
+
+class CollectingOutputProvider {
+  StringBufferSink output;
+
+  EventSink<String> call(String name, String extension) {
+    return output = new StringBufferSink();
+  }
+}
+
+class StringBufferSink implements EventSink<String> {
+  StringBuffer sb = new StringBuffer();
+
+  void add(String text) {
+    sb.write(text);
+  }
+
+  void addError(errorEvent, [StackTrace stackTrace]) {}
+
+  void close() {}
+
+  String get text => sb.toString();
+}
+
diff --git a/pkg/analyzer2dart/test/sexpr_data.dart b/pkg/analyzer2dart/test/sexpr_data.dart
new file mode 100644
index 0000000..bf1f08a
--- /dev/null
+++ b/pkg/analyzer2dart/test/sexpr_data.dart
@@ -0,0 +1,891 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Test data for sexpr_test.
+library test.sexpr.data;
+
+import 'test_helper.dart';
+
+const List<Group> TEST_DATA = const [
+  const Group('Empty main', const [
+    const TestSpec('''
+main() {}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+foo() {}
+main() {
+  foo();
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetCont (k0 v0)
+    (LetPrim v1 (Constant NullConstant))
+    (InvokeContinuation return v1))
+  (InvokeStatic foo  k0))
+''')
+  ]),
+
+  const Group('Literals', const [
+    const TestSpec('''
+main() {
+  return 0;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 1.5;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant DoubleConstant(1.5)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main() {
+  return true;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant BoolConstant(true)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main() {
+  return false;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant BoolConstant(false)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main() {
+  return "a";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant StringConstant("a")))
+  (InvokeContinuation return v0))
+'''),
+  ]),
+
+  const Group('Parameters', const [
+    const TestSpec('''
+main(args) {}
+''', '''
+(FunctionDefinition main (args return)
+  (LetPrim v0 (Constant NullConstant))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main(a, b) {}
+''', '''
+(FunctionDefinition main (a b return)
+  (LetPrim v0 (Constant NullConstant))
+  (InvokeContinuation return v0))
+'''),
+  ]),
+
+  const Group('Pass arguments', const [
+    const TestSpec('''
+foo(a) {}
+main() {
+  foo(null);
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (LetCont (k0 v1)
+    (LetPrim v2 (Constant NullConstant))
+    (InvokeContinuation return v2))
+  (InvokeStatic foo v0 k0))
+'''),
+
+    const TestSpec('''
+bar(b, c) {}
+foo(a) {}
+main() {
+  foo(null);
+  bar(0, "");
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (LetCont (k0 v1)
+    (LetPrim v2 (Constant IntConstant(0)))
+    (LetPrim v3 (Constant StringConstant("")))
+    (LetCont (k1 v4)
+      (LetPrim v5 (Constant NullConstant))
+      (InvokeContinuation return v5))
+    (InvokeStatic bar v2 v3 k1))
+  (InvokeStatic foo v0 k0))
+'''),
+
+    const TestSpec('''
+foo(a) {}
+main() {
+  return foo(null);
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (LetCont (k0 v1)
+    (InvokeContinuation return v1))
+  (InvokeStatic foo v0 k0))
+'''),
+  ]),
+
+  const Group('Local variables', const [
+    const TestSpec('''
+main() {
+  var a;
+  return a;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  return a;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main(a) {
+  return a;
+}
+''', '''
+(FunctionDefinition main (a return)
+  (InvokeContinuation return a))
+'''),
+    ]),
+
+  const Group('Local variable writes', const <TestSpec>[
+    const TestSpec('''
+main() {
+  var a;
+  a = 10;
+  return a;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant NullConstant))
+  (LetPrim v1 (Constant IntConstant(10)))
+  (InvokeContinuation return v1))
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  a = 10;
+  return a;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant IntConstant(10)))
+  (InvokeContinuation return v1))
+'''),
+
+    const TestSpec('''
+main() {
+  var a = 0;
+  print(a);
+  a = "";
+  print(a);
+  return a;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont (k0 v1)
+    (LetPrim v2 (Constant StringConstant("")))
+    (LetCont (k1 v3)
+      (InvokeContinuation return v2))
+    (InvokeStatic print v2 k1))
+  (InvokeStatic print v0 k0))
+'''),
+
+    const TestSpec('''
+main(a) {
+  print(a);
+  a = "";
+  print(a);
+  return a;
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0 v0)
+    (LetPrim v1 (Constant StringConstant("")))
+    (LetCont (k1 v2)
+      (InvokeContinuation return v1))
+    (InvokeStatic print v1 k1))
+  (InvokeStatic print a k0))
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    a = "";
+  }
+  print(a);
+  return a;
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0 v0)
+    (LetCont (k1 v1)
+      (InvokeContinuation return v0))
+    (InvokeStatic print v0 k1))
+  (LetCont (k2)
+    (LetPrim v2 (Constant StringConstant("")))
+    (InvokeContinuation k0 v2))
+  (LetCont (k3)
+    (InvokeContinuation k0 a))
+  (Branch (IsTrue a) k2 k3))
+'''),
+  ]),
+
+  const Group('Dynamic access', const [
+    const TestSpec('''
+main(a) {
+  return a.foo;
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0 v0)
+    (InvokeContinuation return v0))
+  (InvokeMethod a foo  k0))
+'''),
+
+    const TestSpec('''
+main() {
+  var a = "";
+  return a.foo;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant StringConstant("")))
+  (LetCont (k0 v1)
+    (InvokeContinuation return v1))
+  (InvokeMethod v0 foo  k0))
+'''),
+    ]),
+
+  const Group('Dynamic invocation', const [
+    const TestSpec('''
+main(a) {
+  return a.foo(0);
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont (k0 v1)
+    (InvokeContinuation return v1))
+  (InvokeMethod a foo v0 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  var a = "";
+  return a.foo(0, 1);
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant StringConstant("")))
+  (LetPrim v1 (Constant IntConstant(0)))
+  (LetPrim v2 (Constant IntConstant(1)))
+  (LetCont (k0 v3)
+    (InvokeContinuation return v3))
+  (InvokeMethod v0 foo v1 v2 k0))
+'''),
+    ]),
+
+  const Group('Binary expressions', const [
+    const TestSpec('''
+main() {
+  return 0 + "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 + v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 - "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 - v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 * "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 * v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 / "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 / v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 ~/ "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 ~/ v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 < "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 < v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 <= "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 <= v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 > "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 > v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 >= "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 >= v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 << "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 << v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 >> "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 >> v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 & "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 & v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 | "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 | v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 ^ "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 ^ v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 == "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (InvokeContinuation return v2))
+  (InvokeMethod v0 == v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 != "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (LetCont (k1 v3)
+      (InvokeContinuation return v3))
+    (LetCont (k2)
+      (LetPrim v4 (Constant BoolConstant(false)))
+      (InvokeContinuation k1 v4))
+    (LetCont (k3)
+      (LetPrim v5 (Constant BoolConstant(true)))
+      (InvokeContinuation k1 v5))
+    (Branch (IsTrue v2) k2 k3))
+  (InvokeMethod v0 == v1 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 && "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont (k0 v1)
+    (InvokeContinuation return v1))
+  (LetCont (k1)
+    (LetPrim v2 (Constant StringConstant("")))
+    (LetCont (k2)
+      (LetPrim v3 (Constant BoolConstant(true)))
+      (InvokeContinuation k0 v3))
+    (LetCont (k3)
+      (LetPrim v4 (Constant BoolConstant(false)))
+      (InvokeContinuation k0 v4))
+    (Branch (IsTrue v2) k2 k3))
+  (LetCont (k4)
+    (LetPrim v5 (Constant BoolConstant(false)))
+    (InvokeContinuation k0 v5))
+  (Branch (IsTrue v0) k1 k4))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 || "";
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont (k0 v1)
+    (InvokeContinuation return v1))
+  (LetCont (k1)
+    (LetPrim v2 (Constant BoolConstant(true)))
+    (InvokeContinuation k0 v2))
+  (LetCont (k2)
+    (LetPrim v3 (Constant StringConstant("")))
+    (LetCont (k3)
+      (LetPrim v4 (Constant BoolConstant(true)))
+      (InvokeContinuation k0 v4))
+    (LetCont (k4)
+      (LetPrim v5 (Constant BoolConstant(false)))
+      (InvokeContinuation k0 v5))
+    (Branch (IsTrue v3) k3 k4))
+  (Branch (IsTrue v0) k1 k2))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 + "" * 2;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetPrim v2 (Constant IntConstant(2)))
+  (LetCont (k0 v3)
+    (LetCont (k1 v4)
+      (InvokeContinuation return v4))
+    (InvokeMethod v0 + v3 k1))
+  (InvokeMethod v1 * v2 k0))
+'''),
+
+    const TestSpec('''
+main() {
+  return 0 * "" + 2;
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetPrim v1 (Constant StringConstant("")))
+  (LetCont (k0 v2)
+    (LetPrim v3 (Constant IntConstant(2)))
+    (LetCont (k1 v4)
+      (InvokeContinuation return v4))
+    (InvokeMethod v2 + v3 k1))
+  (InvokeMethod v0 * v1 k0))
+'''),
+    ]),
+
+  const Group('If statement', const [
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  }
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0)
+    (LetPrim v0 (Constant NullConstant))
+    (InvokeContinuation return v0))
+  (LetCont (k1)
+    (LetPrim v1 (Constant IntConstant(0)))
+    (LetCont (k2 v2)
+      (InvokeContinuation k0 ))
+    (InvokeStatic print v1 k2))
+  (LetCont (k3)
+    (InvokeContinuation k0 ))
+  (Branch (IsTrue a) k1 k3))
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  } else {
+    print(1);
+  }
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0)
+    (LetPrim v0 (Constant NullConstant))
+    (InvokeContinuation return v0))
+  (LetCont (k1)
+    (LetPrim v1 (Constant IntConstant(0)))
+    (LetCont (k2 v2)
+      (InvokeContinuation k0 ))
+    (InvokeStatic print v1 k2))
+  (LetCont (k3)
+    (LetPrim v3 (Constant IntConstant(1)))
+    (LetCont (k4 v4)
+      (InvokeContinuation k0 ))
+    (InvokeStatic print v3 k4))
+  (Branch (IsTrue a) k1 k3))
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+  } else {
+    print(1);
+    print(2);
+  }
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0)
+    (LetPrim v0 (Constant NullConstant))
+    (InvokeContinuation return v0))
+  (LetCont (k1)
+    (LetPrim v1 (Constant IntConstant(0)))
+    (LetCont (k2 v2)
+      (InvokeContinuation k0 ))
+    (InvokeStatic print v1 k2))
+  (LetCont (k3)
+    (LetPrim v3 (Constant IntConstant(1)))
+    (LetCont (k4 v4)
+      (LetPrim v5 (Constant IntConstant(2)))
+      (LetCont (k5 v6)
+        (InvokeContinuation k0 ))
+      (InvokeStatic print v5 k5))
+    (InvokeStatic print v3 k4))
+  (Branch (IsTrue a) k1 k3))
+'''),
+    ]),
+
+  const Group('Conditional expression', const [
+    const TestSpec('''
+main(a) {
+  return a ? print(0) : print(1);
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0 v0)
+    (InvokeContinuation return v0))
+  (LetCont (k1)
+    (LetPrim v1 (Constant IntConstant(0)))
+    (LetCont (k2 v2)
+      (InvokeContinuation k0 v2))
+    (InvokeStatic print v1 k2))
+  (LetCont (k3)
+    (LetPrim v3 (Constant IntConstant(1)))
+    (LetCont (k4 v4)
+      (InvokeContinuation k0 v4))
+    (InvokeStatic print v3 k4))
+  (Branch (IsTrue a) k1 k3))
+'''),
+    ]),
+
+
+  // These test that unreachable statements are skipped within a block.
+  const Group('Block statements', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  return 0;
+  return 1;
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (InvokeContinuation return v0))
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    return 0;
+    return 1;
+  } else {
+    return 2;
+    return 3;
+  }
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0)
+    (LetPrim v0 (Constant IntConstant(0)))
+    (InvokeContinuation return v0))
+  (LetCont (k1)
+    (LetPrim v1 (Constant IntConstant(2)))
+    (InvokeContinuation return v1))
+  (Branch (IsTrue a) k0 k1))
+'''),
+
+    const TestSpec('''
+main(a) {
+  if (a) {
+    print(0);
+    return 0;
+    return 1;
+  } else {
+    print(2);
+    return 2;
+    return 3;
+  }
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0)
+    (LetPrim v0 (Constant IntConstant(0)))
+    (LetCont (k1 v1)
+      (LetPrim v2 (Constant IntConstant(0)))
+      (InvokeContinuation return v2))
+    (InvokeStatic print v0 k1))
+  (LetCont (k2)
+    (LetPrim v3 (Constant IntConstant(2)))
+    (LetCont (k3 v4)
+      (LetPrim v5 (Constant IntConstant(2)))
+      (InvokeContinuation return v5))
+    (InvokeStatic print v3 k3))
+  (Branch (IsTrue a) k0 k2))
+'''),
+  ]),
+
+  const Group('Constructor invocation', const <TestSpec>[
+    const TestSpec('''
+main(a) {
+  new Object();
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetCont (k0 v0)
+    (LetPrim v1 (Constant NullConstant))
+    (InvokeContinuation return v1))
+  (InvokeConstructor Object  k0))
+'''),
+
+    const TestSpec('''
+main(a) {
+  new Deprecated("");
+}
+''', '''
+(FunctionDefinition main (a return)
+  (LetPrim v0 (Constant StringConstant("")))
+  (LetCont (k0 v1)
+    (LetPrim v2 (Constant NullConstant))
+    (InvokeContinuation return v2))
+  (InvokeConstructor Deprecated v0 k0))
+'''),
+  ]),
+
+  const Group('For loop', const <TestSpec>[
+    const TestSpec('''
+main() {
+  for (;;) {}
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetCont* (k0)
+    (LetPrim v0 (Constant BoolConstant(true)))
+    (LetCont (k1)
+      (LetPrim v1 (Constant NullConstant))
+      (InvokeContinuation return v1))
+    (LetCont (k2)
+      (InvokeContinuation* k0 ))
+    (Branch (IsTrue v0) k2 k1))
+  (InvokeContinuation k0 ))
+'''),
+
+const TestSpec('''
+main() {
+  for (int i = 0; i < 10; i = i + 1) {
+    print(i);
+  }
+}
+''', '''
+(FunctionDefinition main ( return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont* (k0 v1)
+    (LetPrim v2 (Constant IntConstant(10)))
+    (LetCont (k1 v3)
+      (LetCont (k2)
+        (LetPrim v4 (Constant NullConstant))
+        (InvokeContinuation return v4))
+      (LetCont (k3)
+        (LetCont (k4 v5)
+          (LetPrim v6 (Constant IntConstant(1)))
+          (LetCont (k5 v7)
+            (InvokeContinuation* k0 v7))
+          (InvokeMethod v1 + v6 k5))
+        (InvokeStatic print v1 k4))
+      (Branch (IsTrue v3) k3 k2))
+    (InvokeMethod v1 < v2 k1))
+  (InvokeContinuation k0 v0))
+'''),
+
+const TestSpec('''
+main(i) {
+  for (i = 0; i < 10; i = i + 1) {
+    print(i);
+  }
+}
+''', '''
+(FunctionDefinition main (i return)
+  (LetPrim v0 (Constant IntConstant(0)))
+  (LetCont* (k0 v1)
+    (LetPrim v2 (Constant IntConstant(10)))
+    (LetCont (k1 v3)
+      (LetCont (k2)
+        (LetPrim v4 (Constant NullConstant))
+        (InvokeContinuation return v4))
+      (LetCont (k3)
+        (LetCont (k4 v5)
+          (LetPrim v6 (Constant IntConstant(1)))
+          (LetCont (k5 v7)
+            (InvokeContinuation* k0 v7))
+          (InvokeMethod v1 + v6 k5))
+        (InvokeStatic print v1 k4))
+      (Branch (IsTrue v3) k3 k2))
+    (InvokeMethod v1 < v2 k1))
+  (InvokeContinuation k0 v0))
+'''),
+  ]),
+];
diff --git a/pkg/analyzer2dart/test/sexpr_test.dart b/pkg/analyzer2dart/test/sexpr_test.dart
new file mode 100644
index 0000000..c8a6fbf
--- /dev/null
+++ b/pkg/analyzer2dart/test/sexpr_test.dart
@@ -0,0 +1,46 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Unittest test of the CPS ir generated by the analyzer2dart compiler.
+
+import 'mock_sdk.dart';
+import 'package:analyzer/file_system/memory_file_system.dart';
+import 'package:analyzer/src/generated/element.dart';
+import 'package:analyzer/src/generated/sdk.dart';
+import 'package:analyzer/src/generated/source.dart';
+import 'package:compiler/implementation/cps_ir/cps_ir_nodes_sexpr.dart';
+import 'package:unittest/unittest.dart';
+
+import '../lib/src/closed_world.dart';
+import '../lib/src/driver.dart';
+import '../lib/src/converted_world.dart';
+import 'output_helper.dart';
+import 'test_helper.dart';
+import 'sexpr_data.dart';
+
+main() {
+  performTests(TEST_DATA, unittester, checkResult);
+}
+
+checkResult(TestSpec result) {
+  String input = result.input.trim();
+  String expectedOutput = result.output.trim();
+  CollectingOutputProvider outputProvider = new CollectingOutputProvider();
+  MemoryResourceProvider provider = new MemoryResourceProvider();
+  DartSdk sdk = new MockSdk();
+  Driver driver = new Driver(provider, sdk, outputProvider);
+  String rootFile = '/root.dart';
+  provider.newFile(rootFile, input);
+  Source rootSource = driver.setRoot(rootFile);
+  FunctionElement entryPoint = driver.resolveEntryPoint(rootSource);
+  ClosedWorld world = driver.computeWorld(entryPoint);
+  ConvertedWorld convertedWorld = convertWorld(world);
+  String output = convertedWorld.getIr(convertedWorld.mainFunction)
+      .accept(new SExpressionStringifier());
+  expect(output, equals(expectedOutput),
+      reason: 'Input:\n$input\n'
+              'Expected:\n$expectedOutput\n'
+              'Actual:\n$output');
+}
+
diff --git a/pkg/analyzer2dart/test/test_helper.dart b/pkg/analyzer2dart/test/test_helper.dart
new file mode 100644
index 0000000..e8e5a92
--- /dev/null
+++ b/pkg/analyzer2dart/test/test_helper.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// Helpers for defining input/output based unittests through (constant) data.
+
+import 'package:unittest/unittest.dart';
+
+/// A unittest group with a name and a list of input/output results.
+class Group {
+  final String name;
+  final List<TestSpec> results;
+
+  const Group(this.name, this.results);
+}
+
+/// A input/output pair that defines the expected [output] of when processing
+/// the [input].
+class TestSpec {
+  final String input;
+  final String output;
+
+  const TestSpec(this.input, this.output);
+}
+
+typedef TestGroup(Group group, RunTest check);
+typedef RunTest(TestSpec result);
+
+/// Test [data] using [testGroup] and [check].
+void performTests(List<Group> data, TestGroup testGroup, RunTest runTest) {
+  for (Group group in data) {
+    testGroup(group, runTest);
+  }
+}
+
+/// Test group using unittest.
+unittester(Group group, RunTest runTest) {
+  test(group.name, () {
+    for (TestSpec result in group.results) {
+      runTest(result);
+    }
+  });
+}
\ No newline at end of file
diff --git a/pkg/csslib/lib/src/tokenizer_base.dart b/pkg/csslib/lib/src/tokenizer_base.dart
index 07dee48..5501e6c 100644
--- a/pkg/csslib/lib/src/tokenizer_base.dart
+++ b/pkg/csslib/lib/src/tokenizer_base.dart
@@ -52,8 +52,8 @@
   //     http://dev.w3.org/csswg/selectors4/
   bool inSelector = false;
 
-  int _index;
-  int _startIndex;
+  int _index = 0;
+  int _startIndex = 0;
 
   static const String _CDATA_START = '<![CDATA[';
   static const String _CDATA_END = ']]>';
@@ -435,4 +435,3 @@
     }
   }
 }
-
diff --git a/pkg/pkg.status b/pkg/pkg.status
index 9413140..b7f4dbe 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -266,7 +266,7 @@
 scheduled_test/test/scheduled_test/wrap_async_test: Timeout # Issue 21007
 scheduled_test/test/scheduled_test/wrap_future_test: Timeout # Issue 21007
 
-[ $runtime == safari || $runtime == safarimobilesim ]
+[ ($runtime == safari && $builder_tag == mac10_7) || $runtime == safarimobilesim ]
 # Unexplained errors only occuring on Safari.
 typed_data/test/typed_buffers_test: RuntimeError
 
@@ -495,3 +495,10 @@
 
 [ $system == windows ]
 analysis_server/test/integration/search/get_type_hierarchy_test: Pass, Fail # Issue 20436
+
+[ $runtime == safari && $builder_tag == mac10_8 ]
+polymer/e2e_test/good_import/test/import_test: RuntimeError # Issue 21424
+polymer/test/custom_event_test: RuntimeError # Issue 21425
+polymer/test/instance_attrs_test: RuntimeError # Issue 21425
+polymer/test/property_observe_test: RuntimeError # Issue 21425
+intl/test/date_time_format_http_request_test: RuntimeError # Issue 21428
diff --git a/pkg/polymer/CHANGELOG.md b/pkg/polymer/CHANGELOG.md
index 747d319..c45932b 100644
--- a/pkg/polymer/CHANGELOG.md
+++ b/pkg/polymer/CHANGELOG.md
@@ -1,3 +1,7 @@
+#### 0.15.1+3
+  * Make sure that `dart_support.js` is always appended after `platform.js`,
+    [21435](http://dartbug.com/21435).
+
 #### 0.15.1+2
   * Handle and warn about cases where a script file is included twice from the
     same entrypoint [21332](http://dartbug.com/21332).
diff --git a/pkg/polymer/lib/src/build/polyfill_injector.dart b/pkg/polymer/lib/src/build/polyfill_injector.dart
index 2001fac..2dc3b32 100644
--- a/pkg/polymer/lib/src/build/polyfill_injector.dart
+++ b/pkg/polymer/lib/src/build/polyfill_injector.dart
@@ -38,7 +38,7 @@
         detailsUri: 'http://goo.gl/5HPeuP');
     return readPrimaryAsHtml(transform, logger).then((document) {
       bool dartSupportFound = false;
-      bool platformJsFound = false;
+      Element platformJs;
       Element dartJs;
       final dartScripts = <Element>[];
 
@@ -47,7 +47,7 @@
         if (src != null) {
           var last = src.split('/').last;
           if (_platformJS.hasMatch(last)) {
-            platformJsFound = true;
+            platformJs = tag;
           } else if (_dartSupportJS.hasMatch(last)) {
             dartSupportFound = true;
           } else if (last == 'dart.js') {
@@ -97,10 +97,24 @@
               '<script src="packages/$urlSegment"></script>\n'));
       }
 
-      var suffix = options.releaseMode ? '.js' : '.concat.js';
-      if (!dartSupportFound) _addScriptFirst('web_components/dart_support.js');
-      // platform.js should come before all other scripts.
-      if (!platformJsFound && options.injectPlatformJs) {
+      // Inserts dart_support.js either at the top of the document or directly
+      // after platform.js if it exists.
+      if (!dartSupportFound) {
+        if (platformJs == null) {
+          _addScriptFirst('web_components/dart_support.js');
+        } else {
+          var parentsNodes = platformJs.parentNode.nodes;
+          parentsNodes.insert(
+              parentsNodes.indexOf(platformJs) + 1,
+              parseFragment(
+                  '\n<script src="packages/web_components/dart_support.js">'
+                  '</script>'));
+        }
+      }
+
+      // By default platform.js should come before all other scripts.
+      if (platformJs == null && options.injectPlatformJs) {
+        var suffix = options.releaseMode ? '.js' : '.concat.js';
         _addScriptFirst('web_components/platform$suffix');
       }
 
diff --git a/pkg/polymer/pubspec.yaml b/pkg/polymer/pubspec.yaml
index 7f1513f..f94eb8a 100644
--- a/pkg/polymer/pubspec.yaml
+++ b/pkg/polymer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: polymer
-version: 0.15.1+2
+version: 0.15.1+3
 author: Polymer.dart Authors <web-ui-dev@dartlang.org>
 description: >
   Polymer.dart is a new type of library for the web, built on top of Web
diff --git a/pkg/polymer/test/build/common.dart b/pkg/polymer/test/build/common.dart
index eed4c20..3eaa805 100644
--- a/pkg/polymer/test/build/common.dart
+++ b/pkg/polymer/test/build/common.dart
@@ -199,11 +199,12 @@
 
 const EMPTY_DATA = '{"experimental_bootstrap":false,"script_ids":[]}';
 
-const WEB_COMPONENTS_TAG =
-    '<script src="packages/web_components/platform.js"></script>\n'
-    '<script src="packages/web_components/dart_support.js"></script>\n';
 const DART_SUPPORT_TAG =
     '<script src="packages/web_components/dart_support.js"></script>\n';
+const PLATFORM_JS_TAG =
+    '<script src="packages/web_components/platform.js"></script>\n';
+const WEB_COMPONENTS_TAG =
+    '$PLATFORM_JS_TAG$DART_SUPPORT_TAG';
 
 const INTEROP_TAG = '<script src="packages/browser/interop.js"></script>\n';
 const DART_JS_TAG = '<script src="packages/browser/dart.js"></script>';
diff --git a/pkg/polymer/test/build/polyfill_injector_test.dart b/pkg/polymer/test/build/polyfill_injector_test.dart
index 84af1c7..6eba339 100644
--- a/pkg/polymer/test/build/polyfill_injector_test.dart
+++ b/pkg/polymer/test/build/polyfill_injector_test.dart
@@ -74,6 +74,40 @@
           '</body></html>',
     });
 
+  testPhases('dart_support.js after platform.js, platform present', phases, {
+      'a|web/test.html':
+          '<!DOCTYPE html><html><head>'
+          '$PLATFORM_JS_TAG'
+          '</head><body>'
+          '<script type="application/dart" src="a.dart"></script>'
+          '$dartJsTag'
+    }, {
+      'a|web/test.html':
+          '<!DOCTYPE html><html><head>'
+          '$WEB_COMPONENTS_TAG'
+          '</head><body>'
+          '<script ${type}src="a.dart$ext"$async></script>'
+          '$dartJsTag'
+          '</body></html>',
+    });
+
+  testPhases('dart_support.js after platform.js, dart_support present', phases, {
+      'a|web/test.html':
+          '<!DOCTYPE html><html><head>'
+          '$DART_SUPPORT_TAG'
+          '</head><body>'
+          '<script type="application/dart" src="a.dart"></script>'
+          '$dartJsTag'
+    }, {
+      'a|web/test.html':
+          '<!DOCTYPE html><html><head>'
+          '$WEB_COMPONENTS_TAG'
+          '</head><body>'
+          '<script ${type}src="a.dart$ext"$async></script>'
+          '$dartJsTag'
+          '</body></html>',
+    });
+
   var noPlatformPhases = [[new PolyfillInjector(new TransformOptions(
         directlyIncludeJS: js, injectPlatformJs: false))]];
 
diff --git a/pkg/string_scanner/CHANGELOG.md b/pkg/string_scanner/CHANGELOG.md
index f1d8763..d7f09f3 100644
--- a/pkg/string_scanner/CHANGELOG.md
+++ b/pkg/string_scanner/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 0.1.1
+
+* Declare `SpanScanner`'s exposed `SourceSpan`s and `SourceLocation`s to be
+  `FileSpan`s and `FileLocation`s. They always were underneath, but callers may
+  now rely on it.
+
+* Add `SpanScanner.location`, which returns the scanner's current
+  `SourceLocation`.
+
 ## 0.1.0
 
 * Switch from `source_maps`' `Span` class to `source_span`'s `SourceSpan` class.
diff --git a/pkg/string_scanner/lib/src/span_scanner.dart b/pkg/string_scanner/lib/src/span_scanner.dart
index d8dc230..a70d5fd 100644
--- a/pkg/string_scanner/lib/src/span_scanner.dart
+++ b/pkg/string_scanner/lib/src/span_scanner.dart
@@ -34,28 +34,31 @@
     this.position = state.position;
   }
 
-  /// The [SourceSpan] for [lastMatch].
+  /// The [FileSpan] for [lastMatch].
   ///
   /// This is the span for the entire match. There's no way to get spans for
   /// subgroups since [Match] exposes no information about their positions.
-  SourceSpan get lastSpan => _lastSpan;
-  SourceSpan _lastSpan;
+  FileSpan get lastSpan => _lastSpan;
+  FileSpan _lastSpan;
+
+  /// The current location of the scanner.
+  FileLocation get location => _sourceFile.location(position);
 
   /// Returns an empty span at the current location.
-  SourceSpan get emptySpan => _sourceFile.location(position).pointSpan();
+  FileSpan get emptySpan => location.pointSpan();
 
   /// Creates a new [SpanScanner] that starts scanning from [position].
   ///
   /// [sourceUrl] is used as [SourceLocation.sourceUrl] for the returned
-  /// [SourceSpan]s as well as for error reporting. It can be a [String], a
+  /// [FileSpan]s as well as for error reporting. It can be a [String], a
   /// [Uri], or `null`.
   SpanScanner(String string, {sourceUrl, int position})
       : _sourceFile = new SourceFile(string, url: sourceUrl),
         super(string, sourceUrl: sourceUrl, position: position);
 
-  /// Creates a [SourceSpan] representing the source range between [startState]
+  /// Creates a [FileSpan] representing the source range between [startState]
   /// and the current position.
-  SourceSpan spanFrom(LineScannerState startState) =>
+  FileSpan spanFrom(LineScannerState startState) =>
       _sourceFile.span(startState.position, position);
 
   bool matches(Pattern pattern) {
diff --git a/pkg/string_scanner/pubspec.yaml b/pkg/string_scanner/pubspec.yaml
index 1451fc5..831dfac 100644
--- a/pkg/string_scanner/pubspec.yaml
+++ b/pkg/string_scanner/pubspec.yaml
@@ -1,5 +1,5 @@
 name: string_scanner
-version: 0.1.0
+version: 0.1.1
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://www.dartlang.org
 description: >
diff --git a/pkg/template_binding/CHANGELOG.md b/pkg/template_binding/CHANGELOG.md
index 2840f8c..960805b 100644
--- a/pkg/template_binding/CHANGELOG.md
+++ b/pkg/template_binding/CHANGELOG.md
@@ -1,5 +1,6 @@
-#### Pub version 0.13.1-dev
+#### Pub version 0.13.1
   * Up to date with release 0.4.2 ([TemplateBinding#35b7880][35b7880]).
+  * Widen web_components version constraint to include 0.9.0.
 
 #### Pub version 0.13.0+1
   * Widen web_components version constraint.
diff --git a/pkg/template_binding/pubspec.yaml b/pkg/template_binding/pubspec.yaml
index c772110..4692743 100644
--- a/pkg/template_binding/pubspec.yaml
+++ b/pkg/template_binding/pubspec.yaml
@@ -1,5 +1,5 @@
 name: template_binding
-version: 0.13.1-dev
+version: 0.13.1
 author: Polymer.dart Team <web-ui-dev@dartlang.org>
 description: >
   Extends the capabilities of the HTML Template Element by enabling it to
diff --git a/runtime/CPPLINT.cfg b/runtime/CPPLINT.cfg
new file mode 100644
index 0000000..64aa482
--- /dev/null
+++ b/runtime/CPPLINT.cfg
@@ -0,0 +1,7 @@
+# Do not continue looking up the directory hierarchy
+# for more config files.
+set noparent
+
+# Do not limit function size. For example parts of
+# the simulator are really large.
+filter=-readability/fn_size
diff --git a/runtime/bin/dbg_message.cc b/runtime/bin/dbg_message.cc
index 30eb730..e507544 100644
--- a/runtime/bin/dbg_message.cc
+++ b/runtime/bin/dbg_message.cc
@@ -1096,8 +1096,18 @@
   while (true) {
     // Handle all available vm service messages, up to a resume
     // request.
-    if (Dart_HandleServiceMessages()) {
-      break;
+    while (Dart_HasServiceMessages()) {
+      // Release the message queue lock before handling service
+      // messages.  This allows notifications to come in while we are
+      // processing long requests and avoids deadlock with the PortMap
+      // lock in the vm.
+      msg_queue_lock_.Exit();
+      bool resume = Dart_HandleServiceMessages();
+      msg_queue_lock_.Enter();
+      if (resume) {
+        // Resume requested through the vm service.
+        break;
+      }
     }
 
     // Handle all available debug messages, up to a resume request.
diff --git a/runtime/bin/eventhandler.h b/runtime/bin/eventhandler.h
index 54845d0..80efaca 100644
--- a/runtime/bin/eventhandler.h
+++ b/runtime/bin/eventhandler.h
@@ -29,6 +29,14 @@
   kPipe = 17,
 };
 
+#define COMMAND_MASK ((1 << kCloseCommand) | \
+                      (1 << kShutdownReadCommand) | \
+                      (1 << kShutdownWriteCommand) | \
+                      (1 << kReturnTokenCommand))
+#define IS_COMMAND(data, command_bit) \
+    ((data & COMMAND_MASK) == (1 << command_bit))  // NOLINT
+#define ASSERT_NO_COMMAND(data) ASSERT((data & COMMAND_MASK) == 0)  // NOLINT
+#define TOKEN_COUNT(data) (data & ((1 << kCloseCommand) - 1))
 
 class TimeoutQueue {
  private:
diff --git a/runtime/bin/eventhandler_android.cc b/runtime/bin/eventhandler_android.cc
index b1a4b66..680bcae 100644
--- a/runtime/bin/eventhandler_android.cc
+++ b/runtime/bin/eventhandler_android.cc
@@ -174,16 +174,14 @@
       shutdown_ = true;
     } else {
       SocketData* sd = GetSocketData(msg[i].id);
-      if ((msg[i].data & (1 << kShutdownReadCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownReadCommand));
+
+      if (IS_COMMAND(msg[i].data, kShutdownReadCommand)) {
         // Close the socket for reading.
         shutdown(sd->fd(), SHUT_RD);
-      } else if ((msg[i].data & (1 << kShutdownWriteCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownWriteCommand));
+      } else if (IS_COMMAND(msg[i].data, kShutdownWriteCommand)) {
         // Close the socket for writing.
         shutdown(sd->fd(), SHUT_WR);
-      } else if ((msg[i].data & (1 << kCloseCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kCloseCommand));
+      } else if (IS_COMMAND(msg[i].data, kCloseCommand)) {
         // Close the socket and free system resources and move on to
         // next message.
         RemoveFromEpollInstance(epoll_fd_, sd);
@@ -192,14 +190,16 @@
         socket_map_.Remove(GetHashmapKeyFromFd(fd), GetHashmapHashFromFd(fd));
         delete sd;
         DartUtils::PostInt32(msg[i].dart_port, 1 << kDestroyedEvent);
-      } else if ((msg[i].data & (1 << kReturnTokenCommand)) != 0) {
-        int count = msg[i].data & ((1 << kReturnTokenCommand) - 1);
+      } else if (IS_COMMAND(msg[i].data, kReturnTokenCommand)) {
+        int count = TOKEN_COUNT(msg[i].data);
+
         for (int i = 0; i < count; i++) {
           if (sd->ReturnToken()) {
             AddToEpollInstance(epoll_fd_, sd);
           }
         }
       } else {
+        ASSERT_NO_COMMAND(msg[i].data);
         // Setup events to wait for.
         sd->SetPortAndMask(msg[i].dart_port, msg[i].data);
         AddToEpollInstance(epoll_fd_, sd);
diff --git a/runtime/bin/eventhandler_linux.cc b/runtime/bin/eventhandler_linux.cc
index 0701810..97b305b 100644
--- a/runtime/bin/eventhandler_linux.cc
+++ b/runtime/bin/eventhandler_linux.cc
@@ -199,20 +199,17 @@
     } else {
       SocketData* sd = GetSocketData(
           msg[i].id, (msg[i].data & (1 << kListeningSocket)) != 0);
-      if ((msg[i].data & (1 << kShutdownReadCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownReadCommand));
+      if (IS_COMMAND(msg[i].data, kShutdownReadCommand)) {
         ASSERT(!sd->IsListeningSocket());
         // Close the socket for reading.
         VOID_NO_RETRY_EXPECTED(shutdown(sd->fd(), SHUT_RD));
-      } else if ((msg[i].data & (1 << kShutdownWriteCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownWriteCommand));
+      } else if (IS_COMMAND(msg[i].data, kShutdownWriteCommand)) {
         ASSERT(!sd->IsListeningSocket());
         // Close the socket for writing.
         VOID_NO_RETRY_EXPECTED(shutdown(sd->fd(), SHUT_WR));
-      } else if ((msg[i].data & (1 << kCloseCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kCloseCommand));
-        // Close the socket and free system resources and move on to
-        // next message.
+      } else if (IS_COMMAND(msg[i].data, kCloseCommand)) {
+        // Close the socket and free system resources and move on to next
+        // message.
         if (sd->RemovePort(msg[i].dart_port)) {
           RemoveFromEpollInstance(epoll_fd_, sd);
           intptr_t fd = sd->fd();
@@ -221,12 +218,13 @@
           delete sd;
         }
         DartUtils::PostInt32(msg[i].dart_port, 1 << kDestroyedEvent);
-      } else if ((msg[i].data & (1 << kReturnTokenCommand)) != 0) {
-        int count = msg[i].data & ((1 << kReturnTokenCommand) - 1);
+      } else if (IS_COMMAND(msg[i].data, kReturnTokenCommand)) {
+        int count = TOKEN_COUNT(msg[i].data);
         if (sd->ReturnToken(msg[i].dart_port, count)) {
           AddToEpollInstance(epoll_fd_, sd);
         }
       } else {
+        ASSERT_NO_COMMAND(msg[i].data);
         // Setup events to wait for.
         if (sd->AddPort(msg[i].dart_port)) {
           sd->SetMask(msg[i].data);
diff --git a/runtime/bin/eventhandler_linux.h b/runtime/bin/eventhandler_linux.h
index 1a8d968..0db4f3f 100644
--- a/runtime/bin/eventhandler_linux.h
+++ b/runtime/bin/eventhandler_linux.h
@@ -187,21 +187,32 @@
   virtual bool RemovePort(Dart_Port port) {
     HashMap::Entry* entry = tokens_map_.Lookup(
         GetHashmapKeyFromPort(port), GetHashmapHashFromPort(port), false);
-    ASSERT(entry != NULL);
-    intptr_t tokens = reinterpret_cast<intptr_t>(entry->value);
-    if (tokens == 0) {
-      while (idle_ports_.head() != port) {
-        idle_ports_.Rotate();
+    if (entry != NULL) {
+      intptr_t tokens = reinterpret_cast<intptr_t>(entry->value);
+      if (tokens == 0) {
+        while (idle_ports_.head() != port) {
+          idle_ports_.Rotate();
+        }
+        idle_ports_.RemoveHead();
+      } else {
+        while (live_ports_.head() != port) {
+          live_ports_.Rotate();
+        }
+        live_ports_.RemoveHead();
       }
-      idle_ports_.RemoveHead();
+      tokens_map_.Remove(
+          GetHashmapKeyFromPort(port), GetHashmapHashFromPort(port));
     } else {
-      while (live_ports_.head() != port) {
-        live_ports_.Rotate();
-      }
-      live_ports_.RemoveHead();
+      // NOTE: This is a listening socket which has been immediately closed.
+      //
+      // If a listening socket is not listened on, the event handler does not
+      // know about it beforehand. So the first time the event handler knows
+      // about it, is when it is supposed to be closed. We therefore do nothing
+      // here.
+      //
+      // But whether to close it, depends on whether other isolates have it open
+      // as well or not.
     }
-    tokens_map_.Remove(
-        GetHashmapKeyFromPort(port), GetHashmapHashFromPort(port));
     return !live_ports_.HasHead();
   }
 
diff --git a/runtime/bin/eventhandler_macos.cc b/runtime/bin/eventhandler_macos.cc
index ede500f..49ec247 100644
--- a/runtime/bin/eventhandler_macos.cc
+++ b/runtime/bin/eventhandler_macos.cc
@@ -192,16 +192,13 @@
       shutdown_ = true;
     } else {
       SocketData* sd = GetSocketData(msg[i].id);
-      if ((msg[i].data & (1 << kShutdownReadCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownReadCommand));
+      if (IS_COMMAND(msg[i].data, kShutdownReadCommand)) {
         // Close the socket for reading.
         shutdown(sd->fd(), SHUT_RD);
-      } else if ((msg[i].data & (1 << kShutdownWriteCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kShutdownWriteCommand));
+      } else if (IS_COMMAND(msg[i].data, kShutdownWriteCommand)) {
         // Close the socket for writing.
         shutdown(sd->fd(), SHUT_WR);
-      } else if ((msg[i].data & (1 << kCloseCommand)) != 0) {
-        ASSERT(msg[i].data == (1 << kCloseCommand));
+      } else if (IS_COMMAND(msg[i].data, kCloseCommand)) {
         // Close the socket and free system resources.
         RemoveFromKqueue(kqueue_fd_, sd);
         intptr_t fd = sd->fd();
@@ -209,14 +206,15 @@
         socket_map_.Remove(GetHashmapKeyFromFd(fd), GetHashmapHashFromFd(fd));
         delete sd;
         DartUtils::PostInt32(msg[i].dart_port, 1 << kDestroyedEvent);
-      } else if ((msg[i].data & (1 << kReturnTokenCommand)) != 0) {
-        int count = msg[i].data & ((1 << kReturnTokenCommand) - 1);
+      } else if (IS_COMMAND(msg[i].data, kReturnTokenCommand)) {
+        int count = TOKEN_COUNT(msg[i].data);
         for (int i = 0; i < count; i++) {
           if (sd->ReturnToken()) {
             AddToKqueue(kqueue_fd_, sd);
           }
         }
       } else {
+        ASSERT_NO_COMMAND(msg[i].data);
         // Setup events to wait for.
         ASSERT((msg[i].data > 0) && (msg[i].data < kIntptrMax));
         ASSERT(sd->port() == 0);
diff --git a/runtime/bin/socket_patch.dart b/runtime/bin/socket_patch.dart
index d2dfc14..ab5019b 100644
--- a/runtime/bin/socket_patch.dart
+++ b/runtime/bin/socket_patch.dart
@@ -805,7 +805,7 @@
     if (write) issueWriteEvent();
     if (!flagsSent && !isClosing) {
       flagsSent = true;
-      int flags = typeFlags & TYPE_TYPE_MASK;
+      int flags = 0;
       if (!isClosedRead) flags |= 1 << READ_EVENT;
       if (!isClosedWrite) flags |= 1 << WRITE_EVENT;
       sendToEventHandler(flags);
@@ -861,9 +861,10 @@
   }
 
   void sendToEventHandler(int data) {
+    int fullData = (typeFlags & TYPE_TYPE_MASK) | data;
     assert(!isClosing);
     connectToEventHandler();
-    _EventHandler._sendData(this, eventPort.sendPort, data);
+    _EventHandler._sendData(this, eventPort.sendPort, fullData);
   }
 
   void connectToEventHandler() {
@@ -1182,6 +1183,7 @@
         _controller.close();
         if (_referencePort != null) {
           _referencePort.close();
+          _referencePort = null;
         }
       });
     return _controller.stream.listen(
@@ -1195,7 +1197,15 @@
 
   InternetAddress get address => _socket.address;
 
-  Future close() => _socket.close().then((_) => this);
+  Future close() {
+    return _socket.close().then((_) {
+      if (_referencePort != null) {
+        _referencePort.close();
+        _referencePort = null;
+      }
+      return this;
+    });
+  }
 
   void _pause() {
     _socket.setListening(read: false, write: false);
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index cd5b76f..f27c501 100755
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -1133,6 +1133,13 @@
 DART_EXPORT bool Dart_HandleServiceMessages();
 
 /**
+ * Does the current isolate have pending service messages?
+ *
+ * \return true if the isolate has pending service messages, false otherwise.
+ */
+DART_EXPORT bool Dart_HasServiceMessages();
+
+/**
  * Processes any incoming messages for the current isolate.
  *
  * This function may only be used when the embedder has not provided
diff --git a/runtime/lib/convert_patch.dart b/runtime/lib/convert_patch.dart
index 2a4ab1b..eea0fa5 100644
--- a/runtime/lib/convert_patch.dart
+++ b/runtime/lib/convert_patch.dart
@@ -1,7 +1,9 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import "dart:_internal" show POWERS_OF_TEN;
+
 // JSON conversion.
 
 patch _parseJson(String json, reviver(var key, var value)) {
@@ -11,7 +13,11 @@
   } else {
     listener = new _ReviverJsonListener(reviver);
   }
-  new _JsonParser(json, listener).parse();
+  var parser = new _JsonStringParser(listener);
+  parser.chunk = json;
+  parser.chunkEnd = json.length;
+  parser.parse(0);
+  parser.close();
   return listener.result;
 }
 
@@ -19,6 +25,9 @@
 
 // Simple API for JSON parsing.
 
+/**
+ * Listener for parsing events from [_ChunkedJsonParser].
+ */
 abstract class _JsonListener {
   void handleString(String value) {}
   void handleNumber(num value) {}
@@ -34,7 +43,7 @@
 }
 
 /**
- * A [JsonListener] that builds data objects from the parser events.
+ * A [_JsonListener] that builds data objects from the parser events.
  *
  * This is a simple stack-based object builder. It keeps the most recently
  * seen value in a variable, and uses it depending on the following event.
@@ -135,7 +144,72 @@
   }
 }
 
-class _JsonParser {
+/**
+ * Buffer holding parts of a numeral.
+ *
+ * The buffer contains the characters of a JSON number.
+ * These are all ASCII, so an [Uint8List] is used as backing store.
+ *
+ * This buffer is used when a JSON number is split between separate chunks.
+ *
+ */
+class _NumberBuffer {
+  static const int minCapacity = 16;
+  static const int kDefaultOverhead = 5;
+  Uint8List list;
+  int length = 0;
+  _NumberBuffer(int initialCapacity)
+      : list = new Uint8List(_initialCapacity(initialCapacity));
+
+  int get capacity => list.length;
+
+  // Pick an initial capacity greater than the first part's size.
+  // The typical use case has two parts, this is the attempt at
+  // guessing the size of the second part without overdoing it.
+  // The default estimate of the second part is [kDefaultOverhead],
+  // then round to multiplum of four, and return the result,
+  // or [minCapacity] if that is greater.
+  static int _initialCapacity(int minCapacity) {
+    minCapacity += kDefaultOverhead;
+    if (minCapacity < minCapacity) return minCapacity;
+    minCapacity = (minCapacity + 3) & ~3;  // Round to multiple of four.
+    return minCapacity;
+  }
+
+  // Grows to the exact size asked for.
+  void ensureCapacity(int newCapacity) {
+    Uint8List list = this.list;
+    if (newCapacity <= list.length) return;
+    Uint8List newList = new Uint8List(newCapacity);
+    newList.setRange(0, list.length, list, 0);
+    this.list = newList;
+  }
+
+  String getString() {
+    var list = this.list;
+    if (length < list.length) {
+      list = new Uint8List.view(list.buffer, 0, length);
+    }
+    String result = new String.fromCharCodes(list);
+    return result;
+  }
+
+  // TODO(lrn): See if parsing of numbers can be abstracted to something
+  // not only working on strings, but also on char-code lists, without lossing
+  // performance.
+  int parseInt() => int.parse(getString());
+  double parseDouble() => double.parse(getString());
+}
+
+/**
+ * Chunked JSON parser.
+ *
+ * Receives inputs in chunks, gives access to individual parts of the input,
+ * and stores input state between chunks.
+ *
+ * Implementations include [String] and UTF-8 parsers.
+ */
+abstract class _ChunkedJsonParser {
   // A simple non-recursive state-based parser for JSON.
   //
   // Literal values accepted in states ARRAY_EMPTY, ARRAY_COMMA, OBJECT_COLON
@@ -172,11 +246,11 @@
   static const int NO_VALUES = 12;
 
   // Objects and arrays are "empty" until their first property/element.
+  // At this position, they may either have an entry or a close-bracket.
   static const int EMPTY = 0;
   static const int NON_EMPTY = 16;
   static const int EMPTY_MASK = 16;  // Empty if zero.
 
-
   static const int VALUE_READ_BITS = NO_VALUES | NON_EMPTY;
 
   // Actual states.
@@ -226,18 +300,466 @@
   static const int LBRACE          = 0x7b;
   static const int RBRACE          = 0x7d;
 
-  final String source;
-  final _JsonListener listener;
-  _JsonParser(this.source, this.listener);
+  // State of partial value at chunk split.
+  static const int NO_PARTIAL      = 0;
+  static const int PARTIAL_STRING  = 1;
+  static const int PARTIAL_NUMERAL = 2;
+  static const int PARTIAL_KEYWORD = 3;
+  static const int MASK_PARTIAL    = 3;
 
-  /** Parses [source], or throws if it fails. */
-  void parse() {
-    final List<int> states = <int>[];
-    int state = STATE_INITIAL;
-    int position = 0;
-    int length = source.length;
+  // Partial states for numerals. Values can be |'ed with PARTIAL_NUMERAL.
+  static const int NUM_SIGN        =  0;  // After initial '-'.
+  static const int NUM_ZERO        =  4;  // After '0' as first digit.
+  static const int NUM_DIGIT       =  8;  // After digit, no '.' or 'e' seen.
+  static const int NUM_DOT         = 12;  // After '.'.
+  static const int NUM_DOT_DIGIT   = 16;  // After a decimal digit (after '.').
+  static const int NUM_E           = 20;  // After 'e' or 'E'.
+  static const int NUM_E_SIGN      = 24;  // After '-' or '+' after 'e' or 'E'.
+  static const int NUM_E_DIGIT     = 28;  // After exponent digit.
+  static const int NUM_SUCCESS     = 32;  // Never stored as partial state.
+
+  // Partial states for strings.
+  static const int STR_PLAIN         =  0;   // Inside string, but not escape.
+  static const int STR_ESCAPE        =  4;   // After '\'.
+  static const int STR_U             =  16;  // After '\u' and 0-3 hex digits.
+  static const int STR_U_COUNT_SHIFT =  2;   // Hex digit count in bits 2-3.
+  static const int STR_U_VALUE_SHIFT =  5;   // Hex digit value in bits 5+.
+
+  // Partial states for keywords.
+  static const int KWD_TYPE_MASK     = 12;
+  static const int KWD_TYPE_SHIFT    = 2;
+  static const int KWD_NULL          = 0;  // Prefix of "null" seen.
+  static const int KWD_TRUE          = 4;  // Prefix of "true" seen.
+  static const int KWD_FALSE         = 8;  // Prefix of "false" seen.
+  static const int KWD_COUNT_SHIFT   = 4;  // Prefix length in bits 4+.
+
+  // Mask used to mask off two lower bits.
+  static const int TWO_BIT_MASK = 3;
+
+  final _JsonListener listener;
+
+  // The current parsing state.
+  int state = STATE_INITIAL;
+  List<int> states = <int>[];
+
+  /**
+   * Stores tokenizer state between chunks.
+   *
+   * This state is stored when a chunk stops in the middle of a
+   * token (string, numeral, boolean or null).
+   *
+   * The partial state is used to continue parsing on the next chunk.
+   * The previous chunk is not retained, any data needed are stored in
+   * this integer, or in the [buffer] field as a string-building buffer
+   * or a [_NumberBuffer].
+   *
+   * Prefix state stored in [prefixState] as bits.
+   *
+   *            ..00 : No partial value (NO_PARTIAL).
+   *
+   *         ..00001 : Partial string, not inside escape.
+   *         ..00101 : Partial string, after '\'.
+   *     ..vvvv1dd01 : Partial \u escape.
+   *                   The 'dd' bits (2-3) encode the number of hex digits seen.
+   *                   Bits 5-16 encode the value of the hex digits seen so far.
+   *
+   *        ..0ddd10 : Partial numeral.
+   *                   The `ddd` bits store the parts of in the numeral seen so
+   *                   far, as the constants `NUM_*` defined above.
+   *                   The characters of the numeral are stored in [buffer]
+   *                   as a [_NumberBuffer].
+   *
+   *      ..0ddd0011 : Partial 'null' keyword.
+   *      ..0ddd0111 : Partial 'true' keyword.
+   *      ..0ddd1011 : Partial 'false' keyword.
+   *                   For all three keywords, the `ddd` bits encode the number
+   *                   of letters seen.
+   */
+  int partialState = NO_PARTIAL;
+
+  /**
+   * Extra data stored while parsing a primitive value.
+   * May be set during parsing, always set at chunk end if a value is partial.
+   *
+   * May contain a string buffer while parsing strings.
+   */
+  var buffer = null;
+
+  _ChunkedJsonParser(this.listener);
+
+  /**
+   * Push the current parse [state] on a stack.
+   *
+   * State is pushed when a new array or object literal starts,
+   * so the parser can go back to the correct value when the literal ends.
+   */
+  void saveState(int state) {
+    states.add(state);
+  }
+
+  /**
+   * Restore a state pushed with [saveState].
+   */
+  int restoreState() {
+    return states.removeLast();  // Throws if empty.
+  }
+
+  /**
+   * Finalizes the parsing.
+   *
+   * Throws if the source read so far doesn't end up with a complete
+   * parsed value. That means it must not be inside a list or object
+   * literal, and any partial value read should also be a valid complete
+   * value.
+   *
+   * The only valid partial state is a number that ends in a digit, and
+   * only if the number is the entire JSON value being parsed
+   * (otherwise it would be inside a list or object).
+   * Such a number will be completed. Any other partial state is an error.
+   */
+  void close() {
+    if (partialState != NO_PARTIAL) {
+      int partialType = partialState & MASK_PARTIAL;
+      if (partialType == PARTIAL_NUMERAL) {
+        int numState = partialState & ~MASK_PARTIAL;
+        // A partial number might be a valid number if we know it's done.
+        // There is an unnecessary overhead if input is a single number,
+        // but this is assumed to be rare.
+        _NumberBuffer buffer = this.buffer;
+        this.buffer = null;
+        finishChunkNumber(numState, 0, 0, buffer);
+      } else if (partialType == PARTIAL_STRING) {
+        fail(chunkEnd, "Unterminated string");
+      } else {
+        assert(partialType == PARTIAL_KEYWORD);
+        fail(chunkEnd);  // Incomplete literal.
+      }
+    }
+    if (state != STATE_END) {
+      fail(chunkEnd);
+    }
+  }
+
+  /**
+   * Read out the result after successfully closing the parser.
+   *
+   * The parser is closed by calling [close] or calling [addSourceChunk] with
+   * `true` as second (`isLast`) argument.
+   */
+  Object get result {
+    return listener.result;
+  }
+
+  /** Sets the current source chunk. */
+  void set chunk(var source);
+
+  /**
+   * Length of current chunk.
+   *
+   * The valid arguments to [getChar] are 0 .. `chunkEnd - 1`.
+   */
+  int get chunkEnd;
+
+  /**
+   * Returns the chunk itself.
+   *
+   * Only used by [fail] to include the chunk in the thrown [FormatException].
+   */
+  get chunk;
+
+  /**
+   * Get charcacter/code unit of current chunk.
+   *
+   * The [index] must be non-negative and less than `chunkEnd`.
+   * In practive, [index] will be no smaller than the `start` argument passed
+   * to [parse].
+   */
+  int getChar(int index);
+
+  /**
+   * Copy ASCII characters from start to end of chunk into a list.
+   *
+   * Used for number buffer (always copies ASCII, so encoding is not important).
+   */
+  void copyCharsToList(int start, int end, List<int> target);
+
+  /**
+   * Build a string using input code units.
+   *
+   * Creates a string buffer and enables adding characters and slices
+   * to that buffer.
+   * The buffer is stored in the [buffer] field. If the string is unterminated,
+   * the same buffer is used to continue parsing in the next chunk.
+   */
+  void beginString();
+  /**
+   * Add single character code to string being built.
+   *
+   * Used for unparsed escape sequences.
+   */
+  void addCharToString(int charCode);
+
+  /**
+   * Adds slice of current chunk to string being built.
+   *
+   * The [start] positions is inclusive, [end] is exclusive.
+   */
+  void addSliceToString(int start, int end);
+
+  /** Finalizes the string being built and returns it as a String. */
+  String endString();
+
+  /**
+   * Extracts a literal string from a slice of the current chunk.
+   *
+   * No interpretation of the content is performed, except for converting
+   * the source format to string.
+   * This can be implemented more or less efficiently depending on the
+   * underlying source.
+   *
+   * This is used for string literals that contain no escapes.
+   */
+  String getString(int start, int end);
+
+  /**
+   * Parse a slice of the current chunk as an integer.
+   *
+   * The format is expected to be correct.
+   */
+  int parseInt(int start, int end) {
+    return int.parse(getString(start, end));
+  }
+
+  /**
+   * Parse a slice of the current chunk as a double.
+   *
+   * The format is expected to be correct.
+   * This is used by [parseNumber] when the double value cannot be
+   * built exactly during parsing.
+   */
+  double parseDouble(int start, int end) {
+    return double.parse(getString(start, end));
+  }
+
+  /**
+   * Create a _NumberBuffer containing the digits from [start] to [chunkEnd].
+   *
+   * This creates a number buffer and initializes it with the part of the
+   * number literal ending the current chunk
+   */
+  void createNumberBuffer(int start) {
+    assert(start >= 0);
+    assert(start < chunkEnd);
+    int length = chunkEnd - start;
+    var buffer = new _NumberBuffer(length);
+    copyCharsToList(start, chunkEnd, buffer.list);
+    buffer.length = length;
+    return buffer;
+  }
+
+  /**
+   * Continues parsing a partial value.
+   */
+  int parsePartial(int position) {
+    if (position == chunkEnd) return position;
+    int partialState = this.partialState;
+    assert(partialState != NO_PARTIAL);
+    int partialType = partialState & MASK_PARTIAL;
+    this.partialState = NO_PARTIAL;
+    partialState = partialState & ~MASK_PARTIAL;
+    assert(partialType != 0);
+    if (partialType == PARTIAL_STRING) {
+      position = parsePartialString(position, partialState);
+    } else if (partialType == PARTIAL_NUMERAL) {
+      position = parsePartialNumber(position, partialState);
+    } else if (partialType == PARTIAL_KEYWORD) {
+      position = parsePartialKeyword(position, partialState);
+    }
+    return position;
+  }
+
+  /**
+   * Parses the remainder of a number into the number buffer.
+   *
+   * Syntax is checked while pasing.
+   * Starts at position, which is expected to be the start of the chunk,
+   * and returns the index of the first non-number-literal character found,
+   * or chunkEnd if the entire chunk is a valid number continuation.
+   * Throws if a syntax error is detected.
+   */
+  int parsePartialNumber(int position, int state) {
+    int start = position;
+    // Primitive implementation, can be optimized.
+    _NumberBuffer buffer = this.buffer;
+    this.buffer = null;
+    int end = chunkEnd;
+    toBailout: {
+      if (position == end) break toBailout;
+      int char = getChar(position);
+      int digit = char ^ CHAR_0;
+      if (state == NUM_SIGN) {
+        if (digit <= 9) {
+          if (digit == 0) {
+            state = NUM_ZERO;
+          } else {
+            state = NUM_DIGIT;
+          }
+          position++;
+          if (position == end) break toBailout;
+          char = getChar(position);
+          digit = char ^ CHAR_0;
+        } else {
+          return fail(position);
+        }
+      }
+      if (state == NUM_ZERO) {
+        // JSON does not allow insignificant leading zeros (e.g., "09").
+        if (digit <= 9) return fail(position);
+        state = NUM_DIGIT;
+      }
+      while (state == NUM_DIGIT) {
+        if (digit > 9) {
+          if (char == DECIMALPOINT) {
+            state = NUM_DOT;
+          } else if ((char | 0x20) == CHAR_e) {
+            state = NUM_E;
+          } else {
+            finishChunkNumber(state, start, position, buffer);
+            return position;
+          }
+        }
+        position++;
+        if (position == end) break toBailout;
+        char = getChar(position);
+        digit = char ^ CHAR_0;
+      }
+      if (state == NUM_DOT) {
+        if (digit > 9) return fail(position);
+        state = NUM_DOT_DIGIT;
+      }
+      while (state == NUM_DOT_DIGIT) {
+        if (digit > 9) {
+          if ((char | 0x20) == CHAR_e) {
+            state = NUM_E;
+          } else {
+            finishChunkNumber(state, start, position, buffer);
+            return position;
+          }
+        }
+        position++;
+        if (position == end) break toBailout;
+        char = getChar(position);
+        digit = char ^ CHAR_0;
+      }
+      if (state == NUM_E) {
+        if (char == PLUS || char == MINUS) {
+          state = NUM_E_SIGN;
+          position++;
+          if (position == end) break toBailout;
+          char = getChar(position);
+          digit = char ^ CHAR_0;
+        }
+      }
+      assert(state >= NUM_E);
+      while (digit <= 9) {
+        state = NUM_E_DIGIT;
+        position++;
+        if (position == end) break toBailout;
+        char = getChar(position);
+        digit = char ^ CHAR_0;
+      }
+      finishChunkNumber(state, start, position, buffer);
+      return position;
+    }
+    // Bailout code in case the current chunk ends while parsing the numeral.
+    assert(position == end);
+    continueChunkNumber(state, start, buffer);
+    return chunkEnd;
+  }
+
+  /**
+   * Continues parsing a partial string literal.
+   *
+   * Handles partial escapes and then hands the parsing off to
+   * [parseStringToBuffer].
+   */
+  int parsePartialString(int position, int partialState) {
+    if (partialState == STR_PLAIN) {
+      return parseStringToBuffer(position);
+    }
+    if (partialState == STR_ESCAPE) {
+      position = parseStringEscape(position);
+      // parseStringEscape sets partialState if it sees the end.
+      if (position == chunkEnd) return position;
+      return parseStringToBuffer(position);
+    }
+    assert((partialState & STR_U) != 0);
+    int value = partialState >> STR_U_VALUE_SHIFT;
+    int count = (partialState >> STR_U_COUNT_SHIFT) & TWO_BIT_MASK;
+    for (int i = count; i < 4; i++, position++) {
+      if (position == chunkEnd) return chunkStringEscapeU(i, value);
+      int char = getChar(position);
+      int digit = parseHexDigit(char);
+      if (digit < 0) fail(position, "Invalid hex digit");
+      value = 16 * value + digit;
+    }
+    addCharToString(value);
+    return parseStringToBuffer(position);
+  }
+
+  /**
+   * Continues parsing a partial keyword.
+   */
+  int parsePartialKeyword(int position, int partialState) {
+    int keywordType = partialState & KWD_TYPE_MASK;
+    int count = partialState >> KWD_COUNT_SHIFT;
+    int keywordTypeIndex = keywordType >> KWD_TYPE_SHIFT;
+    String keyword = const ["null", "true", "false"][keywordTypeIndex];
+    assert(count < keyword.length);
+    do {
+      if (position == chunkEnd) {
+        this.partialState =
+            PARTIAL_KEYWORD | keywordType | (count << KWD_COUNT_SHIFT);
+        return chunkEnd;
+      }
+      int expectedChar = keyword.codeUnitAt(count);
+      if (getChar(position) != expectedChar) return fail(position);
+      position++;
+      count++;
+    } while (count < keyword.length);
+    if (keywordType == KWD_NULL) {
+      listener.handleNull();
+    } else {
+      listener.handleBool(keywordType == KWD_TRUE);
+    }
+    return position;
+  }
+
+  /** Convert hex-digit to its value. Returns -1 if char is not a hex digit. */
+  int parseHexDigit(int char) {
+    int digit = char ^ 0x30;
+    if (digit <= 9) return digit;
+    int letter = (char | 0x20) ^ 0x60;
+    // values 1 .. 6 are 'a' through 'f'
+    if (letter <= 6 && letter > 0) return letter + 9;
+    return -1;
+  }
+
+  /**
+   * Parses the current chunk as a chunk of JSON.
+   *
+   * Starts parsing at [position] and continues until [chunkEnd].
+   * Continues parsing where the previous chunk (if any) ended.
+   */
+  void parse(int position) {
+    int length = chunkEnd;
+    if (partialState != NO_PARTIAL) {
+      position = parsePartial(position);
+      if (position == length) return;
+    }
+    int state = this.state;
     while (position < length) {
-      int char = source.codeUnitAt(position);
+      int char = getChar(position);
       switch (char) {
         case SPACE:
         case CARRIAGE_RETURN:
@@ -246,41 +768,41 @@
           position++;
           break;
         case QUOTE:
-          if ((state & ALLOW_STRING_MASK) != 0) fail(position);
-          position = parseString(position + 1);
+          if ((state & ALLOW_STRING_MASK) != 0) return fail(position);
           state |= VALUE_READ_BITS;
+          position = parseString(position + 1);
           break;
         case LBRACKET:
-          if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
+          if ((state & ALLOW_VALUE_MASK) != 0) return fail(position);
           listener.beginArray();
-          states.add(state);
+          saveState(state);
           state = STATE_ARRAY_EMPTY;
           position++;
           break;
         case LBRACE:
-          if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
+          if ((state & ALLOW_VALUE_MASK) != 0) return fail(position);
           listener.beginObject();
-          states.add(state);
+          saveState(state);
           state = STATE_OBJECT_EMPTY;
           position++;
           break;
         case CHAR_n:
-          if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
-          position = parseNull(position);
+          if ((state & ALLOW_VALUE_MASK) != 0) return fail(position);
           state |= VALUE_READ_BITS;
+          position = parseNull(position);
           break;
         case CHAR_f:
-          if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
-          position = parseFalse(position);
+          if ((state & ALLOW_VALUE_MASK) != 0) return fail(position);
           state |= VALUE_READ_BITS;
+          position = parseFalse(position);
           break;
         case CHAR_t:
-          if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
-          position = parseTrue(position);
+          if ((state & ALLOW_VALUE_MASK) != 0) return fail(position);
           state |= VALUE_READ_BITS;
+          position = parseTrue(position);
           break;
         case COLON:
-          if (state != STATE_OBJECT_KEY) fail(position);
+          if (state != STATE_OBJECT_KEY) return fail(position);
           listener.propertyName();
           state = STATE_OBJECT_COLON;
           position++;
@@ -295,7 +817,7 @@
             state = STATE_ARRAY_COMMA;
             position++;
           } else {
-            fail(position);
+            return fail(position);
           }
           break;
         case RBRACKET:
@@ -305,9 +827,9 @@
             listener.arrayElement();
             listener.endArray();
           } else {
-            fail(position);
+            return fail(position);
           }
-          state = states.removeLast() | VALUE_READ_BITS;
+          state = restoreState() | VALUE_READ_BITS;
           position++;
           break;
         case RBRACE:
@@ -317,19 +839,19 @@
             listener.propertyValue();
             listener.endObject();
           } else {
-            fail(position);
+            return fail(position);
           }
-          state = states.removeLast() | VALUE_READ_BITS;
+          state = restoreState() | VALUE_READ_BITS;
           position++;
           break;
         default:
           if ((state & ALLOW_VALUE_MASK) != 0) fail(position);
-          position = parseNumber(char, position);
           state |= VALUE_READ_BITS;
+          position = parseNumber(char, position);
           break;
       }
     }
-    if (state != STATE_END) fail(position);
+    this.state = state;
   }
 
   /**
@@ -338,12 +860,14 @@
    * [:source[position]:] must be "t".
    */
   int parseTrue(int position) {
-    assert(source.codeUnitAt(position) == CHAR_t);
-    if (source.length < position + 4) fail(position, "Unexpected identifier");
-    if (source.codeUnitAt(position + 1) != CHAR_r ||
-        source.codeUnitAt(position + 2) != CHAR_u ||
-        source.codeUnitAt(position + 3) != CHAR_e) {
-      fail(position);
+    assert(getChar(position) == CHAR_t);
+    if (chunkEnd < position + 4) {
+      return parseKeywordPrefix(position, "true", KWD_TRUE);
+    }
+    if (getChar(position + 1) != CHAR_r ||
+        getChar(position + 2) != CHAR_u ||
+        getChar(position + 3) != CHAR_e) {
+      return fail(position);
     }
     listener.handleBool(true);
     return position + 4;
@@ -355,13 +879,15 @@
    * [:source[position]:] must be "f".
    */
   int parseFalse(int position) {
-    assert(source.codeUnitAt(position) == CHAR_f);
-    if (source.length < position + 5) fail(position, "Unexpected identifier");
-    if (source.codeUnitAt(position + 1) != CHAR_a ||
-        source.codeUnitAt(position + 2) != CHAR_l ||
-        source.codeUnitAt(position + 3) != CHAR_s ||
-        source.codeUnitAt(position + 4) != CHAR_e) {
-      fail(position);
+    assert(getChar(position) == CHAR_f);
+    if (chunkEnd < position + 5) {
+      return parseKeywordPrefix(position, "false", KWD_FALSE);
+    }
+    if (getChar(position + 1) != CHAR_a ||
+        getChar(position + 2) != CHAR_l ||
+        getChar(position + 3) != CHAR_s ||
+        getChar(position + 4) != CHAR_e) {
+      return fail(position);
     }
     listener.handleBool(false);
     return position + 5;
@@ -373,17 +899,33 @@
    * [:source[position]:] must be "n".
    */
   int parseNull(int position) {
-    assert(source.codeUnitAt(position) == CHAR_n);
-    if (source.length < position + 4) fail(position, "Unexpected identifier");
-    if (source.codeUnitAt(position + 1) != CHAR_u ||
-        source.codeUnitAt(position + 2) != CHAR_l ||
-        source.codeUnitAt(position + 3) != CHAR_l) {
-      fail(position);
+    assert(getChar(position) == CHAR_n);
+    if (chunkEnd < position + 4) {
+      return parseKeywordPrefix(position, "null", KWD_NULL);
+    }
+    if (getChar(position + 1) != CHAR_u ||
+        getChar(position + 2) != CHAR_l ||
+        getChar(position + 3) != CHAR_l) {
+      return fail(position);
     }
     listener.handleNull();
     return position + 4;
   }
 
+  int parseKeywordPrefix(int position, String chars, int type) {
+    assert(getChar(position) == chars.codeUnitAt(0));
+    int length = chunkEnd;
+    int start = position;
+    int count = 1;
+    while (++position < length) {
+      int char = getChar(position);
+      if (char != chars.codeUnitAt(count)) return fail(start);
+      count++;
+    }
+    this.partialState = PARTIAL_KEYWORD | type | (count << KWD_COUNT_SHIFT);
+    return length;
+  }
+
   /**
    * Parses a string value.
    *
@@ -394,92 +936,208 @@
     // Format: '"'([^\x00-\x1f\\\"]|'\\'[bfnrt/\\"])*'"'
     // Initial position is right after first '"'.
     int start = position;
-    while (position < source.length) {
-      int char = source.codeUnitAt(position++);
+    int end = chunkEnd;
+    while (position < end) {
+      int char = getChar(position++);
       // BACKSLASH is larger than QUOTE and SPACE.
       if (char > BACKSLASH) {
         continue;
       }
       if (char == BACKSLASH) {
-        return parseStringWithEscapes(start, position - 1);
+        beginString();
+        int sliceEnd = position - 1;
+        if (start < sliceEnd) addSliceToString(start, sliceEnd);
+        return parseStringToBuffer(position - 1);
       }
       if (char == QUOTE) {
-        listener.handleString(source.substring(start, position - 1));
+        listener.handleString(getString(start, position - 1));
         return position;
       }
       if (char < SPACE) {
         fail(position - 1, "Control character in string");
       }
     }
-    fail(start - 1, "Unterminated string");
+    beginString();
+    if (start < end) addSliceToString(start, end);
+    return chunkString(STR_PLAIN);
   }
 
-  int parseStringWithEscapes(start, position) {
-    // Backslash escape detected. Collect character codes for rest of string.
-    int firstEscape = position;
-    List<int> chars = <int>[];
-    for (int i = start; i < firstEscape; i++) {
-      chars.add(source.codeUnitAt(i));
-    }
-    position++;
+  /**
+   * Sets up a partial string state.
+   *
+   * The state is either not inside an escape, or right after a backslash.
+   * For partial strings ending inside a Unicode escape, use
+   * [chunkStringEscapeU].
+   */
+  int chunkString(int stringState) {
+    partialState = PARTIAL_STRING | stringState;
+    return chunkEnd;
+  }
+
+  /**
+   * Sets up a partial string state for a partially parsed Unicode escape.
+   *
+   * The partial string state includes the current [buffer] and the
+   * number of hex digits of the Unicode seen so far (e.g., for `"\u30')
+   * the state knows that two digits have been seen, and what their value is.
+   *
+   * Returns [chunkEnd] so it can be used as part of a return statement.
+   */
+  int chunkStringEscapeU(int count, int value) {
+    partialState = PARTIAL_STRING | STR_U |
+                   (count << STR_U_COUNT_SHIFT) |
+                   (value << STR_U_VALUE_SHIFT);
+    return chunkEnd;
+  }
+
+  /**
+   * Parses the remainder of a string literal into a buffer.
+   *
+   * The buffer is stored in [buffer] and its underlying format depends on
+   * the input chunk type. For example UTF-8 decoding happens in the
+   * buffer, not in the parser, since all significant JSON characters are ASCII.
+   *
+   * This function scans through the string literal for escapes, and copies
+   * slices of non-escape characters using [addSliceToString].
+   */
+  int parseStringToBuffer(position) {
+    int end = chunkEnd;
+    int start = position;
     while (true) {
-      if (position == source.length) {
-        fail(start - 1, "Unterminated string");
-      }
-      int char = source.codeUnitAt(position);
-      switch (char) {
-        case CHAR_b: char = BACKSPACE; break;
-        case CHAR_f: char = FORM_FEED; break;
-        case CHAR_n: char = NEWLINE; break;
-        case CHAR_r: char = CARRIAGE_RETURN; break;
-        case CHAR_t: char = TAB; break;
-        case SLASH:
-        case BACKSLASH:
-        case QUOTE:
-          break;
-        case CHAR_u:
-          int hexStart = position - 1;
-          int value = 0;
-          for (int i = 0; i < 4; i++) {
-            position++;
-            if (position == source.length) {
-              fail(start - 1, "Unterminated string");
-            }
-            char = source.codeUnitAt(position);
-            char -= 0x30;
-            if (char < 0) fail(hexStart, "Invalid unicode escape");
-            if (char < 10) {
-              value = value * 16 + char;
-            } else {
-              char = (char | 0x20) - 0x31;
-              if (char < 0 || char > 5) {
-                fail(hexStart, "Invalid unicode escape");
-              }
-              value = value * 16 + char + 10;
-            }
-          }
-          char = value;
-          break;
-        default:
-          if (char < SPACE) fail(position, "Control character in string");
-          fail(position, "Unrecognized string escape");
-      }
-      do {
-        chars.add(char);
-        position++;
-        if (position == source.length) fail(start - 1, "Unterminated string");
-        char = source.codeUnitAt(position);
-        if (char == QUOTE) {
-          String result = new String.fromCharCodes(chars);
-          listener.handleString(result);
-          return position + 1;
+      if (position == end) {
+        if (position > start) {
+          addSliceToString(start, position);
         }
-        if (char < SPACE) {
-          fail(position, "Control character in string");
+        return chunkString(STR_PLAIN);
+      }
+      int char = getChar(position++);
+      if (char > BACKSLASH) continue;
+      if (char < SPACE) {
+        fail(position - 1);  // Control character in string.
+        return;
+      }
+      if (char == QUOTE) {
+        int quotePosition = position - 1;
+        if (quotePosition > start) {
+          addSliceToString(start, quotePosition);
         }
-      } while (char != BACKSLASH);
-      position++;
+        listener.handleString(endString());
+        return position;
+      }
+      if (char != BACKSLASH) {
+        continue;
+      }
+      // Handle escape.
+      if (position - 1 > start) {
+        addSliceToString(start, position - 1);
+      }
+      if (position == end) return chunkString(STR_ESCAPE);
+      position = parseStringEscape(position);
+      if (position == end) return position;
+      start = position;
     }
+    return -1;  // UNREACHABLE.
+  }
+
+  /**
+   * Parse a string escape.
+   *
+   * Position is right after the initial backslash.
+   * The following escape is parsed into a character code which is added to
+   * the current string buffer using [addCharToString].
+   *
+   * Returns position after the last character of the escape.
+   */
+  int parseStringEscape(int position) {
+    int char = getChar(position++);
+    int length = chunkEnd;
+    switch (char) {
+      case CHAR_b: char = BACKSPACE; break;
+      case CHAR_f: char = FORM_FEED; break;
+      case CHAR_n: char = NEWLINE; break;
+      case CHAR_r: char = CARRIAGE_RETURN; break;
+      case CHAR_t: char = TAB; break;
+      case SLASH:
+      case BACKSLASH:
+      case QUOTE:
+        break;
+      case CHAR_u:
+        int hexStart = position - 1;
+        int value = 0;
+        for (int i = 0; i < 4; i++) {
+          if (position == length) return chunkStringEscapeU(i, value);
+          char = getChar(position++);
+          int digit = char ^ 0x30;
+          value *= 16;
+          if (digit <= 9) {
+            value += digit;
+          } else {
+            digit = (char | 0x20) - CHAR_a;
+            if (digit < 0 || digit > 5) {
+              return fail(hexStart, "Invalid unicode escape");
+            }
+            value += digit + 10;
+          }
+        }
+        char = value;
+        break;
+      default:
+        if (char < SPACE) return fail(position, "Control character in string");
+        return fail(position, "Unrecognized string escape");
+    }
+    addCharToString(char);
+    if (position == length) return chunkString(STR_PLAIN);
+    return position;
+  }
+
+  /// Sets up a partial numeral state.
+  /// Returns chunkEnd to allow easy one-line bailout tests.
+  int beginChunkNumber(int state, int start) {
+    int end = chunkEnd;
+    int length = end - start;
+    var buffer = new _NumberBuffer(length);
+    copyCharsToList(start, end, buffer.list, 0);
+    buffer.length = length;
+    this.buffer = buffer;
+    this.partialState = PARTIAL_NUMERAL | state;
+    return end;
+  }
+
+  void addNumberChunk(_NumberBuffer buffer, int start, int end, int overhead) {
+    int length = end - start;
+    int count = buffer.length;
+    int newCount = count + length;
+    int newCapacity = newCount + overhead;
+    buffer.ensureCapacity(newCapacity);
+    copyCharsToList(start, end, buffer.list, count);
+    buffer.length = newCount;
+  }
+
+  // Continues an already chunked number accross an entire chunk.
+  int continueChunkNumber(int state, int start, _NumberBuffer buffer) {
+    int end = chunkEnd;
+    addNumberChunk(buffer, start, end, _NumberBuffer.kDefaultOverhead);
+    this.buffer = buffer;
+    this.partialState = PARTIAL_NUMERAL | state;
+    return end;
+  }
+
+  int finishChunkNumber(int state, int start, int end, _NumberBuffer buffer) {
+    if (state == NUM_ZERO) {
+      listener.handleNumber(0);
+      return;
+    }
+    if (end > start) {
+      addNumberChunk(buffer, start, end, 0);
+    }
+    if (state == NUM_DIGIT) {
+      listener.handleNumber(buffer.parseInt());
+    } else if (state == NUM_DOT_DIGIT || state == NUM_E_DIGIT) {
+      listener.handleNumber(buffer.parseDouble());
+    } else {
+      fail(chunkEnd, "Unterminated number literal");
+    }
+    return end;
   }
 
   int parseNumber(int char, int position) {
@@ -487,89 +1145,576 @@
     // Format:
     //  '-'?('0'|[1-9][0-9]*)('.'[0-9]+)?([eE][+-]?[0-9]+)?
     int start = position;
-    int length = source.length;
-    int intValue = 0;  // Collect int value while parsing.
-    int intSign = 1;
+    int length = chunkEnd;
+    // Collects an int value while parsing. Used for both an integer literal,
+    // an the exponent part of a double literal.
+    int intValue = 0;
+    double doubleValue = 0.0; // Collect double value while parsing.
+    int sign = 1;
     bool isDouble = false;
     // Break this block when the end of the number literal is reached.
     // At that time, position points to the next character, and isDouble
     // is set if the literal contains a decimal point or an exponential.
     parsing: {
       if (char == MINUS) {
-        intSign = -1;
+        sign = -1;
         position++;
-        if (position == length) fail(position, "Missing expected digit");
-        char = source.codeUnitAt(position);
+        if (position == length) return beginChunkNumber(NUM_SIGN, start);
+        char = getChar(position);
       }
-      if (char < CHAR_0 || char > CHAR_9) {
-        if (intSign < 0) {
+      int digit = char ^ CHAR_0;
+      if (digit > 9) {
+        if (sign < 0) {
           fail(position, "Missing expected digit");
         } else {
           // If it doesn't even start out as a numeral.
           fail(position, "Unexpected character");
         }
       }
-      if (char == CHAR_0) {
+      if (digit == 0) {
         position++;
-        if (position == length) break parsing;
-        char = source.codeUnitAt(position);
-        if (CHAR_0 <= char && char <= CHAR_9) {
-          fail(position);
-        }
+        if (position == length) return beginChunkNumber(NUM_ZERO, start);
+        char = getChar(position);
+        digit = char ^ CHAR_0;
+        // If starting with zero, next character must not be digit.
+        if (digit <= 9) fail(position);
       } else {
         do {
-          intValue = intValue * 10 + (char - CHAR_0);
+          intValue = 10 * intValue + digit;
           position++;
-          if (position == length) break parsing;
-          char = source.codeUnitAt(position);
-        } while (CHAR_0 <= char && char <= CHAR_9);
+          if (position == length) return beginChunkNumber(NUM_DIGIT, start);
+          char = getChar(position);
+          digit = char ^ CHAR_0;
+        } while (digit <= 9);
       }
       if (char == DECIMALPOINT) {
         isDouble = true;
+        doubleValue = intValue.toDouble();
+        intValue = 0;
         position++;
-        if (position == length) fail(position, "Missing expected digit");
-        char = source.codeUnitAt(position);
-        if (char < CHAR_0 || char > CHAR_9) fail(position);
+        if (position == length) return beginChunkNumber(NUM_DOT, start);
+        char = getChar(position);
+        digit = char ^ CHAR_0;
+        if (digit > 9) fail(position);
         do {
+          doubleValue = 10.0 * doubleValue + digit;
+          intValue -= 1;
           position++;
-          if (position == length) break parsing;
-          char = source.codeUnitAt(position);
-        } while (CHAR_0 <= char && char <= CHAR_9);
+          if (position == length) return beginChunkNumber(NUM_DOT_DIGIT, start);
+          char = getChar(position);
+          digit = char ^ CHAR_0;
+        } while (digit <= 9);
       }
-      if (char == CHAR_e || char == CHAR_E) {
-        isDouble = true;
-        position++;
-        if (position == length) fail(position, "Missing expected digit");
-        char = source.codeUnitAt(position);
-        if (char == PLUS || char == MINUS) {
-          position++;
-          if (position == length) fail(position, "Missing expected digit");
-          char = source.codeUnitAt(position);
+      if ((char | 0x20) == CHAR_e) {
+        if (!isDouble) {
+          doubleValue = intValue.toDouble();
+          intValue = 0;
+          isDouble = true;
         }
-        if (char < CHAR_0 || char > CHAR_9) {
+        position++;
+        if (position == length) return beginChunkNumber(NUM_E, start);
+        char = getChar(position);
+        int expSign = 1;
+        int exponent = 0;
+        if (char == PLUS || char == MINUS) {
+          expSign = 0x2C - char;  // -1 for MINUS, +1 for PLUS
+          position++;
+          if (position == length) return beginChunkNumber(NUM_E_SIGN, start);
+          char = getChar(position);
+        }
+        digit = char ^ CHAR_0;
+        if (digit > 9) {
           fail(position, "Missing expected digit");
         }
         do {
+          exponent = 10 * exponent + digit;
           position++;
-          if (position == length) break parsing;
-          char = source.codeUnitAt(position);
-        } while (CHAR_0 <= char && char <= CHAR_9);
+          if (position == length) return beginChunkNumber(NUM_E_DIGIT, start);
+          char = getChar(position);
+          digit = char ^ CHAR_0;
+        } while (digit <= 9);
+        intValue += expSign * exponent;
       }
     }
     if (!isDouble) {
-      listener.handleNumber(intSign * intValue);
+      listener.handleNumber(sign * intValue);
       return position;
     }
-    // This correctly creates -0.0 for doubles.
-    listener.handleNumber(_parseDouble(source, start, position));
+    // Double values at or above this value (2**53) may have lost precission.
+    // Only trust results that are below this value.
+    const double maxExactDouble = 9007199254740992.0;
+    if (doubleValue < maxExactDouble) {
+      int exponent = intValue;
+      double signedMantissa = doubleValue * sign;
+      if (exponent >= -22) {
+        if (exponent < 0) {
+          listener.handleNumber(signedMantissa / POWERS_OF_TEN[-exponent]);
+          return position;
+        }
+        if (exponent == 0) {
+          listener.handleNumber(signedMantissa);
+          return position;
+        }
+        if (exponent <= 22) {
+          listener.handleNumber(signedMantissa * POWERS_OF_TEN[exponent]);
+          return position;
+        }
+      }
+    }
+    // If the value is outside the range +/-maxExactDouble or
+    // exponent is outside the range +/-22, then we can't trust simple double
+    // arithmetic to get the exact result, so we use the system double parsing.
+    listener.handleNumber(parseDouble(start, position));
     return position;
   }
 
-  static double _parseDouble(String source, int start, int end)
-      native "Double_parse";
+  int fail(int position, [String message]) {
+    if (message == null) {
+      message = "Unexpected character";
+      if (position == chunkEnd) message = "Unexpected end of input";
+    }
+    throw new FormatException(message, chunk, position);
+  }
+}
 
-  void fail(int position, [String message]) {
-    if (message == null) message = "Unexpected character";
-    throw new FormatException(message, source, position);
+/**
+ * Chunked JSON parser that parses [String] chunks.
+ */
+class _JsonStringParser extends _ChunkedJsonParser {
+  String chunk;
+  int chunkEnd;
+
+  _JsonStringParser(_JsonListener listener) : super(listener);
+
+  int getChar(int position) => chunk.codeUnitAt(position);
+
+  String getString(int start, int end) {
+    return chunk.substring(start, end);
+  }
+
+  void beginString() {
+    this.buffer = new StringBuffer();
+  }
+
+  void addSliceToString(int start, int end) {
+    StringBuffer buffer = this.buffer;
+    buffer.write(chunk.substring(start, end));
+  }
+
+  void addCharToString(int charCode) {
+    StringBuffer buffer = this.buffer;
+    buffer.writeCharCode(charCode);
+  }
+
+  String endString() {
+    StringBuffer buffer = this.buffer;
+    this.buffer = null;
+    return buffer.toString();
+  }
+
+  void copyCharsToList(int start, int end, List target, int offset) {
+    int length = end - start;
+    for (int i = 0; i < length; i++) {
+      target[offset + i] = chunk.codeUnitAt(start + i);
+    }
+  }
+
+  double parseDouble(int start, int end) {
+    return _parseDouble(chunk, start, end);
+  }
+}
+
+patch class JsonDecoder {
+  /* patch */ StringConversionSink startChunkedConversion(Sink<Object> sink) {
+    return new _JsonStringDecoderSink(this._reviver, sink);
+  }
+}
+
+/**
+ * Implements the chunked conversion from a JSON string to its corresponding
+ * object.
+ *
+ * The sink only creates one object, but its input can be chunked.
+ */
+class _JsonStringDecoderSink extends StringConversionSinkBase {
+  _ChunkedJsonParser _parser;
+  Function _reviver;
+  final Sink<Object> _sink;
+
+  _JsonStringDecoderSink(reviver, this._sink)
+      : _reviver = reviver, _parser = _createParser(reviver);
+
+  static _ChunkedJsonParser _createParser(reviver) {
+    _BuildJsonListener listener;
+    if (reviver == null) {
+      listener = new _BuildJsonListener();
+    } else {
+      listener = new _ReviverJsonListener(reviver);
+    }
+    return new _JsonStringParser(listener);
+  }
+
+  void addSlice(String chunk, int start, int end, bool isLast) {
+    _parser.chunk = chunk;
+    _parser.chunkEnd = end;
+    _parser.parse(start);
+    if (isLast) _parser.close();
+  }
+
+  void add(String chunk) {
+    addSlice(chunk, 0, chunk.length, false);
+  }
+
+  void close() {
+    _parser.close();
+    var decoded = _parser.result;
+    _sink.add(decoded);
+    _sink.close();
+  }
+
+  ByteConversionSink asUtf8Sink(bool allowMalformed) {
+    _parser = null;
+    return new _JsonUtf8DecoderSink(_reviver, _sink, allowMalformed);
+  }
+}
+
+class _Utf8StringBuffer {
+  static const int INITIAL_CAPACITY = 32;
+  // Partial state encoding.
+  static const int MASK_TWO_BIT = 0x03;
+  static const int MASK_SIZE = MASK_TWO_BIT;
+  static const int SHIFT_MISSING = 2;
+  static const int SHIFT_VALUE = 4;
+  static const int NO_PARTIAL = 0;
+
+  // UTF-8 encoding and limits.
+  static const int MAX_ASCII = 127;
+  static const int MAX_TWO_BYTE = 0x7ff;
+  static const int MAX_THREE_BYTE = 0xffff;
+  static const int MAX_UNICODE = 0X10ffff;
+  static const int MASK_TWO_BYTE = 0x1f;
+  static const int MASK_THREE_BYTE = 0x0f;
+  static const int MASK_FOUR_BYTE = 0x07;
+  static const int MASK_CONTINUE_TAG = 0xC0;
+  static const int MASK_CONTINUE_VALUE = 0x3f;
+  static const int CONTINUE_TAG = 0x80;
+
+  // UTF-16 surrogate encoding.
+  static const int LEAD_SURROGATE = 0xD800;
+  static const int TAIL_SURROGATE = 0xDC00;
+  static const int SHIFT_HIGH_SURROGATE = 10;
+  static const int MASK_LOW_SURROGATE = 0x3ff;
+
+  // The internal buffer starts as Uint8List, but may change to Uint16List
+  // if the string contains non-Latin-1 characters.
+  List<int> buffer = new Uint8List(INITIAL_CAPACITY);
+  // Number of elements in buffer.
+  int length = 0;
+  // Partial decoding state, for cases where an UTF-8 sequences is split
+  // between chunks.
+  int partialState = NO_PARTIAL;
+  // Whether all characters so far have been Latin-1 (and the buffer is
+  // still a Uint8List). Set to false when the first non-Latin-1 character
+  // is encountered, and the buffer is then also converted to a Uint16List.
+  bool isLatin1 = true;
+  // If allowing malformed, invalid UTF-8 sequences are converted to
+  // U+FFFD.
+  bool allowMalformed;
+
+  _Utf8StringBuffer(this.allowMalformed);
+
+  /**
+   * Parse the continuation of a multi-byte UTF-8 sequence.
+   *
+   * Parse [utf8] from [position] to [end]. If the sequence extends beyond
+   * `end`, store the partial state in [partialState], and continue from there
+   * on the next added slice.
+   *
+   * The [size] is the number of expected continuation bytes total,
+   * and [missing] is the number of remaining continuation bytes.
+   * The [size] is used to detect overlong encodings.
+   * The [value] is the value collected so far.
+   *
+   * When called after seeing the first multi-byte marker, the [size] and
+   * [missing] values are always the same, but they may differ if continuing
+   * after a partial sequence.
+   */
+  int addContinuation(List<int> utf8, int position, int end,
+                      int size, int missing, int value) {
+    int codeEnd = position + missing;
+    do {
+      if (position == end) {
+        missing = codeEnd - position;
+        partialState =
+            size | (missing << SHIFT_MISSING) | (value << SHIFT_VALUE);
+        return end;
+      }
+      int char = utf8[position];
+      if ((char & MASK_CONTINUE_TAG) != CONTINUE_TAG) {
+        if (allowMalformed) {
+          addCharCode(0xFFFD);
+          return position;
+        }
+        throw new FormatException("Expected UTF-8 continuation byte, "
+                                  "found $char", utf8, position);
+      }
+      value = 64 * value + (char & MASK_CONTINUE_VALUE);
+      position++;
+    } while (position < codeEnd);
+    if (value <= const [0, MAX_ASCII, MAX_TWO_BYTE, MAX_THREE_BYTE][size]) {
+      // Over-long encoding.
+      if (allowMalformed) {
+        value = 0xFFFD;
+      } else {
+        throw new FormatException(
+            "Invalid encoding: U+${value.toRadixString(16).padLeft(4, '0')}"
+            " encoded in ${size + 1} bytes.", utf8, position - 1);
+      }
+    }
+    addCharCode(value);
+    return position;
+  }
+
+  void addCharCode(int char) {
+    assert(char >= 0);
+    assert(char <= MAX_UNICODE);
+    if (partialState != NO_PARTIAL) {
+      if (allowMalformed) {
+        partialState = NO_PARTIAL;
+        addCharCode(0xFFFD);
+      } else {
+        throw new FormatException("Incomplete UTF-8 sequence", utf8);
+      }
+    }
+    if (isLatin1 && char > 0xff) {
+      _to16Bit();  // Also grows a little if close to full.
+    }
+    int length = this.length;
+    if (char <= MAX_THREE_BYTE) {
+      if (length == buffer.length) _grow();
+      buffer[length] = char;
+      this.length = length + 1;
+      return;
+    }
+    if (length + 2 > buffer.length) _grow();
+    int bits = char - 0x10000;
+    buffer[length] = LEAD_SURROGATE | (bits >> SHIFT_HIGH_SURROGATE);
+    buffer[length + 1] = TAIL_SURROGATE | (bits & MASK_LOW_SURROGATE);
+    this.length = length + 2;
+  }
+
+  void _to16Bit() {
+    assert(isLatin1);
+    Uint16List newBuffer;
+    if ((length + INITIAL_CAPACITY) * 2 <= buffer.length) {
+      // Reuse existing buffer if it's big enough.
+      newBuffer = new Uint16List.view(buffer.buffer);
+    } else {
+      int newCapacity = buffer.length;
+      if (newCapacity - length < INITIAL_CAPACITY) {
+        newCapacity = length + INITIAL_CAPACITY;
+      }
+      newBuffer = new Uint16List(newCapacity);
+    }
+    newBuffer.setRange(0, length, buffer);
+    buffer = newBuffer;
+    isLatin1 = false;
+  }
+
+  void _grow() {
+    int newCapacity = buffer.length * 2;
+    List newBuffer;
+    if (isLatin1) {
+      newBuffer = new Uint8List(newCapacity);
+    } else {
+      newBuffer = new Uint16List(newCapacity);
+    }
+    newBuffer.setRange(0, length, buffer);
+    buffer = newBuffer;
+  }
+
+  void addSlice(List<int> utf8, int position, int end) {
+    assert(position < end);
+    if (partialState > 0) {
+      int continueByteCount = (partialState & MASK_TWO_BIT);
+      int missing = (partialState >> SHIFT_MISSING) & MASK_TWO_BIT;
+      int value = partialState >> SHIFT_VALUE;
+      partialState = NO_PARTIAL;
+      position = addContinuation(utf8, position, end,
+                                 continueByteCount, missing, value);
+      if (position == end) return;
+    }
+    // Keep index and capacity in local variables while looping over
+    // ASCII characters.
+    int index = length;
+    int capacity = buffer.length;
+    while (position < end) {
+      int char = utf8[position];
+      if (char <= MAX_ASCII) {
+        if (index == capacity) {
+          length = index;
+          _grow();
+          capacity = buffer.length;
+        }
+        buffer[index++] = char;
+        position++;
+        continue;
+      }
+      length = index;
+      if ((char & MASK_CONTINUE_TAG) == CONTINUE_TAG) {
+        if (allowMalformed) {
+          addCharCode(0xFFFD);
+          position++;
+        } else {
+          throw new FormatException("Unexepected UTF-8 continuation byte",
+                                    utf8, position);
+        }
+      } else if (char < 0xE0) {  // C0-DF
+        // Two-byte.
+        position = addContinuation(utf8, position + 1, end, 1, 1,
+                                   char & MASK_TWO_BYTE);
+      } else if (char < 0xF0) {  // E0-EF
+        // Three-byte.
+        position = addContinuation(utf8, position + 1, end, 2, 2,
+                                   char & MASK_THREE_BYTE);
+      } else if (char < 0xF8) {  // F0-F7
+        // Four-byte.
+        position = addContinuation(utf8, position + 1, end, 3, 3,
+                                   char & MASK_FOUR_BYTE);
+      } else {
+        if (allowMalformed) {
+          addCharCode(0xFFFD);
+          position++;
+        } else {
+          throw new FormatException("Invalid UTF-8 byte: $char",
+                                    utf8, position);
+        }
+      }
+      index = length;
+      capacity = buffer.length;
+    }
+    length = index;
+  }
+
+  String toString() {
+    if (partialState != NO_PARTIAL) {
+      if (allowMalformed) {
+        partialState = NO_PARTIAL;
+        addCharCode(0xFFFD);
+      } else {
+        int continueByteCount = (partialState & MASK_TWO_BIT);
+        int missing = (partialState >> SHIFT_MISSING) & MASK_TWO_BIT;
+        int value = partialState >> SHIFT_VALUE;
+        int seenByteCount = continueByteCount - missing + 1;
+        List source = new Uint8List(seenByteCount);
+        while (seenByteCount > 1) {
+          seenByteCount--;
+          source[seenByteCount] = CONTINUE_TAG | (value & MASK_CONTINUE_VALUE);
+          value >>= 6;
+        }
+        source[0] = value | (0x3c0 >> (continueByteCount - 1));
+        throw new FormatException("Incomplete UTF-8 sequence",
+                                  source, source.length);
+      }
+    }
+    return new String.fromCharCodes(buffer, 0, length);
+  }
+}
+
+/**
+ * Chunked JSON parser that parses UTF-8 chunks.
+ */
+class _JsonUtf8Parser extends _ChunkedJsonParser {
+  final bool allowMalformed;
+  List<int> chunk;
+  int chunkEnd;
+
+  _JsonUtf8Parser(_JsonListener listener, this.allowMalformed)
+      : super(listener);
+
+  int getChar(int position) => chunk[position];
+
+  String getString(int start, int end) {
+    beginString();
+    if (start < end) addSliceToString(start, end);
+    String result = endString();
+    return result;
+  }
+
+  void beginString() {
+    this.buffer = new _Utf8StringBuffer(allowMalformed);
+  }
+
+  void addSliceToString(int start, int end) {
+    _Utf8StringBuffer buffer = this.buffer;
+    buffer.addSlice(chunk, start, end);
+  }
+
+  void addCharToString(int charCode) {
+    _Utf8StringBuffer buffer = this.buffer;
+    buffer.addCharCode(charCode);
+  }
+
+  String endString() {
+    _Utf8StringBuffer buffer = this.buffer;
+    this.buffer = null;
+    return buffer.toString();
+  }
+
+  void copyCharsToList(int start, int end, List target, int offset) {
+    int length = end - start;
+    target.setRange(offset, offset + length, chunk, start);
+  }
+
+  double parseDouble(int start, int end) {
+    String string = getString(start, end);
+    return _parseDouble(string, 0, string.length);
+  }
+}
+
+double _parseDouble(String source, int start, int end)
+    native "Double_parse";
+
+/**
+ * Implements the chunked conversion from a UTF-8 encoding of JSON
+ * to its corresponding object.
+ */
+class _JsonUtf8DecoderSink extends ByteConversionSinkBase {
+  _JsonUtf8Parser _parser;
+  final Sink<Object> _sink;
+
+  _JsonUtf8DecoderSink(reviver, this._sink, bool allowMalformed)
+      : _parser = _createParser(reviver, allowMalformed);
+
+  static _ChunkedJsonParser _createParser(reviver, bool allowMalformed) {
+    _BuildJsonListener listener;
+    if (reviver == null) {
+      listener = new _BuildJsonListener();
+    } else {
+      listener = new _ReviverJsonListener(reviver);
+    }
+    return new _JsonUtf8Parser(listener, allowMalformed);
+  }
+
+  void addSlice(List<int> chunk, int start, int end, bool isLast) {
+    _addChunk(chunk, start, end);
+    if (isLast) close();
+  }
+
+  void add(List<int> chunk) {
+    _addChunk(chunk, 0, chunk.length);
+  }
+
+  void _addChunk(List<int> chunk, int start, int end) {
+    _parser.chunk = chunk;
+    _parser.chunkEnd = end;
+    _parser.parse(start);
+  }
+
+  void close() {
+    _parser.close();
+    var decoded = _parser.result;
+    _sink.add(decoded);
+    _sink.close();
   }
 }
diff --git a/runtime/lib/double_patch.dart b/runtime/lib/double_patch.dart
index f00a833..f33122a 100644
--- a/runtime/lib/double_patch.dart
+++ b/runtime/lib/double_patch.dart
@@ -80,33 +80,7 @@
     }
     if (!digitsSeen) return null;  // No digits.
     if (exponent == 0) return sign * doubleValue;
-    // Powers of 10 up to 10^22 are representable as doubles.
-    // Powers of 10 above that are only approximate due to lack of precission.
-    const P10 = const [
-                            1.0,  /*  0 */
-                           10.0,
-                          100.0,
-                         1000.0,
-                        10000.0,
-                       100000.0,  /*  5 */
-                      1000000.0,
-                     10000000.0,
-                    100000000.0,
-                   1000000000.0,
-                  10000000000.0,  /* 10 */
-                 100000000000.0,
-                1000000000000.0,
-               10000000000000.0,
-              100000000000000.0,
-             1000000000000000.0,  /*  15 */
-            10000000000000000.0,
-           100000000000000000.0,
-          1000000000000000000.0,
-         10000000000000000000.0,
-        100000000000000000000.0,  /*  20 */
-       1000000000000000000000.0,
-      10000000000000000000000.0,
-    ];
+    const P10 = POWERS_OF_TEN;  // From shared library
     if (exponent < 0) {
       int negExponent = -exponent;
       if (negExponent >= P10.length) return null;
diff --git a/runtime/vm/assembler_arm64.cc b/runtime/vm/assembler_arm64.cc
index 5ce11e9..34eb8d8 100644
--- a/runtime/vm/assembler_arm64.cc
+++ b/runtime/vm/assembler_arm64.cc
@@ -61,35 +61,35 @@
       patchable_pool_entries_.Add(kNotPatchable);
     }
 
-    if (StubCode::CallToRuntime_entry() != NULL) {
-      FindExternalLabel(&StubCode::CallToRuntimeLabel(), kNotPatchable);
+    if (stub_code->CallToRuntime_entry() != NULL) {
+      FindExternalLabel(&stub_code->CallToRuntimeLabel(), kNotPatchable);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
 
     // Create fixed object pool entries for debugger stubs.
-    if (StubCode::ICCallBreakpoint_entry() != NULL) {
+    if (stub_code->ICCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::ICCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->ICCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kICCallBreakpointCPIndex);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
-    if (StubCode::ClosureCallBreakpoint_entry() != NULL) {
+    if (stub_code->ClosureCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::ClosureCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->ClosureCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kClosureCallBreakpointCPIndex);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
-    if (StubCode::RuntimeCallBreakpoint_entry() != NULL) {
+    if (stub_code->RuntimeCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::RuntimeCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->RuntimeCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kRuntimeCallBreakpointCPIndex);
     } else {
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc
index f6197ec..336baf3 100644
--- a/runtime/vm/assembler_x64.cc
+++ b/runtime/vm/assembler_x64.cc
@@ -58,35 +58,35 @@
       patchable_pool_entries_.Add(kNotPatchable);
     }
 
-    if (StubCode::CallToRuntime_entry() != NULL) {
-      FindExternalLabel(&StubCode::CallToRuntimeLabel(), kNotPatchable);
+    if (stub_code->CallToRuntime_entry() != NULL) {
+      FindExternalLabel(&stub_code->CallToRuntimeLabel(), kNotPatchable);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
 
     // Create fixed object pool entries for debugger stubs.
-    if (StubCode::ICCallBreakpoint_entry() != NULL) {
+    if (stub_code->ICCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::ICCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->ICCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kICCallBreakpointCPIndex);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
-    if (StubCode::ClosureCallBreakpoint_entry() != NULL) {
+    if (stub_code->ClosureCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::ClosureCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->ClosureCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kClosureCallBreakpointCPIndex);
     } else {
       object_pool_.Add(vacant, Heap::kOld);
       patchable_pool_entries_.Add(kNotPatchable);
     }
-    if (StubCode::RuntimeCallBreakpoint_entry() != NULL) {
+    if (stub_code->RuntimeCallBreakpoint_entry() != NULL) {
       intptr_t index =
-          FindExternalLabel(&StubCode::RuntimeCallBreakpointLabel(),
+          FindExternalLabel(&stub_code->RuntimeCallBreakpointLabel(),
                             kNotPatchable);
       ASSERT(index == kRuntimeCallBreakpointCPIndex);
     } else {
diff --git a/runtime/vm/atomic.h b/runtime/vm/atomic.h
index 85ef846..c256fe5 100644
--- a/runtime/vm/atomic.h
+++ b/runtime/vm/atomic.h
@@ -8,6 +8,7 @@
 #include "platform/globals.h"
 
 #include "vm/allocation.h"
+#include "vm/simulator.h"
 
 namespace dart {
 
@@ -15,6 +16,9 @@
  public:
   // Atomically fetch the value at p and increment the value at p.
   // Returns the original value at p.
+  //
+  // NOTE: Not to be used for any atomic operations involving memory locations
+  // that are accessed by generated code
   static uintptr_t FetchAndIncrement(uintptr_t* p);
 
   static uword CompareAndSwapWord(uword* ptr, uword old_value, uword new_value);
@@ -23,6 +27,10 @@
 
 }  // namespace dart
 
+// We need to use the simulator to ensure that atomic operations are observed
+// both in C++ and in generated code if the simulator is active.
+#include "vm/atomic_simulator.h"
+
 #if defined(TARGET_OS_ANDROID)
 #include "vm/atomic_android.h"
 #elif defined(TARGET_OS_LINUX)
diff --git a/runtime/vm/atomic_android.h b/runtime/vm/atomic_android.h
index a041409..06208f2 100644
--- a/runtime/vm/atomic_android.h
+++ b/runtime/vm/atomic_android.h
@@ -21,11 +21,13 @@
 }
 
 
+#if !defined(USING_SIMULATOR)
 inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
                                                   uword old_value,
                                                   uword new_value) {
   return __sync_val_compare_and_swap(ptr, old_value, new_value);
 }
+#endif  // !defined(USING_SIMULATOR)
 
 }  // namespace dart
 
diff --git a/runtime/vm/atomic_linux.h b/runtime/vm/atomic_linux.h
index da7102b..9789ae5 100644
--- a/runtime/vm/atomic_linux.h
+++ b/runtime/vm/atomic_linux.h
@@ -21,11 +21,13 @@
 }
 
 
+#if !defined(USING_SIMULATOR)
 inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
                                                   uword old_value,
                                                   uword new_value) {
   return __sync_val_compare_and_swap(ptr, old_value, new_value);
 }
+#endif  // !defined(USING_SIMULATOR)
 
 }  // namespace dart
 
diff --git a/runtime/vm/atomic_macos.h b/runtime/vm/atomic_macos.h
index 649384a..288fe3c 100644
--- a/runtime/vm/atomic_macos.h
+++ b/runtime/vm/atomic_macos.h
@@ -21,11 +21,13 @@
 }
 
 
+#if !defined(USING_SIMULATOR)
 inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
                                                   uword old_value,
                                                   uword new_value) {
   return __sync_val_compare_and_swap(ptr, old_value, new_value);
 }
+#endif  // !defined(USING_SIMULATOR)
 
 }  // namespace dart
 
diff --git a/runtime/vm/atomic_simulator.h b/runtime/vm/atomic_simulator.h
new file mode 100644
index 0000000..26cde3c
--- /dev/null
+++ b/runtime/vm/atomic_simulator.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#ifndef VM_ATOMIC_SIMULATOR_H_
+#define VM_ATOMIC_SIMULATOR_H_
+
+#if !defined VM_ATOMIC_H_
+#error Do not include atomic_simulator.h directly. Use atomic.h instead.
+#endif
+
+namespace dart {
+
+#if defined(USING_SIMULATOR)
+// Forward atomic operations to the simulator if the simulator is active.
+inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
+                                                  uword old_value,
+                                                  uword new_value) {
+  return Simulator::CompareExchange(ptr, old_value, new_value);
+}
+#endif  // defined(USING_SIMULATOR)
+
+}  // namespace dart
+
+#endif  // VM_ATOMIC_SIMULATOR_H_
diff --git a/runtime/vm/atomic_win.h b/runtime/vm/atomic_win.h
index 6124803..24be3b1 100644
--- a/runtime/vm/atomic_win.h
+++ b/runtime/vm/atomic_win.h
@@ -28,6 +28,7 @@
 }
 
 
+#if !defined(USING_SIMULATOR)
 inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
                                                   uword old_value,
                                                   uword new_value) {
@@ -45,6 +46,7 @@
   UNIMPLEMENTED();
 #endif
 }
+#endif  // !defined(USING_SIMULATOR)
 
 }  // namespace dart
 
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 71a8b8e..b8827c5b 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -1547,6 +1547,13 @@
 }
 
 
+DART_EXPORT bool Dart_HasServiceMessages() {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate);
+  return isolate->message_handler()->HasOOBMessages();
+}
+
+
 DART_EXPORT bool Dart_HasLivePorts() {
   Isolate* isolate = Isolate::Current();
   ASSERT(isolate);
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
index 129b927..80d54a4 100644
--- a/runtime/vm/dart_entry.cc
+++ b/runtime/vm/dart_entry.cc
@@ -33,7 +33,6 @@
                                      const Array& arguments_descriptor) {
   const Context& context =
       Context::Handle(Isolate::Current()->object_store()->empty_context());
-  ASSERT(context.isolate() == Isolate::Current());
   return InvokeFunction(function, arguments, arguments_descriptor, context);
 }
 
diff --git a/runtime/vm/debugger_arm.cc b/runtime/vm/debugger_arm.cc
index 3be4d1e..43d3031 100644
--- a/runtime/vm/debugger_arm.cc
+++ b/runtime/vm/debugger_arm.cc
@@ -42,6 +42,7 @@
   ASSERT(!is_enabled_);
   const Code& code = Code::Handle(code_);
   const Instructions& instrs = Instructions::Handle(code.instructions());
+  Isolate* isolate = Isolate::Current();
   {
     WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
     switch (breakpoint_kind_) {
@@ -49,19 +50,19 @@
       case RawPcDescriptors::kUnoptStaticCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ICCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ICCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kClosureCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ClosureCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ClosureCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kRuntimeCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::RuntimeCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->RuntimeCallBreakpointEntryPoint());
         break;
       }
       default:
diff --git a/runtime/vm/debugger_ia32.cc b/runtime/vm/debugger_ia32.cc
index 8798e38..ed6c944 100644
--- a/runtime/vm/debugger_ia32.cc
+++ b/runtime/vm/debugger_ia32.cc
@@ -46,6 +46,7 @@
   ASSERT(!is_enabled_);
   const Code& code = Code::Handle(code_);
   const Instructions& instrs = Instructions::Handle(code.instructions());
+  Isolate* isolate = Isolate::Current();
   {
     WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
     switch (breakpoint_kind_) {
@@ -53,19 +54,19 @@
       case RawPcDescriptors::kUnoptStaticCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ICCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ICCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kClosureCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ClosureCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ClosureCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kRuntimeCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::RuntimeCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->RuntimeCallBreakpointEntryPoint());
         break;
       }
       default:
diff --git a/runtime/vm/debugger_mips.cc b/runtime/vm/debugger_mips.cc
index 7caa461..eb11fbc 100644
--- a/runtime/vm/debugger_mips.cc
+++ b/runtime/vm/debugger_mips.cc
@@ -42,6 +42,7 @@
   ASSERT(!is_enabled_);
   const Code& code = Code::Handle(code_);
   const Instructions& instrs = Instructions::Handle(code.instructions());
+  Isolate* isolate = Isolate::Current();
   {
     WritableInstructionsScope writable(instrs.EntryPoint(), instrs.size());
     switch (breakpoint_kind_) {
@@ -49,19 +50,19 @@
       case RawPcDescriptors::kUnoptStaticCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ICCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ICCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kClosureCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::ClosureCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->ClosureCallBreakpointEntryPoint());
         break;
       }
       case RawPcDescriptors::kRuntimeCall: {
         saved_value_ = CodePatcher::GetStaticCallTargetAt(pc_, code);
         CodePatcher::PatchStaticCallAt(
-            pc_, code, StubCode::RuntimeCallBreakpointEntryPoint());
+            pc_, code, isolate->stub_code()->RuntimeCallBreakpointEntryPoint());
         break;
       }
       default:
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index 23f6373..5ae8d6d 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -1454,12 +1454,15 @@
                             &instantiator,
                             &instantiator_type_arguments);
   }
+
+  const intptr_t deopt_id = Isolate::Current()->GetNextDeoptId();
   return new(I) AssertAssignableInstr(token_pos,
                                       value,
                                       instantiator,
                                       instantiator_type_arguments,
                                       dst_type,
-                                      dst_name);
+                                      dst_name,
+                                      deopt_id);
 }
 
 
diff --git a/runtime/vm/flow_graph_optimizer.cc b/runtime/vm/flow_graph_optimizer.cc
index 0b98367..7a70da4 100644
--- a/runtime/vm/flow_graph_optimizer.cc
+++ b/runtime/vm/flow_graph_optimizer.cc
@@ -1347,11 +1347,8 @@
                                      new(I) Value(instantiator),
                                      new(I) Value(type_args),
                                      value_type,
-                                     Symbols::Value());
-    // Newly inserted instructions that can deoptimize or throw an exception
-    // must have a deoptimization id that is valid for lookup in the unoptimized
-    // code.
-    assert_value->deopt_id_ = call->deopt_id();
+                                     Symbols::Value(),
+                                     call->deopt_id());
     cursor = flow_graph()->AppendTo(cursor,
                                     assert_value,
                                     call->env(),
@@ -3323,8 +3320,7 @@
     return false;
   }
   if (recognized_kind == MethodRecognizer::kFloat32x4Zero) {
-    Float32x4ZeroInstr* zero =
-        new(I) Float32x4ZeroInstr(call->deopt_id());
+    Float32x4ZeroInstr* zero = new(I) Float32x4ZeroInstr();
     ReplaceCall(call, zero);
     return true;
   } else if (recognized_kind == MethodRecognizer::kFloat32x4Splat) {
@@ -3367,8 +3363,7 @@
     return false;
   }
   if (recognized_kind == MethodRecognizer::kFloat64x2Zero) {
-    Float64x2ZeroInstr* zero =
-        new(I) Float64x2ZeroInstr(call->deopt_id());
+    Float64x2ZeroInstr* zero = new(I) Float64x2ZeroInstr();
     ReplaceCall(call, zero);
     return true;
   } else if (recognized_kind == MethodRecognizer::kFloat64x2Splat) {
@@ -4333,11 +4328,8 @@
                                    new(I) Value(instantiator),
                                    new(I) Value(type_args),
                                    type,
-                                   dst_name);
-  // Newly inserted instructions that can deoptimize or throw an exception
-  // must have a deoptimization id that is valid for lookup in the unoptimized
-  // code.
-  assert_as->deopt_id_ = call->deopt_id();
+                                   dst_name,
+                                   call->deopt_id());
   ReplaceCall(call, assert_as);
 }
 
diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/gc_marker.cc
index aad3ebe6..846e0c1 100644
--- a/runtime/vm/gc_marker.cc
+++ b/runtime/vm/gc_marker.cc
@@ -245,8 +245,9 @@
         // If the code wasn't strongly visited through other references
         // after skipping the function's code pointer, then we disconnect the
         // code from the function.
+        StubCode* stub_code = isolate()->stub_code();
         func->ptr()->instructions_ =
-            StubCode::LazyCompile_entry()->code()->ptr()->instructions_;
+            stub_code->LazyCompile_entry()->code()->ptr()->instructions_;
         func->ptr()->unoptimized_code_ = Code::null();
         if (FLAG_log_code_drop) {
           // NOTE: This code runs while GC is in progress and runs within
diff --git a/runtime/vm/il_printer.cc b/runtime/vm/il_printer.cc
index e9eea97..5a34fcc 100644
--- a/runtime/vm/il_printer.cc
+++ b/runtime/vm/il_printer.cc
@@ -662,11 +662,6 @@
 }
 
 
-void Float32x4ZeroInstr::PrintOperandsTo(BufferFormatter* f) const {
-  f->Print("ZERO ");
-}
-
-
 void Float32x4SplatInstr::PrintOperandsTo(BufferFormatter* f) const {
   f->Print("SPLAT ");
   value()->PrintTo(f);
@@ -750,11 +745,6 @@
 }
 
 
-void Float64x2ZeroInstr::PrintOperandsTo(BufferFormatter* f) const {
-  f->Print("Float64x2.zero ");
-}
-
-
 void Float64x2SplatInstr::PrintOperandsTo(BufferFormatter* f) const {
   f->Print("Float64x2.splat ");
   value()->PrintTo(f);
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index c9c1968..7a80023 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -38,8 +38,9 @@
 DECLARE_FLAG(bool, trace_constant_propagation);
 DECLARE_FLAG(bool, throw_on_javascript_int_overflow);
 
-Definition::Definition()
-    : range_(NULL),
+Definition::Definition(intptr_t deopt_id)
+    : Instruction(deopt_id),
+      range_(NULL),
       type_(NULL),
       temp_index_(-1),
       ssa_temp_index_(-1),
@@ -108,7 +109,8 @@
                                  intptr_t deopt_id,
                                  const ICData& unary_checks,
                                  intptr_t token_pos)
-    : unary_checks_(unary_checks),
+    : TemplateInstruction(deopt_id),
+      unary_checks_(unary_checks),
       cids_(unary_checks.NumberOfChecks()),
       licm_hoisted_(false),
       token_pos_(token_pos) {
@@ -118,7 +120,6 @@
   ASSERT(unary_checks_.NumberOfChecks() > 0);
   ASSERT(unary_checks_.NumArgsTested() == 1);
   SetInputAt(0, value);
-  deopt_id_ = deopt_id;
   // Otherwise use CheckSmiInstr.
   ASSERT((unary_checks_.NumberOfChecks() != 1) ||
          (unary_checks_.GetReceiverClassIdAt(0) != kSmiCid));
@@ -291,7 +292,8 @@
 bool StrictCompareInstr::AttributesEqual(Instruction* other) const {
   StrictCompareInstr* other_op = other->AsStrictCompare();
   ASSERT(other_op != NULL);
-  return kind() == other_op->kind();
+  return ComparisonInstr::AttributesEqual(other) &&
+    (needs_number_check() == other_op->needs_number_check());
 }
 
 
@@ -359,18 +361,6 @@
 }
 
 
-EffectSet LoadIndexedInstr::Dependencies() const {
-  return EffectSet::All();
-}
-
-
-bool LoadIndexedInstr::AttributesEqual(Instruction* other) const {
-  LoadIndexedInstr* other_load = other->AsLoadIndexed();
-  ASSERT(other_load != NULL);
-  return class_id() == other_load->class_id();
-}
-
-
 ConstantInstr::ConstantInstr(const Object& value) : value_(value) {
   // Check that the value is not an incorrect Integer representation.
   ASSERT(!value.IsBigint() || !Bigint::Cast(value).FitsIntoSmi());
@@ -1621,7 +1611,7 @@
                                        Token::kSHL,
                                        left()->CopyWithType(),
                                        new Value(constant_1),
-                                       deopt_id_,
+                                       GetDeoptId(),
                                        can_overflow(),
                                        is_truncating(),
                                        range());
@@ -1659,7 +1649,7 @@
             UnaryIntegerOpInstr::Make(representation(),
                                       Token::kBIT_NOT,
                                       left()->CopyWithType(),
-                                      deopt_id_,
+                                      GetDeoptId(),
                                       range());
         if (bit_not != NULL) {
           flow_graph->InsertBefore(this, bit_not, env(), FlowGraph::kValue);
@@ -1682,7 +1672,7 @@
             UnaryIntegerOpInstr::Make(representation(),
                                       Token::kNEGATE,
                                       left()->CopyWithType(),
-                                      deopt_id_,
+                                      GetDeoptId(),
                                       range());
         if (negation != NULL) {
           flow_graph->InsertBefore(this, negation, env(), FlowGraph::kValue);
@@ -1696,7 +1686,7 @@
         return left()->definition();
       } else if (rhs < 0) {
         DeoptimizeInstr* deopt =
-            new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, deopt_id_);
+            new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, GetDeoptId());
         flow_graph->InsertBefore(this, deopt, env(), FlowGraph::kEffect);
         return flow_graph->GetConstant(Smi::Handle(Smi::New(0)));
       }
@@ -1709,7 +1699,7 @@
       } else if ((rhs < 0) || (rhs >= kMaxShift)) {
         if ((rhs < 0) || !is_truncating()) {
           DeoptimizeInstr* deopt =
-              new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, deopt_id_);
+              new DeoptimizeInstr(ICData::kDeoptBinarySmiOp, GetDeoptId());
           flow_graph->InsertBefore(this, deopt, env(), FlowGraph::kEffect);
         }
         return flow_graph->GetConstant(Smi::Handle(Smi::New(0)));
@@ -1960,7 +1950,7 @@
           representation(),
           box_defn->value()->CopyWithType(),
           (representation() == kUnboxedInt32) ?
-              deopt_id_ : Isolate::kNoDeoptId);
+              GetDeoptId() : Isolate::kNoDeoptId);
       if ((representation() == kUnboxedInt32) && is_truncating()) {
         converter->mark_truncating();
       }
@@ -1987,7 +1977,7 @@
         box_defn->from(),
         representation(),
         box_defn->value()->CopyWithType(),
-        (to() == kUnboxedInt32) ? deopt_id_ : Isolate::kNoDeoptId);
+        (to() == kUnboxedInt32) ? GetDeoptId() : Isolate::kNoDeoptId);
     if ((representation() == kUnboxedInt32) && is_truncating()) {
       converter->mark_truncating();
     }
@@ -2004,7 +1994,7 @@
     // and code path that unboxes Mint into Int32. We should just schedule
     // these instructions close to each other instead of fusing them.
     Definition* replacement =
-        new UnboxInt32Instr(unbox_defn->value()->CopyWithType(), deopt_id_);
+        new UnboxInt32Instr(unbox_defn->value()->CopyWithType(), GetDeoptId());
     if (is_truncating()) {
       replacement->AsUnboxInt32()->mark_truncating();
     }
@@ -2495,7 +2485,7 @@
   __ Bind(compiler->GetJumpLabel(this));
   if (!compiler->is_optimizing()) {
     compiler->AddCurrentDescriptor(RawPcDescriptors::kDeopt,
-                                   deopt_id_,
+                                   GetDeoptId(),
                                    Scanner::kNoSourcePos);
   }
   if (HasParallelMove()) {
@@ -2521,7 +2511,7 @@
     // uniformity with ARM and MIPS, where we can reuse pattern matching
     // code that matches backwards from the end of the pattern.
     compiler->AddCurrentDescriptor(RawPcDescriptors::kDeopt,
-                                   deopt_id_,
+                                   GetDeoptId(),
                                    Scanner::kNoSourcePos);
   }
   if (HasParallelMove()) {
@@ -2727,9 +2717,12 @@
                                        Value* left,
                                        Value* right,
                                        bool needs_number_check)
-    : ComparisonInstr(token_pos, kind, left, right),
+    : ComparisonInstr(token_pos,
+                      kind,
+                      left,
+                      right,
+                      Isolate::Current()->GetNextDeoptId()),
       needs_number_check_(needs_number_check) {
-  deopt_id_ = Isolate::Current()->GetNextDeoptId();
   ASSERT((kind == Token::kEQ_STRICT) || (kind == Token::kNE_STRICT));
 }
 
@@ -3044,8 +3037,7 @@
 
 bool TestCidsInstr::AttributesEqual(Instruction* other) const {
   TestCidsInstr* other_instr = other->AsTestCids();
-  ASSERT(other != NULL);
-  if (kind() != other_instr->kind()) {
+  if (!ComparisonInstr::AttributesEqual(other)) {
     return false;
   }
   if (cid_results().length() != other_instr->cid_results().length()) {
@@ -3216,10 +3208,11 @@
 
 InvokeMathCFunctionInstr::InvokeMathCFunctionInstr(
     ZoneGrowableArray<Value*>* inputs,
-    intptr_t original_deopt_id,
+    intptr_t deopt_id,
     MethodRecognizer::Kind recognized_kind,
     intptr_t token_pos)
-    : inputs_(inputs),
+    : PureDefinition(deopt_id),
+      inputs_(inputs),
       recognized_kind_(recognized_kind),
       token_pos_(token_pos) {
   ASSERT(inputs_->length() == ArgumentCountFor(recognized_kind_));
@@ -3228,7 +3221,6 @@
     (*inputs)[i]->set_instruction(this);
     (*inputs)[i]->set_use_index(i);
   }
-  deopt_id_ = original_deopt_id;
 }
 
 
@@ -3338,9 +3330,10 @@
 
 
 MergedMathInstr::MergedMathInstr(ZoneGrowableArray<Value*>* inputs,
-                                 intptr_t original_deopt_id,
+                                 intptr_t deopt_id,
                                  MergedMathInstr::Kind kind)
-    : inputs_(inputs),
+    : PureDefinition(deopt_id),
+      inputs_(inputs),
       kind_(kind) {
   ASSERT(inputs_->length() == InputCountFor(kind_));
   for (intptr_t i = 0; i < inputs_->length(); ++i) {
@@ -3348,7 +3341,6 @@
     (*inputs)[i]->set_instruction(this);
     (*inputs)[i]->set_use_index(i);
   }
-  deopt_id_ = original_deopt_id;
 }
 
 
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
index a851006..26733a5 100644
--- a/runtime/vm/intermediate_language.h
+++ b/runtime/vm/intermediate_language.h
@@ -600,8 +600,8 @@
   };
 #undef DECLARE_TAG
 
-  Instruction()
-      : deopt_id_(Isolate::kNoDeoptId),
+  explicit Instruction(intptr_t deopt_id = Isolate::kNoDeoptId)
+      : deopt_id_(deopt_id),
         lifetime_position_(-1),
         previous_(NULL),
         next_(NULL),
@@ -851,108 +851,12 @@
   friend class Definition;  // Needed for InsertBefore, InsertAfter.
   friend class CallSiteInliner;
 
-  // Classes that set or read deopt_id_.
-  friend class UnboxIntegerInstr;
-  friend class UnboxDoubleInstr;
-  friend class UnboxFloat32x4Instr;
-  friend class UnboxFloat64x2Instr;
-  friend class UnboxInt32x4Instr;
-  friend class BinaryDoubleOpInstr;
-  friend class BinaryFloat32x4OpInstr;
-  friend class Float32x4ZeroInstr;
-  friend class Float32x4SplatInstr;
-  friend class Simd32x4ShuffleInstr;
-  friend class Simd32x4ShuffleMixInstr;
-  friend class Simd32x4GetSignMaskInstr;
-  friend class Float32x4ConstructorInstr;
-  friend class Float32x4ComparisonInstr;
-  friend class Float32x4MinMaxInstr;
-  friend class Float32x4ScaleInstr;
-  friend class Float32x4SqrtInstr;
-  friend class Float32x4ZeroArgInstr;
-  friend class Float32x4ClampInstr;
-  friend class Float32x4WithInstr;
-  friend class Float32x4ToInt32x4Instr;
-  friend class Simd64x2ShuffleInstr;
-  friend class Float64x2ZeroArgInstr;
-  friend class Float64x2OneArgInstr;
-  friend class Float32x4ToFloat64x2Instr;
-  friend class Float64x2ToFloat32x4Instr;
-  friend class Float64x2ZeroInstr;
-  friend class Float64x2SplatInstr;
-  friend class Float64x2ConstructorInstr;
-  friend class Int32x4ConstructorInstr;
-  friend class Int32x4BoolConstructorInstr;
-  friend class Int32x4GetFlagInstr;
-  friend class Int32x4SetFlagInstr;
-  friend class Int32x4SelectInstr;
-  friend class Int32x4ToFloat32x4Instr;
-  friend class BinaryInt32x4OpInstr;
-  friend class BinaryFloat64x2OpInstr;
-  friend class UnaryDoubleOpInstr;
-  friend class MathUnaryInstr;
-  friend class MathMinMaxInstr;
-  friend class CheckClassInstr;
-  friend class CheckClassIdInstr;
-  friend class GuardFieldInstr;
-  friend class CheckSmiInstr;
-  friend class CheckArrayBoundInstr;
-  friend class CheckEitherNonSmiInstr;
+  // deopt_id_ write access.
+  friend class ComparisonInstr;
   friend class LICM;
   friend class Scheduler;
-  friend class DoubleToSmiInstr;
-  friend class DoubleToDoubleInstr;
-  friend class DoubleToFloatInstr;
-  friend class FloatToDoubleInstr;
-  friend class InvokeMathCFunctionInstr;
-  friend class MergedMathInstr;
-  friend class FlowGraphOptimizer;
-  friend class LoadIndexedInstr;
-  friend class StoreIndexedInstr;
-  friend class StoreInstanceFieldInstr;
-  friend class ComparisonInstr;
-  friend class TargetEntryInstr;
-  friend class JoinEntryInstr;
-  friend class InstanceOfInstr;
-  friend class PolymorphicInstanceCallInstr;
-  friend class SmiToDoubleInstr;
-  friend class MintToDoubleInstr;
-  friend class DoubleToIntegerInstr;
-  friend class BranchSimplifier;
   friend class BlockEntryInstr;
-  friend class RelationalOpInstr;
-  friend class EqualityCompareInstr;
-  friend class TestCidsInstr;
-  friend class UnboxIntNInstr;
-  friend class UnboxInt32Instr;
-  friend class UnboxUint32Instr;
-  friend class UnboxedIntConverterInstr;
-  friend class UnaryIntegerOpInstr;
-  friend class BinaryIntegerOpInstr;
-  friend class DeoptimizeInstr;
-
-  // deopt_id_ access.
-  friend class InstanceCallInstr;
-  friend class StaticCallInstr;
-  friend class GotoInstr;
-  friend class ReturnInstr;
-  friend class BranchInstr;
-  friend class AssertAssignableInstr;
-  friend class TestSmiInstr;
-  friend class IfThenElseInstr;
-  friend class StrictCompareInstr;
-  friend class ThrowInstr;
-  friend class ReThrowInstr;
-  friend class AssertBooleanInstr;
-  friend class CurrentContextInstr;
-  friend class ClosureCallInstr;
-  friend class StringInterpolateInstr;
-  friend class CreateArrayInstr;
-  friend class InstantiateTypeInstr;
-  friend class InstantiateTypeArgumentsInstr;
-  friend class InitStaticFieldInstr;
-  friend class CloneContextInstr;
-  friend class CheckStackOverflowInstr;
+  friend class BranchSimplifier;
 
   virtual void RawSetInputAt(intptr_t i, Value* value) = 0;
 
@@ -972,14 +876,57 @@
 };
 
 
-template<intptr_t N>
-class TemplateInstruction: public Instruction {
+class PureInstruction : public Instruction {
  public:
-  TemplateInstruction<N>() : inputs_() { }
+  explicit PureInstruction(intptr_t deopt_id)
+      : Instruction(deopt_id) { }
+
+  virtual bool AllowsCSE() const { return true; }
+  virtual EffectSet Dependencies() const { return EffectSet::None(); }
+
+  virtual EffectSet Effects() const { return EffectSet::None(); }
+};
+
+
+// Types to be used as ThrowsTrait for TemplateInstruction/TemplateDefinition.
+struct Throws {
+  static const bool kCanThrow = true;
+};
+
+
+struct NoThrow {
+  static const bool kCanThrow = false;
+};
+
+
+// Types to be used as CSETrait for TemplateInstruction/TemplateDefinition.
+// Pure instructions are those that allow CSE and have no effects and
+// no dependencies.
+template<typename DefaultBase, typename PureBase>
+struct Pure {
+  typedef PureBase Base;
+};
+
+
+template<typename DefaultBase, typename PureBase>
+struct NoCSE {
+  typedef DefaultBase Base;
+};
+
+
+template<intptr_t N,
+         typename ThrowsTrait,
+         template<typename Default, typename Pure> class CSETrait = NoCSE>
+class TemplateInstruction: public CSETrait<Instruction, PureInstruction>::Base {
+ public:
+  explicit TemplateInstruction(intptr_t deopt_id = Isolate::kNoDeoptId)
+      : CSETrait<Instruction, PureInstruction>::Base(deopt_id), inputs_() { }
 
   virtual intptr_t InputCount() const { return N; }
   virtual Value* InputAt(intptr_t i) const { return inputs_[i]; }
 
+  virtual bool MayThrow() const { return ThrowsTrait::kCanThrow; }
+
  protected:
   EmbeddedArray<Value*, N> inputs_;
 
@@ -1048,7 +995,7 @@
 };
 
 
-class ParallelMoveInstr : public TemplateInstruction<0> {
+class ParallelMoveInstr : public TemplateInstruction<0, NoThrow> {
  public:
   ParallelMoveInstr() : moves_(4) { }
 
@@ -1082,8 +1029,6 @@
 
   virtual void PrintTo(BufferFormatter* f) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   GrowableArray<MoveOperands*> moves_;   // Elements cannot be null.
 
@@ -1228,7 +1173,8 @@
 
  protected:
   BlockEntryInstr(intptr_t block_id, intptr_t try_index)
-      : block_id_(block_id),
+      : Instruction(Isolate::Current()->GetNextDeoptId()),
+        block_id_(block_id),
         try_index_(try_index),
         preorder_number_(-1),
         postorder_number_(-1),
@@ -1237,7 +1183,6 @@
         last_instruction_(NULL),
         parallel_move_(NULL),
         loop_info_(NULL) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
   }
 
  private:
@@ -1628,7 +1573,7 @@
 // Abstract super-class of all instructions that define a value (Bind, Phi).
 class Definition : public Instruction {
  public:
-  Definition();
+  explicit Definition(intptr_t deopt_id = Isolate::kNoDeoptId);
 
   // Overridden by definitions that have pushed arguments.
   virtual intptr_t ArgumentCount() const { return 0; }
@@ -1837,14 +1782,31 @@
 }
 
 
-template<intptr_t N>
-class TemplateDefinition : public Definition {
+class PureDefinition : public Definition {
  public:
-  TemplateDefinition<N>() : inputs_() { }
+  explicit PureDefinition(intptr_t deopt_id)
+      : Definition(deopt_id) { }
+
+  virtual bool AllowsCSE() const { return true; }
+  virtual EffectSet Dependencies() const { return EffectSet::None(); }
+
+  virtual EffectSet Effects() const { return EffectSet::None(); }
+};
+
+
+template<intptr_t N,
+         typename ThrowsTrait,
+         template<typename Impure, typename Pure> class CSETrait = NoCSE>
+class TemplateDefinition : public CSETrait<Definition, PureDefinition>::Base {
+ public:
+  explicit TemplateDefinition(intptr_t deopt_id = Isolate::kNoDeoptId)
+      : CSETrait<Definition, PureDefinition>::Base(deopt_id), inputs_() { }
 
   virtual intptr_t InputCount() const { return N; }
   virtual Value* InputAt(intptr_t i) const { return inputs_[i]; }
 
+  virtual bool MayThrow() const { return ThrowsTrait::kCanThrow; }
+
  protected:
   EmbeddedArray<Value*, N> inputs_;
 
@@ -2017,7 +1979,7 @@
 };
 
 
-class PushArgumentInstr : public TemplateDefinition<1> {
+class PushArgumentInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit PushArgumentInstr(Value* value) {
     SetInputAt(0, value);
@@ -2037,8 +1999,6 @@
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(PushArgumentInstr);
 };
@@ -2049,11 +2009,11 @@
 }
 
 
-class ReturnInstr : public TemplateInstruction<1> {
+class ReturnInstr : public TemplateInstruction<1, NoThrow> {
  public:
   ReturnInstr(intptr_t token_pos, Value* value)
-      : token_pos_(token_pos) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos) {
     SetInputAt(0, value);
   }
 
@@ -2074,8 +2034,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t token_pos_;
 
@@ -2083,10 +2041,11 @@
 };
 
 
-class ThrowInstr : public TemplateInstruction<0> {
+class ThrowInstr : public TemplateInstruction<0, Throws> {
  public:
-  explicit ThrowInstr(intptr_t token_pos) : token_pos_(token_pos) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+  explicit ThrowInstr(intptr_t token_pos)
+      : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos) {
   }
 
   DECLARE_INSTRUCTION(Throw)
@@ -2099,8 +2058,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
 
@@ -2108,13 +2065,14 @@
 };
 
 
-class ReThrowInstr : public TemplateInstruction<0> {
+class ReThrowInstr : public TemplateInstruction<0, Throws> {
  public:
   // 'catch_try_index' can be CatchClauseNode::kInvalidTryIndex if the
   // rethrow has been artifically generated by the parser.
   ReThrowInstr(intptr_t token_pos, intptr_t catch_try_index)
-      : token_pos_(token_pos), catch_try_index_(catch_try_index) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
+        catch_try_index_(catch_try_index) {
   }
 
   DECLARE_INSTRUCTION(ReThrow)
@@ -2128,8 +2086,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
   const intptr_t catch_try_index_;
@@ -2138,13 +2094,13 @@
 };
 
 
-class GotoInstr : public TemplateInstruction<0> {
+class GotoInstr : public TemplateInstruction<0, NoThrow> {
  public:
   explicit GotoInstr(JoinEntryInstr* entry)
-    : successor_(entry),
+    : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+      successor_(entry),
       edge_weight_(0.0),
       parallel_move_(NULL) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
   }
 
   DECLARE_INSTRUCTION(Goto)
@@ -2191,8 +2147,6 @@
 
   virtual void PrintTo(BufferFormatter* f) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   JoinEntryInstr* successor_;
   double edge_weight_;
@@ -2203,7 +2157,7 @@
 };
 
 
-class ComparisonInstr : public TemplateDefinition<2> {
+class ComparisonInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   Value* left() const { return inputs_[0]; }
   Value* right() const { return inputs_[1]; }
@@ -2231,14 +2185,27 @@
     kind_ = Token::NegateComparison(kind_);
   }
 
+  virtual bool CanBecomeDeoptimizationTarget() const { return true; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
+
+  virtual bool AttributesEqual(Instruction* other) const {
+    ComparisonInstr* other_comparison = other->AsComparison();
+    return kind() == other_comparison->kind() &&
+        (operation_cid() == other_comparison->operation_cid());
+  }
+
   DEFINE_INSTRUCTION_TYPE_CHECK(Comparison)
 
  protected:
   ComparisonInstr(intptr_t token_pos,
                   Token::Kind kind,
                   Value* left,
-                  Value* right)
-      : token_pos_(token_pos), kind_(kind), operation_cid_(kIllegalCid) {
+                  Value* right,
+                  intptr_t deopt_id = Isolate::kNoDeoptId)
+      : TemplateDefinition(deopt_id),
+        token_pos_(token_pos),
+        kind_(kind),
+        operation_cid_(kIllegalCid) {
     SetInputAt(0, left);
     if (right != NULL) {
       SetInputAt(1, right);
@@ -2257,11 +2224,11 @@
 class BranchInstr : public Instruction {
  public:
   explicit BranchInstr(ComparisonInstr* comparison)
-      : comparison_(comparison),
+      : Instruction(Isolate::Current()->GetNextDeoptId()),
+        comparison_(comparison),
         is_checked_(false),
         constrained_type_(NULL),
         constant_target_(NULL) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ASSERT(comparison->env() == NULL);
     for (intptr_t i = comparison->InputCount() - 1; i >= 0; --i) {
       comparison->InputAt(i)->set_instruction(this);
@@ -2363,7 +2330,7 @@
 };
 
 
-class StoreContextInstr : public TemplateInstruction<1> {
+class StoreContextInstr : public TemplateInstruction<1, NoThrow> {
  public:
   explicit StoreContextInstr(Value* value) {
     SetInputAt(kValuePos, value);
@@ -2383,33 +2350,26 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(StoreContextInstr);
 };
 
 
-class DeoptimizeInstr : public TemplateInstruction<0> {
+class DeoptimizeInstr : public TemplateInstruction<0, NoThrow, Pure> {
  public:
   DeoptimizeInstr(ICData::DeoptReasonId deopt_reason, intptr_t deopt_id)
-      : deopt_reason_(deopt_reason) {
-    deopt_id_ = deopt_id;
+      : TemplateInstruction(deopt_id),
+        deopt_reason_(deopt_reason) {
   }
 
   virtual intptr_t ArgumentCount() const { return 0; }
 
   virtual bool CanDeoptimize() const { return true; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return true;
   }
 
-  virtual bool MayThrow() const { return false; }
-
   DECLARE_INSTRUCTION(Deoptimize)
 
  private:
@@ -2419,7 +2379,7 @@
 };
 
 
-class RedefinitionInstr : public TemplateDefinition<1> {
+class RedefinitionInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit RedefinitionInstr(Value* value) {
     SetInputAt(0, value);
@@ -2436,14 +2396,12 @@
   virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(RedefinitionInstr);
 };
 
 
-class ConstraintInstr : public TemplateDefinition<1> {
+class ConstraintInstr : public TemplateDefinition<1, NoThrow> {
  public:
   ConstraintInstr(Value* value, Range* constraint)
       : constraint_(constraint),
@@ -2464,8 +2422,6 @@
     return false;
   }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
   Value* value() const { return inputs_[0]; }
@@ -2491,7 +2447,7 @@
 };
 
 
-class ConstantInstr : public TemplateDefinition<0> {
+class ConstantInstr : public TemplateDefinition<0, NoThrow, Pure> {
  public:
   explicit ConstantInstr(const Object& value);
 
@@ -2508,13 +2464,8 @@
 
   virtual void InferRange(RangeAnalysis* analysis, Range* range);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Object& value_;
 
@@ -2547,18 +2498,19 @@
 };
 
 
-class AssertAssignableInstr : public TemplateDefinition<3> {
+class AssertAssignableInstr : public TemplateDefinition<3, Throws, Pure> {
  public:
   AssertAssignableInstr(intptr_t token_pos,
                         Value* value,
                         Value* instantiator,
                         Value* instantiator_type_arguments,
                         const AbstractType& dst_type,
-                        const String& dst_name)
-      : token_pos_(token_pos),
+                        const String& dst_name,
+                        intptr_t deopt_id)
+      : TemplateDefinition(deopt_id),
+        token_pos_(token_pos),
         dst_type_(AbstractType::ZoneHandle(dst_type.raw())),
         dst_name_(dst_name) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ASSERT(!dst_type.IsNull());
     ASSERT(!dst_name.IsNull());
     SetInputAt(0, value);
@@ -2593,13 +2545,8 @@
 
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
   AbstractType& dst_type_;
@@ -2609,11 +2556,11 @@
 };
 
 
-class AssertBooleanInstr : public TemplateDefinition<1> {
+class AssertBooleanInstr : public TemplateDefinition<1, Throws, Pure> {
  public:
   AssertBooleanInstr(intptr_t token_pos, Value* value)
-      : token_pos_(token_pos) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos) {
     SetInputAt(0, value);
   }
 
@@ -2629,13 +2576,8 @@
 
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
 
@@ -2645,10 +2587,10 @@
 
 // Denotes the current context, normally held in a register.  This is
 // a computation, not a value, because it's mutable.
-class CurrentContextInstr : public TemplateDefinition<0> {
+class CurrentContextInstr : public TemplateDefinition<0, NoThrow> {
  public:
-  CurrentContextInstr() {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+  CurrentContextInstr()
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()) {
   }
 
   DECLARE_INSTRUCTION(CurrentContext)
@@ -2660,21 +2602,19 @@
   virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(CurrentContextInstr);
 };
 
 
-class ClosureCallInstr : public TemplateDefinition<1> {
+class ClosureCallInstr : public TemplateDefinition<1, Throws> {
  public:
   ClosureCallInstr(Value* function,
                    ClosureCallNode* node,
                    ZoneGrowableArray<PushArgumentInstr*>* arguments)
-      : ast_node_(*node),
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        ast_node_(*node),
         arguments_(arguments) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     SetInputAt(0, function);
   }
 
@@ -2697,8 +2637,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::All(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const ClosureCallNode& ast_node_;
   ZoneGrowableArray<PushArgumentInstr*>* arguments_;
@@ -2707,7 +2645,7 @@
 };
 
 
-class InstanceCallInstr : public TemplateDefinition<0> {
+class InstanceCallInstr : public TemplateDefinition<0, Throws> {
  public:
   InstanceCallInstr(intptr_t token_pos,
                     const String& function_name,
@@ -2716,14 +2654,14 @@
                     const Array& argument_names,
                     intptr_t checked_argument_count,
                     const ZoneGrowableArray<const ICData*>& ic_data_array)
-      : ic_data_(NULL),
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        ic_data_(NULL),
         token_pos_(token_pos),
         function_name_(function_name),
         token_kind_(token_kind),
         arguments_(arguments),
         argument_names_(argument_names),
         checked_argument_count_(checked_argument_count) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ic_data_ = GetICData(ic_data_array);
     ASSERT(function_name.IsNotTemporaryScopedHandle());
     ASSERT(!arguments->is_empty());
@@ -2772,8 +2710,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::All(); }
 
-  virtual bool MayThrow() const { return true; }
-
  protected:
   friend class FlowGraphOptimizer;
   void set_ic_data(ICData* value) { ic_data_ = value; }
@@ -2791,17 +2727,17 @@
 };
 
 
-class PolymorphicInstanceCallInstr : public TemplateDefinition<0> {
+class PolymorphicInstanceCallInstr : public TemplateDefinition<0, Throws> {
  public:
   PolymorphicInstanceCallInstr(InstanceCallInstr* instance_call,
                                const ICData& ic_data,
                                bool with_checks)
-      : instance_call_(instance_call),
+      : TemplateDefinition(instance_call->deopt_id()),
+        instance_call_(instance_call),
         ic_data_(ic_data),
         with_checks_(with_checks) {
     ASSERT(instance_call_ != NULL);
     ASSERT(ic_data.NumberOfChecks() > 0);
-    deopt_id_ = instance_call->deopt_id();
   }
 
   InstanceCallInstr* instance_call() const { return instance_call_; }
@@ -2831,8 +2767,6 @@
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   InstanceCallInstr* instance_call_;
   const ICData& ic_data_;
@@ -2858,11 +2792,6 @@
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
-  virtual bool CanBecomeDeoptimizationTarget() const {
-    // StrictCompare can be merged into Branch and thus needs an environment.
-    return true;
-  }
-
   virtual bool CanDeoptimize() const { return false; }
 
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
@@ -2876,12 +2805,7 @@
   bool needs_number_check() const { return needs_number_check_; }
   void set_needs_number_check(bool value) { needs_number_check_ = value; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
-  virtual bool AttributesEqual(Instruction* other) const;
-
-  virtual bool MayThrow() const { return false; }
+  bool AttributesEqual(Instruction* other) const;
 
  private:
   // True if the comparison must check for double, Mint or Bigint and
@@ -2898,7 +2822,6 @@
  public:
   TestSmiInstr(intptr_t token_pos, Token::Kind kind, Value* left, Value* right)
       : ComparisonInstr(token_pos, kind, left, right) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ASSERT(kind == Token::kEQ || kind == Token::kNE);
   }
 
@@ -2910,23 +2833,10 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool CanBecomeDeoptimizationTarget() const {
-    // TestSmi can be merged into Branch and thus needs an environment.
-    return true;
-  }
-
-  virtual intptr_t DeoptimizationTarget() const {
-    return GetDeoptId();
-  }
-
   virtual Representation RequiredInputRepresentation(intptr_t idx) const {
     return kTagged;
   }
 
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-
-  virtual bool MayThrow() const { return false; }
-
   virtual void EmitBranchCode(FlowGraphCompiler* compiler,
                               BranchInstr* branch);
 
@@ -2949,11 +2859,10 @@
                 Value* value,
                 const ZoneGrowableArray<intptr_t>& cid_results,
                 intptr_t deopt_id)
-      : ComparisonInstr(token_pos, kind, value, NULL),
+      : ComparisonInstr(token_pos, kind, value, NULL, deopt_id),
         cid_results_(cid_results) {
     ASSERT((kind == Token::kIS) || (kind == Token::kISNOT));
     set_operation_cid(kObjectCid);
-    deopt_id_ = deopt_id;
   }
 
   virtual intptr_t InputCount() const { return 1; }
@@ -2969,28 +2878,13 @@
   virtual CompileType ComputeType() const;
 
   virtual bool CanDeoptimize() const {
-    return deopt_id_ != Isolate::kNoDeoptId;
-  }
-
-  virtual bool CanBecomeDeoptimizationTarget() const {
-    // TestCid can be merged into Branch and thus needs an environment.
-    return true;
-  }
-
-  virtual intptr_t DeoptimizationTarget() const {
-    return GetDeoptId();
+    return GetDeoptId() != Isolate::kNoDeoptId;
   }
 
   virtual Representation RequiredInputRepresentation(intptr_t idx) const {
     return kTagged;
   }
 
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
-
-  virtual bool MayThrow() const { return false; }
-
   virtual bool AttributesEqual(Instruction* other) const;
 
   virtual void EmitBranchCode(FlowGraphCompiler* compiler,
@@ -3015,10 +2909,9 @@
                        Value* right,
                        intptr_t cid,
                        intptr_t deopt_id)
-      : ComparisonInstr(token_pos, kind, left, right) {
+      : ComparisonInstr(token_pos, kind, left, right, deopt_id) {
     ASSERT(Token::IsEqualityOperator(kind));
     set_operation_cid(cid);
-    deopt_id_ = deopt_id;  // Override generated deopt-id.
   }
 
   DECLARE_INSTRUCTION(EqualityCompare)
@@ -3031,21 +2924,12 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool CanBecomeDeoptimizationTarget() const {
-    // EqualityCompare can be merged into Branch and thus needs an environment.
-    return true;
-  }
-
   virtual void EmitBranchCode(FlowGraphCompiler* compiler,
                               BranchInstr* branch);
 
   virtual Condition EmitComparisonCode(FlowGraphCompiler* compiler,
                                        BranchLabels labels);
 
-  virtual intptr_t DeoptimizationTarget() const {
-    return GetDeoptId();
-  }
-
   virtual Representation RequiredInputRepresentation(intptr_t idx) const {
     ASSERT((idx == 0) || (idx == 1));
     if (operation_cid() == kDoubleCid) return kUnboxedDouble;
@@ -3053,10 +2937,6 @@
     return kTagged;
   }
 
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(EqualityCompareInstr);
 };
@@ -3070,10 +2950,9 @@
                     Value* right,
                     intptr_t cid,
                     intptr_t deopt_id)
-      : ComparisonInstr(token_pos, kind, left, right) {
+      : ComparisonInstr(token_pos, kind, left, right, deopt_id) {
     ASSERT(Token::IsRelationalOperator(kind));
     set_operation_cid(cid);
-    deopt_id_ = deopt_id;  // Override generated deopt-id.
   }
 
   DECLARE_INSTRUCTION(RelationalOp)
@@ -3086,21 +2965,12 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool CanBecomeDeoptimizationTarget() const {
-    // RelationalOp can be merged into Branch and thus needs an environment.
-    return true;
-  }
-
   virtual void EmitBranchCode(FlowGraphCompiler* compiler,
                               BranchInstr* branch);
 
   virtual Condition EmitComparisonCode(FlowGraphCompiler* compiler,
                                        BranchLabels labels);
 
-  virtual intptr_t DeoptimizationTarget() const {
-    return GetDeoptId();
-  }
-
   virtual Representation RequiredInputRepresentation(intptr_t idx) const {
     ASSERT((idx == 0) || (idx == 1));
     if (operation_cid() == kDoubleCid) return kUnboxedDouble;
@@ -3108,12 +2978,6 @@
     return kTagged;
   }
 
-  virtual EffectSet Effects() const {
-    return EffectSet::None();
-  }
-
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(RelationalOpInstr);
 };
@@ -3126,10 +2990,10 @@
   IfThenElseInstr(ComparisonInstr* comparison,
                   Value* if_true,
                   Value* if_false)
-      : comparison_(comparison),
+      : Definition(Isolate::Current()->GetNextDeoptId()),
+        comparison_(comparison),
         if_true_(Smi::Cast(if_true->BoundConstant()).Value()),
         if_false_(Smi::Cast(if_false->BoundConstant()).Value()) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     // Adjust uses at the comparison.
     ASSERT(comparison->env() == NULL);
     for (intptr_t i = comparison->InputCount() - 1; i >= 0; --i) {
@@ -3200,14 +3064,15 @@
 };
 
 
-class StaticCallInstr : public TemplateDefinition<0> {
+class StaticCallInstr : public TemplateDefinition<0, Throws> {
  public:
   StaticCallInstr(intptr_t token_pos,
                   const Function& function,
                   const Array& argument_names,
                   ZoneGrowableArray<PushArgumentInstr*>* arguments,
                   const ZoneGrowableArray<const ICData*>& ic_data_array)
-      : ic_data_(NULL),
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        ic_data_(NULL),
         token_pos_(token_pos),
         function_(function),
         argument_names_(argument_names),
@@ -3216,7 +3081,6 @@
         is_known_list_constructor_(false),
         is_native_list_factory_(false),
         identity_(AliasIdentity::Unknown()) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ic_data_ = GetICData(ic_data_array);
     ASSERT(function.IsZoneHandle());
     ASSERT(argument_names.IsZoneHandle() ||  argument_names.InVMHeap());
@@ -3271,8 +3135,6 @@
     return is_known_list_constructor() || is_native_list_factory();
   }
 
-  virtual bool MayThrow() const { return true; }
-
   virtual AliasIdentity Identity() const { return identity_; }
   virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; }
 
@@ -3294,7 +3156,7 @@
 };
 
 
-class LoadLocalInstr : public TemplateDefinition<0> {
+class LoadLocalInstr : public TemplateDefinition<0, NoThrow> {
  public:
   explicit LoadLocalInstr(const LocalVariable& local)
       : local_(local), is_last_(false) { }
@@ -3316,11 +3178,6 @@
   void mark_last() { is_last_ = true; }
   bool is_last() const { return is_last_; }
 
-  virtual bool MayThrow() const {
-    UNREACHABLE();
-    return false;
-  }
-
  private:
   const LocalVariable& local_;
   bool is_last_;
@@ -3329,7 +3186,7 @@
 };
 
 
-class PushTempInstr : public TemplateDefinition<1> {
+class PushTempInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit PushTempInstr(Value* value) {
     SetInputAt(0, value);
@@ -3348,11 +3205,6 @@
     return EffectSet::None();
   }
 
-  virtual bool MayThrow() const {
-    UNREACHABLE();
-    return false;
-  }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(PushTempInstr);
 };
@@ -3407,7 +3259,7 @@
 };
 
 
-class StoreLocalInstr : public TemplateDefinition<1> {
+class StoreLocalInstr : public TemplateDefinition<1, NoThrow> {
  public:
   StoreLocalInstr(const LocalVariable& local, Value* value)
       : local_(local), is_dead_(false), is_last_(false) {
@@ -3435,11 +3287,6 @@
     return EffectSet::None();
   }
 
-  virtual bool MayThrow() const {
-    UNREACHABLE();
-    return false;
-  }
-
  private:
   const LocalVariable& local_;
   bool is_dead_;
@@ -3449,7 +3296,7 @@
 };
 
 
-class NativeCallInstr : public TemplateDefinition<0> {
+class NativeCallInstr : public TemplateDefinition<0, Throws> {
  public:
   explicit NativeCallInstr(NativeBodyNode* node)
       : ast_node_(*node) {}
@@ -3478,11 +3325,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::All(); }
 
-  virtual bool MayThrow() const {
-    UNREACHABLE();
-    return true;
-  }
-
  private:
   const NativeBodyNode& ast_node_;
 
@@ -3490,7 +3332,7 @@
 };
 
 
-class DebugStepCheckInstr : public TemplateInstruction<0> {
+class DebugStepCheckInstr : public TemplateInstruction<0, NoThrow> {
  public:
   DebugStepCheckInstr(intptr_t token_pos,
                       RawPcDescriptors::Kind stub_kind)
@@ -3501,7 +3343,6 @@
   DECLARE_INSTRUCTION(DebugStepCheck)
 
   virtual intptr_t token_pos() const { return token_pos_; }
-  virtual bool MayThrow() const { return false; }
   virtual bool CanDeoptimize() const { return false; }
   virtual EffectSet Effects() const { return EffectSet::All(); }
   virtual intptr_t ArgumentCount() const { return 0; }
@@ -3521,7 +3362,7 @@
 };
 
 
-class StoreInstanceFieldInstr : public TemplateDefinition<2> {
+class StoreInstanceFieldInstr : public TemplateDefinition<2, NoThrow> {
  public:
   StoreInstanceFieldInstr(const Field& field,
                           Value* instance,
@@ -3589,8 +3430,6 @@
   // are marked as having no side-effects.
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
   bool IsUnboxedStore() const;
 
   bool IsPotentialUnboxedStore() const;
@@ -3617,13 +3456,13 @@
 };
 
 
-class GuardFieldInstr : public TemplateInstruction<1> {
+class GuardFieldInstr : public TemplateInstruction<1, NoThrow, Pure> {
  public:
   GuardFieldInstr(Value* value,
                   const Field& field,
                   intptr_t deopt_id)
-    : field_(field) {
-    deopt_id_ = deopt_id;
+    : TemplateInstruction(deopt_id),
+      field_(field) {
     SetInputAt(0, value);
   }
 
@@ -3639,12 +3478,6 @@
     return true;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
-
-  virtual bool MayThrow() const { return false; }
-
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
  private:
@@ -3690,7 +3523,7 @@
 };
 
 
-class LoadStaticFieldInstr : public TemplateDefinition<1> {
+class LoadStaticFieldInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit LoadStaticFieldInstr(Value* field_value) {
     ASSERT(field_value->BindsToConstant());
@@ -3713,14 +3546,12 @@
   virtual EffectSet Dependencies() const;
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(LoadStaticFieldInstr);
 };
 
 
-class StoreStaticFieldInstr : public TemplateDefinition<1> {
+class StoreStaticFieldInstr : public TemplateDefinition<1, NoThrow> {
  public:
   StoreStaticFieldInstr(const Field& field, Value* value)
       : field_(field) {
@@ -3747,8 +3578,6 @@
   // are marked as having no side-effects.
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   bool CanValueBeSmi() const {
     const intptr_t cid = value()->Type()->ToNullableCid();
@@ -3763,7 +3592,7 @@
 };
 
 
-class LoadIndexedInstr : public TemplateDefinition<2> {
+class LoadIndexedInstr : public TemplateDefinition<2, NoThrow> {
  public:
   LoadIndexedInstr(Value* array,
                    Value* index,
@@ -3771,12 +3600,12 @@
                    intptr_t class_id,
                    intptr_t deopt_id,
                    intptr_t token_pos)
-      : index_scale_(index_scale),
+      : TemplateDefinition(deopt_id),
+        index_scale_(index_scale),
         class_id_(class_id),
         token_pos_(token_pos) {
     SetInputAt(0, array);
     SetInputAt(1, index);
-    deopt_id_ = deopt_id;
   }
 
   intptr_t token_pos() const { return token_pos_; }
@@ -3801,7 +3630,7 @@
   intptr_t class_id() const { return class_id_; }
 
   virtual bool CanDeoptimize() const {
-    return deopt_id_ != Isolate::kNoDeoptId;
+    return GetDeoptId() != Isolate::kNoDeoptId;
   }
 
   bool Typed32BitIsSmi() const {
@@ -3811,12 +3640,7 @@
   virtual Representation representation() const;
   virtual void InferRange(RangeAnalysis* analysis, Range* range);
 
-  virtual bool AllowsCSE() const { return false; }
   virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const;
-  virtual bool AttributesEqual(Instruction* other) const;
-
-  virtual bool MayThrow() const { return false; }
 
  private:
   const intptr_t index_scale_;
@@ -3827,7 +3651,7 @@
 };
 
 
-class StringFromCharCodeInstr : public TemplateDefinition<1> {
+class StringFromCharCodeInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   StringFromCharCodeInstr(Value* char_code, intptr_t cid) : cid_(cid) {
     ASSERT(char_code != NULL);
@@ -3844,15 +3668,10 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsStringFromCharCode()->cid_ == cid_;
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t cid_;
 
@@ -3860,7 +3679,7 @@
 };
 
 
-class StringToCharCodeInstr : public TemplateDefinition<1> {
+class StringToCharCodeInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   StringToCharCodeInstr(Value* str, intptr_t cid) : cid_(cid) {
     ASSERT(str != NULL);
@@ -3874,15 +3693,10 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsStringToCharCode()->cid_ == cid_;
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t cid_;
 
@@ -3890,11 +3704,12 @@
 };
 
 
-class StringInterpolateInstr : public TemplateDefinition<1> {
+class StringInterpolateInstr : public TemplateDefinition<1, Throws> {
  public:
   StringInterpolateInstr(Value* value, intptr_t token_pos)
-      : token_pos_(token_pos), function_(Function::Handle()) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
+        function_(Function::Handle()) {
     SetInputAt(0, value);
   }
 
@@ -3905,7 +3720,6 @@
   // Issues a static call to Dart code which calls toString on objects.
   virtual EffectSet Effects() const { return EffectSet::All(); }
   virtual bool CanDeoptimize() const { return true; }
-  virtual bool MayThrow() const { return true; }
 
   const Function& CallFunction() const;
 
@@ -3921,7 +3735,7 @@
 };
 
 
-class StoreIndexedInstr : public TemplateDefinition<3> {
+class StoreIndexedInstr : public TemplateDefinition<3, NoThrow> {
  public:
   StoreIndexedInstr(Value* array,
                     Value* index,
@@ -3931,14 +3745,14 @@
                     intptr_t class_id,
                     intptr_t deopt_id,
                     intptr_t token_pos)
-      : emit_store_barrier_(emit_store_barrier),
+      : TemplateDefinition(deopt_id),
+        emit_store_barrier_(emit_store_barrier),
         index_scale_(index_scale),
         class_id_(class_id),
         token_pos_(token_pos) {
     SetInputAt(kArrayPos, array);
     SetInputAt(kIndexPos, index);
     SetInputAt(kValuePos, value);
-    deopt_id_ = deopt_id;
   }
 
   DECLARE_INSTRUCTION(StoreIndexed)
@@ -3972,13 +3786,11 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const StoreBarrierType emit_store_barrier_;
   const intptr_t index_scale_;
@@ -3990,7 +3802,7 @@
 
 
 // Note overrideable, built-in: value ? false : true.
-class BooleanNegateInstr : public TemplateDefinition<1> {
+class BooleanNegateInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit BooleanNegateInstr(Value* value) {
     SetInputAt(0, value);
@@ -4005,8 +3817,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4014,7 +3824,7 @@
 };
 
 
-class InstanceOfInstr : public TemplateDefinition<3> {
+class InstanceOfInstr : public TemplateDefinition<3, Throws> {
  public:
   InstanceOfInstr(intptr_t token_pos,
                   Value* value,
@@ -4023,14 +3833,14 @@
                   const AbstractType& type,
                   bool negate_result,
                   intptr_t deopt_id)
-      : token_pos_(token_pos),
+      : TemplateDefinition(deopt_id),
+        token_pos_(token_pos),
         type_(type),
         negate_result_(negate_result) {
     ASSERT(!type.IsNull());
     SetInputAt(0, value);
     SetInputAt(1, instantiator);
     SetInputAt(2, instantiator_type_arguments);
-    deopt_id_ = deopt_id;
   }
 
   DECLARE_INSTRUCTION(InstanceOf)
@@ -4050,8 +3860,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
   Value* value_;
@@ -4064,7 +3872,7 @@
 };
 
 
-class AllocateObjectInstr : public TemplateDefinition<0> {
+class AllocateObjectInstr : public TemplateDefinition<0, NoThrow> {
  public:
   AllocateObjectInstr(intptr_t token_pos,
                       const Class& cls,
@@ -4100,8 +3908,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual AliasIdentity Identity() const { return identity_; }
   virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; }
 
@@ -4205,13 +4011,14 @@
 };
 
 
-class CreateArrayInstr : public TemplateDefinition<2> {
+class CreateArrayInstr : public TemplateDefinition<2, Throws> {
  public:
   CreateArrayInstr(intptr_t token_pos,
                    Value* element_type,
                    Value* num_elements)
-      : token_pos_(token_pos), identity_(AliasIdentity::Unknown())  {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
+        identity_(AliasIdentity::Unknown())  {
     SetInputAt(kElementTypePos, element_type);
     SetInputAt(kLengthPos, num_elements);
   }
@@ -4234,9 +4041,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  // OutOfMemoryError can be called.
-  virtual bool MayThrow() const { return true; }
-
   virtual AliasIdentity Identity() const { return identity_; }
   virtual void SetIdentity(AliasIdentity identity) { identity_ = identity; }
 
@@ -4248,7 +4052,12 @@
 };
 
 
-class LoadUntaggedInstr : public TemplateDefinition<1> {
+// Note: this instruction must not be moved without the indexed access that
+// depends on it (e.g. out of loops). GC may cause collect
+// the array while the external data-array is still accessed.
+// TODO(vegorov) enable LICMing this instruction by ensuring that array itself
+// is kept alive.
+class LoadUntaggedInstr : public TemplateDefinition<1, NoThrow> {
  public:
   LoadUntaggedInstr(Value* object, intptr_t offset) : offset_(offset) {
     SetInputAt(0, object);
@@ -4265,16 +4074,9 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  // This instruction must not be moved without the indexed access that
-  // depends on it (e.g. out of loops). GC may cause collect
-  // the array while the external data-array is still accessed.
-  virtual bool AllowsCSE() const { return false; }
   virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   intptr_t offset_;
 
@@ -4282,7 +4084,7 @@
 };
 
 
-class LoadClassIdInstr : public TemplateDefinition<1> {
+class LoadClassIdInstr : public TemplateDefinition<1, NoThrow> {
  public:
   explicit LoadClassIdInstr(Value* object) {
     SetInputAt(0, object);
@@ -4299,20 +4101,18 @@
   virtual bool CanDeoptimize() const { return false; }
 
   virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual EffectSet Dependencies() const {
     return EffectSet::Externalization();
   }
+  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(LoadClassIdInstr);
 };
 
 
-class LoadFieldInstr : public TemplateDefinition<1> {
+class LoadFieldInstr : public TemplateDefinition<1, NoThrow> {
  public:
   LoadFieldInstr(Value* instance,
                  intptr_t offset_in_bytes,
@@ -4393,8 +4193,6 @@
   virtual EffectSet Dependencies() const;
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t offset_in_bytes_;
   const AbstractType& type_;
@@ -4409,16 +4207,16 @@
 };
 
 
-class InstantiateTypeInstr : public TemplateDefinition<1> {
+class InstantiateTypeInstr : public TemplateDefinition<1, Throws> {
  public:
   InstantiateTypeInstr(intptr_t token_pos,
                        const AbstractType& type,
                        const Class& instantiator_class,
                        Value* instantiator)
-      : token_pos_(token_pos),
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
         type_(type),
         instantiator_class_(instantiator_class) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ASSERT(type.IsZoneHandle());
     SetInputAt(0, instantiator);
   }
@@ -4437,8 +4235,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   const intptr_t token_pos_;
   const AbstractType& type_;
@@ -4448,16 +4244,16 @@
 };
 
 
-class InstantiateTypeArgumentsInstr : public TemplateDefinition<1> {
+class InstantiateTypeArgumentsInstr : public TemplateDefinition<1, Throws> {
  public:
   InstantiateTypeArgumentsInstr(intptr_t token_pos,
                                 const TypeArguments& type_arguments,
                                 const Class& instantiator_class,
                                 Value* instantiator)
-      : token_pos_(token_pos),
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
         type_arguments_(type_arguments),
         instantiator_class_(instantiator_class) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
     ASSERT(type_arguments.IsZoneHandle());
     SetInputAt(0, instantiator);
   }
@@ -4477,8 +4273,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4490,7 +4284,7 @@
 };
 
 
-class AllocateContextInstr : public TemplateDefinition<0> {
+class AllocateContextInstr : public TemplateDefinition<0, NoThrow> {
  public:
   AllocateContextInstr(intptr_t token_pos,
                        intptr_t num_context_variables)
@@ -4509,8 +4303,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t token_pos_;
   const intptr_t num_context_variables_;
@@ -4519,11 +4311,11 @@
 };
 
 
-class InitStaticFieldInstr : public TemplateInstruction<1> {
+class InitStaticFieldInstr : public TemplateInstruction<1, Throws> {
  public:
   InitStaticFieldInstr(Value* input, const Field& field)
-      : field_(field) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+        field_(field) {
     SetInputAt(0, input);
   }
 
@@ -4535,7 +4327,6 @@
   virtual intptr_t ArgumentCount() const { return 0; }
   virtual bool CanDeoptimize() const { return true; }
   virtual EffectSet Effects() const { return EffectSet::All(); }
-  virtual bool MayThrow() const { return true; }
   virtual Instruction* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4545,7 +4336,8 @@
 };
 
 
-class AllocateUninitializedContextInstr : public TemplateDefinition<0> {
+class AllocateUninitializedContextInstr
+    : public TemplateDefinition<0, NoThrow> {
  public:
   AllocateUninitializedContextInstr(intptr_t token_pos,
                                     intptr_t num_context_variables)
@@ -4564,8 +4356,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t token_pos_;
   const intptr_t num_context_variables_;
@@ -4574,11 +4364,11 @@
 };
 
 
-class CloneContextInstr : public TemplateDefinition<1> {
+class CloneContextInstr : public TemplateDefinition<1, NoThrow> {
  public:
   CloneContextInstr(intptr_t token_pos, Value* context_value)
-      : token_pos_(token_pos) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateDefinition(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos) {
     SetInputAt(0, context_value);
   }
 
@@ -4592,8 +4382,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t token_pos_;
 
@@ -4601,14 +4389,12 @@
 };
 
 
-class CheckEitherNonSmiInstr : public TemplateInstruction<2> {
+class CheckEitherNonSmiInstr : public TemplateInstruction<2, NoThrow, Pure> {
  public:
   CheckEitherNonSmiInstr(Value* left, Value* right, intptr_t deopt_id)
-      : licm_hoisted_(false) {
+      : TemplateInstruction(deopt_id), licm_hoisted_(false) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -4622,13 +4408,8 @@
 
   virtual Instruction* Canonicalize(FlowGraph* flow_graph);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   void set_licm_hoisted(bool value) { licm_hoisted_ = value; }
 
  private:
@@ -4638,7 +4419,7 @@
 };
 
 
-class BoxDoubleInstr : public TemplateDefinition<1> {
+class BoxDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit BoxDoubleInstr(Value* value) {
     SetInputAt(0, value);
@@ -4660,13 +4441,8 @@
     return kUnboxedDouble;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4674,7 +4450,7 @@
 };
 
 
-class BoxFloat32x4Instr : public TemplateDefinition<1> {
+class BoxFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit BoxFloat32x4Instr(Value* value) {
     SetInputAt(0, value);
@@ -4696,13 +4472,8 @@
   DECLARE_INSTRUCTION(BoxFloat32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4710,7 +4481,7 @@
 };
 
 
-class BoxFloat64x2Instr : public TemplateDefinition<1> {
+class BoxFloat64x2Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit BoxFloat64x2Instr(Value* value) {
     SetInputAt(0, value);
@@ -4732,13 +4503,8 @@
   DECLARE_INSTRUCTION(BoxFloat64x2)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4747,7 +4513,7 @@
 
 
 
-class BoxInt32x4Instr : public TemplateDefinition<1> {
+class BoxInt32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit BoxInt32x4Instr(Value* value) {
     SetInputAt(0, value);
@@ -4769,13 +4535,8 @@
   DECLARE_INSTRUCTION(BoxInt32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4783,7 +4544,7 @@
 };
 
 
-class BoxIntegerInstr : public TemplateDefinition<1> {
+class BoxIntegerInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit BoxIntegerInstr(Value* value) : is_smi_(false) {
     SetInputAt(0, value);
@@ -4811,13 +4572,8 @@
 
   virtual void InferRange(RangeAnalysis* analysis, Range* range);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4827,11 +4583,11 @@
 };
 
 
-class UnboxDoubleInstr : public TemplateDefinition<1> {
+class UnboxDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  UnboxDoubleInstr(Value* value, intptr_t deopt_id) {
+  UnboxDoubleInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -4848,13 +4604,8 @@
   DECLARE_INSTRUCTION(UnboxDouble)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4862,11 +4613,11 @@
 };
 
 
-class UnboxFloat32x4Instr : public TemplateDefinition<1> {
+class UnboxFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  UnboxFloat32x4Instr(Value* value, intptr_t deopt_id) {
+  UnboxFloat32x4Instr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -4882,13 +4633,8 @@
   DECLARE_INSTRUCTION(UnboxFloat32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4896,11 +4642,11 @@
 };
 
 
-class UnboxFloat64x2Instr : public TemplateDefinition<1> {
+class UnboxFloat64x2Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  UnboxFloat64x2Instr(Value* value, intptr_t deopt_id) {
+  UnboxFloat64x2Instr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -4916,13 +4662,8 @@
   DECLARE_INSTRUCTION(UnboxFloat64x2)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4930,11 +4671,11 @@
 };
 
 
-class UnboxInt32x4Instr : public TemplateDefinition<1> {
+class UnboxInt32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  UnboxInt32x4Instr(Value* value, intptr_t deopt_id) {
+  UnboxInt32x4Instr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -4947,16 +4688,11 @@
     return kUnboxedInt32x4;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
   DECLARE_INSTRUCTION(UnboxInt32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -4964,11 +4700,11 @@
 };
 
 
-class UnboxIntegerInstr : public TemplateDefinition<1> {
+class UnboxIntegerInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  UnboxIntegerInstr(Value* value, intptr_t deopt_id) {
+  UnboxIntegerInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -4982,20 +4718,15 @@
     return kUnboxedMint;
   }
 
-  intptr_t deopt_id() const { return deopt_id_; }
+  intptr_t deopt_id() const { return GetDeoptId(); }
 
   virtual void InferRange(RangeAnalysis* analysis, Range* range);
 
   DECLARE_INSTRUCTION(UnboxInteger)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -5003,7 +4734,7 @@
 };
 
 
-class MathUnaryInstr : public TemplateDefinition<1> {
+class MathUnaryInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   enum MathUnaryKind {
     kIllegal,
@@ -5013,9 +4744,8 @@
     kDoubleSquare,
   };
   MathUnaryInstr(MathUnaryKind kind, Value* value, intptr_t deopt_id)
-      : kind_(kind) {
+      : TemplateDefinition(deopt_id), kind_(kind) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -5038,21 +4768,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(MathUnary)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return kind() == other->AsMathUnary()->kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
   Definition* Canonicalize(FlowGraph* flow_graph);
 
   static const char* KindToCString(MathUnaryKind kind);
@@ -5065,18 +4790,19 @@
 
 
 // Represents Math's static min and max functions.
-class MathMinMaxInstr : public TemplateDefinition<2> {
+class MathMinMaxInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   MathMinMaxInstr(MethodRecognizer::Kind op_kind,
                   Value* left_value,
                   Value* right_value,
                   intptr_t deopt_id,
                   intptr_t result_cid)
-      : op_kind_(op_kind), result_cid_(result_cid) {
+      : TemplateDefinition(deopt_id),
+        op_kind_(op_kind),
+        result_cid_(result_cid) {
     ASSERT((result_cid == kSmiCid) || (result_cid == kDoubleCid));
     SetInputAt(0, left_value);
     SetInputAt(1, right_value);
-    deopt_id_ = deopt_id;
   }
 
   MethodRecognizer::Kind op_kind() const { return op_kind_; }
@@ -5107,18 +4833,13 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(MathMinMax)
   virtual CompileType ComputeType() const;
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
   const intptr_t result_cid_;
@@ -5127,18 +4848,18 @@
 };
 
 
-class BinaryDoubleOpInstr : public TemplateDefinition<2> {
+class BinaryDoubleOpInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   BinaryDoubleOpInstr(Token::Kind op_kind,
                       Value* left,
                       Value* right,
                       intptr_t deopt_id,
                       intptr_t token_pos)
-      : op_kind_(op_kind), token_pos_(token_pos) {
+      : TemplateDefinition(deopt_id),
+        op_kind_(op_kind),
+        token_pos_(token_pos) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    // Overriden generated deopt_id.
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5164,7 +4885,7 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(BinaryDoubleOp)
@@ -5172,15 +4893,10 @@
 
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsBinaryDoubleOp()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Token::Kind op_kind_;
   const intptr_t token_pos_;
@@ -5189,16 +4905,15 @@
 };
 
 
-class BinaryFloat32x4OpInstr : public TemplateDefinition<2> {
+class BinaryFloat32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   BinaryFloat32x4OpInstr(Token::Kind op_kind,
                          Value* left,
                          Value* right,
                          intptr_t deopt_id)
-      : op_kind_(op_kind) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5222,21 +4937,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(BinaryFloat32x4Op)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsBinaryFloat32x4Op()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Token::Kind op_kind_;
 
@@ -5244,14 +4954,13 @@
 };
 
 
-class Simd32x4ShuffleInstr : public TemplateDefinition<1> {
+class Simd32x4ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   Simd32x4ShuffleInstr(MethodRecognizer::Kind op_kind, Value* value,
                        intptr_t mask,
                        intptr_t deopt_id)
-      : op_kind_(op_kind), mask_(mask) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind), mask_(mask) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -5294,22 +5003,17 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Simd32x4Shuffle)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return (op_kind() == other->AsSimd32x4Shuffle()->op_kind()) &&
            (mask() == other->AsSimd32x4Shuffle()->mask());
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
   const intptr_t mask_;
@@ -5318,14 +5022,13 @@
 };
 
 
-class Simd32x4ShuffleMixInstr : public TemplateDefinition<2> {
+class Simd32x4ShuffleMixInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   Simd32x4ShuffleMixInstr(MethodRecognizer::Kind op_kind, Value* xy,
                            Value* zw, intptr_t mask, intptr_t deopt_id)
-      : op_kind_(op_kind), mask_(mask) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind), mask_(mask) {
     SetInputAt(0, xy);
     SetInputAt(1, zw);
-    deopt_id_ = deopt_id;
   }
 
   Value* xy() const { return inputs_[0]; }
@@ -5359,22 +5062,17 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Simd32x4ShuffleMix)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return (op_kind() == other->AsSimd32x4ShuffleMix()->op_kind()) &&
            (mask() == other->AsSimd32x4ShuffleMix()->mask());
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
   const intptr_t mask_;
@@ -5383,15 +5081,18 @@
 };
 
 
-class Float32x4ConstructorInstr : public TemplateDefinition<4> {
+class Float32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> {
  public:
-  Float32x4ConstructorInstr(Value* value0, Value* value1, Value* value2,
-                            Value* value3, intptr_t deopt_id) {
+  Float32x4ConstructorInstr(Value* value0,
+                            Value* value1,
+                            Value* value2,
+                            Value* value3,
+                            intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value0);
     SetInputAt(1, value1);
     SetInputAt(2, value2);
     SetInputAt(3, value3);
-    deopt_id_ = deopt_id;
   }
 
   Value* value0() const { return inputs_[0]; }
@@ -5415,29 +5116,24 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Constructor)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4ConstructorInstr);
 };
 
 
-class Float32x4SplatInstr : public TemplateDefinition<1> {
+class Float32x4SplatInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float32x4SplatInstr(Value* value, intptr_t deopt_id) {
+  Float32x4SplatInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -5458,33 +5154,23 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Splat)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4SplatInstr);
 };
 
 
-class Float32x4ZeroInstr : public TemplateDefinition<0> {
+// TODO(vegorov) replace with UnboxedConstantInstr.
+class Float32x4ZeroInstr : public TemplateDefinition<0, NoThrow, Pure> {
  public:
-  explicit Float32x4ZeroInstr(intptr_t deopt_id) {
-    deopt_id_ = deopt_id;
-  }
-
-  Value* value() const { return inputs_[0]; }
-
-  virtual void PrintOperandsTo(BufferFormatter* f) const;
+  Float32x4ZeroInstr() { }
 
   virtual bool CanDeoptimize() const { return false; }
 
@@ -5492,40 +5178,25 @@
     return kUnboxedFloat32x4;
   }
 
-  virtual Representation RequiredInputRepresentation(intptr_t idx) const {
-    UNIMPLEMENTED();
-    return kUnboxedFloat32x4;
-  }
-
-  virtual intptr_t DeoptimizationTarget() const {
-    // Direct access since this instruction cannot deoptimize, and the deopt-id
-    // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
-  }
-
   DECLARE_INSTRUCTION(Float32x4Zero)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4ZeroInstr);
 };
 
 
-class Float32x4ComparisonInstr : public TemplateDefinition<2> {
+class Float32x4ComparisonInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float32x4ComparisonInstr(MethodRecognizer::Kind op_kind, Value* left,
-                           Value* right, intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Float32x4ComparisonInstr(MethodRecognizer::Kind op_kind,
+                           Value* left,
+                           Value* right,
+                           intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5549,21 +5220,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Comparison)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4Comparison()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5571,14 +5237,15 @@
 };
 
 
-class Float32x4MinMaxInstr : public TemplateDefinition<2> {
+class Float32x4MinMaxInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float32x4MinMaxInstr(MethodRecognizer::Kind op_kind, Value* left,
-                       Value* right, intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Float32x4MinMaxInstr(MethodRecognizer::Kind op_kind,
+                       Value* left,
+                       Value* right,
+                       intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5602,21 +5269,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4MinMax)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4MinMax()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5624,14 +5286,15 @@
 };
 
 
-class Float32x4ScaleInstr : public TemplateDefinition<2> {
+class Float32x4ScaleInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float32x4ScaleInstr(MethodRecognizer::Kind op_kind, Value* left,
-                      Value* right, intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Float32x4ScaleInstr(MethodRecognizer::Kind op_kind,
+                      Value* left,
+                      Value* right,
+                      intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5658,21 +5321,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Scale)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4Scale()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5680,12 +5338,13 @@
 };
 
 
-class Float32x4SqrtInstr : public TemplateDefinition<1> {
+class Float32x4SqrtInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float32x4SqrtInstr(MethodRecognizer::Kind op_kind, Value* left,
-                     intptr_t deopt_id) : op_kind_(op_kind) {
+  Float32x4SqrtInstr(MethodRecognizer::Kind op_kind,
+                     Value* left,
+                     intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5708,21 +5367,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Sqrt)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4Sqrt()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5730,12 +5384,15 @@
 };
 
 
-class Float32x4ZeroArgInstr : public TemplateDefinition<1> {
+// TODO(vegorov) rename to Unary to match naming convention for arithmetic.
+class Float32x4ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float32x4ZeroArgInstr(MethodRecognizer::Kind op_kind, Value* left,
-                        intptr_t deopt_id) : op_kind_(op_kind) {
+  Float32x4ZeroArgInstr(MethodRecognizer::Kind op_kind,
+                        Value* left,
+                        intptr_t deopt_id)
+      : TemplateDefinition(deopt_id),
+        op_kind_(op_kind) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5758,21 +5415,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4ZeroArg)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4ZeroArg()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5780,14 +5432,16 @@
 };
 
 
-class Float32x4ClampInstr : public TemplateDefinition<3> {
+class Float32x4ClampInstr : public TemplateDefinition<3, NoThrow, Pure> {
  public:
-  Float32x4ClampInstr(Value* left, Value* lower, Value* upper,
-                      intptr_t deopt_id) {
+  Float32x4ClampInstr(Value* left,
+                      Value* lower,
+                      Value* upper,
+                      intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, left);
     SetInputAt(1, lower);
     SetInputAt(2, upper);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5810,32 +5464,29 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4Clamp)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4ClampInstr);
 };
 
 
-class Float32x4WithInstr : public TemplateDefinition<2> {
+class Float32x4WithInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float32x4WithInstr(MethodRecognizer::Kind op_kind, Value* left,
-                     Value* replacement, intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Float32x4WithInstr(MethodRecognizer::Kind op_kind,
+                     Value* left,
+                     Value* replacement,
+                     intptr_t deopt_id)
+      : TemplateDefinition(deopt_id),
+        op_kind_(op_kind) {
     SetInputAt(0, replacement);
     SetInputAt(1, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[1]; }
@@ -5862,21 +5513,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4With)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat32x4With()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -5884,14 +5530,14 @@
 };
 
 
-class Simd64x2ShuffleInstr : public TemplateDefinition<1> {
+class Simd64x2ShuffleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Simd64x2ShuffleInstr(MethodRecognizer::Kind op_kind, Value* value,
+  Simd64x2ShuffleInstr(MethodRecognizer::Kind op_kind,
+                       Value* value,
                        intptr_t mask,
                        intptr_t deopt_id)
-      : op_kind_(op_kind), mask_(mask) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind), mask_(mask) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -5926,22 +5572,17 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Simd64x2Shuffle)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return (op_kind() == other->AsSimd64x2Shuffle()->op_kind()) &&
            (mask() == other->AsSimd64x2Shuffle()->mask());
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
   const intptr_t mask_;
@@ -5950,11 +5591,11 @@
 };
 
 
-class Float32x4ToInt32x4Instr : public TemplateDefinition<1> {
+class Float32x4ToInt32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float32x4ToInt32x4Instr(Value* left, intptr_t deopt_id) {
+  Float32x4ToInt32x4Instr(Value* left, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -5975,29 +5616,24 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4ToInt32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4ToInt32x4Instr);
 };
 
 
-class Float32x4ToFloat64x2Instr : public TemplateDefinition<1> {
+class Float32x4ToFloat64x2Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float32x4ToFloat64x2Instr(Value* left, intptr_t deopt_id) {
+  Float32x4ToFloat64x2Instr(Value* left, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6018,29 +5654,24 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float32x4ToFloat64x2)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float32x4ToFloat64x2Instr);
 };
 
 
-class Float64x2ToFloat32x4Instr : public TemplateDefinition<1> {
+class Float64x2ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float64x2ToFloat32x4Instr(Value* left, intptr_t deopt_id) {
+  Float64x2ToFloat32x4Instr(Value* left, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6061,30 +5692,25 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float64x2ToFloat32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float64x2ToFloat32x4Instr);
 };
 
 
-class Float64x2ConstructorInstr : public TemplateDefinition<2> {
+class Float64x2ConstructorInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float64x2ConstructorInstr(Value* value0, Value* value1, intptr_t deopt_id) {
+  Float64x2ConstructorInstr(Value* value0, Value* value1, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value0);
     SetInputAt(1, value1);
-    deopt_id_ = deopt_id;
   }
 
   Value* value0() const { return inputs_[0]; }
@@ -6106,29 +5732,24 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float64x2Constructor)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float64x2ConstructorInstr);
 };
 
 
-class Float64x2SplatInstr : public TemplateDefinition<1> {
+class Float64x2SplatInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float64x2SplatInstr(Value* value, intptr_t deopt_id) {
+  Float64x2SplatInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -6149,31 +5770,22 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float64x2Splat)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float64x2SplatInstr);
 };
 
 
-class Float64x2ZeroInstr : public TemplateDefinition<0> {
+class Float64x2ZeroInstr : public TemplateDefinition<0, NoThrow, Pure> {
  public:
-  explicit Float64x2ZeroInstr(intptr_t deopt_id) {
-    deopt_id_ = deopt_id;
-  }
-
-  virtual void PrintOperandsTo(BufferFormatter* f) const;
+  Float64x2ZeroInstr() { }
 
   virtual bool CanDeoptimize() const { return false; }
 
@@ -6181,38 +5793,24 @@
     return kUnboxedFloat64x2;
   }
 
-  virtual Representation RequiredInputRepresentation(intptr_t idx) const {
-    UNIMPLEMENTED();
-    return kUnboxedFloat64x2;
-  }
-
-  virtual intptr_t DeoptimizationTarget() const {
-    // Direct access since this instruction cannot deoptimize, and the deopt-id
-    // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
-  }
-
   DECLARE_INSTRUCTION(Float64x2Zero)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Float64x2ZeroInstr);
 };
 
 
-class Float64x2ZeroArgInstr : public TemplateDefinition<1> {
+// TODO(vegorov) rename to Unary to match arithmetic instructions.
+class Float64x2ZeroArgInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Float64x2ZeroArgInstr(MethodRecognizer::Kind op_kind, Value* left,
-                        intptr_t deopt_id) : op_kind_(op_kind) {
+  Float64x2ZeroArgInstr(MethodRecognizer::Kind op_kind,
+                        Value* left,
+                        intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6239,21 +5837,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float64x2ZeroArg)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat64x2ZeroArg()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -6261,13 +5854,15 @@
 };
 
 
-class Float64x2OneArgInstr : public TemplateDefinition<2> {
+class Float64x2OneArgInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Float64x2OneArgInstr(MethodRecognizer::Kind op_kind, Value* left,
-                       Value* right, intptr_t deopt_id) : op_kind_(op_kind) {
+  Float64x2OneArgInstr(MethodRecognizer::Kind op_kind,
+                       Value* left,
+                       Value* right,
+                       intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6299,21 +5894,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Float64x2OneArg)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsFloat64x2OneArg()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -6321,15 +5911,18 @@
 };
 
 
-class Int32x4ConstructorInstr : public TemplateDefinition<4> {
+class Int32x4ConstructorInstr : public TemplateDefinition<4, NoThrow, Pure> {
  public:
-  Int32x4ConstructorInstr(Value* value0, Value* value1, Value* value2,
-                          Value* value3, intptr_t deopt_id) {
+  Int32x4ConstructorInstr(Value* value0,
+                          Value* value1,
+                          Value* value2,
+                          Value* value3,
+                          intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value0);
     SetInputAt(1, value1);
     SetInputAt(2, value2);
     SetInputAt(3, value3);
-    deopt_id_ = deopt_id;
   }
 
   Value* value0() const { return inputs_[0]; }
@@ -6353,33 +5946,32 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4Constructor)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Int32x4ConstructorInstr);
 };
 
 
-class Int32x4BoolConstructorInstr : public TemplateDefinition<4> {
+class Int32x4BoolConstructorInstr
+    : public TemplateDefinition<4, NoThrow, Pure> {
  public:
-  Int32x4BoolConstructorInstr(Value* value0, Value* value1, Value* value2,
-                              Value* value3, intptr_t deopt_id) {
+  Int32x4BoolConstructorInstr(Value* value0,
+                              Value* value1,
+                              Value* value2,
+                              Value* value3,
+                              intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value0);
     SetInputAt(1, value1);
     SetInputAt(2, value2);
     SetInputAt(3, value3);
-    deopt_id_ = deopt_id;
   }
 
   Value* value0() const { return inputs_[0]; }
@@ -6403,31 +5995,26 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4BoolConstructor)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Int32x4BoolConstructorInstr);
 };
 
 
-class Int32x4GetFlagInstr : public TemplateDefinition<1> {
+class Int32x4GetFlagInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Int32x4GetFlagInstr(MethodRecognizer::Kind op_kind, Value* value,
-                       intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Int32x4GetFlagInstr(MethodRecognizer::Kind op_kind,
+                      Value* value,
+                      intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -6450,21 +6037,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4GetFlag)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsInt32x4GetFlag()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -6472,12 +6054,13 @@
 };
 
 
-class Simd32x4GetSignMaskInstr : public TemplateDefinition<1> {
+class Simd32x4GetSignMaskInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Simd32x4GetSignMaskInstr(MethodRecognizer::Kind op_kind, Value* value,
-                           intptr_t deopt_id) : op_kind_(op_kind) {
+  Simd32x4GetSignMaskInstr(MethodRecognizer::Kind op_kind,
+                           Value* value,
+                           intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -6504,21 +6087,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Simd32x4GetSignMask)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsSimd32x4GetSignMask()->op_kind() == op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -6526,14 +6104,16 @@
 };
 
 
-class Int32x4SelectInstr : public TemplateDefinition<3> {
+class Int32x4SelectInstr : public TemplateDefinition<3, NoThrow, Pure> {
  public:
-  Int32x4SelectInstr(Value* mask, Value* trueValue, Value* falseValue,
-                      intptr_t deopt_id) {
+  Int32x4SelectInstr(Value* mask,
+                     Value* trueValue,
+                     Value* falseValue,
+                     intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, mask);
     SetInputAt(1, trueValue);
     SetInputAt(2, falseValue);
-    deopt_id_ = deopt_id;
   }
 
   Value* mask() const { return inputs_[0]; }
@@ -6559,32 +6139,28 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4Select)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Int32x4SelectInstr);
 };
 
 
-class Int32x4SetFlagInstr : public TemplateDefinition<2> {
+class Int32x4SetFlagInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
-  Int32x4SetFlagInstr(MethodRecognizer::Kind op_kind, Value* value,
-                       Value* flagValue, intptr_t deopt_id)
-      : op_kind_(op_kind) {
+  Int32x4SetFlagInstr(MethodRecognizer::Kind op_kind,
+                      Value* value,
+                      Value* flagValue,
+                      intptr_t deopt_id)
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, value);
     SetInputAt(1, flagValue);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -6611,21 +6187,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4SetFlag)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsInt32x4SetFlag()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind op_kind_;
 
@@ -6633,11 +6204,11 @@
 };
 
 
-class Int32x4ToFloat32x4Instr : public TemplateDefinition<1> {
+class Int32x4ToFloat32x4Instr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  Int32x4ToFloat32x4Instr(Value* left, intptr_t deopt_id) {
+  Int32x4ToFloat32x4Instr(Value* left, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, left);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6658,34 +6229,28 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(Int32x4ToFloat32x4)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Int32x4ToFloat32x4Instr);
 };
 
 
-class BinaryInt32x4OpInstr : public TemplateDefinition<2> {
+class BinaryInt32x4OpInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   BinaryInt32x4OpInstr(Token::Kind op_kind,
                         Value* left,
                         Value* right,
                         intptr_t deopt_id)
-      : op_kind_(op_kind) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6709,21 +6274,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(BinaryInt32x4Op)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return op_kind() == other->AsBinaryInt32x4Op()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Token::Kind op_kind_;
 
@@ -6731,16 +6291,15 @@
 };
 
 
-class BinaryFloat64x2OpInstr : public TemplateDefinition<2> {
+class BinaryFloat64x2OpInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   BinaryFloat64x2OpInstr(Token::Kind op_kind,
                          Value* left,
                          Value* right,
                          intptr_t deopt_id)
-      : op_kind_(op_kind) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    deopt_id_ = deopt_id;
   }
 
   Value* left() const { return inputs_[0]; }
@@ -6764,22 +6323,16 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   DECLARE_INSTRUCTION(BinaryFloat64x2Op)
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
-    ASSERT(other->IsBinaryFloat64x2Op());
     return op_kind() == other->AsBinaryFloat64x2Op()->op_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Token::Kind op_kind_;
 
@@ -6787,17 +6340,15 @@
 };
 
 
-class UnaryIntegerOpInstr : public TemplateDefinition<1> {
+class UnaryIntegerOpInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   UnaryIntegerOpInstr(Token::Kind op_kind,
                       Value* value,
                       intptr_t deopt_id)
-      : op_kind_(op_kind) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     ASSERT((op_kind == Token::kNEGATE) ||
            (op_kind == Token::kBIT_NOT));
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   static UnaryIntegerOpInstr* Make(Representation representation,
@@ -6809,9 +6360,6 @@
   Value* value() const { return inputs_[0]; }
   Token::Kind op_kind() const { return op_kind_; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsUnaryIntegerOp()->op_kind() == op_kind();
   }
@@ -6819,11 +6367,9 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
   DEFINE_INSTRUCTION_TYPE_CHECK(UnaryIntegerOp)
@@ -6910,19 +6456,18 @@
 };
 
 
-class BinaryIntegerOpInstr : public TemplateDefinition<2> {
+class BinaryIntegerOpInstr : public TemplateDefinition<2, NoThrow, Pure> {
  public:
   BinaryIntegerOpInstr(Token::Kind op_kind,
                        Value* left,
                        Value* right,
                        intptr_t deopt_id)
-      : op_kind_(op_kind),
+      : TemplateDefinition(deopt_id),
+        op_kind_(op_kind),
         can_overflow_(true),
         is_truncating_(false) {
     SetInputAt(0, left);
     SetInputAt(1, right);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   static BinaryIntegerOpInstr* Make(Representation representation,
@@ -6977,14 +6522,10 @@
         return false;
     }
   }
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
+
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
-
-  virtual bool MayThrow() const { return false; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
@@ -7214,16 +6755,14 @@
 
 
 // Handles only NEGATE.
-class UnaryDoubleOpInstr : public TemplateDefinition<1> {
+class UnaryDoubleOpInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   UnaryDoubleOpInstr(Token::Kind op_kind,
                      Value* value,
                      intptr_t deopt_id)
-      : op_kind_(op_kind) {
+      : TemplateDefinition(deopt_id), op_kind_(op_kind) {
     ASSERT(op_kind == Token::kNEGATE);
     SetInputAt(0, value);
-    // Overriden generated deopt_id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7239,7 +6778,7 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   virtual Representation representation() const {
@@ -7251,13 +6790,8 @@
     return kUnboxedDouble;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const Token::Kind op_kind_;
 
@@ -7265,11 +6799,12 @@
 };
 
 
-class CheckStackOverflowInstr : public TemplateInstruction<0> {
+class CheckStackOverflowInstr : public TemplateInstruction<0, NoThrow> {
  public:
   CheckStackOverflowInstr(intptr_t token_pos, intptr_t loop_depth)
-      : token_pos_(token_pos), loop_depth_(loop_depth) {
-    deopt_id_ = Isolate::Current()->GetNextDeoptId();
+      : TemplateInstruction(Isolate::Current()->GetNextDeoptId()),
+        token_pos_(token_pos),
+        loop_depth_(loop_depth) {
   }
 
   virtual intptr_t token_pos() const { return token_pos_; }
@@ -7284,8 +6819,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
  private:
@@ -7297,7 +6830,7 @@
 
 
 // TODO(vegorov): remove this instruction in favor of Int32ToDouble.
-class SmiToDoubleInstr : public TemplateDefinition<1> {
+class SmiToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   SmiToDoubleInstr(Value* value, intptr_t token_pos)
       : token_pos_(token_pos) {
@@ -7316,13 +6849,8 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t token_pos_;
 
@@ -7330,7 +6858,7 @@
 };
 
 
-class Int32ToDoubleInstr : public TemplateDefinition<1> {
+class Int32ToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   explicit Int32ToDoubleInstr(Value* value) {
     SetInputAt(0, value);
@@ -7352,22 +6880,17 @@
 
   virtual bool CanDeoptimize() const { return false; }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   DISALLOW_COPY_AND_ASSIGN(Int32ToDoubleInstr);
 };
 
 
-class MintToDoubleInstr : public TemplateDefinition<1> {
+class MintToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   MintToDoubleInstr(Value* value, intptr_t deopt_id)
-      : deopt_id_(deopt_id) {
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
   }
 
@@ -7388,31 +6911,23 @@
   virtual intptr_t DeoptimizationTarget() const {
     // Direct access since this instruction cannot deoptimize, and the deopt-id
     // was inherited from another instruction that could deoptimize.
-    return deopt_id_;
+    return GetDeoptId();
   }
 
   virtual bool CanDeoptimize() const { return false; }
-
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
-  const intptr_t deopt_id_;
-
   DISALLOW_COPY_AND_ASSIGN(MintToDoubleInstr);
 };
 
 
-class DoubleToIntegerInstr : public TemplateDefinition<1> {
+class DoubleToIntegerInstr : public TemplateDefinition<1, Throws> {
  public:
   DoubleToIntegerInstr(Value* value, InstanceCallInstr* instance_call)
-      : instance_call_(instance_call) {
+      : TemplateDefinition(instance_call->deopt_id()),
+        instance_call_(instance_call) {
     SetInputAt(0, value);
-    deopt_id_ = instance_call->deopt_id();
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7427,8 +6942,6 @@
 
   virtual EffectSet Effects() const { return EffectSet::None(); }
 
-  virtual bool MayThrow() const { return true; }
-
  private:
   InstanceCallInstr* instance_call_;
 
@@ -7438,12 +6951,11 @@
 
 // Similar to 'DoubleToIntegerInstr' but expects unboxed double as input
 // and creates a Smi.
-class DoubleToSmiInstr : public TemplateDefinition<1> {
+class DoubleToSmiInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  DoubleToSmiInstr(Value* value, intptr_t deopt_id) {
+  DoubleToSmiInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7458,26 +6970,23 @@
     return kUnboxedDouble;
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-
-  virtual bool MayThrow() const { return false; }
+  virtual bool AttributesEqual(Instruction* other) const { return true; }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(DoubleToSmiInstr);
 };
 
 
-class DoubleToDoubleInstr : public TemplateDefinition<1> {
+class DoubleToDoubleInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   DoubleToDoubleInstr(Value* value,
                       MethodRecognizer::Kind recognized_kind,
                       intptr_t deopt_id)
-    : recognized_kind_(recognized_kind) {
+    : TemplateDefinition(deopt_id),
+      recognized_kind_(recognized_kind) {
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7498,17 +7007,12 @@
     return kUnboxedDouble;
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsDoubleToDouble()->recognized_kind() == recognized_kind();
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const MethodRecognizer::Kind recognized_kind_;
 
@@ -7516,12 +7020,11 @@
 };
 
 
-class DoubleToFloatInstr: public TemplateDefinition<1> {
+class DoubleToFloatInstr: public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  DoubleToFloatInstr(Value* value, intptr_t deopt_id) {
+  DoubleToFloatInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7545,15 +7048,10 @@
     return kUnboxedDouble;
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -7561,12 +7059,11 @@
 };
 
 
-class FloatToDoubleInstr: public TemplateDefinition<1> {
+class FloatToDoubleInstr: public TemplateDefinition<1, NoThrow, Pure> {
  public:
-  FloatToDoubleInstr(Value* value, intptr_t deopt_id) {
+  FloatToDoubleInstr(Value* value, intptr_t deopt_id)
+      : TemplateDefinition(deopt_id) {
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7586,15 +7083,10 @@
     return kUnboxedDouble;
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
  private:
@@ -7602,10 +7094,10 @@
 };
 
 
-class InvokeMathCFunctionInstr : public Definition {
+class InvokeMathCFunctionInstr : public PureDefinition {
  public:
   InvokeMathCFunctionInstr(ZoneGrowableArray<Value*>* inputs,
-                           intptr_t original_deopt_id,
+                           intptr_t deopt_id,
                            MethodRecognizer::Kind recognized_kind,
                            intptr_t token_pos);
 
@@ -7632,7 +7124,7 @@
     return kUnboxedDouble;
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
   virtual intptr_t InputCount() const {
     return inputs_->length();
@@ -7642,9 +7134,6 @@
     return (*inputs_)[i];
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     InvokeMathCFunctionInstr* other_invoke = other->AsInvokeMathCFunction();
     return other_invoke->recognized_kind() == recognized_kind();
@@ -7669,7 +7158,7 @@
 };
 
 
-class ExtractNthOutputInstr : public TemplateDefinition<1> {
+class ExtractNthOutputInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   // Extract the Nth output register from value.
   ExtractNthOutputInstr(Value* value,
@@ -7707,17 +7196,12 @@
     return definition_rep_;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     ExtractNthOutputInstr* other_extract = other->AsExtractNthOutput();
     return (other_extract->representation() == representation()) &&
            (other_extract->index() == index());
   }
 
-  virtual bool MayThrow() const { return false; }
-
  private:
   const intptr_t index_;
   const Representation definition_rep_;
@@ -7726,7 +7210,7 @@
 };
 
 
-class MergedMathInstr : public Definition {
+class MergedMathInstr : public PureDefinition {
  public:
   enum Kind {
     kTruncDivMod,
@@ -7796,13 +7280,10 @@
     }
   }
 
-  virtual intptr_t DeoptimizationTarget() const { return deopt_id_; }
+  virtual intptr_t DeoptimizationTarget() const { return GetDeoptId(); }
 
   DECLARE_INSTRUCTION(MergedMath)
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     MergedMathInstr* other_invoke = other->AsMergedMath();
     return other_invoke->kind() == kind();
@@ -7827,7 +7308,7 @@
 };
 
 
-class CheckClassInstr : public TemplateInstruction<1> {
+class CheckClassInstr : public TemplateInstruction<1, NoThrow> {
  public:
   CheckClassInstr(Value* value,
                   intptr_t deopt_id,
@@ -7859,12 +7340,10 @@
   static bool IsDenseMask(intptr_t mask);
 
   virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual EffectSet Dependencies() const;
+  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const;
 
-  virtual bool MayThrow() const { return false; }
-
   void set_licm_hoisted(bool value) { licm_hoisted_ = value; }
 
  private:
@@ -7877,12 +7356,13 @@
 };
 
 
-class CheckSmiInstr : public TemplateInstruction<1> {
+class CheckSmiInstr : public TemplateInstruction<1, NoThrow, Pure> {
  public:
-  CheckSmiInstr(Value* value, intptr_t original_deopt_id, intptr_t token_pos)
-      : token_pos_(token_pos), licm_hoisted_(false) {
+  CheckSmiInstr(Value* value, intptr_t deopt_id, intptr_t token_pos)
+      : TemplateInstruction(deopt_id),
+        token_pos_(token_pos),
+        licm_hoisted_(false) {
     SetInputAt(0, value);
-    deopt_id_ = original_deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7896,13 +7376,8 @@
 
   virtual Instruction* Canonicalize(FlowGraph* flow_graph);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   void set_licm_hoisted(bool value) { licm_hoisted_ = value; }
 
  private:
@@ -7913,12 +7388,11 @@
 };
 
 
-class CheckClassIdInstr : public TemplateInstruction<1> {
+class CheckClassIdInstr : public TemplateInstruction<1, NoThrow> {
  public:
-  CheckClassIdInstr(Value* value, intptr_t cid, intptr_t deopt_id) : cid_(cid) {
+  CheckClassIdInstr(Value* value, intptr_t cid, intptr_t deopt_id)
+      : TemplateInstruction(deopt_id), cid_(cid) {
     SetInputAt(0, value);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -7933,12 +7407,10 @@
   virtual Instruction* Canonicalize(FlowGraph* flow_graph);
 
   virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual EffectSet Dependencies() const;
+  virtual EffectSet Effects() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual void PrintOperandsTo(BufferFormatter* f) const;
 
  private:
@@ -7948,14 +7420,14 @@
 };
 
 
-class CheckArrayBoundInstr : public TemplateInstruction<2> {
+class CheckArrayBoundInstr : public TemplateInstruction<2, NoThrow, Pure> {
  public:
   CheckArrayBoundInstr(Value* length, Value* index, intptr_t deopt_id)
-      : generalized_(false), licm_hoisted_(false) {
+      : TemplateInstruction(deopt_id),
+        generalized_(false),
+        licm_hoisted_(false) {
     SetInputAt(kLengthPos, length);
     SetInputAt(kIndexPos, index);
-    // Override generated deopt-id.
-    deopt_id_ = deopt_id;
   }
 
   Value* length() const { return inputs_[kLengthPos]; }
@@ -7980,13 +7452,8 @@
 
   static bool IsFixedLengthArrayType(intptr_t class_id);
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const { return true; }
 
-  virtual bool MayThrow() const { return false; }
-
   void set_licm_hoisted(bool value) { licm_hoisted_ = value; }
 
   // Give a name to the location/input indices.
@@ -8003,7 +7470,7 @@
 };
 
 
-class BoxIntNInstr : public TemplateDefinition<1> {
+class BoxIntNInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   BoxIntNInstr(Representation representation, Value* value)
       : from_representation_(representation) {
@@ -8029,15 +7496,10 @@
     return from_representation_;
   }
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     return other->AsBoxIntN()->from_representation_ == from_representation_;
   }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
   DEFINE_INSTRUCTION_TYPE_CHECK(BoxIntN)
@@ -8076,15 +7538,15 @@
 };
 
 
-class UnboxIntNInstr : public TemplateDefinition<1> {
+class UnboxIntNInstr : public TemplateDefinition<1, NoThrow, Pure> {
  public:
   UnboxIntNInstr(Representation representation,
                  Value* value,
                  intptr_t deopt_id)
-      : representation_(representation),
+      : TemplateDefinition(deopt_id),
+        representation_(representation),
         is_truncating_(representation == kUnboxedUint32) {
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -8098,17 +7560,12 @@
 
   virtual CompileType ComputeType() const;
 
-  virtual bool AllowsCSE() const { return true; }
-  virtual EffectSet Effects() const { return EffectSet::None(); }
-  virtual EffectSet Dependencies() const { return EffectSet::None(); }
   virtual bool AttributesEqual(Instruction* other) const {
     UnboxIntNInstr* other_unbox = other->AsUnboxIntN();
     return (other_unbox->representation_ == representation_) &&
         (other_unbox->is_truncating_ == is_truncating_);
   }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual Definition* Canonicalize(FlowGraph* flow_graph);
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
@@ -8162,13 +7619,14 @@
 };
 
 
-class UnboxedIntConverterInstr : public TemplateDefinition<1> {
+class UnboxedIntConverterInstr : public TemplateDefinition<1, NoThrow> {
  public:
   UnboxedIntConverterInstr(Representation from,
                            Representation to,
                            Value* value,
                            intptr_t deopt_id)
-      : from_representation_(from),
+      : TemplateDefinition(deopt_id),
+        from_representation_(from),
         to_representation_(to),
         is_truncating_(to == kUnboxedUint32) {
     ASSERT(from != to);
@@ -8180,7 +7638,6 @@
            (to == kUnboxedInt32));
     ASSERT((to != kUnboxedInt32) || (deopt_id != Isolate::kNoDeoptId));
     SetInputAt(0, value);
-    deopt_id_ = deopt_id;
   }
 
   Value* value() const { return inputs_[0]; }
@@ -8214,8 +7671,6 @@
         (converter->is_truncating() == is_truncating());
   }
 
-  virtual bool MayThrow() const { return false; }
-
   virtual void InferRange(RangeAnalysis* analysis, Range* range);
 
   virtual void PrintOperandsTo(BufferFormatter* f) const;
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
index 8124cc2..5de809b 100644
--- a/runtime/vm/intermediate_language_arm.cc
+++ b/runtime/vm/intermediate_language_arm.cc
@@ -2612,10 +2612,6 @@
   __ LoadImmediate(temp0, num_context_variables());
   __ str(temp0, FieldAddress(result, Context::num_variables_offset()));
 
-  // Setup isolate field.
-  __ ldr(temp0, FieldAddress(CTX, Context::isolate_offset()));
-  __ str(temp0, FieldAddress(result, Context::isolate_offset()));
-
   __ Bind(slow_path->exit_label());
 }
 
@@ -3624,7 +3620,7 @@
     __ vmovdr(DTMP, 0, IP);
     __ vcvtdi(result, STMP);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(deopt_id(),
                                           ICData::kDeoptBinaryDoubleOp);
     const Register temp = locs()->temp(0).reg();
     if (value_type->is_nullable() &&
@@ -3708,7 +3704,7 @@
 
   if (value_cid != kFloat32x4Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckClass);
     __ tst(value, Operand(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kFloat32x4Cid, temp);
@@ -3776,7 +3772,8 @@
 
   if (value_cid != kFloat64x2Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
+                                          ICData::kDeoptCheckClass);
     __ tst(value, Operand(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kFloat64x2Cid, temp);
@@ -3844,7 +3841,8 @@
 
   if (value_cid != kInt32x4Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
+                                          ICData::kDeoptCheckClass);
     __ tst(value, Operand(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kInt32x4Cid, temp);
@@ -6039,7 +6037,7 @@
     __ SignFill(result_hi, result_lo);
   } else {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptUnboxInteger);
     Label is_smi, done;
     __ tst(value, Operand(kSmiTagMask));
@@ -6687,7 +6685,7 @@
   const Register out = locs()->out(0).reg();
   const Register temp = CanDeoptimize() ? locs()->temp(0).reg() : kNoRegister;
   Label* deopt = CanDeoptimize() ?
-        compiler->AddDeoptStub(deopt_id_, ICData::kDeoptUnboxInteger) : NULL;
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger) : NULL;
   Label* out_of_range = !is_truncating() ? deopt : NULL;
   ASSERT(value != out);
 
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc
index 264dec0..d550611 100644
--- a/runtime/vm/intermediate_language_arm64.cc
+++ b/runtime/vm/intermediate_language_arm64.cc
@@ -2392,10 +2392,6 @@
   __ LoadImmediate(temp0, num_context_variables(), PP);
   __ str(temp0, FieldAddress(result, Context::num_variables_offset()));
 
-  // Setup isolate field.
-  __ ldr(temp0, FieldAddress(CTX, Context::isolate_offset()));
-  __ str(temp0, FieldAddress(result, Context::isolate_offset()));
-
   __ Bind(slow_path->exit_label());
 }
 
@@ -3106,7 +3102,7 @@
     __ SmiUntag(TMP, value);  // Untag input before conversion.
     __ scvtfdx(result, TMP);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptBinaryDoubleOp);
     if (value_type->is_nullable() &&
         (value_type->ToNullableCid() == kDoubleCid)) {
@@ -3173,7 +3169,8 @@
   const VRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kFloat32x4Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ tsti(value, Immediate(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kFloat32x4Cid, PP);
@@ -3226,7 +3223,8 @@
   const VRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kFloat64x2Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ tsti(value, Immediate(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kFloat64x2Cid, PP);
@@ -3278,7 +3276,8 @@
   const VRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kInt32x4Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ tsti(value, Immediate(kSmiTagMask));
     __ b(deopt, EQ);
     __ CompareClassId(value, kInt32x4Cid, PP);
@@ -5287,7 +5286,7 @@
   const Register out = locs()->out(0).reg();
   const Register value = locs()->in(0).reg();
   Label* deopt = CanDeoptimize() ?
-      compiler->AddDeoptStub(deopt_id_, ICData::kDeoptUnboxInteger) : NULL;
+      compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger) : NULL;
 
   if (value_cid == kSmiCid) {
     __ SmiUntag(out, value);
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
index 68455b0..2c16100 100644
--- a/runtime/vm/intermediate_language_ia32.cc
+++ b/runtime/vm/intermediate_language_ia32.cc
@@ -2447,10 +2447,6 @@
   __ movl(FieldAddress(result, Context::num_variables_offset()),
           Immediate(num_context_variables()));
 
-  // Setup isolate field.
-  __ movl(FieldAddress(result, Context::isolate_offset()),
-          Immediate(reinterpret_cast<int32_t>(Isolate::Current())));
-
   __ Bind(slow_path->exit_label());
 }
 
@@ -3387,7 +3383,7 @@
     __ SmiUntag(value);  // Untag input before conversion.
     __ cvtsi2sd(result, value);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptBinaryDoubleOp);
     Register temp = locs()->temp(0).reg();
     if (value_type->is_nullable() &&
@@ -3464,7 +3460,8 @@
 
   if (value_cid != kFloat32x4Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testl(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kFloat32x4Cid, temp);
@@ -3522,7 +3519,8 @@
 
   if (value_cid != kFloat64x2Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testl(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kFloat64x2Cid, temp);
@@ -3580,7 +3578,8 @@
 
   if (value_cid != kInt32x4Cid) {
     const Register temp = locs()->temp(0).reg();
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testl(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kInt32x4Cid, temp);
@@ -5678,7 +5677,7 @@
     // Sign extend into result_hi.
     __ cdq();
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptUnboxInteger);
     Label is_smi, done;
     __ testl(value, Immediate(kSmiTagMask));
@@ -6326,7 +6325,7 @@
   const Register result = locs()->out(0).reg();
   const Register temp = CanDeoptimize() ? locs()->temp(0).reg() : kNoRegister;
   Label* deopt = CanDeoptimize() ?
-      compiler->AddDeoptStub(deopt_id_, ICData::kDeoptUnboxInteger) : NULL;
+      compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger) : NULL;
   Label* out_of_range = !is_truncating() ? deopt : NULL;
 
   const intptr_t lo_offset = Mint::value_offset();
diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
index eb98286..f23a56e 100644
--- a/runtime/vm/intermediate_language_mips.cc
+++ b/runtime/vm/intermediate_language_mips.cc
@@ -2391,10 +2391,6 @@
   __ LoadImmediate(temp0, num_context_variables());
   __ sw(temp0, FieldAddress(result, Context::num_variables_offset()));
 
-  // Setup isolate field.
-  __ lw(temp0, FieldAddress(CTX, Context::isolate_offset()));
-  __ sw(temp0, FieldAddress(result, Context::isolate_offset()));
-
   __ Bind(slow_path->exit_label());
 }
 
@@ -3131,7 +3127,7 @@
     __ mtc1(TMP, STMP1);
     __ cvtdw(result, STMP1);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptBinaryDoubleOp);
     if (value_type->is_nullable() &&
         (value_type->ToNullableCid() == kDoubleCid)) {
@@ -4675,7 +4671,7 @@
   const Register value = locs()->in(0).reg();
   const Register out = locs()->out(0).reg();
   Label* deopt = CanDeoptimize() ?
-        compiler->AddDeoptStub(deopt_id_, ICData::kDeoptUnboxInteger) : NULL;
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger) : NULL;
   Label* out_of_range = !is_truncating() ? deopt : NULL;
   ASSERT(value != out);
 
diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
index 5ec7afc..1167b3a 100644
--- a/runtime/vm/intermediate_language_x64.cc
+++ b/runtime/vm/intermediate_language_x64.cc
@@ -2366,10 +2366,6 @@
   __ movq(FieldAddress(result, Context::num_variables_offset()),
           Immediate(num_context_variables()));
 
-  // Setup isolate field.
-  __ movq(FieldAddress(result, Context::isolate_offset()),
-          Immediate(reinterpret_cast<intptr_t>(Isolate::Current())));
-
   __ Bind(slow_path->exit_label());
 }
 
@@ -3249,7 +3245,7 @@
     __ SmiUntag(value);  // Untag input before conversion.
     __ cvtsi2sdq(result, value);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptBinaryDoubleOp);
     if (value_type->is_nullable() &&
         (value_type->ToNullableCid() == kDoubleCid)) {
@@ -3316,7 +3312,8 @@
   const XmmRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kFloat32x4Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testq(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kFloat32x4Cid);
@@ -3369,7 +3366,8 @@
   const XmmRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kFloat64x2Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testq(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kFloat64x2Cid);
@@ -3421,7 +3419,8 @@
   const XmmRegister result = locs()->out(0).fpu_reg();
 
   if (value_cid != kInt32x4Cid) {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_, ICData::kDeoptCheckClass);
+    Label* deopt =
+        compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptCheckClass);
     __ testq(value, Immediate(kSmiTagMask));
     __ j(ZERO, deopt);
     __ CompareClassId(value, kInt32x4Cid);
@@ -5556,7 +5555,7 @@
   } else if (value_cid == kSmiCid) {
     __ SmiUntag(result);
   } else {
-    Label* deopt = compiler->AddDeoptStub(deopt_id_,
+    Label* deopt = compiler->AddDeoptStub(GetDeoptId(),
                                           ICData::kDeoptUnboxInteger);
     Label done;
     __ SmiUntagOrCheckClass(value, kMintCid, &done);
@@ -6007,7 +6006,7 @@
   const intptr_t value_cid = value()->Type()->ToCid();
   const Register value = locs()->in(0).reg();
   Label* deopt = CanDeoptimize() ?
-      compiler->AddDeoptStub(deopt_id_, ICData::kDeoptUnboxInteger) : NULL;
+      compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger) : NULL;
   ASSERT(value == locs()->out(0).reg());
 
   if (value_cid == kSmiCid) {
diff --git a/runtime/vm/message.h b/runtime/vm/message.h
index f69c395..113a943 100644
--- a/runtime/vm/message.h
+++ b/runtime/vm/message.h
@@ -93,12 +93,12 @@
   // message is available.  This function will not block.
   Message* Dequeue();
 
+  bool IsEmpty() { return head_ == NULL; }
+
   // Clear all messages from the message queue.
   void Clear();
 
  private:
-  friend class MessageQueueTestPeer;
-
   Message* head_;
   Message* tail_;
 
diff --git a/runtime/vm/message_handler.cc b/runtime/vm/message_handler.cc
index e5990fb..1f67d6b 100644
--- a/runtime/vm/message_handler.cc
+++ b/runtime/vm/message_handler.cc
@@ -204,6 +204,12 @@
 }
 
 
+bool MessageHandler::HasOOBMessages() {
+  MonitorLocker ml(&monitor_);
+  return !oob_queue_->IsEmpty();
+}
+
+
 void MessageHandler::TaskCallback() {
   ASSERT(Isolate::Current() == NULL);
   bool ok = true;
diff --git a/runtime/vm/message_handler.h b/runtime/vm/message_handler.h
index 65dc32f..0d2cc54 100644
--- a/runtime/vm/message_handler.h
+++ b/runtime/vm/message_handler.h
@@ -54,6 +54,10 @@
   // Returns true on success.
   bool HandleOOBMessages();
 
+  // Returns true if there are pending OOB messages for this message
+  // handler.
+  bool HasOOBMessages();
+
   // A message handler tracks how many live ports it has.
   bool HasLivePorts() const { return live_ports_ > 0; }
 
diff --git a/runtime/vm/message_handler_test.cc b/runtime/vm/message_handler_test.cc
index e401335..ccd476f 100644
--- a/runtime/vm/message_handler_test.cc
+++ b/runtime/vm/message_handler_test.cc
@@ -148,6 +148,27 @@
 }
 
 
+UNIT_TEST_CASE(MessageHandler_HasOOBMessages) {
+  TestMessageHandler handler;
+  MessageHandlerTestPeer handler_peer(&handler);
+
+  EXPECT(!handler.HasOOBMessages());
+
+  // Post a normal message.
+  Message* message = new Message(1, NULL, 0, Message::kNormalPriority);
+  handler_peer.PostMessage(message);
+  EXPECT(!handler.HasOOBMessages());
+
+  // Post an oob message.
+  message = new Message(1, NULL, 0, Message::kOOBPriority);
+  handler_peer.PostMessage(message);
+  EXPECT(handler.HasOOBMessages());
+
+  // Delete all pending messages.
+  handler_peer.CloseAllPorts();
+}
+
+
 UNIT_TEST_CASE(MessageHandler_ClosePort) {
   TestMessageHandler handler;
   MessageHandlerTestPeer handler_peer(&handler);
diff --git a/runtime/vm/message_test.cc b/runtime/vm/message_test.cc
index bc47b39..e2203a3 100644
--- a/runtime/vm/message_test.cc
+++ b/runtime/vm/message_test.cc
@@ -9,25 +9,6 @@
 namespace dart {
 
 
-// Provide access to private members of MessageQueue for testing.
-class MessageQueueTestPeer {
- public:
-  explicit MessageQueueTestPeer(MessageQueue* queue) : queue_(queue) {}
-
-  bool HasMessage() const {
-    // We don't really need to grab the monitor during the unit test,
-    // but it doesn't hurt.
-    bool result = (queue_->head_ != NULL);
-    return result;
-  }
-
- private:
-  MessageQueue* queue_;
-
-  DISALLOW_COPY_AND_ASSIGN(MessageQueueTestPeer);
-};
-
-
 static uint8_t* AllocMsg(const char* str) {
   return reinterpret_cast<uint8_t*>(strdup(str));
 }
@@ -35,8 +16,7 @@
 
 TEST_CASE(MessageQueue_BasicOperations) {
   MessageQueue queue;
-  MessageQueueTestPeer queue_peer(&queue);
-  EXPECT(!queue_peer.HasMessage());
+  EXPECT(queue.IsEmpty());
 
   Dart_Port port = 1;
 
@@ -48,25 +28,25 @@
       new Message(port, AllocMsg(str1), strlen(str1) + 1,
                   Message::kNormalPriority);
   queue.Enqueue(msg1);
-  EXPECT(queue_peer.HasMessage());
+  EXPECT(!queue.IsEmpty());
 
   Message* msg2 =
       new Message(port, AllocMsg(str2), strlen(str2) + 1,
                   Message::kNormalPriority);
 
   queue.Enqueue(msg2);
-  EXPECT(queue_peer.HasMessage());
+  EXPECT(!queue.IsEmpty());
 
   // Remove two messages.
   Message* msg = queue.Dequeue();
   EXPECT(msg != NULL);
   EXPECT_STREQ(str1, reinterpret_cast<char*>(msg->data()));
-  EXPECT(queue_peer.HasMessage());
+  EXPECT(!queue.IsEmpty());
 
   msg = queue.Dequeue();
   EXPECT(msg != NULL);
   EXPECT_STREQ(str2, reinterpret_cast<char*>(msg->data()));
-  EXPECT(!queue_peer.HasMessage());
+  EXPECT(queue.IsEmpty());
 
   delete msg1;
   delete msg2;
@@ -75,7 +55,6 @@
 
 TEST_CASE(MessageQueue_Clear) {
   MessageQueue queue;
-  MessageQueueTestPeer queue_peer(&queue);
   Dart_Port port1 = 1;
   Dart_Port port2 = 2;
 
@@ -92,9 +71,9 @@
                   Message::kNormalPriority);
   queue.Enqueue(msg2);
 
-  EXPECT(queue_peer.HasMessage());
+  EXPECT(!queue.IsEmpty());
   queue.Clear();
-  EXPECT(!queue_peer.HasMessage());
+  EXPECT(queue.IsEmpty());
 
   // msg1 and msg2 already delete by FlushAll.
 }
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 2177c1e..197ef30 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1136,8 +1136,7 @@
     isolate_lib = Library::NewLibraryHelper(Symbols::DartIsolate(), true);
     isolate_lib.SetLoadRequested();
     isolate_lib.Register();
-    isolate->object_store()->set_bootstrap_library(ObjectStore::kIsolate,
-                                                   isolate_lib);
+    object_store->set_bootstrap_library(ObjectStore::kIsolate, isolate_lib);
   }
   ASSERT(!isolate_lib.IsNull());
   ASSERT(isolate_lib.raw() == Library::IsolateLibrary());
@@ -1259,8 +1258,7 @@
     lib = Library::NewLibraryHelper(Symbols::DartMirrors(), true);
     lib.SetLoadRequested();
     lib.Register();
-    isolate->object_store()->set_bootstrap_library(ObjectStore::kMirrors,
-                                                   lib);
+    object_store->set_bootstrap_library(ObjectStore::kMirrors, lib);
   }
   ASSERT(!lib.IsNull());
   ASSERT(lib.raw() == Library::MirrorsLibrary());
@@ -1275,8 +1273,7 @@
     lib = Library::NewLibraryHelper(Symbols::DartCollection(), true);
     lib.SetLoadRequested();
     lib.Register();
-    isolate->object_store()->set_bootstrap_library(ObjectStore::kCollection,
-                                                   lib);
+    object_store->set_bootstrap_library(ObjectStore::kCollection, lib);
   }
   ASSERT(!lib.IsNull());
   ASSERT(lib.raw() == Library::CollectionLibrary());
@@ -1296,8 +1293,7 @@
     lib = Library::NewLibraryHelper(Symbols::DartProfiler(), true);
     lib.SetLoadRequested();
     lib.Register();
-    isolate->object_store()->set_bootstrap_library(ObjectStore::kProfiler,
-                                                   lib);
+    object_store->set_bootstrap_library(ObjectStore::kProfiler, lib);
   }
   ASSERT(!lib.IsNull());
   ASSERT(lib.raw() == Library::ProfilerLibrary());
@@ -1311,7 +1307,7 @@
   // Setup some default native field classes which can be extended for
   // specifying native fields in dart classes.
   Library::InitNativeWrappersLibrary(isolate);
-  ASSERT(isolate->object_store()->native_wrappers_library() != Library::null());
+  ASSERT(object_store->native_wrappers_library() != Library::null());
 
   // Pre-register the typed_data library so the native class implementations
   // can be hooked up before compiling it.
@@ -1320,8 +1316,7 @@
     lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true);
     lib.SetLoadRequested();
     lib.Register();
-    isolate->object_store()->set_bootstrap_library(ObjectStore::kTypedData,
-                                                   lib);
+    object_store->set_bootstrap_library(ObjectStore::kTypedData, lib);
   }
   ASSERT(!lib.IsNull());
   ASSERT(lib.raw() == Library::TypedDataLibrary());
@@ -1468,6 +1463,7 @@
 
   // Finish the initialization by compiling the bootstrap scripts containing the
   // base interfaces and the implementation of the internal classes.
+  StubCode::InitBootstrapStubs(isolate);
   const Error& error = Error::Handle(Bootstrap::LoadandCompileScripts());
   if (!error.IsNull()) {
     return error.raw();
@@ -1506,7 +1502,7 @@
   CLASS_LIST_WITH_NULL(ADD_SET_FIELD)
 #undef ADD_SET_FIELD
 
-  object_store->InitAsyncObjects();
+  isolate->object_store()->InitAsyncObjects();
 
   return Error::null();
 }
@@ -1617,6 +1613,8 @@
 
   cls = Class::New<MirrorReference>();
   cls = Class::New<UserTag>();
+
+  StubCode::InitBootstrapStubs(isolate);
 }
 
 
@@ -5108,15 +5106,17 @@
 
 bool Function::HasCode() const {
   ASSERT(raw_ptr()->instructions_ != Instructions::null());
+  StubCode* stub_code = Isolate::Current()->stub_code();
   return raw_ptr()->instructions_ !=
-      StubCode::LazyCompile_entry()->code()->ptr()->instructions_;
+      stub_code->LazyCompile_entry()->code()->ptr()->instructions_;
 }
 
 
 void Function::ClearCode() const {
   StorePointer(&raw_ptr()->unoptimized_code_, Code::null());
+  StubCode* stub_code = Isolate::Current()->stub_code();
   StorePointer(&raw_ptr()->instructions_,
-      Code::Handle(StubCode::LazyCompile_entry()->code()).instructions());
+      Code::Handle(stub_code->LazyCompile_entry()->code()).instructions());
 }
 
 
@@ -6130,7 +6130,8 @@
   result.set_is_inlinable(true);
   result.set_allows_hoisting_check_class(true);
   result.set_allows_bounds_check_generalization(true);
-  result.SetInstructions(Code::Handle(StubCode::LazyCompile_entry()->code()));
+  StubCode* stub_code = Isolate::Current()->stub_code();
+  result.SetInstructions(Code::Handle(stub_code->LazyCompile_entry()->code()));
   if (kind == RawFunction::kClosureFunction) {
     const ClosureData& data = ClosureData::Handle(ClosureData::New());
     result.set_data(data);
@@ -12445,7 +12446,6 @@
     result ^= raw;
     result.set_num_variables(num_variables);
   }
-  result.set_isolate(Isolate::Current());
   return result.raw();
 }
 
@@ -19697,9 +19697,6 @@
 RawInstance* Closure::New(const Function& function,
                           const Context& context,
                           Heap::Space space) {
-  Isolate* isolate = Isolate::Current();
-  ASSERT(context.isolate() == isolate);
-
   const Class& cls = Class::Handle(function.signature_class());
   ASSERT(cls.instance_size() == Closure::InstanceSize());
   Instance& result = Instance::Handle();
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 6c34fbc..d5e012a 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -4067,14 +4067,10 @@
  public:
   RawContext* parent() const { return raw_ptr()->parent_; }
   void set_parent(const Context& parent) const {
-    ASSERT(parent.IsNull() || parent.isolate() == Isolate::Current());
     StorePointer(&raw_ptr()->parent_, parent.raw());
   }
   static intptr_t parent_offset() { return OFFSET_OF(RawContext, parent_); }
 
-  Isolate* isolate() const { return raw_ptr()->isolate_; }
-  static intptr_t isolate_offset() { return OFFSET_OF(RawContext, isolate_); }
-
   intptr_t num_variables() const { return raw_ptr()->num_variables_; }
   static intptr_t num_variables_offset() {
     return OFFSET_OF(RawContext, num_variables_);
@@ -4114,10 +4110,6 @@
     return &raw_ptr()->data()[context_index];
   }
 
-  void set_isolate(Isolate* isolate) const {
-    StoreNonPointer(&raw_ptr()->isolate_, isolate);
-  }
-
   void set_num_variables(intptr_t num_variables) const {
     StoreNonPointer(&raw_ptr()->num_variables_, num_variables);
   }
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index 24e198c..5854176 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -37,6 +37,7 @@
     string_type_(Type::null()),
     future_class_(Class::null()),
     completer_class_(Class::null()),
+    stream_iterator_class_(Class::null()),
     one_byte_string_class_(Class::null()),
     two_byte_string_class_(Class::null()),
     external_one_byte_string_class_(Class::null()),
@@ -182,6 +183,9 @@
   cls = async_lib.LookupClass(Symbols::Completer());
   ASSERT(!cls.IsNull());
   set_completer_class(cls);
+  cls = async_lib.LookupClass(Symbols::StreamIterator());
+  ASSERT(!cls.IsNull());
+  set_stream_iterator_class(cls);
 }
 
 }  // namespace dart
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 20b0b07..cf123e4 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -124,6 +124,11 @@
     completer_class_ = value.raw();
   }
 
+  RawClass* stream_iterator_class() const { return stream_iterator_class_; }
+  void set_stream_iterator_class(const Class& value) {
+    stream_iterator_class_ = value.raw();
+  }
+
   RawClass* one_byte_string_class() const { return one_byte_string_class_; }
   void set_one_byte_string_class(const Class& value) {
     one_byte_string_class_ = value.raw();
@@ -447,6 +452,7 @@
   RawType* string_type_;
   RawClass* future_class_;
   RawClass* completer_class_;
+  RawClass* stream_iterator_class_;
   RawClass* one_byte_string_class_;
   RawClass* two_byte_string_class_;
   RawClass* external_one_byte_string_class_;
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 82efd99..4bd4aff 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -2400,11 +2400,8 @@
 TEST_CASE(Context) {
   const int kNumVariables = 5;
   const Context& parent_context = Context::Handle(Context::New(0));
-  EXPECT_EQ(parent_context.isolate(), Isolate::Current());
   const Context& context = Context::Handle(Context::New(kNumVariables));
   context.set_parent(parent_context);
-  const Context& check_parent_context = Context::Handle(context.parent());
-  EXPECT_EQ(context.isolate(), check_parent_context.isolate());
   EXPECT_EQ(kNumVariables, context.num_variables());
   EXPECT(Context::Handle(context.parent()).raw() == parent_context.raw());
   EXPECT_EQ(0, Context::Handle(context.parent()).num_variables());
diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
index 1f5666d..3972b55 100644
--- a/runtime/vm/pages.cc
+++ b/runtime/vm/pages.cc
@@ -35,13 +35,13 @@
             "Emit a log message when pointers to unused code are dropped.");
 DEFINE_FLAG(bool, always_drop_code, false,
             "Always try to drop code if the function's usage counter is >= 0");
-#if defined(TARGET_ARCH_IA32)
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_ARM)
 DEFINE_FLAG(bool, concurrent_sweep, true,
             "Concurrent sweep for old generation.");
-#else  // TARGET_ARCH_IA32
+#else  // TARGET_ARCH_IA32 || TARGET_ARCH_ARM
 DEFINE_FLAG(bool, concurrent_sweep, false,
             "Concurrent sweep for old generation.");
-#endif  // TARGET_ARCH_IA32
+#endif  // TARGET_ARCH_IA32 || TARGET_ARCH_ARM
 DEFINE_FLAG(bool, log_growth, false, "Log PageSpace growth policy decisions.");
 
 HeapPage* HeapPage::Initialize(VirtualMemory* memory, PageType type) {
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index d053fc6..775ed5f 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -7234,6 +7234,151 @@
 }
 
 
+AstNode* Parser::ParseAwaitForStatement(String* label_name) {
+  TRACE_PARSER("ParseAwaitForStatement");
+  ASSERT(IsAwaitKeyword());
+  const intptr_t await_for_pos = TokenPos();
+  ConsumeToken();  // await.
+  ASSERT(CurrentToken() == Token::kFOR);
+  ConsumeToken();  // for.
+  ExpectToken(Token::kLPAREN);
+
+  // Parse loop variable.
+  bool loop_var_is_final = (CurrentToken() == Token::kFINAL);
+  if (CurrentToken() == Token::kCONST) {
+    ReportError("Loop variable cannot be 'const'");
+  }
+  bool new_loop_var = false;
+  AbstractType& loop_var_type =  AbstractType::ZoneHandle(I);
+  if (LookaheadToken(1) != Token::kIN) {
+    // Declaration of a new loop variable.
+    // Delay creation of the local variable until we know its actual
+    // position, which is inside the loop body.
+    new_loop_var = true;
+    loop_var_type = ParseConstFinalVarOrType(
+       FLAG_enable_type_checks ? ClassFinalizer::kCanonicalize :
+                                 ClassFinalizer::kIgnore);
+  }
+  intptr_t loop_var_pos = TokenPos();
+  const String* loop_var_name = ExpectIdentifier("variable name expected");
+
+  // Parse stream expression.
+  ExpectToken(Token::kIN);
+  const intptr_t stream_pos = TokenPos();
+  AstNode* stream_expr =
+      ParseAwaitableExpr(kAllowConst, kConsumeCascades, NULL);
+  ExpectToken(Token::kRPAREN);
+
+  OpenBlock();
+
+  // Build creation of implicit StreamIterator.
+  // var :for-in-iter = new StreamIterator(stream_expr).
+  const Class& stream_iterator_cls =
+      Class::ZoneHandle(I, I->object_store()->stream_iterator_class());
+  ASSERT(!stream_iterator_cls.IsNull());
+  const Function& iterator_ctor =
+      Function::ZoneHandle(I, stream_iterator_cls.LookupFunction(
+          Symbols::StreamIteratorConstructor()));
+  ASSERT(!iterator_ctor.IsNull());
+  ArgumentListNode* ctor_args = new (I) ArgumentListNode(Scanner::kNoSourcePos);
+  ctor_args->Add(stream_expr);
+  ConstructorCallNode* ctor_call =
+      new (I) ConstructorCallNode(Scanner::kNoSourcePos,
+                              TypeArguments::ZoneHandle(I),
+                              iterator_ctor,
+                              ctor_args);
+  const AbstractType& iterator_type = Type::ZoneHandle(I, Type::DynamicType());
+  LocalVariable* iterator_var = new(I) LocalVariable(
+      stream_pos, Symbols::ForInIter(), iterator_type);
+  current_block_->scope->AddVariable(iterator_var);
+  AstNode* iterator_init =
+      new(I) StoreLocalNode(stream_pos, iterator_var, ctor_call);
+  current_block_->statements->Add(iterator_init);
+
+  // Build while loop condition.
+  // while (await :for-in-iter.moveNext())
+  ArgumentListNode* no_args = new(I) ArgumentListNode(stream_pos);
+  AstNode* iterator_moveNext = new(I) InstanceCallNode(
+      stream_pos,
+      new(I) LoadLocalNode(stream_pos, iterator_var),
+                           Symbols::MoveNext(),
+                           no_args);
+  AstNode* await_moveNext = new (I) AwaitNode(stream_pos, iterator_moveNext);
+  OpenBlock();
+  AwaitTransformer at(current_block_->statements,
+                      parsed_function(),
+                      async_temp_scope_);
+  AstNode* transformed_await = at.Transform(await_moveNext);
+  SequenceNode* await_preamble = CloseBlock();
+
+  // Parse the for loop body. Ideally, we would use ParseNestedStatement()
+  // here, but that does not work well because we have to insert an implicit
+  // variable assignment and potentially a variable declaration in the
+  // loop body.
+  OpenLoopBlock();
+  SourceLabel* label =
+      SourceLabel::New(await_for_pos, label_name, SourceLabel::kFor);
+  current_block_->scope->AddLabel(label);
+  const intptr_t loop_var_assignment_pos = TokenPos();
+
+  AstNode* iterator_current = new(I) InstanceGetterNode(
+      loop_var_assignment_pos,
+      new(I) LoadLocalNode(loop_var_assignment_pos, iterator_var),
+      Symbols::Current());
+
+  // Generate assignment of next iterator value to loop variable.
+  AstNode* loop_var_assignment = NULL;
+  if (new_loop_var) {
+    // The for loop variable is new for each iteration.
+    // Create a variable and add it to the loop body scope.
+    // Note that the variable token position needs to be inside the
+    // loop block, so it gets put in the loop context level.
+    LocalVariable* loop_var =
+        new(I) LocalVariable(loop_var_assignment_pos,
+                             *loop_var_name,
+                             loop_var_type);;
+    if (loop_var_is_final) {
+      loop_var->set_is_final();
+    }
+    current_block_->scope->AddVariable(loop_var);
+    loop_var_assignment = new(I) StoreLocalNode(
+        loop_var_assignment_pos, loop_var, iterator_current);
+  } else {
+    AstNode* loop_var_primary =
+        ResolveIdent(loop_var_pos, *loop_var_name, false);
+    ASSERT(!loop_var_primary->IsPrimaryNode());
+    loop_var_assignment = CreateAssignmentNode(loop_var_primary,
+                                               iterator_current,
+                                               loop_var_name,
+                                               loop_var_assignment_pos);
+    ASSERT(loop_var_assignment != NULL);
+  }
+  current_block_->statements->Add(loop_var_assignment);
+
+  // Now parse the for-in loop statement or block.
+  if (CurrentToken() == Token::kLBRACE) {
+    ConsumeToken();
+    ParseStatementSequence();
+    ExpectToken(Token::kRBRACE);
+  } else {
+    AstNode* statement = ParseStatement();
+    if (statement != NULL) {
+      current_block_->statements->Add(statement);
+    }
+  }
+  SequenceNode* for_loop_statement = CloseBlock();
+
+  WhileNode* while_node = new (I) WhileNode(await_for_pos,
+                                            label,
+                                            transformed_await,
+                                            await_preamble,
+                                            for_loop_statement);
+  current_block_->statements->Add(while_node);
+
+  return CloseBlock();  // Implicit block around while loop.
+}
+
+
 AstNode* Parser::ParseForInStatement(intptr_t forin_pos,
                                      SourceLabel* label) {
   TRACE_PARSER("ParseForInStatement");
@@ -8100,6 +8245,8 @@
     statement = ParseWhileStatement(label_name);
   } else if (token == Token::kFOR) {
     statement = ParseForStatement(label_name);
+  } else if (IsAwaitKeyword() && (LookaheadToken(1) == Token::kFOR)) {
+    statement = ParseAwaitForStatement(label_name);
   } else if (token == Token::kDO) {
     statement = ParseDoWhileStatement(label_name);
   } else if (token == Token::kSWITCH) {
diff --git a/runtime/vm/parser.h b/runtime/vm/parser.h
index 4be94ef..207b03d 100644
--- a/runtime/vm/parser.h
+++ b/runtime/vm/parser.h
@@ -568,6 +568,7 @@
   AstNode* ParseWhileStatement(String* label_name);
   AstNode* ParseDoWhileStatement(String* label_name);
   AstNode* ParseForStatement(String* label_name);
+  AstNode* ParseAwaitForStatement(String* label_name);
   AstNode* ParseForInStatement(intptr_t forin_pos, SourceLabel* label);
   RawClass* CheckCaseExpressions(const GrowableArray<LiteralNode*>& values);
   CaseNode* ParseCaseClause(LocalVariable* switch_expr_value,
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index a23585e..c59095d2 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -1173,7 +1173,6 @@
   RAW_HEAP_OBJECT_IMPLEMENTATION(Context);
 
   int32_t num_variables_;
-  Isolate* isolate_;
 
   RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->parent_); }
   RawContext* parent_;
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 1c26b95..b0faf50 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -1365,9 +1365,6 @@
   // Set the object tags.
   context.set_tags(tags);
 
-  // Set the isolate implicitly.
-  context.set_isolate(reader->isolate());
-
   // Set all the object fields.
   // TODO(5411462): Need to assert No GC can happen here, even though
   // allocations may happen.
diff --git a/runtime/vm/runtime_entry_arm.cc b/runtime/vm/runtime_entry_arm.cc
index de52089..09cb5de 100644
--- a/runtime/vm/runtime_entry_arm.cc
+++ b/runtime/vm/runtime_entry_arm.cc
@@ -49,7 +49,7 @@
     // informative error message.
     __ LoadImmediate(R5, entry);
     __ LoadImmediate(R4, argument_count);
-    __ BranchLink(&StubCode::CallToRuntimeLabel());
+    __ BranchLink(&Isolate::Current()->stub_code()->CallToRuntimeLabel());
   }
 }
 
diff --git a/runtime/vm/runtime_entry_arm64.cc b/runtime/vm/runtime_entry_arm64.cc
index 6ce93de..553f64c 100644
--- a/runtime/vm/runtime_entry_arm64.cc
+++ b/runtime/vm/runtime_entry_arm64.cc
@@ -57,7 +57,7 @@
     // informative error message.
     __ LoadImmediate(R5, entry, kNoPP);
     __ LoadImmediate(R4, argument_count, kNoPP);
-    __ BranchLink(&StubCode::CallToRuntimeLabel(), PP);
+    __ BranchLink(&Isolate::Current()->stub_code()->CallToRuntimeLabel(), PP);
   }
 }
 
diff --git a/runtime/vm/runtime_entry_ia32.cc b/runtime/vm/runtime_entry_ia32.cc
index ecd2393..612b72b 100644
--- a/runtime/vm/runtime_entry_ia32.cc
+++ b/runtime/vm/runtime_entry_ia32.cc
@@ -33,7 +33,7 @@
     // informative error message.
     __ movl(ECX, Immediate(GetEntryPoint()));
     __ movl(EDX, Immediate(argument_count));
-    __ call(&StubCode::CallToRuntimeLabel());
+    __ call(&Isolate::Current()->stub_code()->CallToRuntimeLabel());
   }
 }
 
diff --git a/runtime/vm/runtime_entry_mips.cc b/runtime/vm/runtime_entry_mips.cc
index ca4a529..70f51cc 100644
--- a/runtime/vm/runtime_entry_mips.cc
+++ b/runtime/vm/runtime_entry_mips.cc
@@ -49,7 +49,7 @@
     // informative error message.
     __ LoadImmediate(S5, entry);
     __ LoadImmediate(S4, argument_count);
-    __ BranchLink(&StubCode::CallToRuntimeLabel());
+    __ BranchLink(&Isolate::Current()->stub_code()->CallToRuntimeLabel());
   }
 }
 
diff --git a/runtime/vm/runtime_entry_x64.cc b/runtime/vm/runtime_entry_x64.cc
index 8688684..7d07795 100644
--- a/runtime/vm/runtime_entry_x64.cc
+++ b/runtime/vm/runtime_entry_x64.cc
@@ -30,7 +30,7 @@
     // informative error message.
     __ movq(RBX, Immediate(GetEntryPoint()));
     __ movq(R10, Immediate(argument_count));
-    __ Call(&StubCode::CallToRuntimeLabel(), PP);
+    __ Call(&Isolate::Current()->stub_code()->CallToRuntimeLabel(), PP);
   }
 }
 
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index 17810a1c..399079c 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -678,55 +678,14 @@
 
 // Synchronization primitives support.
 Mutex* Simulator::exclusive_access_lock_ = NULL;
-Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags];
-int Simulator::next_address_tag_;
-
-
-void Simulator::SetExclusiveAccess(uword addr) {
-  Isolate* isolate = Isolate::Current();
-  ASSERT(isolate != NULL);
-  int i = 0;
-  while ((i < kNumAddressTags) &&
-         (exclusive_access_state_[i].isolate != isolate)) {
-    i++;
-  }
-  if (i == kNumAddressTags) {
-    i = next_address_tag_;
-    if (++next_address_tag_ == kNumAddressTags) next_address_tag_ = 0;
-    exclusive_access_state_[i].isolate = isolate;
-  }
-  exclusive_access_state_[i].addr = addr;
-}
-
-
-bool Simulator::HasExclusiveAccessAndOpen(uword addr) {
-  Isolate* isolate = Isolate::Current();
-  ASSERT(isolate != NULL);
-  bool result = false;
-  for (int i = 0; i < kNumAddressTags; i++) {
-    if (exclusive_access_state_[i].isolate == isolate) {
-      if (exclusive_access_state_[i].addr == addr) {
-        result = true;
-      }
-      exclusive_access_state_[i].addr = NULL;
-      continue;
-    }
-    if (exclusive_access_state_[i].addr == addr) {
-      exclusive_access_state_[i].addr = NULL;
-    }
-  }
-  return result;
-}
+Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags] =
+    {{NULL, 0}};
+int Simulator::next_address_tag_ = 0;
 
 
 void Simulator::InitOnce() {
-  // Setup exclusive access state.
+  // Setup exclusive access state lock.
   exclusive_access_lock_ = new Mutex();
-  for (int i = 0; i < kNumAddressTags; i++) {
-    exclusive_access_state_[i].isolate = NULL;
-    exclusive_access_state_[i].addr = NULL;
-  }
-  next_address_tag_ = 0;
 }
 
 
@@ -1112,16 +1071,59 @@
 
 
 // Synchronization primitives support.
+void Simulator::SetExclusiveAccess(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  int i = 0;
+  // Find an entry for this isolate in the exclusive access state.
+  while ((i < kNumAddressTags) &&
+         (exclusive_access_state_[i].isolate != isolate)) {
+    i++;
+  }
+  // Round-robin replacement of previously used entries.
+  if (i == kNumAddressTags) {
+    i = next_address_tag_;
+    if (++next_address_tag_ == kNumAddressTags) {
+      next_address_tag_ = 0;
+    }
+    exclusive_access_state_[i].isolate = isolate;
+  }
+  // Remember the address being reserved.
+  exclusive_access_state_[i].addr = addr;
+}
+
+
+bool Simulator::HasExclusiveAccessAndOpen(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  ASSERT(addr != 0);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  bool result = false;
+  for (int i = 0; i < kNumAddressTags; i++) {
+    if (exclusive_access_state_[i].isolate == isolate) {
+      // Check whether the current isolate's address reservation matches.
+      if (exclusive_access_state_[i].addr == addr) {
+        result = true;
+      }
+      exclusive_access_state_[i].addr = 0;
+    } else if (exclusive_access_state_[i].addr == addr) {
+      // Other isolates with matching address lose their reservations.
+      exclusive_access_state_[i].addr = 0;
+    }
+  }
+  return result;
+}
+
+
 void Simulator::ClearExclusive() {
-  // This lock is initialized in Simulator::InitOnce().
   MutexLocker ml(exclusive_access_lock_);
-  // Set exclusive access to open state for this isolate.
-  HasExclusiveAccessAndOpen(NULL);
+  // Remove the reservation for this isolate.
+  SetExclusiveAccess(NULL);
 }
 
 
 intptr_t Simulator::ReadExclusiveW(uword addr, Instr* instr) {
-  // This lock is initialized in Simulator::InitOnce().
   MutexLocker ml(exclusive_access_lock_);
   SetExclusiveAccess(addr);
   return ReadW(addr, instr);
@@ -1129,7 +1131,6 @@
 
 
 intptr_t Simulator::WriteExclusiveW(uword addr, intptr_t value, Instr* instr) {
-  // This lock is initialized in Simulator::InitOnce().
   MutexLocker ml(exclusive_access_lock_);
   bool write_allowed = HasExclusiveAccessAndOpen(addr);
   if (write_allowed) {
@@ -1143,8 +1144,10 @@
 uword Simulator::CompareExchange(uword* address,
                                  uword compare_value,
                                  uword new_value) {
-  // This lock is initialized in Simulator::InitOnce().
   MutexLocker ml(exclusive_access_lock_);
+  // We do not get a reservation as it would be guaranteed to be found when
+  // writing below. No other isolate is able to make a reservation while we
+  // hold the lock.
   uword value = *address;
   if (value == compare_value) {
     *address = new_value;
diff --git a/runtime/vm/simulator_arm.h b/runtime/vm/simulator_arm.h
index 5136aba..b858b00f 100644
--- a/runtime/vm/simulator_arm.h
+++ b/runtime/vm/simulator_arm.h
@@ -17,11 +17,12 @@
 #endif
 
 #include "vm/constants_arm.h"
-#include "vm/object.h"
 
 namespace dart {
 
 class Isolate;
+class Mutex;
+class RawObject;
 class SimulatorSetjmpBuffer;
 
 typedef struct {
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index 6607c53..2192a8f 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -17,6 +17,7 @@
 #include "vm/constants_arm64.h"
 #include "vm/cpu.h"
 #include "vm/disassembler.h"
+#include "vm/lockers.h"
 #include "vm/native_arguments.h"
 #include "vm/stack_frame.h"
 #include "vm/thread.h"
@@ -529,6 +530,19 @@
 }
 
 
+// Synchronization primitives support.
+Mutex* Simulator::exclusive_access_lock_ = NULL;
+Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags] =
+    {{NULL, 0}};
+int Simulator::next_address_tag_ = 0;
+
+
+void Simulator::InitOnce() {
+  // Setup exclusive access state lock.
+  exclusive_access_lock_ = new Mutex();
+}
+
+
 Simulator::Simulator() {
   // Setup simulator support first. Some of this information is needed to
   // setup the architecture state.
@@ -923,6 +937,97 @@
 }
 
 
+// Synchronization primitives support.
+void Simulator::SetExclusiveAccess(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  int i = 0;
+  // Find an entry for this isolate in the exclusive access state.
+  while ((i < kNumAddressTags) &&
+         (exclusive_access_state_[i].isolate != isolate)) {
+    i++;
+  }
+  // Round-robin replacement of previously used entries.
+  if (i == kNumAddressTags) {
+    i = next_address_tag_;
+    if (++next_address_tag_ == kNumAddressTags) {
+      next_address_tag_ = 0;
+    }
+    exclusive_access_state_[i].isolate = isolate;
+  }
+  // Remember the address being reserved.
+  exclusive_access_state_[i].addr = addr;
+}
+
+
+bool Simulator::HasExclusiveAccessAndOpen(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  ASSERT(addr != 0);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  bool result = false;
+  for (int i = 0; i < kNumAddressTags; i++) {
+    if (exclusive_access_state_[i].isolate == isolate) {
+      // Check whether the current isolates address reservation matches.
+      if (exclusive_access_state_[i].addr == addr) {
+        result = true;
+      }
+      exclusive_access_state_[i].addr = 0;
+    } else if (exclusive_access_state_[i].addr == addr) {
+      // Other isolates with matching address lose their reservations.
+      exclusive_access_state_[i].addr = 0;
+    }
+  }
+  return result;
+}
+
+
+void Simulator::ClearExclusive() {
+  MutexLocker ml(exclusive_access_lock_);
+  // Remove the reservation for this isolate.
+  SetExclusiveAccess(NULL);
+}
+
+
+intptr_t Simulator::ReadExclusiveW(uword addr, Instr* instr) {
+  MutexLocker ml(exclusive_access_lock_);
+  SetExclusiveAccess(addr);
+  return ReadW(addr, instr);
+}
+
+
+intptr_t Simulator::WriteExclusiveW(uword addr, intptr_t value, Instr* instr) {
+  MutexLocker ml(exclusive_access_lock_);
+  bool write_allowed = HasExclusiveAccessAndOpen(addr);
+  if (write_allowed) {
+    WriteW(addr, value, instr);
+    return 0;  // Success.
+  }
+  return 1;  // Failure.
+}
+
+
+uword Simulator::CompareExchange(uword* address,
+                                 uword compare_value,
+                                 uword new_value) {
+  MutexLocker ml(exclusive_access_lock_);
+  // We do not get a reservation as it would be guaranteed to be found when
+  // writing below. No other isolate is able to make a reservation while we
+  // hold the lock.
+  uword value = *address;
+  if (value == compare_value) {
+    *address = new_value;
+    // Same effect on exclusive access state as a successful STREX.
+    HasExclusiveAccessAndOpen(reinterpret_cast<uword>(address));
+  } else {
+    // Same effect on exclusive access state as an LDREX.
+    SetExclusiveAccess(reinterpret_cast<uword>(address));
+  }
+  return value;
+}
+
+
 // Unsupported instructions use Format to print an error and stop execution.
 void Simulator::Format(Instr* instr, const char* format) {
   OS::Print("Simulator found unsupported instruction:\n 0x%p: %s\n",
diff --git a/runtime/vm/simulator_arm64.h b/runtime/vm/simulator_arm64.h
index b63975a..be1679d 100644
--- a/runtime/vm/simulator_arm64.h
+++ b/runtime/vm/simulator_arm64.h
@@ -17,11 +17,12 @@
 #endif
 
 #include "vm/constants_arm64.h"
-#include "vm/object.h"
 
 namespace dart {
 
 class Isolate;
+class Mutex;
+class RawObject;
 class SimulatorSetjmpBuffer;
 
 typedef struct {
@@ -77,7 +78,7 @@
   void set_top_exit_frame_info(uword value) { top_exit_frame_info_ = value; }
 
   // Call on program start.
-  static void InitOnce() {}
+  static void InitOnce();
 
   // Dart generally calls into generated code with 5 parameters. This is a
   // convenience function, which sets up the simulator state and grabs the
@@ -91,6 +92,12 @@
                bool fp_return = false,
                bool fp_args = false);
 
+  // Implementation of atomic compare and exchange in the same synchronization
+  // domain as other synchronization primitive instructions (e.g. ldrex, strex).
+  static uword CompareExchange(uword* address,
+                               uword compare_value,
+                               uword new_value);
+
   // Runtime and native call support.
   enum CallKind {
     kRuntimeCall,
@@ -173,6 +180,38 @@
   inline intptr_t ReadX(uword addr, Instr* instr);
   inline void WriteX(uword addr, intptr_t value, Instr* instr);
 
+  // In Dart, there is at most one thread per isolate.
+  // We keep track of 16 exclusive access address tags across all isolates.
+  // Since we cannot simulate a native context switch, which clears
+  // the exclusive access state of the local monitor (using the CLREX
+  // instruction), we associate the isolate requesting exclusive access to the
+  // address tag. Multiple isolates requesting exclusive access (using the LDREX
+  // instruction) to the same address will result in multiple address tags being
+  // created for the same address, one per isolate.
+  // At any given time, each isolate is associated to at most one address tag.
+  static Mutex* exclusive_access_lock_;
+  static const int kNumAddressTags = 16;
+  static struct AddressTag {
+    Isolate* isolate;
+    uword addr;
+  } exclusive_access_state_[kNumAddressTags];
+  static int next_address_tag_;
+
+  // Synchronization primitives support.
+  void ClearExclusive();
+  intptr_t ReadExclusiveW(uword addr, Instr* instr);
+  intptr_t WriteExclusiveW(uword addr, intptr_t value, Instr* instr);
+
+  // Set access to given address to 'exclusive state' for current isolate.
+  static void SetExclusiveAccess(uword addr);
+
+  // Returns true if the current isolate has exclusive access to given address,
+  // returns false otherwise. In either case, set access to given address to
+  // 'open state' for all isolates.
+  // If given addr is NULL, set access to 'open state' for current
+  // isolate (CLREX).
+  static bool HasExclusiveAccessAndOpen(uword addr);
+
   // Helper functions to set the conditional flags in the architecture state.
   void SetNZFlagsW(int32_t val);
   bool CarryFromW(int32_t left, int32_t right, int32_t carry);
diff --git a/runtime/vm/simulator_mips.cc b/runtime/vm/simulator_mips.cc
index 36019a0..b1ce7f2 100644
--- a/runtime/vm/simulator_mips.cc
+++ b/runtime/vm/simulator_mips.cc
@@ -16,6 +16,7 @@
 #include "vm/assembler.h"
 #include "vm/constants_mips.h"
 #include "vm/disassembler.h"
+#include "vm/lockers.h"
 #include "vm/native_arguments.h"
 #include "vm/thread.h"
 
@@ -558,7 +559,16 @@
 }
 
 
+// Synchronization primitives support.
+Mutex* Simulator::exclusive_access_lock_ = NULL;
+Simulator::AddressTag Simulator::exclusive_access_state_[kNumAddressTags] =
+    {{NULL, 0}};
+int Simulator::next_address_tag_ = 0;
+
+
 void Simulator::InitOnce() {
+  // Setup exclusive access state lock.
+  exclusive_access_lock_ = new Mutex();
 }
 
 
@@ -943,6 +953,97 @@
 }
 
 
+// Synchronization primitives support.
+void Simulator::SetExclusiveAccess(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  int i = 0;
+  // Find an entry for this isolate in the exclusive access state.
+  while ((i < kNumAddressTags) &&
+         (exclusive_access_state_[i].isolate != isolate)) {
+    i++;
+  }
+  // Round-robin replacement of previously used entries.
+  if (i == kNumAddressTags) {
+    i = next_address_tag_;
+    if (++next_address_tag_ == kNumAddressTags) {
+      next_address_tag_ = 0;
+    }
+    exclusive_access_state_[i].isolate = isolate;
+  }
+  // Remember the address being reserved.
+  exclusive_access_state_[i].addr = addr;
+}
+
+
+bool Simulator::HasExclusiveAccessAndOpen(uword addr) {
+  Isolate* isolate = Isolate::Current();
+  ASSERT(isolate != NULL);
+  ASSERT(addr != 0);
+  DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
+  bool result = false;
+  for (int i = 0; i < kNumAddressTags; i++) {
+    if (exclusive_access_state_[i].isolate == isolate) {
+      // Check whether the current isolates address reservation matches.
+      if (exclusive_access_state_[i].addr == addr) {
+        result = true;
+      }
+      exclusive_access_state_[i].addr = 0;
+    } else if (exclusive_access_state_[i].addr == addr) {
+      // Other isolates with matching address lose their reservations.
+      exclusive_access_state_[i].addr = 0;
+    }
+  }
+  return result;
+}
+
+
+void Simulator::ClearExclusive() {
+  MutexLocker ml(exclusive_access_lock_);
+  // Remove the reservation for this isolate.
+  SetExclusiveAccess(NULL);
+}
+
+
+intptr_t Simulator::ReadExclusiveW(uword addr, Instr* instr) {
+  MutexLocker ml(exclusive_access_lock_);
+  SetExclusiveAccess(addr);
+  return ReadW(addr, instr);
+}
+
+
+intptr_t Simulator::WriteExclusiveW(uword addr, intptr_t value, Instr* instr) {
+  MutexLocker ml(exclusive_access_lock_);
+  bool write_allowed = HasExclusiveAccessAndOpen(addr);
+  if (write_allowed) {
+    WriteW(addr, value, instr);
+    return 0;  // Success.
+  }
+  return 1;  // Failure.
+}
+
+
+uword Simulator::CompareExchange(uword* address,
+                                 uword compare_value,
+                                 uword new_value) {
+  MutexLocker ml(exclusive_access_lock_);
+  // We do not get a reservation as it would be guaranteed to be found when
+  // writing below. No other isolate is able to make a reservation while we
+  // hold the lock.
+  uword value = *address;
+  if (value == compare_value) {
+    *address = new_value;
+    // Same effect on exclusive access state as a successful SC.
+    HasExclusiveAccessAndOpen(reinterpret_cast<uword>(address));
+  } else {
+    // Same effect on exclusive access state as an LL.
+    SetExclusiveAccess(reinterpret_cast<uword>(address));
+  }
+  return value;
+}
+
+
 bool Simulator::OverflowFrom(int32_t alu_out,
                              int32_t left, int32_t right, bool addition) {
   bool overflow;
diff --git a/runtime/vm/simulator_mips.h b/runtime/vm/simulator_mips.h
index 45f45d8..1df5523 100644
--- a/runtime/vm/simulator_mips.h
+++ b/runtime/vm/simulator_mips.h
@@ -17,11 +17,12 @@
 #endif
 
 #include "vm/constants_mips.h"
-#include "vm/object.h"
 
 namespace dart {
 
 class Isolate;
+class Mutex;
+class RawObject;
 class SimulatorSetjmpBuffer;
 
 class Simulator {
@@ -110,6 +111,12 @@
                bool fp_return = false,
                bool fp_args = false);
 
+  // Implementation of atomic compare and exchange in the same synchronization
+  // domain as other synchronization primitive instructions (e.g. ldrex, strex).
+  static uword CompareExchange(uword* address,
+                               uword compare_value,
+                               uword new_value);
+
   // Runtime and native call support.
   enum CallKind {
     kRuntimeCall,
@@ -190,6 +197,38 @@
   inline double ReadD(uword addr, Instr* instr);
   inline void WriteD(uword addr, double value, Instr* instr);
 
+  // In Dart, there is at most one thread per isolate.
+  // We keep track of 16 exclusive access address tags across all isolates.
+  // Since we cannot simulate a native context switch, which clears
+  // the exclusive access state of the local monitor, we associate the isolate
+  // requesting exclusive access to the address tag.
+  // Multiple isolates requesting exclusive access (using the LL instruction)
+  // to the same address will result in multiple address tags being created for
+  // the same address, one per isolate.
+  // At any given time, each isolate is associated to at most one address tag.
+  static Mutex* exclusive_access_lock_;
+  static const int kNumAddressTags = 16;
+  static struct AddressTag {
+    Isolate* isolate;
+    uword addr;
+  } exclusive_access_state_[kNumAddressTags];
+  static int next_address_tag_;
+
+  // Synchronization primitives support.
+  void ClearExclusive();
+  intptr_t ReadExclusiveW(uword addr, Instr* instr);
+  intptr_t WriteExclusiveW(uword addr, intptr_t value, Instr* instr);
+
+  // Set access to given address to 'exclusive state' for current isolate.
+  static void SetExclusiveAccess(uword addr);
+
+  // Returns true if the current isolate has exclusive access to given address,
+  // returns false otherwise. In either case, set access to given address to
+  // 'open state' for all isolates.
+  // If given addr is NULL, set access to 'open state' for current
+  // isolate (CLREX).
+  static bool HasExclusiveAccessAndOpen(uword addr);
+
   void DoBranch(Instr* instr, bool taken, bool likely);
   void DoBreak(Instr *instr);
 
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index ff74a58..366ad92 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -304,12 +304,10 @@
     return result.raw();
   }
   ASSERT((class_header & kSmiTagMask) != kSmiTag);
-  cls_ = LookupInternalClass(class_header);
-  ASSERT(!cls_.IsNull());
 
   // Similarly Array and ImmutableArray objects are also similarly only
   // allocated here, the individual array elements are read later.
-  intptr_t class_id = cls_.id();
+  intptr_t class_id = LookupInternalClass(class_header);
   if (class_id == kArrayCid) {
     // Read the length and allocate an object based on the len.
     intptr_t len = ReadSmiValue();
@@ -806,21 +804,18 @@
 }
 
 
-RawClass* SnapshotReader::LookupInternalClass(intptr_t class_header) {
+intptr_t SnapshotReader::LookupInternalClass(intptr_t class_header) {
   // If the header is an object Id, lookup singleton VM classes or classes
   // stored in the object store.
   if (IsVMIsolateObject(class_header)) {
     intptr_t class_id = GetVMIsolateObjectId(class_header);
-    if (IsSingletonClassId(class_id)) {
-      return isolate()->class_table()->At(class_id);  // get singleton class.
-    }
-  } else if (SerializedHeaderTag::decode(class_header) == kObjectId) {
-    intptr_t class_id = SerializedHeaderData::decode(class_header);
-    if (IsObjectStoreClassId(class_id)) {
-      return isolate()->class_table()->At(class_id);  // get singleton class.
-    }
+    ASSERT(IsSingletonClassId(class_id));
+    return class_id;
   }
-  return Class::null();
+  ASSERT(SerializedHeaderTag::decode(class_header) == kObjectId);
+  intptr_t class_id = SerializedHeaderData::decode(class_header);
+  ASSERT(IsObjectStoreClassId(class_id));
+  return class_id;
 }
 
 
@@ -991,9 +986,8 @@
     return result->raw();
   }
   ASSERT((class_header & kSmiTagMask) != kSmiTag);
-  cls_ = LookupInternalClass(class_header);
-  ASSERT(!cls_.IsNull());
-  switch (cls_.id()) {
+  intptr_t class_id = LookupInternalClass(class_header);
+  switch (class_id) {
 #define SNAPSHOT_READ(clazz)                                                   \
     case clazz::kClassId: {                                                    \
       pobj_ = clazz::ReadFrom(this, object_id, tags, kind_);                   \
@@ -1005,7 +999,7 @@
     case kTypedData##clazz##Cid:                                               \
 
     CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
-      tags = RawObject::ClassIdTag::update(cls_.id(), tags);
+      tags = RawObject::ClassIdTag::update(class_id, tags);
       pobj_ = TypedData::ReadFrom(this, object_id, tags, kind_);
       break;
     }
@@ -1014,7 +1008,7 @@
     case kExternalTypedData##clazz##Cid:                                       \
 
     CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
-      tags = RawObject::ClassIdTag::update(cls_.id(), tags);
+      tags = RawObject::ClassIdTag::update(class_id, tags);
       pobj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_);
       break;
     }
diff --git a/runtime/vm/snapshot.h b/runtime/vm/snapshot.h
index 117a9a2..74a77a1 100644
--- a/runtime/vm/snapshot.h
+++ b/runtime/vm/snapshot.h
@@ -361,8 +361,8 @@
   // Read an inlined object from the stream.
   RawObject* ReadInlinedObject(intptr_t object_id);
 
-  // Based on header field check to see if it is an internal VM class.
-  RawClass* LookupInternalClass(intptr_t class_header);
+  // Decode class id from the header field.
+  intptr_t LookupInternalClass(intptr_t class_header);
 
   void ArrayReadFrom(const Array& result, intptr_t len, intptr_t tags);
 
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 96a5cae..8e41237 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -58,19 +58,31 @@
 }
 
 
-void StubCode::GenerateFor(Isolate* init) {
-  // Generate all the stubs.
+void StubCode::GenerateBootstrapStubsFor(Isolate* init) {
+  // Generate initial stubs.
   Code& code = Code::Handle();
-  STUB_CODE_LIST(STUB_CODE_GENERATE);
+  BOOTSTRAP_STUB_CODE_LIST(STUB_CODE_GENERATE);
+}
+
+
+void StubCode::GenerateStubsFor(Isolate* init) {
+  // Generate all the other stubs.
+  Code& code = Code::Handle();
+  REST_STUB_CODE_LIST(STUB_CODE_GENERATE);
 }
 
 #undef STUB_CODE_GENERATE
 
 
-void StubCode::Init(Isolate* isolate) {
+void StubCode::InitBootstrapStubs(Isolate* isolate) {
   StubCode* stubs = new StubCode(isolate);
   isolate->set_stub_code(stubs);
-  stubs->GenerateFor(isolate);
+  stubs->GenerateBootstrapStubsFor(isolate);
+}
+
+
+void StubCode::Init(Isolate* isolate) {
+  isolate->stub_code()->GenerateStubsFor(isolate);
 }
 
 
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index b8cc6d9..5e382c1 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -21,24 +21,8 @@
 // isolates running in this dart process.
 #define VM_STUB_CODE_LIST(V)                                                   \
   V(PrintStopMessage)                                                          \
-  V(CallToRuntime)                                                             \
-  V(LazyCompile)                                                               \
-  V(CallBootstrapCFunction)                                                    \
-  V(CallNativeCFunction)                                                       \
-  V(CallStaticFunction)                                                        \
-  V(FixCallersTarget)                                                          \
-  V(FixAllocationStubTarget)                                                   \
-  V(FixAllocateArrayStubTarget)                                                \
-  V(Deoptimize)                                                                \
-  V(DeoptimizeLazy)                                                            \
-  V(ICCallBreakpoint)                                                          \
-  V(ClosureCallBreakpoint)                                                     \
-  V(RuntimeCallBreakpoint)                                                     \
-  V(DebugStepCheck)                                                            \
   V(GetStackPointer)                                                           \
   V(JumpToExceptionHandler)                                                    \
-  V(UnoptimizedIdenticalWithNumberCheck)                                       \
-  V(OptimizedIdenticalWithNumberCheck)                                         \
 
 // Is it permitted for the stubs above to refer to Object::null(), which is
 // allocated in the VM isolate and shared across all isolates.
@@ -48,7 +32,19 @@
 
 // List of stubs created per isolate, these stubs could potentially contain
 // embedded objects and hence cannot be shared across isolates.
-#define STUB_CODE_LIST(V)                                                      \
+// The initial stubs are needed for loading bootstrapping scripts and have to
+// be generated before Object::Init is called.
+#define BOOTSTRAP_STUB_CODE_LIST(V)                                            \
+  V(CallToRuntime)                                                             \
+  V(LazyCompile)                                                               \
+
+#define REST_STUB_CODE_LIST(V)                                                 \
+  V(CallBootstrapCFunction)                                                    \
+  V(CallNativeCFunction)                                                       \
+  V(FixCallersTarget)                                                          \
+  V(CallStaticFunction)                                                        \
+  V(FixAllocationStubTarget)                                                   \
+  V(FixAllocateArrayStubTarget)                                                \
   V(CallClosureNoSuchMethod)                                                   \
   V(AllocateContext)                                                           \
   V(UpdateStoreBuffer)                                                         \
@@ -69,6 +65,18 @@
   V(Subtype1TestCache)                                                         \
   V(Subtype2TestCache)                                                         \
   V(Subtype3TestCache)                                                         \
+  V(Deoptimize)                                                                \
+  V(DeoptimizeLazy)                                                            \
+  V(ICCallBreakpoint)                                                          \
+  V(ClosureCallBreakpoint)                                                     \
+  V(RuntimeCallBreakpoint)                                                     \
+  V(UnoptimizedIdenticalWithNumberCheck)                                       \
+  V(OptimizedIdenticalWithNumberCheck)                                         \
+  V(DebugStepCheck)                                                            \
+
+#define STUB_CODE_LIST(V)                                                      \
+  BOOTSTRAP_STUB_CODE_LIST(V)                                                  \
+  REST_STUB_CODE_LIST(V)
 
 // class StubEntry is used to describe stub methods generated in dart to
 // abstract out common code executed from generated dart code.
@@ -106,7 +114,6 @@
         isolate_(isolate) {}
   ~StubCode();
 
-  void GenerateFor(Isolate* isolate);
 
   // Generate all stubs which are shared across all isolates, this is done
   // only once and the stub code resides in the vm_isolate heap.
@@ -114,6 +121,9 @@
 
   // Generate all stubs which are generated on a per isolate basis as they
   // have embedded objects which are isolate specific.
+  // Bootstrap stubs are needed before Object::Init to compile the bootstrap
+  // scripts.
+  static void InitBootstrapStubs(Isolate* isolate);
   static void Init(Isolate* isolate);
 
   static void VisitObjectPointers(ObjectPointerVisitor* visitor);
@@ -172,6 +182,9 @@
   static const intptr_t kNoInstantiator = 0;
 
  private:
+  void GenerateBootstrapStubsFor(Isolate* isolate);
+  void GenerateStubsFor(Isolate* isolate);
+
   friend class MegamorphicCacheTable;
 
   static const intptr_t kStubCodeSize = 4 * KB;
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 6cdce72..77f9f74 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -45,8 +45,7 @@
   __ Push(IP);  // Push 0 for the PC marker.
   __ EnterFrame((1 << FP) | (1 << LR), 0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ ldr(R0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -159,8 +158,7 @@
   __ Push(IP);  // Push 0 for the PC marker.
   __ EnterFrame((1 << FP) | (1 << LR), 0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ ldr(R0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -267,8 +265,7 @@
   __ Push(IP);  // Push 0 for the PC marker.
   __ EnterFrame((1 << FP) | (1 << LR), 0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ ldr(R0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -788,8 +785,6 @@
   __ EnterFrame((1 << FP) | (1 << LR), 0);
 
   // Save new context and C++ ABI callee-saved registers.
-  const intptr_t kNewContextOffsetFromFp =
-      -(1 + kAbiPreservedCpuRegCount) * kWordSize;
   __ PushList((1 << R3) | kAbiPreservedCpuRegs);
 
   const DRegister firstd = EvenDRegisterOf(kAbiFirstPreservedFpuReg);
@@ -815,7 +810,6 @@
   // Cache the new Context pointer into CTX while executing Dart code.
   __ ldr(CTX, Address(R3, VMHandles::kOffsetOfRawPtrInHandle));
 
-  // Load Isolate pointer into temporary register R8.
   __ LoadIsolate(R8);
 
   // Save the current VMTag on the stack.
@@ -875,14 +869,10 @@
   // Call the Dart code entrypoint.
   __ blx(R0);  // R4 is the arguments descriptor array.
 
-  // Read the saved new Context pointer.
-  __ ldr(CTX, Address(FP, kNewContextOffsetFromFp));
-  __ ldr(CTX, Address(CTX, VMHandles::kOffsetOfRawPtrInHandle));
-
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kSavedContextSlotFromEntryFp * kWordSize);
 
-  // Load Isolate pointer into CTX. Drop Context.
+  // Load Isolate pointer into CTX.
   __ LoadIsolate(CTX);
 
   // Restore the saved Context pointer into the Isolate structure.
@@ -988,16 +978,6 @@
     // R4: allocation stats address.
     __ str(R1, FieldAddress(R0, Context::num_variables_offset()));
 
-    // Setup isolate field.
-    // Load Isolate pointer into R3.
-    // R0: new object.
-    // R1: number of context variables.
-    // R2: object size.
-    // R4: allocation stats address.
-    __ LoadIsolate(R3);
-    // R3: isolate, not an object.
-    __ str(R3, FieldAddress(R0, Context::isolate_offset()));
-
     // Setup the parent field.
     // R0: new object.
     // R1: number of context variables.
@@ -1065,8 +1045,25 @@
   __ Ret();
 
   __ Bind(&add_to_buffer);
-  __ orr(R2, R2, Operand(1 << RawObject::kRememberedBit));
-  __ str(R2, FieldAddress(R0, Object::tags_offset()));
+  // R2: Header word.
+  if (TargetCPUFeatures::arm_version() == ARMv5TE) {
+    // TODO(21263): Implement 'swp' and use it below.
+    ASSERT(OS::NumberOfAvailableProcessors() <= 1);
+    __ orr(R2, R2, Operand(1 << RawObject::kRememberedBit));
+    __ str(R2, FieldAddress(R0, Object::tags_offset()));
+  } else {
+    // Atomically set the remembered bit of the object header.
+    ASSERT(Object::tags_offset() == 0);
+    __ sub(R3, R0, Operand(kHeapObjectTag));
+    // R3: Untagged address of header word (ldrex/strex do not support offsets).
+    Label retry;
+    __ Bind(&retry);
+    __ ldrex(R2, R3);
+    __ orr(R2, R2, Operand(1 << RawObject::kRememberedBit));
+    __ strex(R1, R2, R3);
+    __ cmp(R1, Operand(1));
+    __ b(&retry, EQ);
+  }
 
   // Load the isolate.
   // Spilled: R1, R2, R3.
@@ -1761,7 +1758,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ ldr(R1, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R1);
   __ ldrb(R1, Address(R1, Isolate::single_step_offset()));
   __ CompareImmediate(R1, 0);
   __ b(&stepping, NE);
@@ -2021,7 +2018,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ ldr(R1, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R1);
   __ ldrb(R1, Address(R1, Isolate::single_step_offset()));
   __ CompareImmediate(R1, 0);
   __ b(&stepping, NE);
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index b7f4a59..6fb4a0d 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -44,8 +44,7 @@
   __ Comment("CallToRuntimeStub");
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ LoadFieldFromOffset(R0, CTX, Context::isolate_offset(), kNoPP);
+  __ LoadIsolate(R0, kNoPP);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -161,8 +160,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ LoadFieldFromOffset(R0, CTX, Context::isolate_offset(), kNoPP);
+  __ LoadIsolate(R0, kNoPP);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -278,8 +276,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into R0.
-  __ LoadFieldFromOffset(R0, CTX, Context::isolate_offset(), kNoPP);
+  __ LoadIsolate(R0, kNoPP);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -815,9 +812,6 @@
 //   R3 : new context containing the current isolate pointer.
 void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
   __ Comment("InvokeDartCodeStub");
-  // The new context, saved vm tag, the top exit frame, and the old context.
-  const intptr_t kNewContextOffsetFromFp =
-      -(1 + kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount) * kWordSize;
 
   // Copy the C stack pointer (R31) into the stack pointer we'll actually use
   // to access the stack, and put the C stack pointer at the stack limit.
@@ -844,6 +838,9 @@
 #if defined(DEBUG)
   {
     Label ok;
+    // The new context, saved vm tag, the top exit frame, and the old context.
+    const intptr_t kNewContextOffsetFromFp =
+        -(1 + kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount) * kWordSize;
     __ AddImmediate(R4, FP, kNewContextOffsetFromFp, kNoPP);
     __ CompareRegisters(R4, SP);
     __ b(&ok, EQ);
@@ -869,9 +866,6 @@
   // Load Isolate pointer into temporary register R5.
   __ LoadIsolate(R5, PP);
 
-  // Cache the new Context pointer into CTX while executing Dart code.
-  __ LoadFromOffset(CTX, R3, VMHandles::kOffsetOfRawPtrInHandle, PP);
-
   // Save the current VMTag on the stack.
   ASSERT(kSavedVMTagSlotFromEntryFp == -20);
   __ LoadFromOffset(R4, R5, Isolate::vm_tag_offset(), PP);
@@ -933,14 +927,10 @@
   // Restore constant pool pointer after return.
   __ LoadPoolPointer(PP);
 
-  // Read the saved new Context pointer.
-  __ LoadFromOffset(CTX, FP, kNewContextOffsetFromFp, PP);
-  __ LoadFromOffset(CTX, CTX, VMHandles::kOffsetOfRawPtrInHandle, PP);
-
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kSavedContextSlotFromEntryFp * kWordSize, PP);
 
-  // Load Isolate pointer into CTX. Drop Context.
+  // Load Isolate pointer into CTX.
   __ LoadIsolate(CTX, PP);
 
   // Restore the current VMTag from the stack.
@@ -1054,14 +1044,6 @@
     // R1: number of context variables as integer value (not object).
     __ StoreFieldToOffset(R1, R0, Context::num_variables_offset(), kNoPP);
 
-    // Setup isolate field.
-    // Load Isolate pointer into R2.
-    // R0: new object.
-    // R1: number of context variables.
-    __ LoadIsolate(R2, kNoPP);
-    // R2: isolate, not an object.
-    __ StoreFieldToOffset(R2, R0, Context::isolate_offset(), kNoPP);
-
     // Setup the parent field.
     // R0: new object.
     // R1: number of context variables.
@@ -1836,7 +1818,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ LoadFieldFromOffset(R1, CTX, Context::isolate_offset(), kNoPP);
+  __ LoadIsolate(R1, kNoPP);
   __ LoadFromOffset(
       R1, R1, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
   __ CompareImmediate(R1, 0, kNoPP);
@@ -2088,7 +2070,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ LoadFieldFromOffset(R1, CTX, Context::isolate_offset(), kNoPP);
+  __ LoadIsolate(R1, kNoPP);
   __ LoadFromOffset(
       R1, R1, Isolate::single_step_offset(), kNoPP, kUnsignedByte);
   __ CompareImmediate(R1, 0, kNoPP);
diff --git a/runtime/vm/stub_code_arm64_test.cc b/runtime/vm/stub_code_arm64_test.cc
index 1011567..94da954 100644
--- a/runtime/vm/stub_code_arm64_test.cc
+++ b/runtime/vm/stub_code_arm64_test.cc
@@ -45,7 +45,6 @@
   const Smi& smi1 = Smi::ZoneHandle(Smi::New(value1));
   const Smi& smi2 = Smi::ZoneHandle(Smi::New(value2));
   const Context& context = Context::ZoneHandle(Context::New(0, Heap::kOld));
-  ASSERT(context.isolate() == Isolate::Current());
   __ EnterDartFrame(0);
   __ LoadObject(CTX, context, PP);
   __ PushObject(Object::null_object(), PP);  // Push Null obj for return value.
diff --git a/runtime/vm/stub_code_arm_test.cc b/runtime/vm/stub_code_arm_test.cc
index 5fa5b2a..9cd96ab 100644
--- a/runtime/vm/stub_code_arm_test.cc
+++ b/runtime/vm/stub_code_arm_test.cc
@@ -45,7 +45,6 @@
   const Smi& smi1 = Smi::ZoneHandle(Smi::New(value1));
   const Smi& smi2 = Smi::ZoneHandle(Smi::New(value2));
   const Context& context = Context::ZoneHandle(Context::New(0, Heap::kOld));
-  ASSERT(context.isolate() == Isolate::Current());
   __ EnterDartFrame(0);
   __ LoadObject(CTX, context);
   __ PushObject(Object::null_object());  // Push Null object for return value.
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 9898d44..5b336a4 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -47,8 +47,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into EAX.
-  __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(EAX);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -168,8 +167,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into EDI.
-  __ movl(EDI, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(EDI);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to dart VM code.
@@ -273,8 +271,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into EDI.
-  __ movl(EDI, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(EDI);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to dart VM code.
@@ -882,10 +879,6 @@
   // Call the dart code entrypoint.
   __ call(Address(EBP, kEntryPointOffset));
 
-  // Reread the Context pointer.
-  __ movl(CTX, Address(EBP, kNewContextOffset));
-  __ movl(CTX, Address(CTX, VMHandles::kOffsetOfRawPtrInHandle));
-
   // Reread the arguments descriptor array to obtain the number of passed
   // arguments.
   __ movl(EDX, Address(EBP, kArgumentsDescOffset));
@@ -894,7 +887,7 @@
   // Get rid of arguments pushed on the stack.
   __ leal(ESP, Address(ESP, EDX, TIMES_2, 0));  // EDX is a Smi.
 
-  // Load Isolate pointer into CTX. Drop Context.
+  // Load Isolate pointer into CTX.
   __ LoadIsolate(CTX);
 
   // Restore the saved Context pointer into the Isolate structure.
@@ -995,13 +988,6 @@
     // EDX: number of context variables as integer value (not object).
     __ movl(FieldAddress(EAX, Context::num_variables_offset()), EDX);
 
-    // Setup isolate field.
-    // Load Isolate pointer from Context structure into EBX.
-    // EAX: new object.
-    // EDX: number of context variables.
-    __ movl(FieldAddress(EAX, Context::isolate_offset()),
-            Immediate(reinterpret_cast<int32_t>(isolate)));
-
     const Immediate& raw_null =
         Immediate(reinterpret_cast<intptr_t>(Object::null()));
     // Setup the parent field.
@@ -1794,7 +1780,7 @@
 void StubCode::GenerateDebugStepCheckStub(Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(EAX);
   __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
   __ cmpl(EAX, Immediate(0));
   __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
@@ -2056,7 +2042,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ movl(EAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(EAX);
   __ movzxb(EAX, Address(EAX, Isolate::single_step_offset()));
   __ cmpl(EAX, Immediate(0));
   __ j(NOT_EQUAL, &stepping);
diff --git a/runtime/vm/stub_code_ia32_test.cc b/runtime/vm/stub_code_ia32_test.cc
index baf8f15..468a607 100644
--- a/runtime/vm/stub_code_ia32_test.cc
+++ b/runtime/vm/stub_code_ia32_test.cc
@@ -45,7 +45,6 @@
   const Smi& smi1 = Smi::ZoneHandle(Smi::New(value1));
   const Smi& smi2 = Smi::ZoneHandle(Smi::New(value2));
   const Context& context = Context::ZoneHandle(Context::New(0, Heap::kOld));
-  ASSERT(context.isolate() == Isolate::Current());
   __ enter(Immediate(0));
   __ LoadObject(CTX, context);
   __ PushObject(Object::null_object());  // Push Null object for return value.
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
index a500fa8..9cfd32f 100644
--- a/runtime/vm/stub_code_mips.cc
+++ b/runtime/vm/stub_code_mips.cc
@@ -48,8 +48,7 @@
   __ sw(FP, Address(SP, 0 * kWordSize));
   __ mov(FP, SP);
 
-  // Load current Isolate pointer from Context structure into A0.
-  __ lw(A0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(A0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -174,8 +173,7 @@
   __ sw(FP, Address(SP, 0 * kWordSize));
   __ mov(FP, SP);
 
-  // Load current Isolate pointer from Context structure into A0.
-  __ lw(A0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(A0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -289,8 +287,7 @@
   __ sw(FP, Address(SP, 0 * kWordSize));
   __ mov(FP, SP);
 
-  // Load current Isolate pointer from Context structure into A0.
-  __ lw(A0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(A0);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -873,8 +870,6 @@
 
   // The new context, saved vm tag, the top exit frame, and the old context.
   const intptr_t kPreservedContextSlots = 4;
-  const intptr_t kNewContextOffsetFromFp =
-      -(1 + kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount) * kWordSize;
   const intptr_t kPreservedRegSpace =
       kWordSize * (kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount +
                    kPreservedContextSlots);
@@ -976,14 +971,10 @@
   __ jalr(A0);  // S4 is the arguments descriptor array.
   __ TraceSimMsg("InvokeDartCodeStub return");
 
-  // Read the saved new Context pointer.
-  __ lw(CTX, Address(FP, kNewContextOffsetFromFp));
-  __ lw(CTX, Address(CTX, VMHandles::kOffsetOfRawPtrInHandle));
-
   // Get rid of arguments pushed on the stack.
   __ AddImmediate(SP, FP, kSavedContextSlotFromEntryFp * kWordSize);
 
-  // Load Isolate pointer into CTX. Drop Context.
+  // Load Isolate pointer into CTX.
   __ LoadIsolate(CTX);
 
   // Restore the current VMTag from the stack.
@@ -1097,13 +1088,6 @@
     // T1: number of context variables as integer value (not object).
     __ sw(T1, FieldAddress(V0, Context::num_variables_offset()));
 
-    // Setup isolate field.
-    // V0: new object.
-    // T1: number of context variables.
-    // T2: isolate, not an object.
-    __ LoadIsolate(T2);
-    __ sw(T2, FieldAddress(V0, Context::isolate_offset()));
-
     __ LoadImmediate(T7, reinterpret_cast<intptr_t>(Object::null()));
 
     // Initialize the context variables.
@@ -1939,7 +1923,7 @@
 void StubCode::GenerateDebugStepCheckStub(Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ lw(T0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(T0);
   __ lbu(T0, Address(T0, Isolate::single_step_offset()));
   __ BranchNotEqual(T0, Immediate(0), &stepping);
   __ Bind(&done_stepping);
@@ -2228,7 +2212,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ lw(T0, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(T0);
   __ lbu(T0, Address(T0, Isolate::single_step_offset()));
   __ BranchNotEqual(T0, Immediate(0), &stepping);
   __ Bind(&done_stepping);
diff --git a/runtime/vm/stub_code_mips_test.cc b/runtime/vm/stub_code_mips_test.cc
index 00c5112..5582ec5 100644
--- a/runtime/vm/stub_code_mips_test.cc
+++ b/runtime/vm/stub_code_mips_test.cc
@@ -45,7 +45,6 @@
   const Smi& smi1 = Smi::ZoneHandle(Smi::New(value1));
   const Smi& smi2 = Smi::ZoneHandle(Smi::New(value2));
   const Context& context = Context::ZoneHandle(Context::New(0, Heap::kOld));
-  ASSERT(context.isolate() == Isolate::Current());
   __ EnterDartFrame(0);
   __ LoadObject(CTX, context);
   __ PushObject(Object::null_object());  // Push Null object for return value.
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index d4bc732..7be3f88 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -44,8 +44,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into RAX.
-  __ movq(RAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(RAX);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to Dart VM C++ code.
@@ -156,8 +155,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into R8.
-  __ movq(R8, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R8);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -245,8 +243,7 @@
 
   __ EnterFrame(0);
 
-  // Load current Isolate pointer from Context structure into R8.
-  __ movq(R8, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(R8);
 
   // Save exit frame information to enable stack walking as we are about
   // to transition to native code.
@@ -750,7 +747,6 @@
   // Save arguments descriptor array and new context.
   const intptr_t kArgumentsDescOffset = -(kInitialOffset) * kWordSize;
   __ pushq(kArgDescReg);
-  const intptr_t kNewContextOffset = -(kInitialOffset + 1) * kWordSize;
   __ pushq(kNewContextReg);
 
   // Save C++ ABI callee-saved registers.
@@ -868,10 +864,6 @@
   // Call the Dart code entrypoint.
   __ call(kEntryPointReg);  // R10 is the arguments descriptor array.
 
-  // Restore CTX from the saved context handle.
-  __ movq(CTX, Address(RBP, kNewContextOffset));
-  __ movq(CTX, Address(CTX, VMHandles::kOffsetOfRawPtrInHandle));
-
   // Read the saved arguments descriptor array to obtain the number of passed
   // arguments.
   __ movq(kArgDescReg, Address(RBP, kArgumentsDescOffset));
@@ -979,13 +971,6 @@
     // R10: number of context variables as integer value (not object).
     __ movq(FieldAddress(RAX, Context::num_variables_offset()), R10);
 
-    // Setup isolate field.
-    // RAX: new object.
-    // R10: number of context variables.
-    // R13: Isolate, not an object.
-    __ LoadIsolate(R13);
-    __ movq(FieldAddress(RAX, Context::isolate_offset()), R13);
-
     // Setup the parent field.
     // RAX: new object.
     // R10: number of context variables.
@@ -1754,7 +1739,7 @@
 void StubCode::GenerateDebugStepCheckStub(Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ movq(RAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(RAX);
   __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
   __ cmpq(RAX, Immediate(0));
   __ j(NOT_EQUAL, &stepping, Assembler::kNearJump);
@@ -2021,7 +2006,7 @@
     Assembler* assembler) {
   // Check single stepping.
   Label stepping, done_stepping;
-  __ movq(RAX, FieldAddress(CTX, Context::isolate_offset()));
+  __ LoadIsolate(RAX);
   __ movzxb(RAX, Address(RAX, Isolate::single_step_offset()));
   __ cmpq(RAX, Immediate(0));
   __ j(NOT_EQUAL, &stepping);
diff --git a/runtime/vm/stub_code_x64_test.cc b/runtime/vm/stub_code_x64_test.cc
index fb70f91..bff9297 100644
--- a/runtime/vm/stub_code_x64_test.cc
+++ b/runtime/vm/stub_code_x64_test.cc
@@ -45,7 +45,6 @@
   const Smi& smi1 = Smi::ZoneHandle(Smi::New(value1));
   const Smi& smi2 = Smi::ZoneHandle(Smi::New(value2));
   const Context& context = Context::ZoneHandle(Context::New(0, Heap::kOld));
-  ASSERT(context.isolate() == Isolate::Current());
   __ EnterStubFrame(true);
   __ LoadObject(CTX, context, PP);
   __ PushObject(Object::null_object(), PP);  // Push Null obj for return value.
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index feb8a24..2a013e9 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -89,6 +89,8 @@
   V(CompleterCompleteError, "completeError")                                   \
   V(CompleterConstructor, "Completer.")                                        \
   V(CompleterFuture, "future")                                                 \
+  V(StreamIterator, "StreamIterator")                                          \
+  V(StreamIteratorConstructor, "StreamIterator.")                              \
   V(Native, "native")                                                          \
   V(Class, "Class")                                                            \
   V(Null, "Null")                                                              \
diff --git a/runtime/vm/vm.gypi b/runtime/vm/vm.gypi
index 43d82d2..84ce2357 100644
--- a/runtime/vm/vm.gypi
+++ b/runtime/vm/vm.gypi
@@ -62,6 +62,7 @@
             'libraries': [
               '-lpthread',
               '-lrt',
+              '-ldl',
             ],
           },
         }],
@@ -70,6 +71,7 @@
             'libraries': [
               '-lpthread',
               '-lrt',
+              '-ldl',
             ],
           },
         }],
diff --git a/runtime/vm/vm_sources.gypi b/runtime/vm/vm_sources.gypi
index 30915cd..a490cdd 100644
--- a/runtime/vm/vm_sources.gypi
+++ b/runtime/vm/vm_sources.gypi
@@ -40,6 +40,7 @@
     'atomic_android.h',
     'atomic_linux.h',
     'atomic_macos.h',
+    'atomic_simulator.h',
     'atomic_win.h',
     'base_isolate.h',
     'benchmark_test.cc',
diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart
index 6f6f0a5..acbe820 100644
--- a/sdk/lib/_blink/dartium/_blink_dartium.dart
+++ b/sdk/lib/_blink/dartium/_blink_dartium.dart
@@ -1,9117 +1,30426 @@
-/**
- * This library provides entry points to the native Blink code which backs
- * up the dart:html library.
- */
-library dart.dom._blink;
-
 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// DO NOT EDIT
-// Auto-generated dart:_blink library.
+// WARNING: Do not edit - generated code.
+library dart.dom._blink;
 
+// This is a place to put custom renames if we need them.
+final resolverMap = {
+};
 
+dynamic _resolver(String s) native "blinkInstanceResolver";
 
+dynamic resolver(String s) {
+  String className = s;
+  if (resolverMap.containsKey(s))
+    className = resolverMap[s];
+  return _resolver(className);
+}
 
 class BlinkANGLEInstancedArrays {
-  static drawArraysInstancedANGLE_Callback_4(mthis, mode, first, count, primcount) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  static final instance = new BlinkANGLEInstancedArrays();
 
-  static drawElementsInstancedANGLE_Callback_5(mthis, mode, count, type, offset, primcount) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  static drawArraysInstancedANGLE_Callback_2(mthis, __arg_0, __arg_1) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  drawArraysInstancedANGLE_Callback_2_(mthis, __arg_0, __arg_1) => drawArraysInstancedANGLE_Callback_2(mthis, __arg_0, __arg_1);
 
-  static vertexAttribDivisorANGLE_Callback_2(mthis, index, divisor) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  static drawArraysInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  drawArraysInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawArraysInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawArraysInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  drawArraysInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawArraysInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawArraysInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  drawArraysInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawArraysInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static drawArraysInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "ANGLEInstancedArrays_drawArraysInstancedANGLE_Callback";
+  drawArraysInstancedANGLE_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawArraysInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static drawElementsInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  drawElementsInstancedANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawElementsInstancedANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawElementsInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  drawElementsInstancedANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawElementsInstancedANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawElementsInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  drawElementsInstancedANGLE_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawElementsInstancedANGLE_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static drawElementsInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  drawElementsInstancedANGLE_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawElementsInstancedANGLE_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static drawElementsInstancedANGLE_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "ANGLEInstancedArrays_drawElementsInstancedANGLE_Callback";
+  drawElementsInstancedANGLE_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => drawElementsInstancedANGLE_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static vertexAttribDivisorANGLE_Callback_0(mthis) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  vertexAttribDivisorANGLE_Callback_0_(mthis) => vertexAttribDivisorANGLE_Callback_0(mthis);
+
+  static vertexAttribDivisorANGLE_Callback_1(mthis, __arg_0) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  vertexAttribDivisorANGLE_Callback_1_(mthis, __arg_0) => vertexAttribDivisorANGLE_Callback_1(mthis, __arg_0);
+
+  static vertexAttribDivisorANGLE_Callback_2(mthis, __arg_0, __arg_1) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  vertexAttribDivisorANGLE_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttribDivisorANGLE_Callback_2(mthis, __arg_0, __arg_1);
+
+  static vertexAttribDivisorANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  vertexAttribDivisorANGLE_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttribDivisorANGLE_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static vertexAttribDivisorANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ANGLEInstancedArrays_vertexAttribDivisorANGLE_Callback";
+  vertexAttribDivisorANGLE_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttribDivisorANGLE_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkAbstractWorker {}
+class BlinkAnalyserNode extends BlinkAudioNode {
+  static final instance = new BlinkAnalyserNode();
 
-class BlinkEventTarget {
-  static addEventListener_Callback_3(mthis, type, listener, useCapture) native "EventTarget_addEventListener_Callback";
-
-  static addEventListener_Callback_2(mthis, type, listener) native "EventTarget_addEventListener_Callback";
-
-  static addEventListener_Callback_1(mthis, type) native "EventTarget_addEventListener_Callback";
-
-  static addEventListener_Callback(mthis) native "EventTarget_addEventListener_Callback";
-
-  static dispatchEvent_Callback_1(mthis, event) native "EventTarget_dispatchEvent_Callback";
-
-  static removeEventListener_Callback_3(mthis, type, listener, useCapture) native "EventTarget_removeEventListener_Callback";
-
-  static removeEventListener_Callback_2(mthis, type, listener) native "EventTarget_removeEventListener_Callback";
-
-  static removeEventListener_Callback_1(mthis, type) native "EventTarget_removeEventListener_Callback";
-
-  static removeEventListener_Callback(mthis) native "EventTarget_removeEventListener_Callback";
-}
-
-class BlinkAudioNode {
-  static channelCount_Getter(mthis) native "AudioNode_channelCount_Getter";
-
-  static channelCount_Setter(mthis, value) native "AudioNode_channelCount_Setter";
-
-  static channelCountMode_Getter(mthis) native "AudioNode_channelCountMode_Getter";
-
-  static channelCountMode_Setter(mthis, value) native "AudioNode_channelCountMode_Setter";
-
-  static channelInterpretation_Getter(mthis) native "AudioNode_channelInterpretation_Getter";
-
-  static channelInterpretation_Setter(mthis, value) native "AudioNode_channelInterpretation_Setter";
-
-  static context_Getter(mthis) native "AudioNode_context_Getter";
-
-  static numberOfInputs_Getter(mthis) native "AudioNode_numberOfInputs_Getter";
-
-  static numberOfOutputs_Getter(mthis) native "AudioNode_numberOfOutputs_Getter";
-
-  static connect_Callback_3(mthis, destination, output, input) native "AudioNode_connect_Callback";
-
-  static connect_Callback_2(mthis, destination, output) native "AudioNode_connect_Callback";
-
-  static disconnect_Callback_1(mthis, output) native "AudioNode_disconnect_Callback";
-}
-
-class BlinkAnalyserNode {
   static fftSize_Getter(mthis) native "AnalyserNode_fftSize_Getter";
+  fftSize_Getter_(mthis) => fftSize_Getter(mthis);
 
-  static fftSize_Setter(mthis, value) native "AnalyserNode_fftSize_Setter";
+  static fftSize_Setter(mthis, __arg_0) native "AnalyserNode_fftSize_Setter";
+  fftSize_Setter_(mthis, __arg_0) => fftSize_Setter(mthis, __arg_0);
 
   static frequencyBinCount_Getter(mthis) native "AnalyserNode_frequencyBinCount_Getter";
+  frequencyBinCount_Getter_(mthis) => frequencyBinCount_Getter(mthis);
+
+  static getByteFrequencyData_Callback_0(mthis) native "AnalyserNode_getByteFrequencyData_Callback";
+  getByteFrequencyData_Callback_0_(mthis) => getByteFrequencyData_Callback_0(mthis);
+
+  static getByteFrequencyData_Callback_1(mthis, __arg_0) native "AnalyserNode_getByteFrequencyData_Callback";
+  getByteFrequencyData_Callback_1_(mthis, __arg_0) => getByteFrequencyData_Callback_1(mthis, __arg_0);
+
+  static getByteFrequencyData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getByteFrequencyData_Callback";
+  getByteFrequencyData_Callback_2_(mthis, __arg_0, __arg_1) => getByteFrequencyData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getByteFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getByteFrequencyData_Callback";
+  getByteFrequencyData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getByteFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getByteTimeDomainData_Callback_0(mthis) native "AnalyserNode_getByteTimeDomainData_Callback";
+  getByteTimeDomainData_Callback_0_(mthis) => getByteTimeDomainData_Callback_0(mthis);
+
+  static getByteTimeDomainData_Callback_1(mthis, __arg_0) native "AnalyserNode_getByteTimeDomainData_Callback";
+  getByteTimeDomainData_Callback_1_(mthis, __arg_0) => getByteTimeDomainData_Callback_1(mthis, __arg_0);
+
+  static getByteTimeDomainData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getByteTimeDomainData_Callback";
+  getByteTimeDomainData_Callback_2_(mthis, __arg_0, __arg_1) => getByteTimeDomainData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getByteTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getByteTimeDomainData_Callback";
+  getByteTimeDomainData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getByteTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFloatFrequencyData_Callback_0(mthis) native "AnalyserNode_getFloatFrequencyData_Callback";
+  getFloatFrequencyData_Callback_0_(mthis) => getFloatFrequencyData_Callback_0(mthis);
+
+  static getFloatFrequencyData_Callback_1(mthis, __arg_0) native "AnalyserNode_getFloatFrequencyData_Callback";
+  getFloatFrequencyData_Callback_1_(mthis, __arg_0) => getFloatFrequencyData_Callback_1(mthis, __arg_0);
+
+  static getFloatFrequencyData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getFloatFrequencyData_Callback";
+  getFloatFrequencyData_Callback_2_(mthis, __arg_0, __arg_1) => getFloatFrequencyData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFloatFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getFloatFrequencyData_Callback";
+  getFloatFrequencyData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatFrequencyData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFloatTimeDomainData_Callback_0(mthis) native "AnalyserNode_getFloatTimeDomainData_Callback";
+  getFloatTimeDomainData_Callback_0_(mthis) => getFloatTimeDomainData_Callback_0(mthis);
+
+  static getFloatTimeDomainData_Callback_1(mthis, __arg_0) native "AnalyserNode_getFloatTimeDomainData_Callback";
+  getFloatTimeDomainData_Callback_1_(mthis, __arg_0) => getFloatTimeDomainData_Callback_1(mthis, __arg_0);
+
+  static getFloatTimeDomainData_Callback_2(mthis, __arg_0, __arg_1) native "AnalyserNode_getFloatTimeDomainData_Callback";
+  getFloatTimeDomainData_Callback_2_(mthis, __arg_0, __arg_1) => getFloatTimeDomainData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFloatTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnalyserNode_getFloatTimeDomainData_Callback";
+  getFloatTimeDomainData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatTimeDomainData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static maxDecibels_Getter(mthis) native "AnalyserNode_maxDecibels_Getter";
+  maxDecibels_Getter_(mthis) => maxDecibels_Getter(mthis);
 
-  static maxDecibels_Setter(mthis, value) native "AnalyserNode_maxDecibels_Setter";
+  static maxDecibels_Setter(mthis, __arg_0) native "AnalyserNode_maxDecibels_Setter";
+  maxDecibels_Setter_(mthis, __arg_0) => maxDecibels_Setter(mthis, __arg_0);
 
   static minDecibels_Getter(mthis) native "AnalyserNode_minDecibels_Getter";
+  minDecibels_Getter_(mthis) => minDecibels_Getter(mthis);
 
-  static minDecibels_Setter(mthis, value) native "AnalyserNode_minDecibels_Setter";
+  static minDecibels_Setter(mthis, __arg_0) native "AnalyserNode_minDecibels_Setter";
+  minDecibels_Setter_(mthis, __arg_0) => minDecibels_Setter(mthis, __arg_0);
 
   static smoothingTimeConstant_Getter(mthis) native "AnalyserNode_smoothingTimeConstant_Getter";
+  smoothingTimeConstant_Getter_(mthis) => smoothingTimeConstant_Getter(mthis);
 
-  static smoothingTimeConstant_Setter(mthis, value) native "AnalyserNode_smoothingTimeConstant_Setter";
+  static smoothingTimeConstant_Setter(mthis, __arg_0) native "AnalyserNode_smoothingTimeConstant_Setter";
+  smoothingTimeConstant_Setter_(mthis, __arg_0) => smoothingTimeConstant_Setter(mthis, __arg_0);
 
-  static getByteFrequencyData_Callback_1(mthis, array) native "AnalyserNode_getByteFrequencyData_Callback";
+}
 
-  static getByteTimeDomainData_Callback_1(mthis, array) native "AnalyserNode_getByteTimeDomainData_Callback";
+class BlinkAnimation extends BlinkAnimationNode {
+  static final instance = new BlinkAnimation();
 
-  static getFloatFrequencyData_Callback_1(mthis, array) native "AnalyserNode_getFloatFrequencyData_Callback";
+  static constructorCallback_0() native "Animation_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static getFloatTimeDomainData_Callback_1(mthis, array) native "AnalyserNode_getFloatTimeDomainData_Callback";
+  static constructorCallback_1(__arg_0) native "Animation_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Animation_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Animation_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Animation_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Animation_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+}
+
+class BlinkAnimationEffect {
+  static final instance = new BlinkAnimationEffect();
+
 }
 
 class BlinkAnimationNode {
+  static final instance = new BlinkAnimationNode();
+
   static activeDuration_Getter(mthis) native "AnimationNode_activeDuration_Getter";
+  activeDuration_Getter_(mthis) => activeDuration_Getter(mthis);
 
   static currentIteration_Getter(mthis) native "AnimationNode_currentIteration_Getter";
+  currentIteration_Getter_(mthis) => currentIteration_Getter(mthis);
 
   static duration_Getter(mthis) native "AnimationNode_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
 
   static endTime_Getter(mthis) native "AnimationNode_endTime_Getter";
+  endTime_Getter_(mthis) => endTime_Getter(mthis);
 
   static localTime_Getter(mthis) native "AnimationNode_localTime_Getter";
+  localTime_Getter_(mthis) => localTime_Getter(mthis);
 
   static player_Getter(mthis) native "AnimationNode_player_Getter";
+  player_Getter_(mthis) => player_Getter(mthis);
 
   static startTime_Getter(mthis) native "AnimationNode_startTime_Getter";
+  startTime_Getter_(mthis) => startTime_Getter(mthis);
 
   static timing_Getter(mthis) native "AnimationNode_timing_Getter";
+  timing_Getter_(mthis) => timing_Getter(mthis);
+
 }
 
-class BlinkAnimation {
-  static constructorCallback_2(target, keyframes) native "Animation_constructorCallback";
+class BlinkAnimationPlayer extends BlinkEventTarget {
+  static final instance = new BlinkAnimationPlayer();
 
-  static constructorCallback_3(target, keyframes, timingInput) native "Animation_constructorCallback";
-}
+  static cancel_Callback_0(mthis) native "AnimationPlayer_cancel_Callback";
+  cancel_Callback_0_(mthis) => cancel_Callback_0(mthis);
 
-class BlinkAnimationEffect {}
+  static cancel_Callback_1(mthis, __arg_0) native "AnimationPlayer_cancel_Callback";
+  cancel_Callback_1_(mthis, __arg_0) => cancel_Callback_1(mthis, __arg_0);
 
-class BlinkAnimationPlayer {
+  static cancel_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_cancel_Callback";
+  cancel_Callback_2_(mthis, __arg_0, __arg_1) => cancel_Callback_2(mthis, __arg_0, __arg_1);
+
   static currentTime_Getter(mthis) native "AnimationPlayer_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
 
-  static currentTime_Setter(mthis, value) native "AnimationPlayer_currentTime_Setter";
+  static currentTime_Setter(mthis, __arg_0) native "AnimationPlayer_currentTime_Setter";
+  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
+
+  static finish_Callback_0(mthis) native "AnimationPlayer_finish_Callback";
+  finish_Callback_0_(mthis) => finish_Callback_0(mthis);
+
+  static finish_Callback_1(mthis, __arg_0) native "AnimationPlayer_finish_Callback";
+  finish_Callback_1_(mthis, __arg_0) => finish_Callback_1(mthis, __arg_0);
+
+  static finish_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_finish_Callback";
+  finish_Callback_2_(mthis, __arg_0, __arg_1) => finish_Callback_2(mthis, __arg_0, __arg_1);
 
   static finished_Getter(mthis) native "AnimationPlayer_finished_Getter";
+  finished_Getter_(mthis) => finished_Getter(mthis);
+
+  static onfinish_Getter(mthis) native "AnimationPlayer_onfinish_Getter";
+  onfinish_Getter_(mthis) => onfinish_Getter(mthis);
+
+  static onfinish_Setter(mthis, __arg_0) native "AnimationPlayer_onfinish_Setter";
+  onfinish_Setter_(mthis, __arg_0) => onfinish_Setter(mthis, __arg_0);
+
+  static pause_Callback_0(mthis) native "AnimationPlayer_pause_Callback";
+  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+
+  static pause_Callback_1(mthis, __arg_0) native "AnimationPlayer_pause_Callback";
+  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+
+  static pause_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_pause_Callback";
+  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
 
   static paused_Getter(mthis) native "AnimationPlayer_paused_Getter";
+  paused_Getter_(mthis) => paused_Getter(mthis);
+
+  static play_Callback_0(mthis) native "AnimationPlayer_play_Callback";
+  play_Callback_0_(mthis) => play_Callback_0(mthis);
+
+  static play_Callback_1(mthis, __arg_0) native "AnimationPlayer_play_Callback";
+  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
+
+  static play_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_play_Callback";
+  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
 
   static playbackRate_Getter(mthis) native "AnimationPlayer_playbackRate_Getter";
+  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
 
-  static playbackRate_Setter(mthis, value) native "AnimationPlayer_playbackRate_Setter";
+  static playbackRate_Setter(mthis, __arg_0) native "AnimationPlayer_playbackRate_Setter";
+  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
+
+  static reverse_Callback_0(mthis) native "AnimationPlayer_reverse_Callback";
+  reverse_Callback_0_(mthis) => reverse_Callback_0(mthis);
+
+  static reverse_Callback_1(mthis, __arg_0) native "AnimationPlayer_reverse_Callback";
+  reverse_Callback_1_(mthis, __arg_0) => reverse_Callback_1(mthis, __arg_0);
+
+  static reverse_Callback_2(mthis, __arg_0, __arg_1) native "AnimationPlayer_reverse_Callback";
+  reverse_Callback_2_(mthis, __arg_0, __arg_1) => reverse_Callback_2(mthis, __arg_0, __arg_1);
 
   static source_Getter(mthis) native "AnimationPlayer_source_Getter";
+  source_Getter_(mthis) => source_Getter(mthis);
 
-  static source_Setter(mthis, value) native "AnimationPlayer_source_Setter";
+  static source_Setter(mthis, __arg_0) native "AnimationPlayer_source_Setter";
+  source_Setter_(mthis, __arg_0) => source_Setter(mthis, __arg_0);
 
   static startTime_Getter(mthis) native "AnimationPlayer_startTime_Getter";
+  startTime_Getter_(mthis) => startTime_Getter(mthis);
 
-  static startTime_Setter(mthis, value) native "AnimationPlayer_startTime_Setter";
+  static startTime_Setter(mthis, __arg_0) native "AnimationPlayer_startTime_Setter";
+  startTime_Setter_(mthis, __arg_0) => startTime_Setter(mthis, __arg_0);
 
-  static cancel_Callback(mthis) native "AnimationPlayer_cancel_Callback";
-
-  static finish_Callback(mthis) native "AnimationPlayer_finish_Callback";
-
-  static pause_Callback(mthis) native "AnimationPlayer_pause_Callback";
-
-  static play_Callback(mthis) native "AnimationPlayer_play_Callback";
-
-  static reverse_Callback(mthis) native "AnimationPlayer_reverse_Callback";
 }
 
-class BlinkEvent {
-  static constructorCallback(type, options) native "Event_constructorCallback";
+class BlinkAnimationPlayerEvent extends BlinkEvent {
+  static final instance = new BlinkAnimationPlayerEvent();
 
-  static bubbles_Getter(mthis) native "Event_bubbles_Getter";
-
-  static cancelable_Getter(mthis) native "Event_cancelable_Getter";
-
-  static clipboardData_Getter(mthis) native "Event_clipboardData_Getter";
-
-  static currentTarget_Getter(mthis) native "Event_currentTarget_Getter";
-
-  static defaultPrevented_Getter(mthis) native "Event_defaultPrevented_Getter";
-
-  static eventPhase_Getter(mthis) native "Event_eventPhase_Getter";
-
-  static path_Getter(mthis) native "Event_path_Getter";
-
-  static target_Getter(mthis) native "Event_target_Getter";
-
-  static timeStamp_Getter(mthis) native "Event_timeStamp_Getter";
-
-  static type_Getter(mthis) native "Event_type_Getter";
-
-  static initEvent_Callback_3(mthis, eventTypeArg, canBubbleArg, cancelableArg) native "Event_initEvent_Callback";
-
-  static preventDefault_Callback(mthis) native "Event_preventDefault_Callback";
-
-  static stopImmediatePropagation_Callback(mthis) native "Event_stopImmediatePropagation_Callback";
-
-  static stopPropagation_Callback(mthis) native "Event_stopPropagation_Callback";
-}
-
-class BlinkAnimationPlayerEvent {
-  static constructorCallback(type, options) native "AnimationPlayerEvent_constructorCallback";
+  static constructorCallback_2(__arg_0, __arg_1) native "AnimationPlayerEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static currentTime_Getter(mthis) native "AnimationPlayerEvent_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
 
   static timelineTime_Getter(mthis) native "AnimationPlayerEvent_timelineTime_Getter";
+  timelineTime_Getter_(mthis) => timelineTime_Getter(mthis);
+
 }
 
 class BlinkAnimationTimeline {
+  static final instance = new BlinkAnimationTimeline();
+
   static currentTime_Getter(mthis) native "AnimationTimeline_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
 
-  static getAnimationPlayers_Callback(mthis) native "AnimationTimeline_getAnimationPlayers_Callback";
+  static getAnimationPlayers_Callback_0(mthis) native "AnimationTimeline_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_0_(mthis) => getAnimationPlayers_Callback_0(mthis);
 
-  static play_Callback_1(mthis, source) native "AnimationTimeline_play_Callback";
+  static getAnimationPlayers_Callback_1(mthis, __arg_0) native "AnimationTimeline_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_1_(mthis, __arg_0) => getAnimationPlayers_Callback_1(mthis, __arg_0);
+
+  static getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1) native "AnimationTimeline_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_2_(mthis, __arg_0, __arg_1) => getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1);
+
+  static play_Callback_0(mthis) native "AnimationTimeline_play_Callback";
+  play_Callback_0_(mthis) => play_Callback_0(mthis);
+
+  static play_Callback_1(mthis, __arg_0) native "AnimationTimeline_play_Callback";
+  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
+
+  static play_Callback_2(mthis, __arg_0, __arg_1) native "AnimationTimeline_play_Callback";
+  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
+
+  static play_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AnimationTimeline_play_Callback";
+  play_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => play_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkApplicationCache {
+class BlinkApplicationCache extends BlinkEventTarget {
+  static final instance = new BlinkApplicationCache();
+
+  static abort_Callback_0(mthis) native "ApplicationCache_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "ApplicationCache_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
+  static oncached_Getter(mthis) native "ApplicationCache_oncached_Getter";
+  oncached_Getter_(mthis) => oncached_Getter(mthis);
+
+  static oncached_Setter(mthis, __arg_0) native "ApplicationCache_oncached_Setter";
+  oncached_Setter_(mthis, __arg_0) => oncached_Setter(mthis, __arg_0);
+
+  static onchecking_Getter(mthis) native "ApplicationCache_onchecking_Getter";
+  onchecking_Getter_(mthis) => onchecking_Getter(mthis);
+
+  static onchecking_Setter(mthis, __arg_0) native "ApplicationCache_onchecking_Setter";
+  onchecking_Setter_(mthis, __arg_0) => onchecking_Setter(mthis, __arg_0);
+
+  static ondownloading_Getter(mthis) native "ApplicationCache_ondownloading_Getter";
+  ondownloading_Getter_(mthis) => ondownloading_Getter(mthis);
+
+  static ondownloading_Setter(mthis, __arg_0) native "ApplicationCache_ondownloading_Setter";
+  ondownloading_Setter_(mthis, __arg_0) => ondownloading_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "ApplicationCache_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "ApplicationCache_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onnoupdate_Getter(mthis) native "ApplicationCache_onnoupdate_Getter";
+  onnoupdate_Getter_(mthis) => onnoupdate_Getter(mthis);
+
+  static onnoupdate_Setter(mthis, __arg_0) native "ApplicationCache_onnoupdate_Setter";
+  onnoupdate_Setter_(mthis, __arg_0) => onnoupdate_Setter(mthis, __arg_0);
+
+  static onobsolete_Getter(mthis) native "ApplicationCache_onobsolete_Getter";
+  onobsolete_Getter_(mthis) => onobsolete_Getter(mthis);
+
+  static onobsolete_Setter(mthis, __arg_0) native "ApplicationCache_onobsolete_Setter";
+  onobsolete_Setter_(mthis, __arg_0) => onobsolete_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "ApplicationCache_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "ApplicationCache_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onupdateready_Getter(mthis) native "ApplicationCache_onupdateready_Getter";
+  onupdateready_Getter_(mthis) => onupdateready_Getter(mthis);
+
+  static onupdateready_Setter(mthis, __arg_0) native "ApplicationCache_onupdateready_Setter";
+  onupdateready_Setter_(mthis, __arg_0) => onupdateready_Setter(mthis, __arg_0);
+
   static status_Getter(mthis) native "ApplicationCache_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
-  static abort_Callback(mthis) native "ApplicationCache_abort_Callback";
+  static swapCache_Callback_0(mthis) native "ApplicationCache_swapCache_Callback";
+  swapCache_Callback_0_(mthis) => swapCache_Callback_0(mthis);
 
-  static swapCache_Callback(mthis) native "ApplicationCache_swapCache_Callback";
+  static swapCache_Callback_1(mthis, __arg_0) native "ApplicationCache_swapCache_Callback";
+  swapCache_Callback_1_(mthis, __arg_0) => swapCache_Callback_1(mthis, __arg_0);
 
-  static update_Callback(mthis) native "ApplicationCache_update_Callback";
+  static swapCache_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_swapCache_Callback";
+  swapCache_Callback_2_(mthis, __arg_0, __arg_1) => swapCache_Callback_2(mthis, __arg_0, __arg_1);
+
+  static update_Callback_0(mthis) native "ApplicationCache_update_Callback";
+  update_Callback_0_(mthis) => update_Callback_0(mthis);
+
+  static update_Callback_1(mthis, __arg_0) native "ApplicationCache_update_Callback";
+  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
+
+  static update_Callback_2(mthis, __arg_0, __arg_1) native "ApplicationCache_update_Callback";
+  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkApplicationCacheErrorEvent {
-  static constructorCallback(type, options) native "ApplicationCacheErrorEvent_constructorCallback";
+class BlinkApplicationCacheErrorEvent extends BlinkEvent {
+  static final instance = new BlinkApplicationCacheErrorEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "ApplicationCacheErrorEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static message_Getter(mthis) native "ApplicationCacheErrorEvent_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
 
   static reason_Getter(mthis) native "ApplicationCacheErrorEvent_reason_Getter";
+  reason_Getter_(mthis) => reason_Getter(mthis);
 
   static status_Getter(mthis) native "ApplicationCacheErrorEvent_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
   static url_Getter(mthis) native "ApplicationCacheErrorEvent_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
+
 }
 
-class BlinkNode {
-  static baseURI_Getter(mthis) native "Node_baseURI_Getter";
+class BlinkAttr extends BlinkNode {
+  static final instance = new BlinkAttr();
 
-  static childNodes_Getter(mthis) native "Node_childNodes_Getter";
-
-  static firstChild_Getter(mthis) native "Node_firstChild_Getter";
-
-  static lastChild_Getter(mthis) native "Node_lastChild_Getter";
-
-  static localName_Getter(mthis) native "Node_localName_Getter";
-
-  static namespaceURI_Getter(mthis) native "Node_namespaceURI_Getter";
-
-  static nextSibling_Getter(mthis) native "Node_nextSibling_Getter";
-
-  static nodeName_Getter(mthis) native "Node_nodeName_Getter";
-
-  static nodeType_Getter(mthis) native "Node_nodeType_Getter";
-
-  static nodeValue_Getter(mthis) native "Node_nodeValue_Getter";
-
-  static ownerDocument_Getter(mthis) native "Node_ownerDocument_Getter";
-
-  static parentElement_Getter(mthis) native "Node_parentElement_Getter";
-
-  static parentNode_Getter(mthis) native "Node_parentNode_Getter";
-
-  static previousSibling_Getter(mthis) native "Node_previousSibling_Getter";
-
-  static textContent_Getter(mthis) native "Node_textContent_Getter";
-
-  static textContent_Setter(mthis, value) native "Node_textContent_Setter";
-
-  static appendChild_Callback_1(mthis, newChild) native "Node_appendChild_Callback";
-
-  static cloneNode_Callback_1(mthis, deep) native "Node_cloneNode_Callback";
-
-  static contains_Callback_1(mthis, other) native "Node_contains_Callback";
-
-  static hasChildNodes_Callback(mthis) native "Node_hasChildNodes_Callback";
-
-  static insertBefore_Callback_2(mthis, newChild, refChild) native "Node_insertBefore_Callback";
-
-  static removeChild_Callback_1(mthis, oldChild) native "Node_removeChild_Callback";
-
-  static replaceChild_Callback_2(mthis, newChild, oldChild) native "Node_replaceChild_Callback";
-}
-
-class BlinkAttr {
   static localName_Getter(mthis) native "Attr_localName_Getter";
+  localName_Getter_(mthis) => localName_Getter(mthis);
 
   static name_Getter(mthis) native "Attr_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static namespaceURI_Getter(mthis) native "Attr_namespaceURI_Getter";
+  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
 
   static nodeValue_Getter(mthis) native "Attr_nodeValue_Getter";
+  nodeValue_Getter_(mthis) => nodeValue_Getter(mthis);
+
+  static nodeValue_Setter(mthis, __arg_0) native "Attr_nodeValue_Setter";
+  nodeValue_Setter_(mthis, __arg_0) => nodeValue_Setter(mthis, __arg_0);
+
+  static ownerElement_Getter(mthis) native "Attr_ownerElement_Getter";
+  ownerElement_Getter_(mthis) => ownerElement_Getter(mthis);
+
+  static prefix_Getter(mthis) native "Attr_prefix_Getter";
+  prefix_Getter_(mthis) => prefix_Getter(mthis);
+
+  static specified_Getter(mthis) native "Attr_specified_Getter";
+  specified_Getter_(mthis) => specified_Getter(mthis);
 
   static textContent_Getter(mthis) native "Attr_textContent_Getter";
+  textContent_Getter_(mthis) => textContent_Getter(mthis);
 
-  static textContent_Setter(mthis, value) native "Attr_textContent_Setter";
+  static textContent_Setter(mthis, __arg_0) native "Attr_textContent_Setter";
+  textContent_Setter_(mthis, __arg_0) => textContent_Setter(mthis, __arg_0);
 
   static value_Getter(mthis) native "Attr_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "Attr_value_Setter";
+  static value_Setter(mthis, __arg_0) native "Attr_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
 class BlinkAudioBuffer {
+  static final instance = new BlinkAudioBuffer();
+
   static duration_Getter(mthis) native "AudioBuffer_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
+
+  static getChannelData_Callback_0(mthis) native "AudioBuffer_getChannelData_Callback";
+  getChannelData_Callback_0_(mthis) => getChannelData_Callback_0(mthis);
+
+  static getChannelData_Callback_1(mthis, __arg_0) native "AudioBuffer_getChannelData_Callback";
+  getChannelData_Callback_1_(mthis, __arg_0) => getChannelData_Callback_1(mthis, __arg_0);
+
+  static getChannelData_Callback_2(mthis, __arg_0, __arg_1) native "AudioBuffer_getChannelData_Callback";
+  getChannelData_Callback_2_(mthis, __arg_0, __arg_1) => getChannelData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getChannelData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBuffer_getChannelData_Callback";
+  getChannelData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getChannelData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static length_Getter(mthis) native "AudioBuffer_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfChannels_Getter(mthis) native "AudioBuffer_numberOfChannels_Getter";
+  numberOfChannels_Getter_(mthis) => numberOfChannels_Getter(mthis);
 
   static sampleRate_Getter(mthis) native "AudioBuffer_sampleRate_Getter";
+  sampleRate_Getter_(mthis) => sampleRate_Getter(mthis);
 
-  static getChannelData_Callback_1(mthis, channelIndex) native "AudioBuffer_getChannelData_Callback";
 }
 
-class BlinkAudioSourceNode {}
+class BlinkAudioBufferSourceNode extends BlinkAudioSourceNode {
+  static final instance = new BlinkAudioBufferSourceNode();
 
-class BlinkAudioBufferSourceNode {
   static buffer_Getter(mthis) native "AudioBufferSourceNode_buffer_Getter";
+  buffer_Getter_(mthis) => buffer_Getter(mthis);
 
-  static buffer_Setter(mthis, value) native "AudioBufferSourceNode_buffer_Setter";
-
-  static loop_Getter(mthis) native "AudioBufferSourceNode_loop_Getter";
-
-  static loop_Setter(mthis, value) native "AudioBufferSourceNode_loop_Setter";
+  static buffer_Setter(mthis, __arg_0) native "AudioBufferSourceNode_buffer_Setter";
+  buffer_Setter_(mthis, __arg_0) => buffer_Setter(mthis, __arg_0);
 
   static loopEnd_Getter(mthis) native "AudioBufferSourceNode_loopEnd_Getter";
+  loopEnd_Getter_(mthis) => loopEnd_Getter(mthis);
 
-  static loopEnd_Setter(mthis, value) native "AudioBufferSourceNode_loopEnd_Setter";
+  static loopEnd_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loopEnd_Setter";
+  loopEnd_Setter_(mthis, __arg_0) => loopEnd_Setter(mthis, __arg_0);
 
   static loopStart_Getter(mthis) native "AudioBufferSourceNode_loopStart_Getter";
+  loopStart_Getter_(mthis) => loopStart_Getter(mthis);
 
-  static loopStart_Setter(mthis, value) native "AudioBufferSourceNode_loopStart_Setter";
+  static loopStart_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loopStart_Setter";
+  loopStart_Setter_(mthis, __arg_0) => loopStart_Setter(mthis, __arg_0);
+
+  static loop_Getter(mthis) native "AudioBufferSourceNode_loop_Getter";
+  loop_Getter_(mthis) => loop_Getter(mthis);
+
+  static loop_Setter(mthis, __arg_0) native "AudioBufferSourceNode_loop_Setter";
+  loop_Setter_(mthis, __arg_0) => loop_Setter(mthis, __arg_0);
+
+  static onended_Getter(mthis) native "AudioBufferSourceNode_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "AudioBufferSourceNode_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
 
   static playbackRate_Getter(mthis) native "AudioBufferSourceNode_playbackRate_Getter";
+  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
 
-  static start_Callback_3(mthis, when, grainOffset, grainDuration) native "AudioBufferSourceNode_start_Callback";
+  static start_Callback_0(mthis) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_0_(mthis) => start_Callback_0(mthis);
 
-  static start_Callback_2(mthis, when, grainOffset) native "AudioBufferSourceNode_start_Callback";
+  static start_Callback_1(mthis, __arg_0) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
 
-  static start_Callback_1(mthis, when) native "AudioBufferSourceNode_start_Callback";
+  static start_Callback_2(mthis, __arg_0, __arg_1) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
 
-  static start_Callback(mthis) native "AudioBufferSourceNode_start_Callback";
+  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static stop_Callback_1(mthis, when) native "AudioBufferSourceNode_stop_Callback";
+  static start_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => start_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static stop_Callback(mthis) native "AudioBufferSourceNode_stop_Callback";
+  static start_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioBufferSourceNode_start_Callback";
+  start_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => start_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static stop_Callback_0(mthis) native "AudioBufferSourceNode_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+
+  static stop_Callback_1(mthis, __arg_0) native "AudioBufferSourceNode_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "AudioBufferSourceNode_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioBufferSourceNode_stop_Callback";
+  stop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkAudioContext {
-  static constructorCallback() native "AudioContext_constructorCallback";
+class BlinkAudioContext extends BlinkEventTarget {
+  static final instance = new BlinkAudioContext();
+
+  static constructorCallback_0() native "AudioContext_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "AudioContext_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "AudioContext_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static createAnalyser_Callback_0(mthis) native "AudioContext_createAnalyser_Callback";
+  createAnalyser_Callback_0_(mthis) => createAnalyser_Callback_0(mthis);
+
+  static createAnalyser_Callback_1(mthis, __arg_0) native "AudioContext_createAnalyser_Callback";
+  createAnalyser_Callback_1_(mthis, __arg_0) => createAnalyser_Callback_1(mthis, __arg_0);
+
+  static createAnalyser_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createAnalyser_Callback";
+  createAnalyser_Callback_2_(mthis, __arg_0, __arg_1) => createAnalyser_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createBiquadFilter_Callback_0(mthis) native "AudioContext_createBiquadFilter_Callback";
+  createBiquadFilter_Callback_0_(mthis) => createBiquadFilter_Callback_0(mthis);
+
+  static createBiquadFilter_Callback_1(mthis, __arg_0) native "AudioContext_createBiquadFilter_Callback";
+  createBiquadFilter_Callback_1_(mthis, __arg_0) => createBiquadFilter_Callback_1(mthis, __arg_0);
+
+  static createBiquadFilter_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBiquadFilter_Callback";
+  createBiquadFilter_Callback_2_(mthis, __arg_0, __arg_1) => createBiquadFilter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createBufferSource_Callback_0(mthis) native "AudioContext_createBufferSource_Callback";
+  createBufferSource_Callback_0_(mthis) => createBufferSource_Callback_0(mthis);
+
+  static createBufferSource_Callback_1(mthis, __arg_0) native "AudioContext_createBufferSource_Callback";
+  createBufferSource_Callback_1_(mthis, __arg_0) => createBufferSource_Callback_1(mthis, __arg_0);
+
+  static createBufferSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBufferSource_Callback";
+  createBufferSource_Callback_2_(mthis, __arg_0, __arg_1) => createBufferSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createBuffer_Callback_1(mthis, __arg_0) native "AudioContext_createBuffer_Callback";
+  createBuffer_Callback_1_(mthis, __arg_0) => createBuffer_Callback_1(mthis, __arg_0);
+
+  static createBuffer_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createBuffer_Callback";
+  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => createBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createBuffer_Callback";
+  createBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createBuffer_Callback";
+  createBuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createBuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_createBuffer_Callback";
+  createBuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createBuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createChannelMerger_Callback_0(mthis) native "AudioContext_createChannelMerger_Callback";
+  createChannelMerger_Callback_0_(mthis) => createChannelMerger_Callback_0(mthis);
+
+  static createChannelMerger_Callback_1(mthis, __arg_0) native "AudioContext_createChannelMerger_Callback";
+  createChannelMerger_Callback_1_(mthis, __arg_0) => createChannelMerger_Callback_1(mthis, __arg_0);
+
+  static createChannelMerger_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createChannelMerger_Callback";
+  createChannelMerger_Callback_2_(mthis, __arg_0, __arg_1) => createChannelMerger_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createChannelMerger_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createChannelMerger_Callback";
+  createChannelMerger_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createChannelMerger_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createChannelSplitter_Callback_0(mthis) native "AudioContext_createChannelSplitter_Callback";
+  createChannelSplitter_Callback_0_(mthis) => createChannelSplitter_Callback_0(mthis);
+
+  static createChannelSplitter_Callback_1(mthis, __arg_0) native "AudioContext_createChannelSplitter_Callback";
+  createChannelSplitter_Callback_1_(mthis, __arg_0) => createChannelSplitter_Callback_1(mthis, __arg_0);
+
+  static createChannelSplitter_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createChannelSplitter_Callback";
+  createChannelSplitter_Callback_2_(mthis, __arg_0, __arg_1) => createChannelSplitter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createChannelSplitter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createChannelSplitter_Callback";
+  createChannelSplitter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createChannelSplitter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createConvolver_Callback_0(mthis) native "AudioContext_createConvolver_Callback";
+  createConvolver_Callback_0_(mthis) => createConvolver_Callback_0(mthis);
+
+  static createConvolver_Callback_1(mthis, __arg_0) native "AudioContext_createConvolver_Callback";
+  createConvolver_Callback_1_(mthis, __arg_0) => createConvolver_Callback_1(mthis, __arg_0);
+
+  static createConvolver_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createConvolver_Callback";
+  createConvolver_Callback_2_(mthis, __arg_0, __arg_1) => createConvolver_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createDelay_Callback_0(mthis) native "AudioContext_createDelay_Callback";
+  createDelay_Callback_0_(mthis) => createDelay_Callback_0(mthis);
+
+  static createDelay_Callback_1(mthis, __arg_0) native "AudioContext_createDelay_Callback";
+  createDelay_Callback_1_(mthis, __arg_0) => createDelay_Callback_1(mthis, __arg_0);
+
+  static createDelay_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createDelay_Callback";
+  createDelay_Callback_2_(mthis, __arg_0, __arg_1) => createDelay_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createDelay_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createDelay_Callback";
+  createDelay_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDelay_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDynamicsCompressor_Callback_0(mthis) native "AudioContext_createDynamicsCompressor_Callback";
+  createDynamicsCompressor_Callback_0_(mthis) => createDynamicsCompressor_Callback_0(mthis);
+
+  static createDynamicsCompressor_Callback_1(mthis, __arg_0) native "AudioContext_createDynamicsCompressor_Callback";
+  createDynamicsCompressor_Callback_1_(mthis, __arg_0) => createDynamicsCompressor_Callback_1(mthis, __arg_0);
+
+  static createDynamicsCompressor_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createDynamicsCompressor_Callback";
+  createDynamicsCompressor_Callback_2_(mthis, __arg_0, __arg_1) => createDynamicsCompressor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createGain_Callback_0(mthis) native "AudioContext_createGain_Callback";
+  createGain_Callback_0_(mthis) => createGain_Callback_0(mthis);
+
+  static createGain_Callback_1(mthis, __arg_0) native "AudioContext_createGain_Callback";
+  createGain_Callback_1_(mthis, __arg_0) => createGain_Callback_1(mthis, __arg_0);
+
+  static createGain_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createGain_Callback";
+  createGain_Callback_2_(mthis, __arg_0, __arg_1) => createGain_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createMediaElementSource_Callback_0(mthis) native "AudioContext_createMediaElementSource_Callback";
+  createMediaElementSource_Callback_0_(mthis) => createMediaElementSource_Callback_0(mthis);
+
+  static createMediaElementSource_Callback_1(mthis, __arg_0) native "AudioContext_createMediaElementSource_Callback";
+  createMediaElementSource_Callback_1_(mthis, __arg_0) => createMediaElementSource_Callback_1(mthis, __arg_0);
+
+  static createMediaElementSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaElementSource_Callback";
+  createMediaElementSource_Callback_2_(mthis, __arg_0, __arg_1) => createMediaElementSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createMediaElementSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createMediaElementSource_Callback";
+  createMediaElementSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createMediaElementSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createMediaStreamDestination_Callback_0(mthis) native "AudioContext_createMediaStreamDestination_Callback";
+  createMediaStreamDestination_Callback_0_(mthis) => createMediaStreamDestination_Callback_0(mthis);
+
+  static createMediaStreamDestination_Callback_1(mthis, __arg_0) native "AudioContext_createMediaStreamDestination_Callback";
+  createMediaStreamDestination_Callback_1_(mthis, __arg_0) => createMediaStreamDestination_Callback_1(mthis, __arg_0);
+
+  static createMediaStreamDestination_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaStreamDestination_Callback";
+  createMediaStreamDestination_Callback_2_(mthis, __arg_0, __arg_1) => createMediaStreamDestination_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createMediaStreamSource_Callback_0(mthis) native "AudioContext_createMediaStreamSource_Callback";
+  createMediaStreamSource_Callback_0_(mthis) => createMediaStreamSource_Callback_0(mthis);
+
+  static createMediaStreamSource_Callback_1(mthis, __arg_0) native "AudioContext_createMediaStreamSource_Callback";
+  createMediaStreamSource_Callback_1_(mthis, __arg_0) => createMediaStreamSource_Callback_1(mthis, __arg_0);
+
+  static createMediaStreamSource_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createMediaStreamSource_Callback";
+  createMediaStreamSource_Callback_2_(mthis, __arg_0, __arg_1) => createMediaStreamSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createMediaStreamSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createMediaStreamSource_Callback";
+  createMediaStreamSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createMediaStreamSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createOscillator_Callback_0(mthis) native "AudioContext_createOscillator_Callback";
+  createOscillator_Callback_0_(mthis) => createOscillator_Callback_0(mthis);
+
+  static createOscillator_Callback_1(mthis, __arg_0) native "AudioContext_createOscillator_Callback";
+  createOscillator_Callback_1_(mthis, __arg_0) => createOscillator_Callback_1(mthis, __arg_0);
+
+  static createOscillator_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createOscillator_Callback";
+  createOscillator_Callback_2_(mthis, __arg_0, __arg_1) => createOscillator_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createPanner_Callback_0(mthis) native "AudioContext_createPanner_Callback";
+  createPanner_Callback_0_(mthis) => createPanner_Callback_0(mthis);
+
+  static createPanner_Callback_1(mthis, __arg_0) native "AudioContext_createPanner_Callback";
+  createPanner_Callback_1_(mthis, __arg_0) => createPanner_Callback_1(mthis, __arg_0);
+
+  static createPanner_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createPanner_Callback";
+  createPanner_Callback_2_(mthis, __arg_0, __arg_1) => createPanner_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createPeriodicWave_Callback_0(mthis) native "AudioContext_createPeriodicWave_Callback";
+  createPeriodicWave_Callback_0_(mthis) => createPeriodicWave_Callback_0(mthis);
+
+  static createPeriodicWave_Callback_1(mthis, __arg_0) native "AudioContext_createPeriodicWave_Callback";
+  createPeriodicWave_Callback_1_(mthis, __arg_0) => createPeriodicWave_Callback_1(mthis, __arg_0);
+
+  static createPeriodicWave_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createPeriodicWave_Callback";
+  createPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => createPeriodicWave_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createPeriodicWave_Callback";
+  createPeriodicWave_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createPeriodicWave_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createPeriodicWave_Callback";
+  createPeriodicWave_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createPeriodicWave_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createScriptProcessor_Callback_0(mthis) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_0_(mthis) => createScriptProcessor_Callback_0(mthis);
+
+  static createScriptProcessor_Callback_1(mthis, __arg_0) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_1_(mthis, __arg_0) => createScriptProcessor_Callback_1(mthis, __arg_0);
+
+  static createScriptProcessor_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_2_(mthis, __arg_0, __arg_1) => createScriptProcessor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createScriptProcessor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createScriptProcessor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createScriptProcessor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createScriptProcessor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createScriptProcessor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_createScriptProcessor_Callback";
+  createScriptProcessor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createScriptProcessor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createWaveShaper_Callback_0(mthis) native "AudioContext_createWaveShaper_Callback";
+  createWaveShaper_Callback_0_(mthis) => createWaveShaper_Callback_0(mthis);
+
+  static createWaveShaper_Callback_1(mthis, __arg_0) native "AudioContext_createWaveShaper_Callback";
+  createWaveShaper_Callback_1_(mthis, __arg_0) => createWaveShaper_Callback_1(mthis, __arg_0);
+
+  static createWaveShaper_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_createWaveShaper_Callback";
+  createWaveShaper_Callback_2_(mthis, __arg_0, __arg_1) => createWaveShaper_Callback_2(mthis, __arg_0, __arg_1);
 
   static currentTime_Getter(mthis) native "AudioContext_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+
+  static decodeAudioData_Callback_0(mthis) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_0_(mthis) => decodeAudioData_Callback_0(mthis);
+
+  static decodeAudioData_Callback_1(mthis, __arg_0) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_1_(mthis, __arg_0) => decodeAudioData_Callback_1(mthis, __arg_0);
+
+  static decodeAudioData_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_2_(mthis, __arg_0, __arg_1) => decodeAudioData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static decodeAudioData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decodeAudioData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static decodeAudioData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decodeAudioData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static decodeAudioData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioContext_decodeAudioData_Callback";
+  decodeAudioData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => decodeAudioData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static destination_Getter(mthis) native "AudioContext_destination_Getter";
+  destination_Getter_(mthis) => destination_Getter(mthis);
 
   static listener_Getter(mthis) native "AudioContext_listener_Getter";
+  listener_Getter_(mthis) => listener_Getter(mthis);
+
+  static oncomplete_Getter(mthis) native "AudioContext_oncomplete_Getter";
+  oncomplete_Getter_(mthis) => oncomplete_Getter(mthis);
+
+  static oncomplete_Setter(mthis, __arg_0) native "AudioContext_oncomplete_Setter";
+  oncomplete_Setter_(mthis, __arg_0) => oncomplete_Setter(mthis, __arg_0);
 
   static sampleRate_Getter(mthis) native "AudioContext_sampleRate_Getter";
+  sampleRate_Getter_(mthis) => sampleRate_Getter(mthis);
 
-  static createAnalyser_Callback(mthis) native "AudioContext_createAnalyser_Callback";
+  static startRendering_Callback_0(mthis) native "AudioContext_startRendering_Callback";
+  startRendering_Callback_0_(mthis) => startRendering_Callback_0(mthis);
 
-  static createBiquadFilter_Callback(mthis) native "AudioContext_createBiquadFilter_Callback";
+  static startRendering_Callback_1(mthis, __arg_0) native "AudioContext_startRendering_Callback";
+  startRendering_Callback_1_(mthis, __arg_0) => startRendering_Callback_1(mthis, __arg_0);
 
-  static createBuffer_Callback_3(mthis, numberOfChannels, numberOfFrames, sampleRate) native "AudioContext_createBuffer_Callback";
+  static startRendering_Callback_2(mthis, __arg_0, __arg_1) native "AudioContext_startRendering_Callback";
+  startRendering_Callback_2_(mthis, __arg_0, __arg_1) => startRendering_Callback_2(mthis, __arg_0, __arg_1);
 
-  static createBufferSource_Callback(mthis) native "AudioContext_createBufferSource_Callback";
-
-  static createChannelMerger_Callback_1(mthis, numberOfInputs) native "AudioContext_createChannelMerger_Callback";
-
-  static createChannelMerger_Callback(mthis) native "AudioContext_createChannelMerger_Callback";
-
-  static createChannelSplitter_Callback_1(mthis, numberOfOutputs) native "AudioContext_createChannelSplitter_Callback";
-
-  static createChannelSplitter_Callback(mthis) native "AudioContext_createChannelSplitter_Callback";
-
-  static createConvolver_Callback(mthis) native "AudioContext_createConvolver_Callback";
-
-  static createDelay_Callback_1(mthis, maxDelayTime) native "AudioContext_createDelay_Callback";
-
-  static createDelay_Callback(mthis) native "AudioContext_createDelay_Callback";
-
-  static createDynamicsCompressor_Callback(mthis) native "AudioContext_createDynamicsCompressor_Callback";
-
-  static createGain_Callback(mthis) native "AudioContext_createGain_Callback";
-
-  static createMediaElementSource_Callback_1(mthis, mediaElement) native "AudioContext_createMediaElementSource_Callback";
-
-  static createMediaStreamDestination_Callback(mthis) native "AudioContext_createMediaStreamDestination_Callback";
-
-  static createMediaStreamSource_Callback_1(mthis, mediaStream) native "AudioContext_createMediaStreamSource_Callback";
-
-  static createOscillator_Callback(mthis) native "AudioContext_createOscillator_Callback";
-
-  static createPanner_Callback(mthis) native "AudioContext_createPanner_Callback";
-
-  static createPeriodicWave_Callback_2(mthis, real, imag) native "AudioContext_createPeriodicWave_Callback";
-
-  static createScriptProcessor_Callback_3(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels) native "AudioContext_createScriptProcessor_Callback";
-
-  static createScriptProcessor_Callback_2(mthis, bufferSize, numberOfInputChannels) native "AudioContext_createScriptProcessor_Callback";
-
-  static createScriptProcessor_Callback_1(mthis, bufferSize) native "AudioContext_createScriptProcessor_Callback";
-
-  static createScriptProcessor_Callback(mthis) native "AudioContext_createScriptProcessor_Callback";
-
-  static createWaveShaper_Callback(mthis) native "AudioContext_createWaveShaper_Callback";
-
-  static decodeAudioData_Callback_3(mthis, audioData, successCallback, errorCallback) native "AudioContext_decodeAudioData_Callback";
-
-  static startRendering_Callback(mthis) native "AudioContext_startRendering_Callback";
 }
 
-class BlinkAudioDestinationNode {
+class BlinkAudioDestinationNode extends BlinkAudioNode {
+  static final instance = new BlinkAudioDestinationNode();
+
   static maxChannelCount_Getter(mthis) native "AudioDestinationNode_maxChannelCount_Getter";
+  maxChannelCount_Getter_(mthis) => maxChannelCount_Getter(mthis);
+
 }
 
 class BlinkAudioListener {
-  static dopplerFactor_Getter(mthis) native "AudioListener_dopplerFactor_Getter";
+  static final instance = new BlinkAudioListener();
 
-  static dopplerFactor_Setter(mthis, value) native "AudioListener_dopplerFactor_Setter";
+  static dopplerFactor_Getter(mthis) native "AudioListener_dopplerFactor_Getter";
+  dopplerFactor_Getter_(mthis) => dopplerFactor_Getter(mthis);
+
+  static dopplerFactor_Setter(mthis, __arg_0) native "AudioListener_dopplerFactor_Setter";
+  dopplerFactor_Setter_(mthis, __arg_0) => dopplerFactor_Setter(mthis, __arg_0);
+
+  static setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setOrientation_Callback";
+  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setOrientation_Callback";
+  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setOrientation_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "AudioListener_setOrientation_Callback";
+  setOrientation_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setOrientation_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static setOrientation_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "AudioListener_setOrientation_Callback";
+  setOrientation_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => setOrientation_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static setOrientation_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "AudioListener_setOrientation_Callback";
+  setOrientation_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => setOrientation_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static setPosition_Callback_1(mthis, __arg_0) native "AudioListener_setPosition_Callback";
+  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+
+  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "AudioListener_setPosition_Callback";
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioListener_setPosition_Callback";
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setPosition_Callback";
+  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setPosition_Callback";
+  setPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setVelocity_Callback_1(mthis, __arg_0) native "AudioListener_setVelocity_Callback";
+  setVelocity_Callback_1_(mthis, __arg_0) => setVelocity_Callback_1(mthis, __arg_0);
+
+  static setVelocity_Callback_2(mthis, __arg_0, __arg_1) native "AudioListener_setVelocity_Callback";
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => setVelocity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioListener_setVelocity_Callback";
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioListener_setVelocity_Callback";
+  setVelocity_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioListener_setVelocity_Callback";
+  setVelocity_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static speedOfSound_Getter(mthis) native "AudioListener_speedOfSound_Getter";
+  speedOfSound_Getter_(mthis) => speedOfSound_Getter(mthis);
 
-  static speedOfSound_Setter(mthis, value) native "AudioListener_speedOfSound_Setter";
+  static speedOfSound_Setter(mthis, __arg_0) native "AudioListener_speedOfSound_Setter";
+  speedOfSound_Setter_(mthis, __arg_0) => speedOfSound_Setter(mthis, __arg_0);
 
-  static setOrientation_Callback_6(mthis, x, y, z, xUp, yUp, zUp) native "AudioListener_setOrientation_Callback";
+}
 
-  static setPosition_Callback_3(mthis, x, y, z) native "AudioListener_setPosition_Callback";
+class BlinkAudioNode extends BlinkEventTarget {
+  static final instance = new BlinkAudioNode();
 
-  static setVelocity_Callback_3(mthis, x, y, z) native "AudioListener_setVelocity_Callback";
+  static channelCountMode_Getter(mthis) native "AudioNode_channelCountMode_Getter";
+  channelCountMode_Getter_(mthis) => channelCountMode_Getter(mthis);
+
+  static channelCountMode_Setter(mthis, __arg_0) native "AudioNode_channelCountMode_Setter";
+  channelCountMode_Setter_(mthis, __arg_0) => channelCountMode_Setter(mthis, __arg_0);
+
+  static channelCount_Getter(mthis) native "AudioNode_channelCount_Getter";
+  channelCount_Getter_(mthis) => channelCount_Getter(mthis);
+
+  static channelCount_Setter(mthis, __arg_0) native "AudioNode_channelCount_Setter";
+  channelCount_Setter_(mthis, __arg_0) => channelCount_Setter(mthis, __arg_0);
+
+  static channelInterpretation_Getter(mthis) native "AudioNode_channelInterpretation_Getter";
+  channelInterpretation_Getter_(mthis) => channelInterpretation_Getter(mthis);
+
+  static channelInterpretation_Setter(mthis, __arg_0) native "AudioNode_channelInterpretation_Setter";
+  channelInterpretation_Setter_(mthis, __arg_0) => channelInterpretation_Setter(mthis, __arg_0);
+
+  static connect_Callback_0(mthis) native "AudioNode_connect_Callback";
+  connect_Callback_0_(mthis) => connect_Callback_0(mthis);
+
+  static connect_Callback_1(mthis, __arg_0) native "AudioNode_connect_Callback";
+  connect_Callback_1_(mthis, __arg_0) => connect_Callback_1(mthis, __arg_0);
+
+  static connect_Callback_2(mthis, __arg_0, __arg_1) native "AudioNode_connect_Callback";
+  connect_Callback_2_(mthis, __arg_0, __arg_1) => connect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static connect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioNode_connect_Callback";
+  connect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => connect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static connect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioNode_connect_Callback";
+  connect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => connect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static connect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioNode_connect_Callback";
+  connect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => connect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static context_Getter(mthis) native "AudioNode_context_Getter";
+  context_Getter_(mthis) => context_Getter(mthis);
+
+  static disconnect_Callback_0(mthis) native "AudioNode_disconnect_Callback";
+  disconnect_Callback_0_(mthis) => disconnect_Callback_0(mthis);
+
+  static disconnect_Callback_1(mthis, __arg_0) native "AudioNode_disconnect_Callback";
+  disconnect_Callback_1_(mthis, __arg_0) => disconnect_Callback_1(mthis, __arg_0);
+
+  static disconnect_Callback_2(mthis, __arg_0, __arg_1) native "AudioNode_disconnect_Callback";
+  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => disconnect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static disconnect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioNode_disconnect_Callback";
+  disconnect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disconnect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static numberOfInputs_Getter(mthis) native "AudioNode_numberOfInputs_Getter";
+  numberOfInputs_Getter_(mthis) => numberOfInputs_Getter(mthis);
+
+  static numberOfOutputs_Getter(mthis) native "AudioNode_numberOfOutputs_Getter";
+  numberOfOutputs_Getter_(mthis) => numberOfOutputs_Getter(mthis);
+
 }
 
 class BlinkAudioParam {
+  static final instance = new BlinkAudioParam();
+
+  static cancelScheduledValues_Callback_0(mthis) native "AudioParam_cancelScheduledValues_Callback";
+  cancelScheduledValues_Callback_0_(mthis) => cancelScheduledValues_Callback_0(mthis);
+
+  static cancelScheduledValues_Callback_1(mthis, __arg_0) native "AudioParam_cancelScheduledValues_Callback";
+  cancelScheduledValues_Callback_1_(mthis, __arg_0) => cancelScheduledValues_Callback_1(mthis, __arg_0);
+
+  static cancelScheduledValues_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_cancelScheduledValues_Callback";
+  cancelScheduledValues_Callback_2_(mthis, __arg_0, __arg_1) => cancelScheduledValues_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cancelScheduledValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_cancelScheduledValues_Callback";
+  cancelScheduledValues_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cancelScheduledValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static defaultValue_Getter(mthis) native "AudioParam_defaultValue_Getter";
+  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
+
+  static exponentialRampToValueAtTime_Callback_0(mthis) native "AudioParam_exponentialRampToValueAtTime_Callback";
+  exponentialRampToValueAtTime_Callback_0_(mthis) => exponentialRampToValueAtTime_Callback_0(mthis);
+
+  static exponentialRampToValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_exponentialRampToValueAtTime_Callback";
+  exponentialRampToValueAtTime_Callback_1_(mthis, __arg_0) => exponentialRampToValueAtTime_Callback_1(mthis, __arg_0);
+
+  static exponentialRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_exponentialRampToValueAtTime_Callback";
+  exponentialRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => exponentialRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static exponentialRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_exponentialRampToValueAtTime_Callback";
+  exponentialRampToValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => exponentialRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static exponentialRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_exponentialRampToValueAtTime_Callback";
+  exponentialRampToValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => exponentialRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static linearRampToValueAtTime_Callback_0(mthis) native "AudioParam_linearRampToValueAtTime_Callback";
+  linearRampToValueAtTime_Callback_0_(mthis) => linearRampToValueAtTime_Callback_0(mthis);
+
+  static linearRampToValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_linearRampToValueAtTime_Callback";
+  linearRampToValueAtTime_Callback_1_(mthis, __arg_0) => linearRampToValueAtTime_Callback_1(mthis, __arg_0);
+
+  static linearRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_linearRampToValueAtTime_Callback";
+  linearRampToValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => linearRampToValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static linearRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_linearRampToValueAtTime_Callback";
+  linearRampToValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => linearRampToValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static linearRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_linearRampToValueAtTime_Callback";
+  linearRampToValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => linearRampToValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setTargetAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setTargetAtTime_Callback";
+  setTargetAtTime_Callback_1_(mthis, __arg_0) => setTargetAtTime_Callback_1(mthis, __arg_0);
+
+  static setTargetAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setTargetAtTime_Callback";
+  setTargetAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setTargetAtTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setTargetAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setTargetAtTime_Callback";
+  setTargetAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTargetAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTargetAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setTargetAtTime_Callback";
+  setTargetAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTargetAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setTargetAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioParam_setTargetAtTime_Callback";
+  setTargetAtTime_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setTargetAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setValueAtTime_Callback_0(mthis) native "AudioParam_setValueAtTime_Callback";
+  setValueAtTime_Callback_0_(mthis) => setValueAtTime_Callback_0(mthis);
+
+  static setValueAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setValueAtTime_Callback";
+  setValueAtTime_Callback_1_(mthis, __arg_0) => setValueAtTime_Callback_1(mthis, __arg_0);
+
+  static setValueAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setValueAtTime_Callback";
+  setValueAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setValueAtTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setValueAtTime_Callback";
+  setValueAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setValueAtTime_Callback";
+  setValueAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setValueCurveAtTime_Callback_1(mthis, __arg_0) native "AudioParam_setValueCurveAtTime_Callback";
+  setValueCurveAtTime_Callback_1_(mthis, __arg_0) => setValueCurveAtTime_Callback_1(mthis, __arg_0);
+
+  static setValueCurveAtTime_Callback_2(mthis, __arg_0, __arg_1) native "AudioParam_setValueCurveAtTime_Callback";
+  setValueCurveAtTime_Callback_2_(mthis, __arg_0, __arg_1) => setValueCurveAtTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setValueCurveAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioParam_setValueCurveAtTime_Callback";
+  setValueCurveAtTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueCurveAtTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setValueCurveAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "AudioParam_setValueCurveAtTime_Callback";
+  setValueCurveAtTime_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueCurveAtTime_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setValueCurveAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "AudioParam_setValueCurveAtTime_Callback";
+  setValueCurveAtTime_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setValueCurveAtTime_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static value_Getter(mthis) native "AudioParam_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "AudioParam_value_Setter";
+  static value_Setter(mthis, __arg_0) native "AudioParam_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
-  static cancelScheduledValues_Callback_1(mthis, startTime) native "AudioParam_cancelScheduledValues_Callback";
-
-  static exponentialRampToValueAtTime_Callback_2(mthis, value, time) native "AudioParam_exponentialRampToValueAtTime_Callback";
-
-  static linearRampToValueAtTime_Callback_2(mthis, value, time) native "AudioParam_linearRampToValueAtTime_Callback";
-
-  static setTargetAtTime_Callback_3(mthis, target, time, timeConstant) native "AudioParam_setTargetAtTime_Callback";
-
-  static setValueAtTime_Callback_2(mthis, value, time) native "AudioParam_setValueAtTime_Callback";
-
-  static setValueCurveAtTime_Callback_3(mthis, values, time, duration) native "AudioParam_setValueCurveAtTime_Callback";
 }
 
-class BlinkAudioProcessingEvent {
+class BlinkAudioProcessingEvent extends BlinkEvent {
+  static final instance = new BlinkAudioProcessingEvent();
+
   static inputBuffer_Getter(mthis) native "AudioProcessingEvent_inputBuffer_Getter";
+  inputBuffer_Getter_(mthis) => inputBuffer_Getter(mthis);
 
   static outputBuffer_Getter(mthis) native "AudioProcessingEvent_outputBuffer_Getter";
+  outputBuffer_Getter_(mthis) => outputBuffer_Getter(mthis);
 
   static playbackTime_Getter(mthis) native "AudioProcessingEvent_playbackTime_Getter";
+  playbackTime_Getter_(mthis) => playbackTime_Getter(mthis);
+
+}
+
+class BlinkAudioSourceNode extends BlinkAudioNode {
+  static final instance = new BlinkAudioSourceNode();
+
 }
 
 class BlinkAudioTrack {
-  static enabled_Getter(mthis) native "AudioTrack_enabled_Getter";
+  static final instance = new BlinkAudioTrack();
 
-  static enabled_Setter(mthis, value) native "AudioTrack_enabled_Setter";
+  static enabled_Getter(mthis) native "AudioTrack_enabled_Getter";
+  enabled_Getter_(mthis) => enabled_Getter(mthis);
+
+  static enabled_Setter(mthis, __arg_0) native "AudioTrack_enabled_Setter";
+  enabled_Setter_(mthis, __arg_0) => enabled_Setter(mthis, __arg_0);
 
   static id_Getter(mthis) native "AudioTrack_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static kind_Getter(mthis) native "AudioTrack_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "AudioTrack_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
   static language_Getter(mthis) native "AudioTrack_language_Getter";
+  language_Getter_(mthis) => language_Getter(mthis);
+
 }
 
-class BlinkAudioTrackList {
+class BlinkAudioTrackList extends BlinkEventTarget {
+  static final instance = new BlinkAudioTrackList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "AudioTrackList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_0(mthis) native "AudioTrackList_getTrackById_Callback";
+  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+
+  static getTrackById_Callback_1(mthis, __arg_0) native "AudioTrackList_getTrackById_Callback";
+  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "AudioTrackList_getTrackById_Callback";
+  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "AudioTrackList_getTrackById_Callback";
+  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "AudioTrackList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, index) native "AudioTrackList___getter___Callback";
+  static onaddtrack_Getter(mthis) native "AudioTrackList_onaddtrack_Getter";
+  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
 
-  static getTrackById_Callback_1(mthis, id) native "AudioTrackList_getTrackById_Callback";
+  static onaddtrack_Setter(mthis, __arg_0) native "AudioTrackList_onaddtrack_Setter";
+  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "AudioTrackList_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "AudioTrackList_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onremovetrack_Getter(mthis) native "AudioTrackList_onremovetrack_Getter";
+  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
+
+  static onremovetrack_Setter(mthis, __arg_0) native "AudioTrackList_onremovetrack_Setter";
+  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
+
 }
 
-class BlinkAutocompleteErrorEvent {
-  static constructorCallback(type, options) native "AutocompleteErrorEvent_constructorCallback";
+class BlinkAutocompleteErrorEvent extends BlinkEvent {
+  static final instance = new BlinkAutocompleteErrorEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "AutocompleteErrorEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static reason_Getter(mthis) native "AutocompleteErrorEvent_reason_Getter";
+  reason_Getter_(mthis) => reason_Getter(mthis);
+
 }
 
 class BlinkBarProp {
+  static final instance = new BlinkBarProp();
+
   static visible_Getter(mthis) native "BarProp_visible_Getter";
+  visible_Getter_(mthis) => visible_Getter(mthis);
+
 }
 
-class BlinkBatteryManager {
-  static charging_Getter(mthis) native "BatteryManager_charging_Getter";
+class BlinkBatteryManager extends BlinkEventTarget {
+  static final instance = new BlinkBatteryManager();
 
   static chargingTime_Getter(mthis) native "BatteryManager_chargingTime_Getter";
+  chargingTime_Getter_(mthis) => chargingTime_Getter(mthis);
+
+  static charging_Getter(mthis) native "BatteryManager_charging_Getter";
+  charging_Getter_(mthis) => charging_Getter(mthis);
 
   static dischargingTime_Getter(mthis) native "BatteryManager_dischargingTime_Getter";
+  dischargingTime_Getter_(mthis) => dischargingTime_Getter(mthis);
 
   static level_Getter(mthis) native "BatteryManager_level_Getter";
+  level_Getter_(mthis) => level_Getter(mthis);
+
+  static onchargingchange_Getter(mthis) native "BatteryManager_onchargingchange_Getter";
+  onchargingchange_Getter_(mthis) => onchargingchange_Getter(mthis);
+
+  static onchargingchange_Setter(mthis, __arg_0) native "BatteryManager_onchargingchange_Setter";
+  onchargingchange_Setter_(mthis, __arg_0) => onchargingchange_Setter(mthis, __arg_0);
+
+  static onchargingtimechange_Getter(mthis) native "BatteryManager_onchargingtimechange_Getter";
+  onchargingtimechange_Getter_(mthis) => onchargingtimechange_Getter(mthis);
+
+  static onchargingtimechange_Setter(mthis, __arg_0) native "BatteryManager_onchargingtimechange_Setter";
+  onchargingtimechange_Setter_(mthis, __arg_0) => onchargingtimechange_Setter(mthis, __arg_0);
+
+  static ondischargingtimechange_Getter(mthis) native "BatteryManager_ondischargingtimechange_Getter";
+  ondischargingtimechange_Getter_(mthis) => ondischargingtimechange_Getter(mthis);
+
+  static ondischargingtimechange_Setter(mthis, __arg_0) native "BatteryManager_ondischargingtimechange_Setter";
+  ondischargingtimechange_Setter_(mthis, __arg_0) => ondischargingtimechange_Setter(mthis, __arg_0);
+
+  static onlevelchange_Getter(mthis) native "BatteryManager_onlevelchange_Getter";
+  onlevelchange_Getter_(mthis) => onlevelchange_Getter(mthis);
+
+  static onlevelchange_Setter(mthis, __arg_0) native "BatteryManager_onlevelchange_Setter";
+  onlevelchange_Setter_(mthis, __arg_0) => onlevelchange_Setter(mthis, __arg_0);
+
 }
 
-class BlinkBeforeUnloadEvent {
+class BlinkBeforeUnloadEvent extends BlinkEvent {
+  static final instance = new BlinkBeforeUnloadEvent();
+
   static returnValue_Getter(mthis) native "BeforeUnloadEvent_returnValue_Getter";
+  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
 
-  static returnValue_Setter(mthis, value) native "BeforeUnloadEvent_returnValue_Setter";
+  static returnValue_Setter(mthis, __arg_0) native "BeforeUnloadEvent_returnValue_Setter";
+  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
+
 }
 
-class BlinkBiquadFilterNode {
+class BlinkBiquadFilterNode extends BlinkAudioNode {
+  static final instance = new BlinkBiquadFilterNode();
+
   static Q_Getter(mthis) native "BiquadFilterNode_Q_Getter";
+  Q_Getter_(mthis) => Q_Getter(mthis);
 
   static detune_Getter(mthis) native "BiquadFilterNode_detune_Getter";
+  detune_Getter_(mthis) => detune_Getter(mthis);
 
   static frequency_Getter(mthis) native "BiquadFilterNode_frequency_Getter";
+  frequency_Getter_(mthis) => frequency_Getter(mthis);
 
   static gain_Getter(mthis) native "BiquadFilterNode_gain_Getter";
+  gain_Getter_(mthis) => gain_Getter(mthis);
+
+  static getFrequencyResponse_Callback_1(mthis, __arg_0) native "BiquadFilterNode_getFrequencyResponse_Callback";
+  getFrequencyResponse_Callback_1_(mthis, __arg_0) => getFrequencyResponse_Callback_1(mthis, __arg_0);
+
+  static getFrequencyResponse_Callback_2(mthis, __arg_0, __arg_1) native "BiquadFilterNode_getFrequencyResponse_Callback";
+  getFrequencyResponse_Callback_2_(mthis, __arg_0, __arg_1) => getFrequencyResponse_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFrequencyResponse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "BiquadFilterNode_getFrequencyResponse_Callback";
+  getFrequencyResponse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFrequencyResponse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFrequencyResponse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "BiquadFilterNode_getFrequencyResponse_Callback";
+  getFrequencyResponse_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFrequencyResponse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getFrequencyResponse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "BiquadFilterNode_getFrequencyResponse_Callback";
+  getFrequencyResponse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFrequencyResponse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static type_Getter(mthis) native "BiquadFilterNode_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "BiquadFilterNode_type_Setter";
+  static type_Setter(mthis, __arg_0) native "BiquadFilterNode_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
-  static getFrequencyResponse_Callback_3(mthis, frequencyHz, magResponse, phaseResponse) native "BiquadFilterNode_getFrequencyResponse_Callback";
 }
 
 class BlinkBlob {
-  static constructorCallback_3(blobParts, type, endings) native "Blob_constructorCallback";
+  static final instance = new BlinkBlob();
+
+  static close_Callback_0(mthis) native "Blob_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "Blob_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "Blob_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "Blob_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Blob_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Blob_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Blob_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Blob_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static size_Getter(mthis) native "Blob_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
+
+  static slice_Callback_0(mthis) native "Blob_slice_Callback";
+  slice_Callback_0_(mthis) => slice_Callback_0(mthis);
+
+  static slice_Callback_1(mthis, __arg_0) native "Blob_slice_Callback";
+  slice_Callback_1_(mthis, __arg_0) => slice_Callback_1(mthis, __arg_0);
+
+  static slice_Callback_2(mthis, __arg_0, __arg_1) native "Blob_slice_Callback";
+  slice_Callback_2_(mthis, __arg_0, __arg_1) => slice_Callback_2(mthis, __arg_0, __arg_1);
+
+  static slice_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Blob_slice_Callback";
+  slice_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => slice_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static slice_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Blob_slice_Callback";
+  slice_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => slice_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static slice_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Blob_slice_Callback";
+  slice_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => slice_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static type_Getter(mthis) native "Blob_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static close_Callback(mthis) native "Blob_close_Callback";
-
-  static slice_Callback_3(mthis, start, end, contentType) native "Blob_slice_Callback";
-
-  static slice_Callback_2(mthis, start, end) native "Blob_slice_Callback";
-
-  static slice_Callback_1(mthis, start) native "Blob_slice_Callback";
-
-  static slice_Callback(mthis) native "Blob_slice_Callback";
 }
 
-class BlinkChildNode {
-  static nextElementSibling_Getter(mthis) native "ChildNode_nextElementSibling_Getter";
+class BlinkCDATASection extends BlinkText {
+  static final instance = new BlinkCDATASection();
 
-  static previousElementSibling_Getter(mthis) native "ChildNode_previousElementSibling_Getter";
-
-  static remove_Callback(mthis) native "ChildNode_remove_Callback";
 }
 
-class BlinkCharacterData {
-  static data_Getter(mthis) native "CharacterData_data_Getter";
-
-  static data_Setter(mthis, value) native "CharacterData_data_Setter";
-
-  static length_Getter(mthis) native "CharacterData_length_Getter";
-
-  static appendData_Callback_1(mthis, data) native "CharacterData_appendData_Callback";
-
-  static deleteData_Callback_2(mthis, offset, length) native "CharacterData_deleteData_Callback";
-
-  static insertData_Callback_2(mthis, offset, data) native "CharacterData_insertData_Callback";
-
-  static replaceData_Callback_3(mthis, offset, length, data) native "CharacterData_replaceData_Callback";
-
-  static substringData_Callback_2(mthis, offset, length) native "CharacterData_substringData_Callback";
-
-  static nextElementSibling_Getter(mthis) native "CharacterData_nextElementSibling_Getter";
-
-  static previousElementSibling_Getter(mthis) native "CharacterData_previousElementSibling_Getter";
-}
-
-class BlinkText {
-  static wholeText_Getter(mthis) native "Text_wholeText_Getter";
-
-  static getDestinationInsertionPoints_Callback(mthis) native "Text_getDestinationInsertionPoints_Callback";
-
-  static splitText_Callback_1(mthis, offset) native "Text_splitText_Callback";
-}
-
-class BlinkCDATASection {}
-
 class BlinkCSS {
-  static supports_Callback_2(mthis, property, value) native "CSS_supports_Callback";
+  static final instance = new BlinkCSS();
 
-  static supports_Callback_1(mthis, conditionText) native "CSS_supports_Callback";
+  static supports_Callback_0(mthis) native "CSS_supports_Callback";
+  supports_Callback_0_(mthis) => supports_Callback_0(mthis);
+
+  static supports_Callback_1(mthis, __arg_0) native "CSS_supports_Callback";
+  supports_Callback_1_(mthis, __arg_0) => supports_Callback_1(mthis, __arg_0);
+
+  static supports_Callback_2(mthis, __arg_0, __arg_1) native "CSS_supports_Callback";
+  supports_Callback_2_(mthis, __arg_0, __arg_1) => supports_Callback_2(mthis, __arg_0, __arg_1);
+
+  static supports_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSS_supports_Callback";
+  supports_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => supports_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static supports_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSS_supports_Callback";
+  supports_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => supports_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkCSSCharsetRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSCharsetRule();
+
+  static encoding_Getter(mthis) native "CSSCharsetRule_encoding_Getter";
+  encoding_Getter_(mthis) => encoding_Getter(mthis);
+
+  static encoding_Setter(mthis, __arg_0) native "CSSCharsetRule_encoding_Setter";
+  encoding_Setter_(mthis, __arg_0) => encoding_Setter(mthis, __arg_0);
+
+}
+
+class BlinkCSSFontFaceRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSFontFaceRule();
+
+  static style_Getter(mthis) native "CSSFontFaceRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
+}
+
+class BlinkCSSImportRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSImportRule();
+
+  static href_Getter(mthis) native "CSSImportRule_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static media_Getter(mthis) native "CSSImportRule_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
+
+  static styleSheet_Getter(mthis) native "CSSImportRule_styleSheet_Getter";
+  styleSheet_Getter_(mthis) => styleSheet_Getter(mthis);
+
+}
+
+class BlinkCSSKeyframeRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSKeyframeRule();
+
+  static keyText_Getter(mthis) native "CSSKeyframeRule_keyText_Getter";
+  keyText_Getter_(mthis) => keyText_Getter(mthis);
+
+  static keyText_Setter(mthis, __arg_0) native "CSSKeyframeRule_keyText_Setter";
+  keyText_Setter_(mthis, __arg_0) => keyText_Setter(mthis, __arg_0);
+
+  static style_Getter(mthis) native "CSSKeyframeRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
+}
+
+class BlinkCSSKeyframesRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSKeyframesRule();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "CSSKeyframesRule___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static cssRules_Getter(mthis) native "CSSKeyframesRule_cssRules_Getter";
+  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+
+  static deleteRule_Callback_0(mthis) native "CSSKeyframesRule_deleteRule_Callback";
+  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+
+  static deleteRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_deleteRule_Callback";
+  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+
+  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_deleteRule_Callback";
+  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_deleteRule_Callback";
+  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static findRule_Callback_0(mthis) native "CSSKeyframesRule_findRule_Callback";
+  findRule_Callback_0_(mthis) => findRule_Callback_0(mthis);
+
+  static findRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_findRule_Callback";
+  findRule_Callback_1_(mthis, __arg_0) => findRule_Callback_1(mthis, __arg_0);
+
+  static findRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_findRule_Callback";
+  findRule_Callback_2_(mthis, __arg_0, __arg_1) => findRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static findRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_findRule_Callback";
+  findRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => findRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_0(mthis) native "CSSKeyframesRule_insertRule_Callback";
+  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+
+  static insertRule_Callback_1(mthis, __arg_0) native "CSSKeyframesRule_insertRule_Callback";
+  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
+
+  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSKeyframesRule_insertRule_Callback";
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSKeyframesRule_insertRule_Callback";
+  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static name_Getter(mthis) native "CSSKeyframesRule_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static name_Setter(mthis, __arg_0) native "CSSKeyframesRule_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+}
+
+class BlinkCSSMediaRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSMediaRule();
+
+  static cssRules_Getter(mthis) native "CSSMediaRule_cssRules_Getter";
+  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+
+  static deleteRule_Callback_0(mthis) native "CSSMediaRule_deleteRule_Callback";
+  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+
+  static deleteRule_Callback_1(mthis, __arg_0) native "CSSMediaRule_deleteRule_Callback";
+  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+
+  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSMediaRule_deleteRule_Callback";
+  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSMediaRule_deleteRule_Callback";
+  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_0(mthis) native "CSSMediaRule_insertRule_Callback";
+  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+
+  static insertRule_Callback_1(mthis, __arg_0) native "CSSMediaRule_insertRule_Callback";
+  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
+
+  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSMediaRule_insertRule_Callback";
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSMediaRule_insertRule_Callback";
+  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSMediaRule_insertRule_Callback";
+  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static media_Getter(mthis) native "CSSMediaRule_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
+
+}
+
+class BlinkCSSPageRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSPageRule();
+
+  static selectorText_Getter(mthis) native "CSSPageRule_selectorText_Getter";
+  selectorText_Getter_(mthis) => selectorText_Getter(mthis);
+
+  static selectorText_Setter(mthis, __arg_0) native "CSSPageRule_selectorText_Setter";
+  selectorText_Setter_(mthis, __arg_0) => selectorText_Setter(mthis, __arg_0);
+
+  static style_Getter(mthis) native "CSSPageRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
+}
+
+class BlinkCSSPrimitiveValue extends BlinkCSSValue {
+  static final instance = new BlinkCSSPrimitiveValue();
+
+  static getCounterValue_Callback_0(mthis) native "CSSPrimitiveValue_getCounterValue_Callback";
+  getCounterValue_Callback_0_(mthis) => getCounterValue_Callback_0(mthis);
+
+  static getCounterValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getCounterValue_Callback";
+  getCounterValue_Callback_1_(mthis, __arg_0) => getCounterValue_Callback_1(mthis, __arg_0);
+
+  static getCounterValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getCounterValue_Callback";
+  getCounterValue_Callback_2_(mthis, __arg_0, __arg_1) => getCounterValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFloatValue_Callback_0(mthis) native "CSSPrimitiveValue_getFloatValue_Callback";
+  getFloatValue_Callback_0_(mthis) => getFloatValue_Callback_0(mthis);
+
+  static getFloatValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getFloatValue_Callback";
+  getFloatValue_Callback_1_(mthis, __arg_0) => getFloatValue_Callback_1(mthis, __arg_0);
+
+  static getFloatValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getFloatValue_Callback";
+  getFloatValue_Callback_2_(mthis, __arg_0, __arg_1) => getFloatValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_getFloatValue_Callback";
+  getFloatValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getRGBColorValue_Callback_0(mthis) native "CSSPrimitiveValue_getRGBColorValue_Callback";
+  getRGBColorValue_Callback_0_(mthis) => getRGBColorValue_Callback_0(mthis);
+
+  static getRGBColorValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getRGBColorValue_Callback";
+  getRGBColorValue_Callback_1_(mthis, __arg_0) => getRGBColorValue_Callback_1(mthis, __arg_0);
+
+  static getRGBColorValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getRGBColorValue_Callback";
+  getRGBColorValue_Callback_2_(mthis, __arg_0, __arg_1) => getRGBColorValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRectValue_Callback_0(mthis) native "CSSPrimitiveValue_getRectValue_Callback";
+  getRectValue_Callback_0_(mthis) => getRectValue_Callback_0(mthis);
+
+  static getRectValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getRectValue_Callback";
+  getRectValue_Callback_1_(mthis, __arg_0) => getRectValue_Callback_1(mthis, __arg_0);
+
+  static getRectValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getRectValue_Callback";
+  getRectValue_Callback_2_(mthis, __arg_0, __arg_1) => getRectValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStringValue_Callback_0(mthis) native "CSSPrimitiveValue_getStringValue_Callback";
+  getStringValue_Callback_0_(mthis) => getStringValue_Callback_0(mthis);
+
+  static getStringValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_getStringValue_Callback";
+  getStringValue_Callback_1_(mthis, __arg_0) => getStringValue_Callback_1(mthis, __arg_0);
+
+  static getStringValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_getStringValue_Callback";
+  getStringValue_Callback_2_(mthis, __arg_0, __arg_1) => getStringValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static primitiveType_Getter(mthis) native "CSSPrimitiveValue_primitiveType_Getter";
+  primitiveType_Getter_(mthis) => primitiveType_Getter(mthis);
+
+  static setFloatValue_Callback_0(mthis) native "CSSPrimitiveValue_setFloatValue_Callback";
+  setFloatValue_Callback_0_(mthis) => setFloatValue_Callback_0(mthis);
+
+  static setFloatValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_setFloatValue_Callback";
+  setFloatValue_Callback_1_(mthis, __arg_0) => setFloatValue_Callback_1(mthis, __arg_0);
+
+  static setFloatValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_setFloatValue_Callback";
+  setFloatValue_Callback_2_(mthis, __arg_0, __arg_1) => setFloatValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_setFloatValue_Callback";
+  setFloatValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFloatValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setFloatValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSPrimitiveValue_setFloatValue_Callback";
+  setFloatValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFloatValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setStringValue_Callback_0(mthis) native "CSSPrimitiveValue_setStringValue_Callback";
+  setStringValue_Callback_0_(mthis) => setStringValue_Callback_0(mthis);
+
+  static setStringValue_Callback_1(mthis, __arg_0) native "CSSPrimitiveValue_setStringValue_Callback";
+  setStringValue_Callback_1_(mthis, __arg_0) => setStringValue_Callback_1(mthis, __arg_0);
+
+  static setStringValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSPrimitiveValue_setStringValue_Callback";
+  setStringValue_Callback_2_(mthis, __arg_0, __arg_1) => setStringValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStringValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSPrimitiveValue_setStringValue_Callback";
+  setStringValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStringValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStringValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSPrimitiveValue_setStringValue_Callback";
+  setStringValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStringValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
 class BlinkCSSRule {
-  static cssText_Getter(mthis) native "CSSRule_cssText_Getter";
+  static final instance = new BlinkCSSRule();
 
-  static cssText_Setter(mthis, value) native "CSSRule_cssText_Setter";
+  static cssText_Getter(mthis) native "CSSRule_cssText_Getter";
+  cssText_Getter_(mthis) => cssText_Getter(mthis);
+
+  static cssText_Setter(mthis, __arg_0) native "CSSRule_cssText_Setter";
+  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
 
   static parentRule_Getter(mthis) native "CSSRule_parentRule_Getter";
+  parentRule_Getter_(mthis) => parentRule_Getter(mthis);
 
   static parentStyleSheet_Getter(mthis) native "CSSRule_parentStyleSheet_Getter";
+  parentStyleSheet_Getter_(mthis) => parentStyleSheet_Getter(mthis);
 
   static type_Getter(mthis) native "CSSRule_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
-class BlinkCSSCharsetRule {
-  static encoding_Getter(mthis) native "CSSCharsetRule_encoding_Getter";
-
-  static encoding_Setter(mthis, value) native "CSSCharsetRule_encoding_Setter";
-}
-
-class BlinkCSSFontFaceRule {
-  static style_Getter(mthis) native "CSSFontFaceRule_style_Getter";
-}
-
-class BlinkCSSImportRule {
-  static href_Getter(mthis) native "CSSImportRule_href_Getter";
-
-  static media_Getter(mthis) native "CSSImportRule_media_Getter";
-
-  static styleSheet_Getter(mthis) native "CSSImportRule_styleSheet_Getter";
-}
-
-class BlinkCSSKeyframeRule {
-  static keyText_Getter(mthis) native "CSSKeyframeRule_keyText_Getter";
-
-  static keyText_Setter(mthis, value) native "CSSKeyframeRule_keyText_Setter";
-
-  static style_Getter(mthis) native "CSSKeyframeRule_style_Getter";
-}
-
-class BlinkCSSKeyframesRule {
-  static cssRules_Getter(mthis) native "CSSKeyframesRule_cssRules_Getter";
-
-  static name_Getter(mthis) native "CSSKeyframesRule_name_Getter";
-
-  static name_Setter(mthis, value) native "CSSKeyframesRule_name_Setter";
-
-  static $__getter___Callback_1(mthis, index) native "CSSKeyframesRule___getter___Callback";
-
-  static deleteRule_Callback_1(mthis, key) native "CSSKeyframesRule_deleteRule_Callback";
-
-  static findRule_Callback_1(mthis, key) native "CSSKeyframesRule_findRule_Callback";
-
-  static insertRule_Callback_1(mthis, rule) native "CSSKeyframesRule_insertRule_Callback";
-}
-
-class BlinkCSSMediaRule {
-  static cssRules_Getter(mthis) native "CSSMediaRule_cssRules_Getter";
-
-  static media_Getter(mthis) native "CSSMediaRule_media_Getter";
-
-  static deleteRule_Callback_1(mthis, index) native "CSSMediaRule_deleteRule_Callback";
-
-  static insertRule_Callback_2(mthis, rule, index) native "CSSMediaRule_insertRule_Callback";
-}
-
-class BlinkCSSPageRule {
-  static selectorText_Getter(mthis) native "CSSPageRule_selectorText_Getter";
-
-  static selectorText_Setter(mthis, value) native "CSSPageRule_selectorText_Setter";
-
-  static style_Getter(mthis) native "CSSPageRule_style_Getter";
-}
-
-class BlinkCSSValue {}
-
-class BlinkCSSPrimitiveValue {}
-
 class BlinkCSSRuleList {
-  static length_Getter(mthis) native "CSSRuleList_length_Getter";
+  static final instance = new BlinkCSSRuleList();
 
-  static item_Callback_1(mthis, index) native "CSSRuleList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "CSSRuleList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "CSSRuleList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "CSSRuleList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSRuleList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSRuleList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "CSSRuleList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
 class BlinkCSSStyleDeclaration {
-  static cssText_Getter(mthis) native "CSSStyleDeclaration_cssText_Getter";
+  static final instance = new BlinkCSSStyleDeclaration();
 
-  static cssText_Setter(mthis, value) native "CSSStyleDeclaration_cssText_Setter";
+  static $__getter___Callback_1(mthis, __arg_0) native "CSSStyleDeclaration___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__propertyQuery___Callback_1(mthis, __arg_0) native "CSSStyleDeclaration___propertyQuery___Callback";
+  $__propertyQuery___Callback_1_(mthis, __arg_0) => $__propertyQuery___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static cssText_Getter(mthis) native "CSSStyleDeclaration_cssText_Getter";
+  cssText_Getter_(mthis) => cssText_Getter(mthis);
+
+  static cssText_Setter(mthis, __arg_0) native "CSSStyleDeclaration_cssText_Setter";
+  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
+
+  static getPropertyPriority_Callback_0(mthis) native "CSSStyleDeclaration_getPropertyPriority_Callback";
+  getPropertyPriority_Callback_0_(mthis) => getPropertyPriority_Callback_0(mthis);
+
+  static getPropertyPriority_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_getPropertyPriority_Callback";
+  getPropertyPriority_Callback_1_(mthis, __arg_0) => getPropertyPriority_Callback_1(mthis, __arg_0);
+
+  static getPropertyPriority_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_getPropertyPriority_Callback";
+  getPropertyPriority_Callback_2_(mthis, __arg_0, __arg_1) => getPropertyPriority_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getPropertyPriority_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_getPropertyPriority_Callback";
+  getPropertyPriority_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPropertyPriority_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getPropertyValue_Callback_0(mthis) native "CSSStyleDeclaration_getPropertyValue_Callback";
+  getPropertyValue_Callback_0_(mthis) => getPropertyValue_Callback_0(mthis);
+
+  static getPropertyValue_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_getPropertyValue_Callback";
+  getPropertyValue_Callback_1_(mthis, __arg_0) => getPropertyValue_Callback_1(mthis, __arg_0);
+
+  static getPropertyValue_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_getPropertyValue_Callback";
+  getPropertyValue_Callback_2_(mthis, __arg_0, __arg_1) => getPropertyValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getPropertyValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_getPropertyValue_Callback";
+  getPropertyValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPropertyValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "CSSStyleDeclaration_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static length_Getter(mthis) native "CSSStyleDeclaration_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static parentRule_Getter(mthis) native "CSSStyleDeclaration_parentRule_Getter";
+  parentRule_Getter_(mthis) => parentRule_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "CSSStyleDeclaration___getter___Callback";
+  static removeProperty_Callback_0(mthis) native "CSSStyleDeclaration_removeProperty_Callback";
+  removeProperty_Callback_0_(mthis) => removeProperty_Callback_0(mthis);
 
-  static $__propertyQuery___Callback_1(mthis, name) native "CSSStyleDeclaration___propertyQuery___Callback";
+  static removeProperty_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_removeProperty_Callback";
+  removeProperty_Callback_1_(mthis, __arg_0) => removeProperty_Callback_1(mthis, __arg_0);
 
-  static $__setter___Callback_2(mthis, propertyName, propertyValue) native "CSSStyleDeclaration___setter___Callback";
+  static removeProperty_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_removeProperty_Callback";
+  removeProperty_Callback_2_(mthis, __arg_0, __arg_1) => removeProperty_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getPropertyPriority_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_getPropertyPriority_Callback";
+  static removeProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_removeProperty_Callback";
+  removeProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getPropertyValue_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_getPropertyValue_Callback";
+  static setProperty_Callback_0(mthis) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_0_(mthis) => setProperty_Callback_0(mthis);
 
-  static item_Callback_1(mthis, index) native "CSSStyleDeclaration_item_Callback";
+  static setProperty_Callback_1(mthis, __arg_0) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_1_(mthis, __arg_0) => setProperty_Callback_1(mthis, __arg_0);
 
-  static removeProperty_Callback_1(mthis, propertyName) native "CSSStyleDeclaration_removeProperty_Callback";
+  static setProperty_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_2_(mthis, __arg_0, __arg_1) => setProperty_Callback_2(mthis, __arg_0, __arg_1);
 
-  static setProperty_Callback_3(mthis, propertyName, value, priority) native "CSSStyleDeclaration_setProperty_Callback";
+  static setProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setProperty_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setProperty_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CSSStyleDeclaration_setProperty_Callback";
+  setProperty_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setProperty_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
-class BlinkCSSStyleRule {
-  static selectorText_Getter(mthis) native "CSSStyleRule_selectorText_Getter";
+class BlinkCSSStyleRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSStyleRule();
 
-  static selectorText_Setter(mthis, value) native "CSSStyleRule_selectorText_Setter";
+  static selectorText_Getter(mthis) native "CSSStyleRule_selectorText_Getter";
+  selectorText_Getter_(mthis) => selectorText_Getter(mthis);
+
+  static selectorText_Setter(mthis, __arg_0) native "CSSStyleRule_selectorText_Setter";
+  selectorText_Setter_(mthis, __arg_0) => selectorText_Setter(mthis, __arg_0);
 
   static style_Getter(mthis) native "CSSStyleRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
 }
 
-class BlinkStyleSheet {
-  static disabled_Getter(mthis) native "StyleSheet_disabled_Getter";
+class BlinkCSSStyleSheet extends BlinkStyleSheet {
+  static final instance = new BlinkCSSStyleSheet();
 
-  static disabled_Setter(mthis, value) native "StyleSheet_disabled_Setter";
+  static addRule_Callback_0(mthis) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_0_(mthis) => addRule_Callback_0(mthis);
 
-  static href_Getter(mthis) native "StyleSheet_href_Getter";
+  static addRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_1_(mthis, __arg_0) => addRule_Callback_1(mthis, __arg_0);
 
-  static media_Getter(mthis) native "StyleSheet_media_Getter";
+  static addRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_2_(mthis, __arg_0, __arg_1) => addRule_Callback_2(mthis, __arg_0, __arg_1);
 
-  static ownerNode_Getter(mthis) native "StyleSheet_ownerNode_Getter";
+  static addRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static parentStyleSheet_Getter(mthis) native "StyleSheet_parentStyleSheet_Getter";
+  static addRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static title_Getter(mthis) native "StyleSheet_title_Getter";
+  static addRule_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CSSStyleSheet_addRule_Callback";
+  addRule_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addRule_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static type_Getter(mthis) native "StyleSheet_type_Getter";
-}
-
-class BlinkCSSStyleSheet {
   static cssRules_Getter(mthis) native "CSSStyleSheet_cssRules_Getter";
+  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
+
+  static deleteRule_Callback_0(mthis) native "CSSStyleSheet_deleteRule_Callback";
+  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
+
+  static deleteRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_deleteRule_Callback";
+  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+
+  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_deleteRule_Callback";
+  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_deleteRule_Callback";
+  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_0(mthis) native "CSSStyleSheet_insertRule_Callback";
+  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+
+  static insertRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_insertRule_Callback";
+  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
+
+  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_insertRule_Callback";
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_insertRule_Callback";
+  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSStyleSheet_insertRule_Callback";
+  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static ownerRule_Getter(mthis) native "CSSStyleSheet_ownerRule_Getter";
+  ownerRule_Getter_(mthis) => ownerRule_Getter(mthis);
+
+  static removeRule_Callback_0(mthis) native "CSSStyleSheet_removeRule_Callback";
+  removeRule_Callback_0_(mthis) => removeRule_Callback_0(mthis);
+
+  static removeRule_Callback_1(mthis, __arg_0) native "CSSStyleSheet_removeRule_Callback";
+  removeRule_Callback_1_(mthis, __arg_0) => removeRule_Callback_1(mthis, __arg_0);
+
+  static removeRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSStyleSheet_removeRule_Callback";
+  removeRule_Callback_2_(mthis, __arg_0, __arg_1) => removeRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSStyleSheet_removeRule_Callback";
+  removeRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static rules_Getter(mthis) native "CSSStyleSheet_rules_Getter";
+  rules_Getter_(mthis) => rules_Getter(mthis);
 
-  static addRule_Callback_3(mthis, selector, style, index) native "CSSStyleSheet_addRule_Callback";
-
-  static addRule_Callback_2(mthis, selector, style) native "CSSStyleSheet_addRule_Callback";
-
-  static deleteRule_Callback_1(mthis, index) native "CSSStyleSheet_deleteRule_Callback";
-
-  static insertRule_Callback_2(mthis, rule, index) native "CSSStyleSheet_insertRule_Callback";
-
-  static insertRule_Callback_1(mthis, rule) native "CSSStyleSheet_insertRule_Callback";
-
-  static removeRule_Callback_1(mthis, index) native "CSSStyleSheet_removeRule_Callback";
 }
 
-class BlinkCSSSupportsRule {
+class BlinkCSSSupportsRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSSupportsRule();
+
   static conditionText_Getter(mthis) native "CSSSupportsRule_conditionText_Getter";
+  conditionText_Getter_(mthis) => conditionText_Getter(mthis);
 
   static cssRules_Getter(mthis) native "CSSSupportsRule_cssRules_Getter";
+  cssRules_Getter_(mthis) => cssRules_Getter(mthis);
 
-  static deleteRule_Callback_1(mthis, index) native "CSSSupportsRule_deleteRule_Callback";
+  static deleteRule_Callback_0(mthis) native "CSSSupportsRule_deleteRule_Callback";
+  deleteRule_Callback_0_(mthis) => deleteRule_Callback_0(mthis);
 
-  static insertRule_Callback_2(mthis, rule, index) native "CSSSupportsRule_insertRule_Callback";
+  static deleteRule_Callback_1(mthis, __arg_0) native "CSSSupportsRule_deleteRule_Callback";
+  deleteRule_Callback_1_(mthis, __arg_0) => deleteRule_Callback_1(mthis, __arg_0);
+
+  static deleteRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSSupportsRule_deleteRule_Callback";
+  deleteRule_Callback_2_(mthis, __arg_0, __arg_1) => deleteRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSSupportsRule_deleteRule_Callback";
+  deleteRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_0(mthis) native "CSSSupportsRule_insertRule_Callback";
+  insertRule_Callback_0_(mthis) => insertRule_Callback_0(mthis);
+
+  static insertRule_Callback_1(mthis, __arg_0) native "CSSSupportsRule_insertRule_Callback";
+  insertRule_Callback_1_(mthis, __arg_0) => insertRule_Callback_1(mthis, __arg_0);
+
+  static insertRule_Callback_2(mthis, __arg_0, __arg_1) native "CSSSupportsRule_insertRule_Callback";
+  insertRule_Callback_2_(mthis, __arg_0, __arg_1) => insertRule_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSSupportsRule_insertRule_Callback";
+  insertRule_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRule_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CSSSupportsRule_insertRule_Callback";
+  insertRule_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertRule_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkCSSUnknownRule {}
+class BlinkCSSUnknownRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSUnknownRule();
 
-class BlinkCSSValueList {
+}
+
+class BlinkCSSValue {
+  static final instance = new BlinkCSSValue();
+
+  static cssText_Getter(mthis) native "CSSValue_cssText_Getter";
+  cssText_Getter_(mthis) => cssText_Getter(mthis);
+
+  static cssText_Setter(mthis, __arg_0) native "CSSValue_cssText_Setter";
+  cssText_Setter_(mthis, __arg_0) => cssText_Setter(mthis, __arg_0);
+
+  static cssValueType_Getter(mthis) native "CSSValue_cssValueType_Getter";
+  cssValueType_Getter_(mthis) => cssValueType_Getter(mthis);
+
+}
+
+class BlinkCSSValueList extends BlinkCSSValue {
+  static final instance = new BlinkCSSValueList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "CSSValueList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "CSSValueList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "CSSValueList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "CSSValueList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CSSValueList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "CSSValueList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static item_Callback_1(mthis, index) native "CSSValueList_item_Callback";
 }
 
-class BlinkCSSViewportRule {
+class BlinkCSSViewportRule extends BlinkCSSRule {
+  static final instance = new BlinkCSSViewportRule();
+
   static style_Getter(mthis) native "CSSViewportRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
 }
 
-class BlinkCache {}
+class BlinkCache {
+  static final instance = new BlinkCache();
+
+  static addAll_Callback_0(mthis) native "Cache_addAll_Callback";
+  addAll_Callback_0_(mthis) => addAll_Callback_0(mthis);
+
+  static addAll_Callback_1(mthis, __arg_0) native "Cache_addAll_Callback";
+  addAll_Callback_1_(mthis, __arg_0) => addAll_Callback_1(mthis, __arg_0);
+
+  static addAll_Callback_2(mthis, __arg_0, __arg_1) native "Cache_addAll_Callback";
+  addAll_Callback_2_(mthis, __arg_0, __arg_1) => addAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_addAll_Callback";
+  addAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static add_Callback_0(mthis) native "Cache_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "Cache_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "Cache_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_0(mthis) native "Cache_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "Cache_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "Cache_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_delete_Callback";
+  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_delete_Callback";
+  delete_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => delete_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static keys_Callback_0(mthis) native "Cache_keys_Callback";
+  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
+
+  static keys_Callback_1(mthis, __arg_0) native "Cache_keys_Callback";
+  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
+
+  static keys_Callback_2(mthis, __arg_0, __arg_1) native "Cache_keys_Callback";
+  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
+
+  static keys_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_keys_Callback";
+  keys_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => keys_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static keys_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_keys_Callback";
+  keys_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => keys_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static matchAll_Callback_0(mthis) native "Cache_matchAll_Callback";
+  matchAll_Callback_0_(mthis) => matchAll_Callback_0(mthis);
+
+  static matchAll_Callback_1(mthis, __arg_0) native "Cache_matchAll_Callback";
+  matchAll_Callback_1_(mthis, __arg_0) => matchAll_Callback_1(mthis, __arg_0);
+
+  static matchAll_Callback_2(mthis, __arg_0, __arg_1) native "Cache_matchAll_Callback";
+  matchAll_Callback_2_(mthis, __arg_0, __arg_1) => matchAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static matchAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_matchAll_Callback";
+  matchAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static matchAll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_matchAll_Callback";
+  matchAll_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => matchAll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static match_Callback_0(mthis) native "Cache_match_Callback";
+  match_Callback_0_(mthis) => match_Callback_0(mthis);
+
+  static match_Callback_1(mthis, __arg_0) native "Cache_match_Callback";
+  match_Callback_1_(mthis, __arg_0) => match_Callback_1(mthis, __arg_0);
+
+  static match_Callback_2(mthis, __arg_0, __arg_1) native "Cache_match_Callback";
+  match_Callback_2_(mthis, __arg_0, __arg_1) => match_Callback_2(mthis, __arg_0, __arg_1);
+
+  static match_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_match_Callback";
+  match_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => match_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static match_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_match_Callback";
+  match_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => match_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static put_Callback_0(mthis) native "Cache_put_Callback";
+  put_Callback_0_(mthis) => put_Callback_0(mthis);
+
+  static put_Callback_1(mthis, __arg_0) native "Cache_put_Callback";
+  put_Callback_1_(mthis, __arg_0) => put_Callback_1(mthis, __arg_0);
+
+  static put_Callback_2(mthis, __arg_0, __arg_1) native "Cache_put_Callback";
+  put_Callback_2_(mthis, __arg_0, __arg_1) => put_Callback_2(mthis, __arg_0, __arg_1);
+
+  static put_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Cache_put_Callback";
+  put_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => put_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Cache_put_Callback";
+  put_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
 
 class BlinkCacheStorage {
-  static create_Callback_1(mthis, cacheName) native "CacheStorage_create_Callback";
+  static final instance = new BlinkCacheStorage();
 
-  static delete_Callback_1(mthis, cacheName) native "CacheStorage_delete_Callback";
+  static create_Callback_0(mthis) native "CacheStorage_create_Callback";
+  create_Callback_0_(mthis) => create_Callback_0(mthis);
 
-  static get_Callback_1(mthis, cacheName) native "CacheStorage_get_Callback";
+  static create_Callback_1(mthis, __arg_0) native "CacheStorage_create_Callback";
+  create_Callback_1_(mthis, __arg_0) => create_Callback_1(mthis, __arg_0);
 
-  static has_Callback_1(mthis, cacheName) native "CacheStorage_has_Callback";
+  static create_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_create_Callback";
+  create_Callback_2_(mthis, __arg_0, __arg_1) => create_Callback_2(mthis, __arg_0, __arg_1);
 
-  static keys_Callback(mthis) native "CacheStorage_keys_Callback";
+  static create_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_create_Callback";
+  create_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => create_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_0(mthis) native "CacheStorage_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "CacheStorage_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_delete_Callback";
+  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static get_Callback_0(mthis) native "CacheStorage_get_Callback";
+  get_Callback_0_(mthis) => get_Callback_0(mthis);
+
+  static get_Callback_1(mthis, __arg_0) native "CacheStorage_get_Callback";
+  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+
+  static get_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_get_Callback";
+  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+
+  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_get_Callback";
+  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static has_Callback_0(mthis) native "CacheStorage_has_Callback";
+  has_Callback_0_(mthis) => has_Callback_0(mthis);
+
+  static has_Callback_1(mthis, __arg_0) native "CacheStorage_has_Callback";
+  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
+
+  static has_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_has_Callback";
+  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
+
+  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CacheStorage_has_Callback";
+  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static keys_Callback_0(mthis) native "CacheStorage_keys_Callback";
+  keys_Callback_0_(mthis) => keys_Callback_0(mthis);
+
+  static keys_Callback_1(mthis, __arg_0) native "CacheStorage_keys_Callback";
+  keys_Callback_1_(mthis, __arg_0) => keys_Callback_1(mthis, __arg_0);
+
+  static keys_Callback_2(mthis, __arg_0, __arg_1) native "CacheStorage_keys_Callback";
+  keys_Callback_2_(mthis, __arg_0, __arg_1) => keys_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkCanvas2DContextAttributes {
-  static alpha_Getter(mthis) native "Canvas2DContextAttributes_alpha_Getter";
+  static final instance = new BlinkCanvas2DContextAttributes();
 
-  static alpha_Setter(mthis, value) native "Canvas2DContextAttributes_alpha_Setter";
+  static alpha_Getter(mthis) native "Canvas2DContextAttributes_alpha_Getter";
+  alpha_Getter_(mthis) => alpha_Getter(mthis);
+
+  static alpha_Setter(mthis, __arg_0) native "Canvas2DContextAttributes_alpha_Setter";
+  alpha_Setter_(mthis, __arg_0) => alpha_Setter(mthis, __arg_0);
 
   static storage_Getter(mthis) native "Canvas2DContextAttributes_storage_Getter";
+  storage_Getter_(mthis) => storage_Getter(mthis);
 
-  static storage_Setter(mthis, value) native "Canvas2DContextAttributes_storage_Setter";
+  static storage_Setter(mthis, __arg_0) native "Canvas2DContextAttributes_storage_Setter";
+  storage_Setter_(mthis, __arg_0) => storage_Setter(mthis, __arg_0);
+
 }
 
 class BlinkCanvasGradient {
-  static addColorStop_Callback_2(mthis, offset, color) native "CanvasGradient_addColorStop_Callback";
+  static final instance = new BlinkCanvasGradient();
+
+  static addColorStop_Callback_0(mthis) native "CanvasGradient_addColorStop_Callback";
+  addColorStop_Callback_0_(mthis) => addColorStop_Callback_0(mthis);
+
+  static addColorStop_Callback_1(mthis, __arg_0) native "CanvasGradient_addColorStop_Callback";
+  addColorStop_Callback_1_(mthis, __arg_0) => addColorStop_Callback_1(mthis, __arg_0);
+
+  static addColorStop_Callback_2(mthis, __arg_0, __arg_1) native "CanvasGradient_addColorStop_Callback";
+  addColorStop_Callback_2_(mthis, __arg_0, __arg_1) => addColorStop_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addColorStop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasGradient_addColorStop_Callback";
+  addColorStop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addColorStop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addColorStop_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasGradient_addColorStop_Callback";
+  addColorStop_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addColorStop_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkCanvasPathMethods {}
+class BlinkCanvasPattern {
+  static final instance = new BlinkCanvasPattern();
 
-class BlinkCanvasPattern {}
+}
 
 class BlinkCanvasRenderingContext2D {
+  static final instance = new BlinkCanvasRenderingContext2D();
+
+  static addHitRegion_Callback_0(mthis) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  addHitRegion_Callback_0_(mthis) => addHitRegion_Callback_0(mthis);
+
+  static addHitRegion_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  addHitRegion_Callback_1_(mthis, __arg_0) => addHitRegion_Callback_1(mthis, __arg_0);
+
+  static addHitRegion_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  addHitRegion_Callback_2_(mthis, __arg_0, __arg_1) => addHitRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  addHitRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_arcTo_Callback";
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_arcTo_Callback";
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_arcTo_Callback";
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_arcTo_Callback";
+  arcTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_arcTo_Callback";
+  arcTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_arc_Callback";
+  arc_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static beginPath_Callback_0(mthis) native "CanvasRenderingContext2D_beginPath_Callback";
+  beginPath_Callback_0_(mthis) => beginPath_Callback_0(mthis);
+
+  static beginPath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_beginPath_Callback";
+  beginPath_Callback_1_(mthis, __arg_0) => beginPath_Callback_1(mthis, __arg_0);
+
+  static beginPath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_beginPath_Callback";
+  beginPath_Callback_2_(mthis, __arg_0, __arg_1) => beginPath_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
   static canvas_Getter(mthis) native "CanvasRenderingContext2D_canvas_Getter";
+  canvas_Getter_(mthis) => canvas_Getter(mthis);
+
+  static clearHitRegions_Callback_0(mthis) native "CanvasRenderingContext2D_clearHitRegions_Callback";
+  clearHitRegions_Callback_0_(mthis) => clearHitRegions_Callback_0(mthis);
+
+  static clearHitRegions_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_clearHitRegions_Callback";
+  clearHitRegions_Callback_1_(mthis, __arg_0) => clearHitRegions_Callback_1(mthis, __arg_0);
+
+  static clearHitRegions_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clearHitRegions_Callback";
+  clearHitRegions_Callback_2_(mthis, __arg_0, __arg_1) => clearHitRegions_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clearRect_Callback";
+  clearRect_Callback_2_(mthis, __arg_0, __arg_1) => clearRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_clearRect_Callback";
+  clearRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_clearRect_Callback";
+  clearRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clearRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static clearRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_clearRect_Callback";
+  clearRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => clearRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static clearRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_clearRect_Callback";
+  clearRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => clearRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static clip_Callback_0(mthis) native "CanvasRenderingContext2D_clip_Callback";
+  clip_Callback_0_(mthis) => clip_Callback_0(mthis);
+
+  static clip_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_clip_Callback";
+  clip_Callback_1_(mthis, __arg_0) => clip_Callback_1(mthis, __arg_0);
+
+  static clip_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_clip_Callback";
+  clip_Callback_2_(mthis, __arg_0, __arg_1) => clip_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clip_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_clip_Callback";
+  clip_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clip_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clip_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_clip_Callback";
+  clip_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clip_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static closePath_Callback_0(mthis) native "CanvasRenderingContext2D_closePath_Callback";
+  closePath_Callback_0_(mthis) => closePath_Callback_0(mthis);
+
+  static closePath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_closePath_Callback";
+  closePath_Callback_1_(mthis, __arg_0) => closePath_Callback_1(mthis, __arg_0);
+
+  static closePath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_closePath_Callback";
+  closePath_Callback_2_(mthis, __arg_0, __arg_1) => closePath_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createImageData_Callback_0(mthis) native "CanvasRenderingContext2D_createImageData_Callback";
+  createImageData_Callback_0_(mthis) => createImageData_Callback_0(mthis);
+
+  static createImageData_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_createImageData_Callback";
+  createImageData_Callback_1_(mthis, __arg_0) => createImageData_Callback_1(mthis, __arg_0);
+
+  static createImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createImageData_Callback";
+  createImageData_Callback_2_(mthis, __arg_0, __arg_1) => createImageData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createImageData_Callback";
+  createImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createImageData_Callback";
+  createImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createLinearGradient_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createLinearGradient_Callback";
+  createLinearGradient_Callback_2_(mthis, __arg_0, __arg_1) => createLinearGradient_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createLinearGradient_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createLinearGradient_Callback";
+  createLinearGradient_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createLinearGradient_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createLinearGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createLinearGradient_Callback";
+  createLinearGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createLinearGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createLinearGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_createLinearGradient_Callback";
+  createLinearGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createLinearGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createLinearGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_createLinearGradient_Callback";
+  createLinearGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createLinearGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createPattern_Callback_0(mthis) native "CanvasRenderingContext2D_createPattern_Callback";
+  createPattern_Callback_0_(mthis) => createPattern_Callback_0(mthis);
+
+  static createPattern_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_createPattern_Callback";
+  createPattern_Callback_1_(mthis, __arg_0) => createPattern_Callback_1(mthis, __arg_0);
+
+  static createPattern_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_createPattern_Callback";
+  createPattern_Callback_2_(mthis, __arg_0, __arg_1) => createPattern_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createPattern_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_createPattern_Callback";
+  createPattern_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createPattern_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createPattern_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createPattern_Callback";
+  createPattern_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createPattern_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createRadialGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_createRadialGradient_Callback";
+  createRadialGradient_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createRadialGradient_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createRadialGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_createRadialGradient_Callback";
+  createRadialGradient_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createRadialGradient_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createRadialGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_createRadialGradient_Callback";
+  createRadialGradient_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createRadialGradient_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createRadialGradient_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_createRadialGradient_Callback";
+  createRadialGradient_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createRadialGradient_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createRadialGradient_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_createRadialGradient_Callback";
+  createRadialGradient_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createRadialGradient_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
 
   static currentTransform_Getter(mthis) native "CanvasRenderingContext2D_currentTransform_Getter";
+  currentTransform_Getter_(mthis) => currentTransform_Getter(mthis);
 
-  static currentTransform_Setter(mthis, value) native "CanvasRenderingContext2D_currentTransform_Setter";
+  static currentTransform_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_currentTransform_Setter";
+  currentTransform_Setter_(mthis, __arg_0) => currentTransform_Setter(mthis, __arg_0);
+
+  static drawFocusIfNeeded_Callback_0(mthis) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
+  drawFocusIfNeeded_Callback_0_(mthis) => drawFocusIfNeeded_Callback_0(mthis);
+
+  static drawFocusIfNeeded_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
+  drawFocusIfNeeded_Callback_1_(mthis, __arg_0) => drawFocusIfNeeded_Callback_1(mthis, __arg_0);
+
+  static drawFocusIfNeeded_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
+  drawFocusIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => drawFocusIfNeeded_Callback_2(mthis, __arg_0, __arg_1);
+
+  static drawFocusIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
+  drawFocusIfNeeded_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawFocusIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawFocusIfNeeded_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
+  drawFocusIfNeeded_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawFocusIfNeeded_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawImage_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_1_(mthis, __arg_0) => drawImage_Callback_1(mthis, __arg_0);
+
+  static drawImage_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => drawImage_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static drawImage_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => drawImage_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static drawImage_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_2_(mthis, __arg_0, __arg_1) => drawImage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static drawImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static drawImage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawImage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static drawImage_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => drawImage_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static drawImage_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => drawImage_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static drawImage_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_drawImage_Callback";
+  drawImage_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => drawImage_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_ellipse_Callback";
+  ellipse_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static fillRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fillRect_Callback";
+  fillRect_Callback_2_(mthis, __arg_0, __arg_1) => fillRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static fillRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fillRect_Callback";
+  fillRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fillRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static fillRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fillRect_Callback";
+  fillRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fillRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static fillRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_fillRect_Callback";
+  fillRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => fillRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static fillRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_fillRect_Callback";
+  fillRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => fillRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static fillStyle_Getter(mthis) native "CanvasRenderingContext2D_fillStyle_Getter";
+  fillStyle_Getter_(mthis) => fillStyle_Getter(mthis);
 
-  static fillStyle_Setter(mthis, value) native "CanvasRenderingContext2D_fillStyle_Setter";
+  static fillStyle_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_fillStyle_Setter";
+  fillStyle_Setter_(mthis, __arg_0) => fillStyle_Setter(mthis, __arg_0);
+
+  static fillText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_1_(mthis, __arg_0) => fillText_Callback_1(mthis, __arg_0);
+
+  static fillText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_2_(mthis, __arg_0, __arg_1) => fillText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static fillText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fillText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static fillText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fillText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static fillText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => fillText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static fillText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_fillText_Callback";
+  fillText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => fillText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static fill_Callback_0(mthis) native "CanvasRenderingContext2D_fill_Callback";
+  fill_Callback_0_(mthis) => fill_Callback_0(mthis);
+
+  static fill_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_fill_Callback";
+  fill_Callback_1_(mthis, __arg_0) => fill_Callback_1(mthis, __arg_0);
+
+  static fill_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_fill_Callback";
+  fill_Callback_2_(mthis, __arg_0, __arg_1) => fill_Callback_2(mthis, __arg_0, __arg_1);
+
+  static fill_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_fill_Callback";
+  fill_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fill_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static fill_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_fill_Callback";
+  fill_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fill_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static font_Getter(mthis) native "CanvasRenderingContext2D_font_Getter";
+  font_Getter_(mthis) => font_Getter(mthis);
 
-  static font_Setter(mthis, value) native "CanvasRenderingContext2D_font_Setter";
+  static font_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_font_Setter";
+  font_Setter_(mthis, __arg_0) => font_Setter(mthis, __arg_0);
+
+  static getContextAttributes_Callback_0(mthis) native "CanvasRenderingContext2D_getContextAttributes_Callback";
+  getContextAttributes_Callback_0_(mthis) => getContextAttributes_Callback_0(mthis);
+
+  static getContextAttributes_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_getContextAttributes_Callback";
+  getContextAttributes_Callback_1_(mthis, __arg_0) => getContextAttributes_Callback_1(mthis, __arg_0);
+
+  static getContextAttributes_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getContextAttributes_Callback";
+  getContextAttributes_Callback_2_(mthis, __arg_0, __arg_1) => getContextAttributes_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getImageData_Callback";
+  getImageData_Callback_2_(mthis, __arg_0, __arg_1) => getImageData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_getImageData_Callback";
+  getImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_getImageData_Callback";
+  getImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_getImageData_Callback";
+  getImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_getImageData_Callback";
+  getImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static getLineDash_Callback_0(mthis) native "CanvasRenderingContext2D_getLineDash_Callback";
+  getLineDash_Callback_0_(mthis) => getLineDash_Callback_0(mthis);
+
+  static getLineDash_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_getLineDash_Callback";
+  getLineDash_Callback_1_(mthis, __arg_0) => getLineDash_Callback_1(mthis, __arg_0);
+
+  static getLineDash_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_getLineDash_Callback";
+  getLineDash_Callback_2_(mthis, __arg_0, __arg_1) => getLineDash_Callback_2(mthis, __arg_0, __arg_1);
 
   static globalAlpha_Getter(mthis) native "CanvasRenderingContext2D_globalAlpha_Getter";
+  globalAlpha_Getter_(mthis) => globalAlpha_Getter(mthis);
 
-  static globalAlpha_Setter(mthis, value) native "CanvasRenderingContext2D_globalAlpha_Setter";
+  static globalAlpha_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_globalAlpha_Setter";
+  globalAlpha_Setter_(mthis, __arg_0) => globalAlpha_Setter(mthis, __arg_0);
 
   static globalCompositeOperation_Getter(mthis) native "CanvasRenderingContext2D_globalCompositeOperation_Getter";
+  globalCompositeOperation_Getter_(mthis) => globalCompositeOperation_Getter(mthis);
 
-  static globalCompositeOperation_Setter(mthis, value) native "CanvasRenderingContext2D_globalCompositeOperation_Setter";
+  static globalCompositeOperation_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_globalCompositeOperation_Setter";
+  globalCompositeOperation_Setter_(mthis, __arg_0) => globalCompositeOperation_Setter(mthis, __arg_0);
 
   static imageSmoothingEnabled_Getter(mthis) native "CanvasRenderingContext2D_imageSmoothingEnabled_Getter";
+  imageSmoothingEnabled_Getter_(mthis) => imageSmoothingEnabled_Getter(mthis);
 
-  static imageSmoothingEnabled_Setter(mthis, value) native "CanvasRenderingContext2D_imageSmoothingEnabled_Setter";
+  static imageSmoothingEnabled_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_imageSmoothingEnabled_Setter";
+  imageSmoothingEnabled_Setter_(mthis, __arg_0) => imageSmoothingEnabled_Setter(mthis, __arg_0);
+
+  static isContextLost_Callback_0(mthis) native "CanvasRenderingContext2D_isContextLost_Callback";
+  isContextLost_Callback_0_(mthis) => isContextLost_Callback_0(mthis);
+
+  static isContextLost_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isContextLost_Callback";
+  isContextLost_Callback_1_(mthis, __arg_0) => isContextLost_Callback_1(mthis, __arg_0);
+
+  static isContextLost_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isContextLost_Callback";
+  isContextLost_Callback_2_(mthis, __arg_0, __arg_1) => isContextLost_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInPath_Callback_0(mthis) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_0_(mthis) => isPointInPath_Callback_0(mthis);
+
+  static isPointInPath_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_1_(mthis, __arg_0) => isPointInPath_Callback_1(mthis, __arg_0);
+
+  static isPointInPath_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_2_(mthis, __arg_0, __arg_1) => isPointInPath_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isPointInPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static isPointInPath_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => isPointInPath_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static isPointInPath_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_isPointInPath_Callback";
+  isPointInPath_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => isPointInPath_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static isPointInStroke_Callback_0(mthis) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_0_(mthis) => isPointInStroke_Callback_0(mthis);
+
+  static isPointInStroke_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_1_(mthis, __arg_0) => isPointInStroke_Callback_1(mthis, __arg_0);
+
+  static isPointInStroke_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => isPointInStroke_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isPointInStroke_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInStroke_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static isPointInStroke_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_isPointInStroke_Callback";
+  isPointInStroke_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => isPointInStroke_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static lineCap_Getter(mthis) native "CanvasRenderingContext2D_lineCap_Getter";
+  lineCap_Getter_(mthis) => lineCap_Getter(mthis);
 
-  static lineCap_Setter(mthis, value) native "CanvasRenderingContext2D_lineCap_Setter";
+  static lineCap_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineCap_Setter";
+  lineCap_Setter_(mthis, __arg_0) => lineCap_Setter(mthis, __arg_0);
 
   static lineDashOffset_Getter(mthis) native "CanvasRenderingContext2D_lineDashOffset_Getter";
+  lineDashOffset_Getter_(mthis) => lineDashOffset_Getter(mthis);
 
-  static lineDashOffset_Setter(mthis, value) native "CanvasRenderingContext2D_lineDashOffset_Setter";
+  static lineDashOffset_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineDashOffset_Setter";
+  lineDashOffset_Setter_(mthis, __arg_0) => lineDashOffset_Setter(mthis, __arg_0);
 
   static lineJoin_Getter(mthis) native "CanvasRenderingContext2D_lineJoin_Getter";
+  lineJoin_Getter_(mthis) => lineJoin_Getter(mthis);
 
-  static lineJoin_Setter(mthis, value) native "CanvasRenderingContext2D_lineJoin_Setter";
+  static lineJoin_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineJoin_Setter";
+  lineJoin_Setter_(mthis, __arg_0) => lineJoin_Setter(mthis, __arg_0);
+
+  static lineTo_Callback_0(mthis) native "CanvasRenderingContext2D_lineTo_Callback";
+  lineTo_Callback_0_(mthis) => lineTo_Callback_0(mthis);
+
+  static lineTo_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_lineTo_Callback";
+  lineTo_Callback_1_(mthis, __arg_0) => lineTo_Callback_1(mthis, __arg_0);
+
+  static lineTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_lineTo_Callback";
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => lineTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_lineTo_Callback";
+  lineTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_lineTo_Callback";
+  lineTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static lineWidth_Getter(mthis) native "CanvasRenderingContext2D_lineWidth_Getter";
+  lineWidth_Getter_(mthis) => lineWidth_Getter(mthis);
 
-  static lineWidth_Setter(mthis, value) native "CanvasRenderingContext2D_lineWidth_Setter";
+  static lineWidth_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_lineWidth_Setter";
+  lineWidth_Setter_(mthis, __arg_0) => lineWidth_Setter(mthis, __arg_0);
+
+  static measureText_Callback_0(mthis) native "CanvasRenderingContext2D_measureText_Callback";
+  measureText_Callback_0_(mthis) => measureText_Callback_0(mthis);
+
+  static measureText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_measureText_Callback";
+  measureText_Callback_1_(mthis, __arg_0) => measureText_Callback_1(mthis, __arg_0);
+
+  static measureText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_measureText_Callback";
+  measureText_Callback_2_(mthis, __arg_0, __arg_1) => measureText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static measureText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_measureText_Callback";
+  measureText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => measureText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static miterLimit_Getter(mthis) native "CanvasRenderingContext2D_miterLimit_Getter";
+  miterLimit_Getter_(mthis) => miterLimit_Getter(mthis);
 
-  static miterLimit_Setter(mthis, value) native "CanvasRenderingContext2D_miterLimit_Setter";
+  static miterLimit_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_miterLimit_Setter";
+  miterLimit_Setter_(mthis, __arg_0) => miterLimit_Setter(mthis, __arg_0);
+
+  static moveTo_Callback_0(mthis) native "CanvasRenderingContext2D_moveTo_Callback";
+  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+
+  static moveTo_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_moveTo_Callback";
+  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+
+  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_moveTo_Callback";
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_moveTo_Callback";
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_moveTo_Callback";
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static putImageData_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_1_(mthis, __arg_0) => putImageData_Callback_1(mthis, __arg_0);
+
+  static putImageData_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_2_(mthis, __arg_0, __arg_1) => putImageData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static putImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => putImageData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static putImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => putImageData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static putImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => putImageData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static putImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => putImageData_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static putImageData_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => putImageData_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static putImageData_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => putImageData_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static putImageData_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "CanvasRenderingContext2D_putImageData_Callback";
+  putImageData_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => putImageData_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static rect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_rect_Callback";
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => rect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_rect_Callback";
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_rect_Callback";
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_rect_Callback";
+  rect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_rect_Callback";
+  rect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static removeHitRegion_Callback_0(mthis) native "CanvasRenderingContext2D_removeHitRegion_Callback";
+  removeHitRegion_Callback_0_(mthis) => removeHitRegion_Callback_0(mthis);
+
+  static removeHitRegion_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_removeHitRegion_Callback";
+  removeHitRegion_Callback_1_(mthis, __arg_0) => removeHitRegion_Callback_1(mthis, __arg_0);
+
+  static removeHitRegion_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_removeHitRegion_Callback";
+  removeHitRegion_Callback_2_(mthis, __arg_0, __arg_1) => removeHitRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_removeHitRegion_Callback";
+  removeHitRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeHitRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static resetTransform_Callback_0(mthis) native "CanvasRenderingContext2D_resetTransform_Callback";
+  resetTransform_Callback_0_(mthis) => resetTransform_Callback_0(mthis);
+
+  static resetTransform_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_resetTransform_Callback";
+  resetTransform_Callback_1_(mthis, __arg_0) => resetTransform_Callback_1(mthis, __arg_0);
+
+  static resetTransform_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_resetTransform_Callback";
+  resetTransform_Callback_2_(mthis, __arg_0, __arg_1) => resetTransform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static restore_Callback_0(mthis) native "CanvasRenderingContext2D_restore_Callback";
+  restore_Callback_0_(mthis) => restore_Callback_0(mthis);
+
+  static restore_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_restore_Callback";
+  restore_Callback_1_(mthis, __arg_0) => restore_Callback_1(mthis, __arg_0);
+
+  static restore_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_restore_Callback";
+  restore_Callback_2_(mthis, __arg_0, __arg_1) => restore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotate_Callback_0(mthis) native "CanvasRenderingContext2D_rotate_Callback";
+  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
+
+  static rotate_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_rotate_Callback";
+  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
+
+  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_rotate_Callback";
+  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_rotate_Callback";
+  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static save_Callback_0(mthis) native "CanvasRenderingContext2D_save_Callback";
+  save_Callback_0_(mthis) => save_Callback_0(mthis);
+
+  static save_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_save_Callback";
+  save_Callback_1_(mthis, __arg_0) => save_Callback_1(mthis, __arg_0);
+
+  static save_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_save_Callback";
+  save_Callback_2_(mthis, __arg_0, __arg_1) => save_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scale_Callback_0(mthis) native "CanvasRenderingContext2D_scale_Callback";
+  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
+
+  static scale_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_scale_Callback";
+  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
+
+  static scale_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_scale_Callback";
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_scale_Callback";
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_scale_Callback";
+  scale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scrollPathIntoView_Callback_0(mthis) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
+  scrollPathIntoView_Callback_0_(mthis) => scrollPathIntoView_Callback_0(mthis);
+
+  static scrollPathIntoView_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
+  scrollPathIntoView_Callback_1_(mthis, __arg_0) => scrollPathIntoView_Callback_1(mthis, __arg_0);
+
+  static scrollPathIntoView_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
+  scrollPathIntoView_Callback_2_(mthis, __arg_0, __arg_1) => scrollPathIntoView_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollPathIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
+  scrollPathIntoView_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollPathIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setLineDash_Callback_0(mthis) native "CanvasRenderingContext2D_setLineDash_Callback";
+  setLineDash_Callback_0_(mthis) => setLineDash_Callback_0(mthis);
+
+  static setLineDash_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_setLineDash_Callback";
+  setLineDash_Callback_1_(mthis, __arg_0) => setLineDash_Callback_1(mthis, __arg_0);
+
+  static setLineDash_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_setLineDash_Callback";
+  setLineDash_Callback_2_(mthis, __arg_0, __arg_1) => setLineDash_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setLineDash_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_setLineDash_Callback";
+  setLineDash_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setLineDash_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTransform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_setTransform_Callback";
+  setTransform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTransform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setTransform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_setTransform_Callback";
+  setTransform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setTransform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setTransform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_setTransform_Callback";
+  setTransform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setTransform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static setTransform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_setTransform_Callback";
+  setTransform_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => setTransform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static setTransform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_setTransform_Callback";
+  setTransform_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => setTransform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
 
   static shadowBlur_Getter(mthis) native "CanvasRenderingContext2D_shadowBlur_Getter";
+  shadowBlur_Getter_(mthis) => shadowBlur_Getter(mthis);
 
-  static shadowBlur_Setter(mthis, value) native "CanvasRenderingContext2D_shadowBlur_Setter";
+  static shadowBlur_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowBlur_Setter";
+  shadowBlur_Setter_(mthis, __arg_0) => shadowBlur_Setter(mthis, __arg_0);
 
   static shadowColor_Getter(mthis) native "CanvasRenderingContext2D_shadowColor_Getter";
+  shadowColor_Getter_(mthis) => shadowColor_Getter(mthis);
 
-  static shadowColor_Setter(mthis, value) native "CanvasRenderingContext2D_shadowColor_Setter";
+  static shadowColor_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowColor_Setter";
+  shadowColor_Setter_(mthis, __arg_0) => shadowColor_Setter(mthis, __arg_0);
 
   static shadowOffsetX_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetX_Getter";
+  shadowOffsetX_Getter_(mthis) => shadowOffsetX_Getter(mthis);
 
-  static shadowOffsetX_Setter(mthis, value) native "CanvasRenderingContext2D_shadowOffsetX_Setter";
+  static shadowOffsetX_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowOffsetX_Setter";
+  shadowOffsetX_Setter_(mthis, __arg_0) => shadowOffsetX_Setter(mthis, __arg_0);
 
   static shadowOffsetY_Getter(mthis) native "CanvasRenderingContext2D_shadowOffsetY_Getter";
+  shadowOffsetY_Getter_(mthis) => shadowOffsetY_Getter(mthis);
 
-  static shadowOffsetY_Setter(mthis, value) native "CanvasRenderingContext2D_shadowOffsetY_Setter";
+  static shadowOffsetY_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_shadowOffsetY_Setter";
+  shadowOffsetY_Setter_(mthis, __arg_0) => shadowOffsetY_Setter(mthis, __arg_0);
+
+  static strokeRect_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_strokeRect_Callback";
+  strokeRect_Callback_2_(mthis, __arg_0, __arg_1) => strokeRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static strokeRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_strokeRect_Callback";
+  strokeRect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => strokeRect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static strokeRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_strokeRect_Callback";
+  strokeRect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => strokeRect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static strokeRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_strokeRect_Callback";
+  strokeRect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => strokeRect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static strokeRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_strokeRect_Callback";
+  strokeRect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => strokeRect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static strokeStyle_Getter(mthis) native "CanvasRenderingContext2D_strokeStyle_Getter";
+  strokeStyle_Getter_(mthis) => strokeStyle_Getter(mthis);
 
-  static strokeStyle_Setter(mthis, value) native "CanvasRenderingContext2D_strokeStyle_Setter";
+  static strokeStyle_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_strokeStyle_Setter";
+  strokeStyle_Setter_(mthis, __arg_0) => strokeStyle_Setter(mthis, __arg_0);
+
+  static strokeText_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_1_(mthis, __arg_0) => strokeText_Callback_1(mthis, __arg_0);
+
+  static strokeText_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_2_(mthis, __arg_0, __arg_1) => strokeText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static strokeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => strokeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static strokeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => strokeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static strokeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => strokeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static strokeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_strokeText_Callback";
+  strokeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => strokeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static stroke_Callback_0(mthis) native "CanvasRenderingContext2D_stroke_Callback";
+  stroke_Callback_0_(mthis) => stroke_Callback_0(mthis);
+
+  static stroke_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_stroke_Callback";
+  stroke_Callback_1_(mthis, __arg_0) => stroke_Callback_1(mthis, __arg_0);
+
+  static stroke_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_stroke_Callback";
+  stroke_Callback_2_(mthis, __arg_0, __arg_1) => stroke_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_stroke_Callback";
+  stroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static textAlign_Getter(mthis) native "CanvasRenderingContext2D_textAlign_Getter";
+  textAlign_Getter_(mthis) => textAlign_Getter(mthis);
 
-  static textAlign_Setter(mthis, value) native "CanvasRenderingContext2D_textAlign_Setter";
+  static textAlign_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_textAlign_Setter";
+  textAlign_Setter_(mthis, __arg_0) => textAlign_Setter(mthis, __arg_0);
 
   static textBaseline_Getter(mthis) native "CanvasRenderingContext2D_textBaseline_Getter";
+  textBaseline_Getter_(mthis) => textBaseline_Getter(mthis);
 
-  static textBaseline_Setter(mthis, value) native "CanvasRenderingContext2D_textBaseline_Setter";
+  static textBaseline_Setter(mthis, __arg_0) native "CanvasRenderingContext2D_textBaseline_Setter";
+  textBaseline_Setter_(mthis, __arg_0) => textBaseline_Setter(mthis, __arg_0);
 
-  static addHitRegion_Callback_1(mthis, options) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  static transform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_transform_Callback";
+  transform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static addHitRegion_Callback(mthis) native "CanvasRenderingContext2D_addHitRegion_Callback";
+  static transform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CanvasRenderingContext2D_transform_Callback";
+  transform_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => transform_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static beginPath_Callback(mthis) native "CanvasRenderingContext2D_beginPath_Callback";
+  static transform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CanvasRenderingContext2D_transform_Callback";
+  transform_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => transform_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static clearHitRegions_Callback(mthis) native "CanvasRenderingContext2D_clearHitRegions_Callback";
+  static transform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CanvasRenderingContext2D_transform_Callback";
+  transform_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => transform_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static clearRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_clearRect_Callback";
+  static transform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "CanvasRenderingContext2D_transform_Callback";
+  transform_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => transform_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
 
-  static clip_Callback(mthis) native "CanvasRenderingContext2D_clip_Callback";
+  static translate_Callback_0(mthis) native "CanvasRenderingContext2D_translate_Callback";
+  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
 
-  static clip_Callback_1(mthis, path_OR_winding) native "CanvasRenderingContext2D_clip_Callback";
+  static translate_Callback_1(mthis, __arg_0) native "CanvasRenderingContext2D_translate_Callback";
+  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
 
-  static clip_Callback_2(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_clip_Callback";
+  static translate_Callback_2(mthis, __arg_0, __arg_1) native "CanvasRenderingContext2D_translate_Callback";
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
 
-  static createImageData_Callback_2(mthis, sw, sh) native "CanvasRenderingContext2D_createImageData_Callback";
+  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CanvasRenderingContext2D_translate_Callback";
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static createImageData_Callback_1(mthis, imagedata) native "CanvasRenderingContext2D_createImageData_Callback";
+  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CanvasRenderingContext2D_translate_Callback";
+  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static createLinearGradient_Callback_4(mthis, x0, y0, x1, y1) native "CanvasRenderingContext2D_createLinearGradient_Callback";
-
-  static createPattern_Callback_2(mthis, canvas_OR_image, repetitionType) native "CanvasRenderingContext2D_createPattern_Callback";
-
-  static createRadialGradient_Callback_6(mthis, x0, y0, r0, x1, y1, r1) native "CanvasRenderingContext2D_createRadialGradient_Callback";
-
-  static drawFocusIfNeeded_Callback_1(mthis, element_OR_path) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-
-  static drawFocusIfNeeded_Callback_2(mthis, element_OR_path, element) native "CanvasRenderingContext2D_drawFocusIfNeeded_Callback";
-
-  static drawImage_Callback_3(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y) native "CanvasRenderingContext2D_drawImage_Callback";
-
-  static drawImage_Callback_5(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh) native "CanvasRenderingContext2D_drawImage_Callback";
-
-  static drawImage_Callback_9(mthis, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh) native "CanvasRenderingContext2D_drawImage_Callback";
-
-  static fill_Callback(mthis) native "CanvasRenderingContext2D_fill_Callback";
-
-  static fill_Callback_1(mthis, path_OR_winding) native "CanvasRenderingContext2D_fill_Callback";
-
-  static fill_Callback_2(mthis, path_OR_winding, winding) native "CanvasRenderingContext2D_fill_Callback";
-
-  static fillRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_fillRect_Callback";
-
-  static fillText_Callback_4(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_fillText_Callback";
-
-  static fillText_Callback_3(mthis, text, x, y) native "CanvasRenderingContext2D_fillText_Callback";
-
-  static getContextAttributes_Callback(mthis) native "CanvasRenderingContext2D_getContextAttributes_Callback";
-
-  static getImageData_Callback_4(mthis, sx, sy, sw, sh) native "CanvasRenderingContext2D_getImageData_Callback";
-
-  static getLineDash_Callback(mthis) native "CanvasRenderingContext2D_getLineDash_Callback";
-
-  static isContextLost_Callback(mthis) native "CanvasRenderingContext2D_isContextLost_Callback";
-
-  static isPointInPath_Callback_2(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback";
-
-  static isPointInPath_Callback_3(mthis, path_OR_x, x_OR_y, winding_OR_y) native "CanvasRenderingContext2D_isPointInPath_Callback";
-
-  static isPointInPath_Callback_4(mthis, path_OR_x, x_OR_y, winding_OR_y, winding) native "CanvasRenderingContext2D_isPointInPath_Callback";
-
-  static isPointInStroke_Callback_2(mthis, path_OR_x, x_OR_y) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-
-  static isPointInStroke_Callback_3(mthis, path_OR_x, x_OR_y, y) native "CanvasRenderingContext2D_isPointInStroke_Callback";
-
-  static measureText_Callback_1(mthis, text) native "CanvasRenderingContext2D_measureText_Callback";
-
-  static putImageData_Callback_3(mthis, imagedata, dx, dy) native "CanvasRenderingContext2D_putImageData_Callback";
-
-  static putImageData_Callback_7(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D_putImageData_Callback";
-
-  static removeHitRegion_Callback_1(mthis, id) native "CanvasRenderingContext2D_removeHitRegion_Callback";
-
-  static resetTransform_Callback(mthis) native "CanvasRenderingContext2D_resetTransform_Callback";
-
-  static restore_Callback(mthis) native "CanvasRenderingContext2D_restore_Callback";
-
-  static rotate_Callback_1(mthis, angle) native "CanvasRenderingContext2D_rotate_Callback";
-
-  static save_Callback(mthis) native "CanvasRenderingContext2D_save_Callback";
-
-  static scale_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_scale_Callback";
-
-  static scrollPathIntoView_Callback_1(mthis, path) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-
-  static scrollPathIntoView_Callback(mthis) native "CanvasRenderingContext2D_scrollPathIntoView_Callback";
-
-  static setLineDash_Callback_1(mthis, dash) native "CanvasRenderingContext2D_setLineDash_Callback";
-
-  static setTransform_Callback_6(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_setTransform_Callback";
-
-  static stroke_Callback(mthis) native "CanvasRenderingContext2D_stroke_Callback";
-
-  static stroke_Callback_1(mthis, path) native "CanvasRenderingContext2D_stroke_Callback";
-
-  static strokeRect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_strokeRect_Callback";
-
-  static strokeText_Callback_4(mthis, text, x, y, maxWidth) native "CanvasRenderingContext2D_strokeText_Callback";
-
-  static strokeText_Callback_3(mthis, text, x, y) native "CanvasRenderingContext2D_strokeText_Callback";
-
-  static transform_Callback_6(mthis, a, b, c, d, e, f) native "CanvasRenderingContext2D_transform_Callback";
-
-  static translate_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_translate_Callback";
-
-  static arc_Callback_6(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_arc_Callback";
-
-  static arcTo_Callback_5(mthis, x1, y1, x2, y2, radius) native "CanvasRenderingContext2D_arcTo_Callback";
-
-  static bezierCurveTo_Callback_6(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "CanvasRenderingContext2D_bezierCurveTo_Callback";
-
-  static closePath_Callback(mthis) native "CanvasRenderingContext2D_closePath_Callback";
-
-  static ellipse_Callback_8(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "CanvasRenderingContext2D_ellipse_Callback";
-
-  static lineTo_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_lineTo_Callback";
-
-  static moveTo_Callback_2(mthis, x, y) native "CanvasRenderingContext2D_moveTo_Callback";
-
-  static quadraticCurveTo_Callback_4(mthis, cpx, cpy, x, y) native "CanvasRenderingContext2D_quadraticCurveTo_Callback";
-
-  static rect_Callback_4(mthis, x, y, width, height) native "CanvasRenderingContext2D_rect_Callback";
 }
 
-class BlinkChannelMergerNode {}
+class BlinkChannelMergerNode extends BlinkAudioNode {
+  static final instance = new BlinkChannelMergerNode();
 
-class BlinkChannelSplitterNode {}
-
-class BlinkGeofencingRegion {
-  static id_Getter(mthis) native "GeofencingRegion_id_Getter";
 }
 
-class BlinkCircularRegion {
-  static constructorCallback_1(init) native "CircularRegion_constructorCallback";
+class BlinkChannelSplitterNode extends BlinkAudioNode {
+  static final instance = new BlinkChannelSplitterNode();
+
+}
+
+class BlinkCharacterData extends BlinkNode {
+  static final instance = new BlinkCharacterData();
+
+  static appendData_Callback_0(mthis) native "CharacterData_appendData_Callback";
+  appendData_Callback_0_(mthis) => appendData_Callback_0(mthis);
+
+  static appendData_Callback_1(mthis, __arg_0) native "CharacterData_appendData_Callback";
+  appendData_Callback_1_(mthis, __arg_0) => appendData_Callback_1(mthis, __arg_0);
+
+  static appendData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_appendData_Callback";
+  appendData_Callback_2_(mthis, __arg_0, __arg_1) => appendData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_appendData_Callback";
+  appendData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static data_Getter(mthis) native "CharacterData_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
+
+  static data_Setter(mthis, __arg_0) native "CharacterData_data_Setter";
+  data_Setter_(mthis, __arg_0) => data_Setter(mthis, __arg_0);
+
+  static deleteData_Callback_0(mthis) native "CharacterData_deleteData_Callback";
+  deleteData_Callback_0_(mthis) => deleteData_Callback_0(mthis);
+
+  static deleteData_Callback_1(mthis, __arg_0) native "CharacterData_deleteData_Callback";
+  deleteData_Callback_1_(mthis, __arg_0) => deleteData_Callback_1(mthis, __arg_0);
+
+  static deleteData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_deleteData_Callback";
+  deleteData_Callback_2_(mthis, __arg_0, __arg_1) => deleteData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_deleteData_Callback";
+  deleteData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_deleteData_Callback";
+  deleteData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => deleteData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static insertData_Callback_0(mthis) native "CharacterData_insertData_Callback";
+  insertData_Callback_0_(mthis) => insertData_Callback_0(mthis);
+
+  static insertData_Callback_1(mthis, __arg_0) native "CharacterData_insertData_Callback";
+  insertData_Callback_1_(mthis, __arg_0) => insertData_Callback_1(mthis, __arg_0);
+
+  static insertData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_insertData_Callback";
+  insertData_Callback_2_(mthis, __arg_0, __arg_1) => insertData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_insertData_Callback";
+  insertData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_insertData_Callback";
+  insertData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static length_Getter(mthis) native "CharacterData_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static nextElementSibling_Getter(mthis) native "CharacterData_nextElementSibling_Getter";
+  nextElementSibling_Getter_(mthis) => nextElementSibling_Getter(mthis);
+
+  static previousElementSibling_Getter(mthis) native "CharacterData_previousElementSibling_Getter";
+  previousElementSibling_Getter_(mthis) => previousElementSibling_Getter(mthis);
+
+  static replaceData_Callback_1(mthis, __arg_0) native "CharacterData_replaceData_Callback";
+  replaceData_Callback_1_(mthis, __arg_0) => replaceData_Callback_1(mthis, __arg_0);
+
+  static replaceData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_replaceData_Callback";
+  replaceData_Callback_2_(mthis, __arg_0, __arg_1) => replaceData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replaceData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_replaceData_Callback";
+  replaceData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_replaceData_Callback";
+  replaceData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static replaceData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CharacterData_replaceData_Callback";
+  replaceData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => replaceData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static substringData_Callback_0(mthis) native "CharacterData_substringData_Callback";
+  substringData_Callback_0_(mthis) => substringData_Callback_0(mthis);
+
+  static substringData_Callback_1(mthis, __arg_0) native "CharacterData_substringData_Callback";
+  substringData_Callback_1_(mthis, __arg_0) => substringData_Callback_1(mthis, __arg_0);
+
+  static substringData_Callback_2(mthis, __arg_0, __arg_1) native "CharacterData_substringData_Callback";
+  substringData_Callback_2_(mthis, __arg_0, __arg_1) => substringData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static substringData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CharacterData_substringData_Callback";
+  substringData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => substringData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static substringData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CharacterData_substringData_Callback";
+  substringData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => substringData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkCircularRegion extends BlinkGeofencingRegion {
+  static final instance = new BlinkCircularRegion();
+
+  static constructorCallback_0() native "CircularRegion_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "CircularRegion_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "CircularRegion_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "CircularRegion_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
   static latitude_Getter(mthis) native "CircularRegion_latitude_Getter";
+  latitude_Getter_(mthis) => latitude_Getter(mthis);
 
   static longitude_Getter(mthis) native "CircularRegion_longitude_Getter";
+  longitude_Getter_(mthis) => longitude_Getter(mthis);
 
   static radius_Getter(mthis) native "CircularRegion_radius_Getter";
+  radius_Getter_(mthis) => radius_Getter(mthis);
+
 }
 
 class BlinkClientRect {
+  static final instance = new BlinkClientRect();
+
   static bottom_Getter(mthis) native "ClientRect_bottom_Getter";
+  bottom_Getter_(mthis) => bottom_Getter(mthis);
 
   static height_Getter(mthis) native "ClientRect_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static left_Getter(mthis) native "ClientRect_left_Getter";
+  left_Getter_(mthis) => left_Getter(mthis);
 
   static right_Getter(mthis) native "ClientRect_right_Getter";
+  right_Getter_(mthis) => right_Getter(mthis);
 
   static top_Getter(mthis) native "ClientRect_top_Getter";
+  top_Getter_(mthis) => top_Getter(mthis);
 
   static width_Getter(mthis) native "ClientRect_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
 }
 
 class BlinkClientRectList {
-  static length_Getter(mthis) native "ClientRectList_length_Getter";
+  static final instance = new BlinkClientRectList();
 
-  static item_Callback_1(mthis, index) native "ClientRectList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "ClientRectList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "ClientRectList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "ClientRectList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "ClientRectList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ClientRectList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "ClientRectList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
-class BlinkCloseEvent {
-  static constructorCallback(type, options) native "CloseEvent_constructorCallback";
+class BlinkCloseEvent extends BlinkEvent {
+  static final instance = new BlinkCloseEvent();
 
   static code_Getter(mthis) native "CloseEvent_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "CloseEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static reason_Getter(mthis) native "CloseEvent_reason_Getter";
+  reason_Getter_(mthis) => reason_Getter(mthis);
 
   static wasClean_Getter(mthis) native "CloseEvent_wasClean_Getter";
+  wasClean_Getter_(mthis) => wasClean_Getter(mthis);
+
 }
 
-class BlinkComment {
-  static constructorCallback_1(data) native "Comment_constructorCallback";
+class BlinkComment extends BlinkCharacterData {
+  static final instance = new BlinkComment();
 
-  static constructorCallback() native "Comment_constructorCallback";
+  static constructorCallback_0() native "Comment_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Comment_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Comment_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Comment_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkUIEvent {
-  static constructorCallback(type, options) native "UIEvent_constructorCallback";
-
-  static charCode_Getter(mthis) native "UIEvent_charCode_Getter";
-
-  static detail_Getter(mthis) native "UIEvent_detail_Getter";
-
-  static keyCode_Getter(mthis) native "UIEvent_keyCode_Getter";
-
-  static layerX_Getter(mthis) native "UIEvent_layerX_Getter";
-
-  static layerY_Getter(mthis) native "UIEvent_layerY_Getter";
-
-  static pageX_Getter(mthis) native "UIEvent_pageX_Getter";
-
-  static pageY_Getter(mthis) native "UIEvent_pageY_Getter";
-
-  static view_Getter(mthis) native "UIEvent_view_Getter";
-
-  static which_Getter(mthis) native "UIEvent_which_Getter";
-
-  static initUIEvent_Callback_5(mthis, type, canBubble, cancelable, view, detail) native "UIEvent_initUIEvent_Callback";
-}
-
-class BlinkCompositionEvent {
-  static constructorCallback(type, options) native "CompositionEvent_constructorCallback";
+class BlinkCompositionEvent extends BlinkUIEvent {
+  static final instance = new BlinkCompositionEvent();
 
   static activeSegmentEnd_Getter(mthis) native "CompositionEvent_activeSegmentEnd_Getter";
+  activeSegmentEnd_Getter_(mthis) => activeSegmentEnd_Getter(mthis);
 
   static activeSegmentStart_Getter(mthis) native "CompositionEvent_activeSegmentStart_Getter";
+  activeSegmentStart_Getter_(mthis) => activeSegmentStart_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "CompositionEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static data_Getter(mthis) native "CompositionEvent_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
 
-  static getSegments_Callback(mthis) native "CompositionEvent_getSegments_Callback";
+  static getSegments_Callback_0(mthis) native "CompositionEvent_getSegments_Callback";
+  getSegments_Callback_0_(mthis) => getSegments_Callback_0(mthis);
 
-  static initCompositionEvent_Callback_5(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "CompositionEvent_initCompositionEvent_Callback";
+  static getSegments_Callback_1(mthis, __arg_0) native "CompositionEvent_getSegments_Callback";
+  getSegments_Callback_1_(mthis, __arg_0) => getSegments_Callback_1(mthis, __arg_0);
+
+  static getSegments_Callback_2(mthis, __arg_0, __arg_1) native "CompositionEvent_getSegments_Callback";
+  getSegments_Callback_2_(mthis, __arg_0, __arg_1) => getSegments_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initCompositionEvent_Callback_0(mthis) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_0_(mthis) => initCompositionEvent_Callback_0(mthis);
+
+  static initCompositionEvent_Callback_1(mthis, __arg_0) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_1_(mthis, __arg_0) => initCompositionEvent_Callback_1(mthis, __arg_0);
+
+  static initCompositionEvent_Callback_2(mthis, __arg_0, __arg_1) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_2_(mthis, __arg_0, __arg_1) => initCompositionEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initCompositionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initCompositionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initCompositionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initCompositionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initCompositionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initCompositionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initCompositionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initCompositionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initCompositionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "CompositionEvent_initCompositionEvent_Callback";
+  initCompositionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initCompositionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+}
+
+class BlinkConsole extends BlinkConsoleBase {
+  static final instance = new BlinkConsole();
+
+  static memory_Getter(mthis) native "Console_memory_Getter";
+  memory_Getter_(mthis) => memory_Getter(mthis);
+
 }
 
 class BlinkConsoleBase {
-  static assert_Callback_2(mthis, condition, arg) native "ConsoleBase_assert_Callback";
+  static final instance = new BlinkConsoleBase();
 
-  static clear_Callback_1(mthis, arg) native "ConsoleBase_clear_Callback";
+  static assert_Callback_0(mthis) native "ConsoleBase_assert_Callback";
+  assert_Callback_0_(mthis) => assert_Callback_0(mthis);
 
-  static count_Callback_1(mthis, arg) native "ConsoleBase_count_Callback";
+  static assert_Callback_1(mthis, __arg_0) native "ConsoleBase_assert_Callback";
+  assert_Callback_1_(mthis, __arg_0) => assert_Callback_1(mthis, __arg_0);
 
-  static debug_Callback_1(mthis, arg) native "ConsoleBase_debug_Callback";
+  static assert_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_assert_Callback";
+  assert_Callback_2_(mthis, __arg_0, __arg_1) => assert_Callback_2(mthis, __arg_0, __arg_1);
 
-  static dir_Callback_1(mthis, arg) native "ConsoleBase_dir_Callback";
+  static assert_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_assert_Callback";
+  assert_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => assert_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static dirxml_Callback_1(mthis, arg) native "ConsoleBase_dirxml_Callback";
+  static clear_Callback_0(mthis) native "ConsoleBase_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
 
-  static error_Callback_1(mthis, arg) native "ConsoleBase_error_Callback";
+  static clear_Callback_1(mthis, __arg_0) native "ConsoleBase_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
 
-  static group_Callback_1(mthis, arg) native "ConsoleBase_group_Callback";
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
 
-  static groupCollapsed_Callback_1(mthis, arg) native "ConsoleBase_groupCollapsed_Callback";
+  static count_Callback_0(mthis) native "ConsoleBase_count_Callback";
+  count_Callback_0_(mthis) => count_Callback_0(mthis);
 
-  static groupEnd_Callback(mthis) native "ConsoleBase_groupEnd_Callback";
+  static count_Callback_1(mthis, __arg_0) native "ConsoleBase_count_Callback";
+  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
 
-  static info_Callback_1(mthis, arg) native "ConsoleBase_info_Callback";
+  static count_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_count_Callback";
+  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
 
-  static log_Callback_1(mthis, arg) native "ConsoleBase_log_Callback";
+  static debug_Callback_0(mthis) native "ConsoleBase_debug_Callback";
+  debug_Callback_0_(mthis) => debug_Callback_0(mthis);
 
-  static markTimeline_Callback_1(mthis, title) native "ConsoleBase_markTimeline_Callback";
+  static debug_Callback_1(mthis, __arg_0) native "ConsoleBase_debug_Callback";
+  debug_Callback_1_(mthis, __arg_0) => debug_Callback_1(mthis, __arg_0);
 
-  static profile_Callback_1(mthis, title) native "ConsoleBase_profile_Callback";
+  static debug_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_debug_Callback";
+  debug_Callback_2_(mthis, __arg_0, __arg_1) => debug_Callback_2(mthis, __arg_0, __arg_1);
 
-  static profileEnd_Callback_1(mthis, title) native "ConsoleBase_profileEnd_Callback";
+  static dir_Callback_0(mthis) native "ConsoleBase_dir_Callback";
+  dir_Callback_0_(mthis) => dir_Callback_0(mthis);
 
-  static table_Callback_1(mthis, arg) native "ConsoleBase_table_Callback";
+  static dir_Callback_1(mthis, __arg_0) native "ConsoleBase_dir_Callback";
+  dir_Callback_1_(mthis, __arg_0) => dir_Callback_1(mthis, __arg_0);
 
-  static time_Callback_1(mthis, title) native "ConsoleBase_time_Callback";
+  static dir_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_dir_Callback";
+  dir_Callback_2_(mthis, __arg_0, __arg_1) => dir_Callback_2(mthis, __arg_0, __arg_1);
 
-  static timeEnd_Callback_1(mthis, title) native "ConsoleBase_timeEnd_Callback";
+  static dirxml_Callback_0(mthis) native "ConsoleBase_dirxml_Callback";
+  dirxml_Callback_0_(mthis) => dirxml_Callback_0(mthis);
 
-  static timeStamp_Callback_1(mthis, title) native "ConsoleBase_timeStamp_Callback";
+  static dirxml_Callback_1(mthis, __arg_0) native "ConsoleBase_dirxml_Callback";
+  dirxml_Callback_1_(mthis, __arg_0) => dirxml_Callback_1(mthis, __arg_0);
 
-  static timeline_Callback_1(mthis, title) native "ConsoleBase_timeline_Callback";
+  static dirxml_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_dirxml_Callback";
+  dirxml_Callback_2_(mthis, __arg_0, __arg_1) => dirxml_Callback_2(mthis, __arg_0, __arg_1);
 
-  static timelineEnd_Callback_1(mthis, title) native "ConsoleBase_timelineEnd_Callback";
+  static error_Callback_0(mthis) native "ConsoleBase_error_Callback";
+  error_Callback_0_(mthis) => error_Callback_0(mthis);
 
-  static trace_Callback_1(mthis, arg) native "ConsoleBase_trace_Callback";
+  static error_Callback_1(mthis, __arg_0) native "ConsoleBase_error_Callback";
+  error_Callback_1_(mthis, __arg_0) => error_Callback_1(mthis, __arg_0);
 
-  static warn_Callback_1(mthis, arg) native "ConsoleBase_warn_Callback";
+  static error_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_error_Callback";
+  error_Callback_2_(mthis, __arg_0, __arg_1) => error_Callback_2(mthis, __arg_0, __arg_1);
+
+  static groupCollapsed_Callback_0(mthis) native "ConsoleBase_groupCollapsed_Callback";
+  groupCollapsed_Callback_0_(mthis) => groupCollapsed_Callback_0(mthis);
+
+  static groupCollapsed_Callback_1(mthis, __arg_0) native "ConsoleBase_groupCollapsed_Callback";
+  groupCollapsed_Callback_1_(mthis, __arg_0) => groupCollapsed_Callback_1(mthis, __arg_0);
+
+  static groupCollapsed_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_groupCollapsed_Callback";
+  groupCollapsed_Callback_2_(mthis, __arg_0, __arg_1) => groupCollapsed_Callback_2(mthis, __arg_0, __arg_1);
+
+  static groupEnd_Callback_0(mthis) native "ConsoleBase_groupEnd_Callback";
+  groupEnd_Callback_0_(mthis) => groupEnd_Callback_0(mthis);
+
+  static groupEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_groupEnd_Callback";
+  groupEnd_Callback_1_(mthis, __arg_0) => groupEnd_Callback_1(mthis, __arg_0);
+
+  static groupEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_groupEnd_Callback";
+  groupEnd_Callback_2_(mthis, __arg_0, __arg_1) => groupEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static group_Callback_0(mthis) native "ConsoleBase_group_Callback";
+  group_Callback_0_(mthis) => group_Callback_0(mthis);
+
+  static group_Callback_1(mthis, __arg_0) native "ConsoleBase_group_Callback";
+  group_Callback_1_(mthis, __arg_0) => group_Callback_1(mthis, __arg_0);
+
+  static group_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_group_Callback";
+  group_Callback_2_(mthis, __arg_0, __arg_1) => group_Callback_2(mthis, __arg_0, __arg_1);
+
+  static info_Callback_0(mthis) native "ConsoleBase_info_Callback";
+  info_Callback_0_(mthis) => info_Callback_0(mthis);
+
+  static info_Callback_1(mthis, __arg_0) native "ConsoleBase_info_Callback";
+  info_Callback_1_(mthis, __arg_0) => info_Callback_1(mthis, __arg_0);
+
+  static info_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_info_Callback";
+  info_Callback_2_(mthis, __arg_0, __arg_1) => info_Callback_2(mthis, __arg_0, __arg_1);
+
+  static log_Callback_0(mthis) native "ConsoleBase_log_Callback";
+  log_Callback_0_(mthis) => log_Callback_0(mthis);
+
+  static log_Callback_1(mthis, __arg_0) native "ConsoleBase_log_Callback";
+  log_Callback_1_(mthis, __arg_0) => log_Callback_1(mthis, __arg_0);
+
+  static log_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_log_Callback";
+  log_Callback_2_(mthis, __arg_0, __arg_1) => log_Callback_2(mthis, __arg_0, __arg_1);
+
+  static markTimeline_Callback_0(mthis) native "ConsoleBase_markTimeline_Callback";
+  markTimeline_Callback_0_(mthis) => markTimeline_Callback_0(mthis);
+
+  static markTimeline_Callback_1(mthis, __arg_0) native "ConsoleBase_markTimeline_Callback";
+  markTimeline_Callback_1_(mthis, __arg_0) => markTimeline_Callback_1(mthis, __arg_0);
+
+  static markTimeline_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_markTimeline_Callback";
+  markTimeline_Callback_2_(mthis, __arg_0, __arg_1) => markTimeline_Callback_2(mthis, __arg_0, __arg_1);
+
+  static markTimeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_markTimeline_Callback";
+  markTimeline_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => markTimeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static profileEnd_Callback_0(mthis) native "ConsoleBase_profileEnd_Callback";
+  profileEnd_Callback_0_(mthis) => profileEnd_Callback_0(mthis);
+
+  static profileEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_profileEnd_Callback";
+  profileEnd_Callback_1_(mthis, __arg_0) => profileEnd_Callback_1(mthis, __arg_0);
+
+  static profileEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_profileEnd_Callback";
+  profileEnd_Callback_2_(mthis, __arg_0, __arg_1) => profileEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static profileEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_profileEnd_Callback";
+  profileEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => profileEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static profile_Callback_0(mthis) native "ConsoleBase_profile_Callback";
+  profile_Callback_0_(mthis) => profile_Callback_0(mthis);
+
+  static profile_Callback_1(mthis, __arg_0) native "ConsoleBase_profile_Callback";
+  profile_Callback_1_(mthis, __arg_0) => profile_Callback_1(mthis, __arg_0);
+
+  static profile_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_profile_Callback";
+  profile_Callback_2_(mthis, __arg_0, __arg_1) => profile_Callback_2(mthis, __arg_0, __arg_1);
+
+  static profile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_profile_Callback";
+  profile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => profile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static table_Callback_0(mthis) native "ConsoleBase_table_Callback";
+  table_Callback_0_(mthis) => table_Callback_0(mthis);
+
+  static table_Callback_1(mthis, __arg_0) native "ConsoleBase_table_Callback";
+  table_Callback_1_(mthis, __arg_0) => table_Callback_1(mthis, __arg_0);
+
+  static table_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_table_Callback";
+  table_Callback_2_(mthis, __arg_0, __arg_1) => table_Callback_2(mthis, __arg_0, __arg_1);
+
+  static timeEnd_Callback_0(mthis) native "ConsoleBase_timeEnd_Callback";
+  timeEnd_Callback_0_(mthis) => timeEnd_Callback_0(mthis);
+
+  static timeEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_timeEnd_Callback";
+  timeEnd_Callback_1_(mthis, __arg_0) => timeEnd_Callback_1(mthis, __arg_0);
+
+  static timeEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeEnd_Callback";
+  timeEnd_Callback_2_(mthis, __arg_0, __arg_1) => timeEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static timeEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeEnd_Callback";
+  timeEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static timeStamp_Callback_0(mthis) native "ConsoleBase_timeStamp_Callback";
+  timeStamp_Callback_0_(mthis) => timeStamp_Callback_0(mthis);
+
+  static timeStamp_Callback_1(mthis, __arg_0) native "ConsoleBase_timeStamp_Callback";
+  timeStamp_Callback_1_(mthis, __arg_0) => timeStamp_Callback_1(mthis, __arg_0);
+
+  static timeStamp_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeStamp_Callback";
+  timeStamp_Callback_2_(mthis, __arg_0, __arg_1) => timeStamp_Callback_2(mthis, __arg_0, __arg_1);
+
+  static timeStamp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeStamp_Callback";
+  timeStamp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeStamp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static time_Callback_0(mthis) native "ConsoleBase_time_Callback";
+  time_Callback_0_(mthis) => time_Callback_0(mthis);
+
+  static time_Callback_1(mthis, __arg_0) native "ConsoleBase_time_Callback";
+  time_Callback_1_(mthis, __arg_0) => time_Callback_1(mthis, __arg_0);
+
+  static time_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_time_Callback";
+  time_Callback_2_(mthis, __arg_0, __arg_1) => time_Callback_2(mthis, __arg_0, __arg_1);
+
+  static time_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_time_Callback";
+  time_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => time_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static timelineEnd_Callback_0(mthis) native "ConsoleBase_timelineEnd_Callback";
+  timelineEnd_Callback_0_(mthis) => timelineEnd_Callback_0(mthis);
+
+  static timelineEnd_Callback_1(mthis, __arg_0) native "ConsoleBase_timelineEnd_Callback";
+  timelineEnd_Callback_1_(mthis, __arg_0) => timelineEnd_Callback_1(mthis, __arg_0);
+
+  static timelineEnd_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timelineEnd_Callback";
+  timelineEnd_Callback_2_(mthis, __arg_0, __arg_1) => timelineEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static timelineEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timelineEnd_Callback";
+  timelineEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timelineEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static timeline_Callback_0(mthis) native "ConsoleBase_timeline_Callback";
+  timeline_Callback_0_(mthis) => timeline_Callback_0(mthis);
+
+  static timeline_Callback_1(mthis, __arg_0) native "ConsoleBase_timeline_Callback";
+  timeline_Callback_1_(mthis, __arg_0) => timeline_Callback_1(mthis, __arg_0);
+
+  static timeline_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_timeline_Callback";
+  timeline_Callback_2_(mthis, __arg_0, __arg_1) => timeline_Callback_2(mthis, __arg_0, __arg_1);
+
+  static timeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ConsoleBase_timeline_Callback";
+  timeline_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => timeline_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static trace_Callback_0(mthis) native "ConsoleBase_trace_Callback";
+  trace_Callback_0_(mthis) => trace_Callback_0(mthis);
+
+  static trace_Callback_1(mthis, __arg_0) native "ConsoleBase_trace_Callback";
+  trace_Callback_1_(mthis, __arg_0) => trace_Callback_1(mthis, __arg_0);
+
+  static trace_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_trace_Callback";
+  trace_Callback_2_(mthis, __arg_0, __arg_1) => trace_Callback_2(mthis, __arg_0, __arg_1);
+
+  static warn_Callback_0(mthis) native "ConsoleBase_warn_Callback";
+  warn_Callback_0_(mthis) => warn_Callback_0(mthis);
+
+  static warn_Callback_1(mthis, __arg_0) native "ConsoleBase_warn_Callback";
+  warn_Callback_1_(mthis, __arg_0) => warn_Callback_1(mthis, __arg_0);
+
+  static warn_Callback_2(mthis, __arg_0, __arg_1) native "ConsoleBase_warn_Callback";
+  warn_Callback_2_(mthis, __arg_0, __arg_1) => warn_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkConsole {
-  static memory_Getter(mthis) native "Console_memory_Getter";
-}
+class BlinkConvolverNode extends BlinkAudioNode {
+  static final instance = new BlinkConvolverNode();
 
-class BlinkConvolverNode {
   static buffer_Getter(mthis) native "ConvolverNode_buffer_Getter";
+  buffer_Getter_(mthis) => buffer_Getter(mthis);
 
-  static buffer_Setter(mthis, value) native "ConvolverNode_buffer_Setter";
+  static buffer_Setter(mthis, __arg_0) native "ConvolverNode_buffer_Setter";
+  buffer_Setter_(mthis, __arg_0) => buffer_Setter(mthis, __arg_0);
 
   static normalize_Getter(mthis) native "ConvolverNode_normalize_Getter";
+  normalize_Getter_(mthis) => normalize_Getter(mthis);
 
-  static normalize_Setter(mthis, value) native "ConvolverNode_normalize_Setter";
+  static normalize_Setter(mthis, __arg_0) native "ConvolverNode_normalize_Setter";
+  normalize_Setter_(mthis, __arg_0) => normalize_Setter(mthis, __arg_0);
+
 }
 
 class BlinkCoordinates {
-  static accuracy_Getter(mthis) native "Coordinates_accuracy_Getter";
+  static final instance = new BlinkCoordinates();
 
-  static altitude_Getter(mthis) native "Coordinates_altitude_Getter";
+  static accuracy_Getter(mthis) native "Coordinates_accuracy_Getter";
+  accuracy_Getter_(mthis) => accuracy_Getter(mthis);
 
   static altitudeAccuracy_Getter(mthis) native "Coordinates_altitudeAccuracy_Getter";
+  altitudeAccuracy_Getter_(mthis) => altitudeAccuracy_Getter(mthis);
+
+  static altitude_Getter(mthis) native "Coordinates_altitude_Getter";
+  altitude_Getter_(mthis) => altitude_Getter(mthis);
 
   static heading_Getter(mthis) native "Coordinates_heading_Getter";
+  heading_Getter_(mthis) => heading_Getter(mthis);
 
   static latitude_Getter(mthis) native "Coordinates_latitude_Getter";
+  latitude_Getter_(mthis) => latitude_Getter(mthis);
 
   static longitude_Getter(mthis) native "Coordinates_longitude_Getter";
+  longitude_Getter_(mthis) => longitude_Getter(mthis);
 
   static speed_Getter(mthis) native "Coordinates_speed_Getter";
+  speed_Getter_(mthis) => speed_Getter(mthis);
+
 }
 
-class BlinkCounter {}
+class BlinkCounter {
+  static final instance = new BlinkCounter();
+
+  static identifier_Getter(mthis) native "Counter_identifier_Getter";
+  identifier_Getter_(mthis) => identifier_Getter(mthis);
+
+  static listStyle_Getter(mthis) native "Counter_listStyle_Getter";
+  listStyle_Getter_(mthis) => listStyle_Getter(mthis);
+
+  static separator_Getter(mthis) native "Counter_separator_Getter";
+  separator_Getter_(mthis) => separator_Getter(mthis);
+
+}
 
 class BlinkCredential {
+  static final instance = new BlinkCredential();
+
   static avatarURL_Getter(mthis) native "Credential_avatarURL_Getter";
+  avatarURL_Getter_(mthis) => avatarURL_Getter(mthis);
 
   static id_Getter(mthis) native "Credential_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static name_Getter(mthis) native "Credential_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
 }
 
 class BlinkCredentialsContainer {
-  static notifyFailedSignIn_Callback_1(mthis, credential) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  static final instance = new BlinkCredentialsContainer();
 
-  static notifyFailedSignIn_Callback(mthis) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  static notifyFailedSignIn_Callback_0(mthis) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  notifyFailedSignIn_Callback_0_(mthis) => notifyFailedSignIn_Callback_0(mthis);
 
-  static notifySignedIn_Callback_1(mthis, credential) native "CredentialsContainer_notifySignedIn_Callback";
+  static notifyFailedSignIn_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  notifyFailedSignIn_Callback_1_(mthis, __arg_0) => notifyFailedSignIn_Callback_1(mthis, __arg_0);
 
-  static notifySignedIn_Callback(mthis) native "CredentialsContainer_notifySignedIn_Callback";
+  static notifyFailedSignIn_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  notifyFailedSignIn_Callback_2_(mthis, __arg_0, __arg_1) => notifyFailedSignIn_Callback_2(mthis, __arg_0, __arg_1);
 
-  static notifySignedOut_Callback(mthis) native "CredentialsContainer_notifySignedOut_Callback";
+  static notifyFailedSignIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_notifyFailedSignIn_Callback";
+  notifyFailedSignIn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => notifyFailedSignIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static request_Callback_1(mthis, options) native "CredentialsContainer_request_Callback";
+  static notifySignedIn_Callback_0(mthis) native "CredentialsContainer_notifySignedIn_Callback";
+  notifySignedIn_Callback_0_(mthis) => notifySignedIn_Callback_0(mthis);
 
-  static request_Callback(mthis) native "CredentialsContainer_request_Callback";
+  static notifySignedIn_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifySignedIn_Callback";
+  notifySignedIn_Callback_1_(mthis, __arg_0) => notifySignedIn_Callback_1(mthis, __arg_0);
+
+  static notifySignedIn_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifySignedIn_Callback";
+  notifySignedIn_Callback_2_(mthis, __arg_0, __arg_1) => notifySignedIn_Callback_2(mthis, __arg_0, __arg_1);
+
+  static notifySignedIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_notifySignedIn_Callback";
+  notifySignedIn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => notifySignedIn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static notifySignedOut_Callback_0(mthis) native "CredentialsContainer_notifySignedOut_Callback";
+  notifySignedOut_Callback_0_(mthis) => notifySignedOut_Callback_0(mthis);
+
+  static notifySignedOut_Callback_1(mthis, __arg_0) native "CredentialsContainer_notifySignedOut_Callback";
+  notifySignedOut_Callback_1_(mthis, __arg_0) => notifySignedOut_Callback_1(mthis, __arg_0);
+
+  static notifySignedOut_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_notifySignedOut_Callback";
+  notifySignedOut_Callback_2_(mthis, __arg_0, __arg_1) => notifySignedOut_Callback_2(mthis, __arg_0, __arg_1);
+
+  static request_Callback_0(mthis) native "CredentialsContainer_request_Callback";
+  request_Callback_0_(mthis) => request_Callback_0(mthis);
+
+  static request_Callback_1(mthis, __arg_0) native "CredentialsContainer_request_Callback";
+  request_Callback_1_(mthis, __arg_0) => request_Callback_1(mthis, __arg_0);
+
+  static request_Callback_2(mthis, __arg_0, __arg_1) native "CredentialsContainer_request_Callback";
+  request_Callback_2_(mthis, __arg_0, __arg_1) => request_Callback_2(mthis, __arg_0, __arg_1);
+
+  static request_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CredentialsContainer_request_Callback";
+  request_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => request_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkCrypto {
-  static subtle_Getter(mthis) native "Crypto_subtle_Getter";
+  static final instance = new BlinkCrypto();
 
-  static getRandomValues_Callback_1(mthis, array) native "Crypto_getRandomValues_Callback";
+  static getRandomValues_Callback_0(mthis) native "Crypto_getRandomValues_Callback";
+  getRandomValues_Callback_0_(mthis) => getRandomValues_Callback_0(mthis);
+
+  static getRandomValues_Callback_1(mthis, __arg_0) native "Crypto_getRandomValues_Callback";
+  getRandomValues_Callback_1_(mthis, __arg_0) => getRandomValues_Callback_1(mthis, __arg_0);
+
+  static getRandomValues_Callback_2(mthis, __arg_0, __arg_1) native "Crypto_getRandomValues_Callback";
+  getRandomValues_Callback_2_(mthis, __arg_0, __arg_1) => getRandomValues_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRandomValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Crypto_getRandomValues_Callback";
+  getRandomValues_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRandomValues_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static subtle_Getter(mthis) native "Crypto_subtle_Getter";
+  subtle_Getter_(mthis) => subtle_Getter(mthis);
+
 }
 
 class BlinkCryptoKey {
+  static final instance = new BlinkCryptoKey();
+
   static algorithm_Getter(mthis) native "CryptoKey_algorithm_Getter";
+  algorithm_Getter_(mthis) => algorithm_Getter(mthis);
 
   static extractable_Getter(mthis) native "CryptoKey_extractable_Getter";
+  extractable_Getter_(mthis) => extractable_Getter(mthis);
 
   static type_Getter(mthis) native "CryptoKey_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static usages_Getter(mthis) native "CryptoKey_usages_Getter";
+  usages_Getter_(mthis) => usages_Getter(mthis);
+
 }
 
-class BlinkCustomEvent {
-  static constructorCallback(type, options) native "CustomEvent_constructorCallback";
+class BlinkCustomEvent extends BlinkEvent {
+  static final instance = new BlinkCustomEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "CustomEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static detail_Getter(mthis) native "CustomEvent_detail_Getter";
+  detail_Getter_(mthis) => detail_Getter(mthis);
 
-  static initCustomEvent_Callback_4(mthis, typeArg, canBubbleArg, cancelableArg, detailArg) native "CustomEvent_initCustomEvent_Callback";
+  static initCustomEvent_Callback_0(mthis) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_0_(mthis) => initCustomEvent_Callback_0(mthis);
+
+  static initCustomEvent_Callback_1(mthis, __arg_0) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_1_(mthis, __arg_0) => initCustomEvent_Callback_1(mthis, __arg_0);
+
+  static initCustomEvent_Callback_2(mthis, __arg_0, __arg_1) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_2_(mthis, __arg_0, __arg_1) => initCustomEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initCustomEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initCustomEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initCustomEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initCustomEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initCustomEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initCustomEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initCustomEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "CustomEvent_initCustomEvent_Callback";
+  initCustomEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initCustomEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
 }
 
 class BlinkDOMError {
-  static constructorCallback_2(name, message) native "DOMError_constructorCallback";
+  static final instance = new BlinkDOMError();
+
+  static constructorCallback_0() native "DOMError_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "DOMError_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMError_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMError_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMError_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static message_Getter(mthis) native "DOMError_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
 
   static name_Getter(mthis) native "DOMError_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
 }
 
 class BlinkDOMException {
+  static final instance = new BlinkDOMException();
+
   static message_Getter(mthis) native "DOMException_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
 
   static name_Getter(mthis) native "DOMException_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static toString_Callback(mthis) native "DOMException_toString_Callback";
+  static toString_Callback_0(mthis) native "DOMException_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+
+  static toString_Callback_1(mthis, __arg_0) native "DOMException_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "DOMException_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkDOMFileSystem {
+  static final instance = new BlinkDOMFileSystem();
+
   static name_Getter(mthis) native "DOMFileSystem_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static root_Getter(mthis) native "DOMFileSystem_root_Getter";
+  root_Getter_(mthis) => root_Getter(mthis);
+
 }
 
-class BlinkDOMFileSystemSync {}
+class BlinkDOMFileSystemSync {
+  static final instance = new BlinkDOMFileSystemSync();
+
+  static name_Getter(mthis) native "DOMFileSystemSync_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static root_Getter(mthis) native "DOMFileSystemSync_root_Getter";
+  root_Getter_(mthis) => root_Getter(mthis);
+
+}
 
 class BlinkDOMImplementation {
-  static createDocument_Callback_3(mthis, namespaceURI, qualifiedName, doctype) native "DOMImplementation_createDocument_Callback";
+  static final instance = new BlinkDOMImplementation();
 
-  static createDocumentType_Callback_3(mthis, qualifiedName, publicId, systemId) native "DOMImplementation_createDocumentType_Callback";
+  static createDocumentType_Callback_1(mthis, __arg_0) native "DOMImplementation_createDocumentType_Callback";
+  createDocumentType_Callback_1_(mthis, __arg_0) => createDocumentType_Callback_1(mthis, __arg_0);
 
-  static createHTMLDocument_Callback_1(mthis, title) native "DOMImplementation_createHTMLDocument_Callback";
+  static createDocumentType_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createDocumentType_Callback";
+  createDocumentType_Callback_2_(mthis, __arg_0, __arg_1) => createDocumentType_Callback_2(mthis, __arg_0, __arg_1);
 
-  static hasFeature_Callback_2(mthis, feature, version) native "DOMImplementation_hasFeature_Callback";
+  static createDocumentType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createDocumentType_Callback";
+  createDocumentType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDocumentType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDocumentType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_createDocumentType_Callback";
+  createDocumentType_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDocumentType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createDocumentType_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMImplementation_createDocumentType_Callback";
+  createDocumentType_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createDocumentType_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createDocument_Callback_0(mthis) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_0_(mthis) => createDocument_Callback_0(mthis);
+
+  static createDocument_Callback_1(mthis, __arg_0) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_1_(mthis, __arg_0) => createDocument_Callback_1(mthis, __arg_0);
+
+  static createDocument_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_2_(mthis, __arg_0, __arg_1) => createDocument_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDocument_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDocument_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createDocument_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMImplementation_createDocument_Callback";
+  createDocument_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createDocument_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createHTMLDocument_Callback_0(mthis) native "DOMImplementation_createHTMLDocument_Callback";
+  createHTMLDocument_Callback_0_(mthis) => createHTMLDocument_Callback_0(mthis);
+
+  static createHTMLDocument_Callback_1(mthis, __arg_0) native "DOMImplementation_createHTMLDocument_Callback";
+  createHTMLDocument_Callback_1_(mthis, __arg_0) => createHTMLDocument_Callback_1(mthis, __arg_0);
+
+  static createHTMLDocument_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_createHTMLDocument_Callback";
+  createHTMLDocument_Callback_2_(mthis, __arg_0, __arg_1) => createHTMLDocument_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createHTMLDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_createHTMLDocument_Callback";
+  createHTMLDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createHTMLDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasFeature_Callback_0(mthis) native "DOMImplementation_hasFeature_Callback";
+  hasFeature_Callback_0_(mthis) => hasFeature_Callback_0(mthis);
+
+  static hasFeature_Callback_1(mthis, __arg_0) native "DOMImplementation_hasFeature_Callback";
+  hasFeature_Callback_1_(mthis, __arg_0) => hasFeature_Callback_1(mthis, __arg_0);
+
+  static hasFeature_Callback_2(mthis, __arg_0, __arg_1) native "DOMImplementation_hasFeature_Callback";
+  hasFeature_Callback_2_(mthis, __arg_0, __arg_1) => hasFeature_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasFeature_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMImplementation_hasFeature_Callback";
+  hasFeature_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasFeature_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasFeature_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMImplementation_hasFeature_Callback";
+  hasFeature_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hasFeature_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkDOMMatrix extends BlinkDOMMatrixReadOnly {
+  static final instance = new BlinkDOMMatrix();
+
+  static a_Getter(mthis) native "DOMMatrix_a_Getter";
+  a_Getter_(mthis) => a_Getter(mthis);
+
+  static a_Setter(mthis, __arg_0) native "DOMMatrix_a_Setter";
+  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
+
+  static b_Getter(mthis) native "DOMMatrix_b_Getter";
+  b_Getter_(mthis) => b_Getter(mthis);
+
+  static b_Setter(mthis, __arg_0) native "DOMMatrix_b_Setter";
+  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
+
+  static c_Getter(mthis) native "DOMMatrix_c_Getter";
+  c_Getter_(mthis) => c_Getter(mthis);
+
+  static c_Setter(mthis, __arg_0) native "DOMMatrix_c_Setter";
+  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
+
+  static constructorCallback_0() native "DOMMatrix_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "DOMMatrix_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMMatrix_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMMatrix_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static d_Getter(mthis) native "DOMMatrix_d_Getter";
+  d_Getter_(mthis) => d_Getter(mthis);
+
+  static d_Setter(mthis, __arg_0) native "DOMMatrix_d_Setter";
+  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
+
+  static e_Getter(mthis) native "DOMMatrix_e_Getter";
+  e_Getter_(mthis) => e_Getter(mthis);
+
+  static e_Setter(mthis, __arg_0) native "DOMMatrix_e_Setter";
+  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
+
+  static f_Getter(mthis) native "DOMMatrix_f_Getter";
+  f_Getter_(mthis) => f_Getter(mthis);
+
+  static f_Setter(mthis, __arg_0) native "DOMMatrix_f_Setter";
+  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
+
+  static m11_Getter(mthis) native "DOMMatrix_m11_Getter";
+  m11_Getter_(mthis) => m11_Getter(mthis);
+
+  static m11_Setter(mthis, __arg_0) native "DOMMatrix_m11_Setter";
+  m11_Setter_(mthis, __arg_0) => m11_Setter(mthis, __arg_0);
+
+  static m12_Getter(mthis) native "DOMMatrix_m12_Getter";
+  m12_Getter_(mthis) => m12_Getter(mthis);
+
+  static m12_Setter(mthis, __arg_0) native "DOMMatrix_m12_Setter";
+  m12_Setter_(mthis, __arg_0) => m12_Setter(mthis, __arg_0);
+
+  static m13_Getter(mthis) native "DOMMatrix_m13_Getter";
+  m13_Getter_(mthis) => m13_Getter(mthis);
+
+  static m13_Setter(mthis, __arg_0) native "DOMMatrix_m13_Setter";
+  m13_Setter_(mthis, __arg_0) => m13_Setter(mthis, __arg_0);
+
+  static m14_Getter(mthis) native "DOMMatrix_m14_Getter";
+  m14_Getter_(mthis) => m14_Getter(mthis);
+
+  static m14_Setter(mthis, __arg_0) native "DOMMatrix_m14_Setter";
+  m14_Setter_(mthis, __arg_0) => m14_Setter(mthis, __arg_0);
+
+  static m21_Getter(mthis) native "DOMMatrix_m21_Getter";
+  m21_Getter_(mthis) => m21_Getter(mthis);
+
+  static m21_Setter(mthis, __arg_0) native "DOMMatrix_m21_Setter";
+  m21_Setter_(mthis, __arg_0) => m21_Setter(mthis, __arg_0);
+
+  static m22_Getter(mthis) native "DOMMatrix_m22_Getter";
+  m22_Getter_(mthis) => m22_Getter(mthis);
+
+  static m22_Setter(mthis, __arg_0) native "DOMMatrix_m22_Setter";
+  m22_Setter_(mthis, __arg_0) => m22_Setter(mthis, __arg_0);
+
+  static m23_Getter(mthis) native "DOMMatrix_m23_Getter";
+  m23_Getter_(mthis) => m23_Getter(mthis);
+
+  static m23_Setter(mthis, __arg_0) native "DOMMatrix_m23_Setter";
+  m23_Setter_(mthis, __arg_0) => m23_Setter(mthis, __arg_0);
+
+  static m24_Getter(mthis) native "DOMMatrix_m24_Getter";
+  m24_Getter_(mthis) => m24_Getter(mthis);
+
+  static m24_Setter(mthis, __arg_0) native "DOMMatrix_m24_Setter";
+  m24_Setter_(mthis, __arg_0) => m24_Setter(mthis, __arg_0);
+
+  static m31_Getter(mthis) native "DOMMatrix_m31_Getter";
+  m31_Getter_(mthis) => m31_Getter(mthis);
+
+  static m31_Setter(mthis, __arg_0) native "DOMMatrix_m31_Setter";
+  m31_Setter_(mthis, __arg_0) => m31_Setter(mthis, __arg_0);
+
+  static m32_Getter(mthis) native "DOMMatrix_m32_Getter";
+  m32_Getter_(mthis) => m32_Getter(mthis);
+
+  static m32_Setter(mthis, __arg_0) native "DOMMatrix_m32_Setter";
+  m32_Setter_(mthis, __arg_0) => m32_Setter(mthis, __arg_0);
+
+  static m33_Getter(mthis) native "DOMMatrix_m33_Getter";
+  m33_Getter_(mthis) => m33_Getter(mthis);
+
+  static m33_Setter(mthis, __arg_0) native "DOMMatrix_m33_Setter";
+  m33_Setter_(mthis, __arg_0) => m33_Setter(mthis, __arg_0);
+
+  static m34_Getter(mthis) native "DOMMatrix_m34_Getter";
+  m34_Getter_(mthis) => m34_Getter(mthis);
+
+  static m34_Setter(mthis, __arg_0) native "DOMMatrix_m34_Setter";
+  m34_Setter_(mthis, __arg_0) => m34_Setter(mthis, __arg_0);
+
+  static m41_Getter(mthis) native "DOMMatrix_m41_Getter";
+  m41_Getter_(mthis) => m41_Getter(mthis);
+
+  static m41_Setter(mthis, __arg_0) native "DOMMatrix_m41_Setter";
+  m41_Setter_(mthis, __arg_0) => m41_Setter(mthis, __arg_0);
+
+  static m42_Getter(mthis) native "DOMMatrix_m42_Getter";
+  m42_Getter_(mthis) => m42_Getter(mthis);
+
+  static m42_Setter(mthis, __arg_0) native "DOMMatrix_m42_Setter";
+  m42_Setter_(mthis, __arg_0) => m42_Setter(mthis, __arg_0);
+
+  static m43_Getter(mthis) native "DOMMatrix_m43_Getter";
+  m43_Getter_(mthis) => m43_Getter(mthis);
+
+  static m43_Setter(mthis, __arg_0) native "DOMMatrix_m43_Setter";
+  m43_Setter_(mthis, __arg_0) => m43_Setter(mthis, __arg_0);
+
+  static m44_Getter(mthis) native "DOMMatrix_m44_Getter";
+  m44_Getter_(mthis) => m44_Getter(mthis);
+
+  static m44_Setter(mthis, __arg_0) native "DOMMatrix_m44_Setter";
+  m44_Setter_(mthis, __arg_0) => m44_Setter(mthis, __arg_0);
+
 }
 
 class BlinkDOMMatrixReadOnly {
+  static final instance = new BlinkDOMMatrixReadOnly();
+
   static a_Getter(mthis) native "DOMMatrixReadOnly_a_Getter";
+  a_Getter_(mthis) => a_Getter(mthis);
 
   static b_Getter(mthis) native "DOMMatrixReadOnly_b_Getter";
+  b_Getter_(mthis) => b_Getter(mthis);
 
   static c_Getter(mthis) native "DOMMatrixReadOnly_c_Getter";
+  c_Getter_(mthis) => c_Getter(mthis);
 
   static d_Getter(mthis) native "DOMMatrixReadOnly_d_Getter";
+  d_Getter_(mthis) => d_Getter(mthis);
 
   static e_Getter(mthis) native "DOMMatrixReadOnly_e_Getter";
+  e_Getter_(mthis) => e_Getter(mthis);
 
   static f_Getter(mthis) native "DOMMatrixReadOnly_f_Getter";
+  f_Getter_(mthis) => f_Getter(mthis);
 
   static is2D_Getter(mthis) native "DOMMatrixReadOnly_is2D_Getter";
+  is2D_Getter_(mthis) => is2D_Getter(mthis);
 
   static isIdentity_Getter(mthis) native "DOMMatrixReadOnly_isIdentity_Getter";
+  isIdentity_Getter_(mthis) => isIdentity_Getter(mthis);
 
   static m11_Getter(mthis) native "DOMMatrixReadOnly_m11_Getter";
+  m11_Getter_(mthis) => m11_Getter(mthis);
 
   static m12_Getter(mthis) native "DOMMatrixReadOnly_m12_Getter";
+  m12_Getter_(mthis) => m12_Getter(mthis);
 
   static m13_Getter(mthis) native "DOMMatrixReadOnly_m13_Getter";
+  m13_Getter_(mthis) => m13_Getter(mthis);
 
   static m14_Getter(mthis) native "DOMMatrixReadOnly_m14_Getter";
+  m14_Getter_(mthis) => m14_Getter(mthis);
 
   static m21_Getter(mthis) native "DOMMatrixReadOnly_m21_Getter";
+  m21_Getter_(mthis) => m21_Getter(mthis);
 
   static m22_Getter(mthis) native "DOMMatrixReadOnly_m22_Getter";
+  m22_Getter_(mthis) => m22_Getter(mthis);
 
   static m23_Getter(mthis) native "DOMMatrixReadOnly_m23_Getter";
+  m23_Getter_(mthis) => m23_Getter(mthis);
 
   static m24_Getter(mthis) native "DOMMatrixReadOnly_m24_Getter";
+  m24_Getter_(mthis) => m24_Getter(mthis);
 
   static m31_Getter(mthis) native "DOMMatrixReadOnly_m31_Getter";
+  m31_Getter_(mthis) => m31_Getter(mthis);
 
   static m32_Getter(mthis) native "DOMMatrixReadOnly_m32_Getter";
+  m32_Getter_(mthis) => m32_Getter(mthis);
 
   static m33_Getter(mthis) native "DOMMatrixReadOnly_m33_Getter";
+  m33_Getter_(mthis) => m33_Getter(mthis);
 
   static m34_Getter(mthis) native "DOMMatrixReadOnly_m34_Getter";
+  m34_Getter_(mthis) => m34_Getter(mthis);
 
   static m41_Getter(mthis) native "DOMMatrixReadOnly_m41_Getter";
+  m41_Getter_(mthis) => m41_Getter(mthis);
 
   static m42_Getter(mthis) native "DOMMatrixReadOnly_m42_Getter";
+  m42_Getter_(mthis) => m42_Getter(mthis);
 
   static m43_Getter(mthis) native "DOMMatrixReadOnly_m43_Getter";
+  m43_Getter_(mthis) => m43_Getter(mthis);
 
   static m44_Getter(mthis) native "DOMMatrixReadOnly_m44_Getter";
-}
+  m44_Getter_(mthis) => m44_Getter(mthis);
 
-class BlinkDOMMatrix {
-  static constructorCallback() native "DOMMatrix_constructorCallback";
-
-  static constructorCallback_1(other) native "DOMMatrix_constructorCallback";
-
-  static a_Getter(mthis) native "DOMMatrix_a_Getter";
-
-  static a_Setter(mthis, value) native "DOMMatrix_a_Setter";
-
-  static b_Getter(mthis) native "DOMMatrix_b_Getter";
-
-  static b_Setter(mthis, value) native "DOMMatrix_b_Setter";
-
-  static c_Getter(mthis) native "DOMMatrix_c_Getter";
-
-  static c_Setter(mthis, value) native "DOMMatrix_c_Setter";
-
-  static d_Getter(mthis) native "DOMMatrix_d_Getter";
-
-  static d_Setter(mthis, value) native "DOMMatrix_d_Setter";
-
-  static e_Getter(mthis) native "DOMMatrix_e_Getter";
-
-  static e_Setter(mthis, value) native "DOMMatrix_e_Setter";
-
-  static f_Getter(mthis) native "DOMMatrix_f_Getter";
-
-  static f_Setter(mthis, value) native "DOMMatrix_f_Setter";
-
-  static m11_Getter(mthis) native "DOMMatrix_m11_Getter";
-
-  static m11_Setter(mthis, value) native "DOMMatrix_m11_Setter";
-
-  static m12_Getter(mthis) native "DOMMatrix_m12_Getter";
-
-  static m12_Setter(mthis, value) native "DOMMatrix_m12_Setter";
-
-  static m13_Getter(mthis) native "DOMMatrix_m13_Getter";
-
-  static m13_Setter(mthis, value) native "DOMMatrix_m13_Setter";
-
-  static m14_Getter(mthis) native "DOMMatrix_m14_Getter";
-
-  static m14_Setter(mthis, value) native "DOMMatrix_m14_Setter";
-
-  static m21_Getter(mthis) native "DOMMatrix_m21_Getter";
-
-  static m21_Setter(mthis, value) native "DOMMatrix_m21_Setter";
-
-  static m22_Getter(mthis) native "DOMMatrix_m22_Getter";
-
-  static m22_Setter(mthis, value) native "DOMMatrix_m22_Setter";
-
-  static m23_Getter(mthis) native "DOMMatrix_m23_Getter";
-
-  static m23_Setter(mthis, value) native "DOMMatrix_m23_Setter";
-
-  static m24_Getter(mthis) native "DOMMatrix_m24_Getter";
-
-  static m24_Setter(mthis, value) native "DOMMatrix_m24_Setter";
-
-  static m31_Getter(mthis) native "DOMMatrix_m31_Getter";
-
-  static m31_Setter(mthis, value) native "DOMMatrix_m31_Setter";
-
-  static m32_Getter(mthis) native "DOMMatrix_m32_Getter";
-
-  static m32_Setter(mthis, value) native "DOMMatrix_m32_Setter";
-
-  static m33_Getter(mthis) native "DOMMatrix_m33_Getter";
-
-  static m33_Setter(mthis, value) native "DOMMatrix_m33_Setter";
-
-  static m34_Getter(mthis) native "DOMMatrix_m34_Getter";
-
-  static m34_Setter(mthis, value) native "DOMMatrix_m34_Setter";
-
-  static m41_Getter(mthis) native "DOMMatrix_m41_Getter";
-
-  static m41_Setter(mthis, value) native "DOMMatrix_m41_Setter";
-
-  static m42_Getter(mthis) native "DOMMatrix_m42_Getter";
-
-  static m42_Setter(mthis, value) native "DOMMatrix_m42_Setter";
-
-  static m43_Getter(mthis) native "DOMMatrix_m43_Getter";
-
-  static m43_Setter(mthis, value) native "DOMMatrix_m43_Setter";
-
-  static m44_Getter(mthis) native "DOMMatrix_m44_Getter";
-
-  static m44_Setter(mthis, value) native "DOMMatrix_m44_Setter";
 }
 
 class BlinkDOMParser {
-  static constructorCallback() native "DOMParser_constructorCallback";
+  static final instance = new BlinkDOMParser();
 
-  static parseFromString_Callback_2(mthis, str, contentType) native "DOMParser_parseFromString_Callback";
+  static constructorCallback_0() native "DOMParser_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "DOMParser_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMParser_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static parseFromString_Callback_0(mthis) native "DOMParser_parseFromString_Callback";
+  parseFromString_Callback_0_(mthis) => parseFromString_Callback_0(mthis);
+
+  static parseFromString_Callback_1(mthis, __arg_0) native "DOMParser_parseFromString_Callback";
+  parseFromString_Callback_1_(mthis, __arg_0) => parseFromString_Callback_1(mthis, __arg_0);
+
+  static parseFromString_Callback_2(mthis, __arg_0, __arg_1) native "DOMParser_parseFromString_Callback";
+  parseFromString_Callback_2_(mthis, __arg_0, __arg_1) => parseFromString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static parseFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMParser_parseFromString_Callback";
+  parseFromString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => parseFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static parseFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMParser_parseFromString_Callback";
+  parseFromString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => parseFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkDOMPoint extends BlinkDOMPointReadOnly {
+  static final instance = new BlinkDOMPoint();
+
+  static constructorCallback_0() native "DOMPoint_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "DOMPoint_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMPoint_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMPoint_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMPoint_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMPoint_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMPoint_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static w_Getter(mthis) native "DOMPoint_w_Getter";
+  w_Getter_(mthis) => w_Getter(mthis);
+
+  static w_Setter(mthis, __arg_0) native "DOMPoint_w_Setter";
+  w_Setter_(mthis, __arg_0) => w_Setter(mthis, __arg_0);
+
+  static x_Getter(mthis) native "DOMPoint_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "DOMPoint_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "DOMPoint_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "DOMPoint_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
+  static z_Getter(mthis) native "DOMPoint_z_Getter";
+  z_Getter_(mthis) => z_Getter(mthis);
+
+  static z_Setter(mthis, __arg_0) native "DOMPoint_z_Setter";
+  z_Setter_(mthis, __arg_0) => z_Setter(mthis, __arg_0);
+
 }
 
 class BlinkDOMPointReadOnly {
-  static constructorCallback_4(x, y, z, w) native "DOMPointReadOnly_constructorCallback";
+  static final instance = new BlinkDOMPointReadOnly();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMPointReadOnly_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMPointReadOnly_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMPointReadOnly_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMPointReadOnly_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMPointReadOnly_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static w_Getter(mthis) native "DOMPointReadOnly_w_Getter";
+  w_Getter_(mthis) => w_Getter(mthis);
 
   static x_Getter(mthis) native "DOMPointReadOnly_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "DOMPointReadOnly_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
   static z_Getter(mthis) native "DOMPointReadOnly_z_Getter";
+  z_Getter_(mthis) => z_Getter(mthis);
+
 }
 
-class BlinkDOMPoint {
-  static constructorCallback() native "DOMPoint_constructorCallback";
+class BlinkDOMRect extends BlinkDOMRectReadOnly {
+  static final instance = new BlinkDOMRect();
 
-  static constructorCallback_1(point_OR_x) native "DOMPoint_constructorCallback";
+  static constructorCallback_0() native "DOMRect_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static constructorCallback_2(point_OR_x, y) native "DOMPoint_constructorCallback";
+  static constructorCallback_1(__arg_0) native "DOMRect_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
 
-  static constructorCallback_3(point_OR_x, y, z) native "DOMPoint_constructorCallback";
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMRect_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
-  static constructorCallback_4(point_OR_x, y, z, w) native "DOMPoint_constructorCallback";
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMRect_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
-  static w_Getter(mthis) native "DOMPoint_w_Getter";
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMRect_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
-  static w_Setter(mthis, value) native "DOMPoint_w_Setter";
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMRect_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static x_Getter(mthis) native "DOMPoint_x_Getter";
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMRect_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static x_Setter(mthis, value) native "DOMPoint_x_Setter";
+  static height_Getter(mthis) native "DOMRect_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static y_Getter(mthis) native "DOMPoint_y_Getter";
+  static height_Setter(mthis, __arg_0) native "DOMRect_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
-  static y_Setter(mthis, value) native "DOMPoint_y_Setter";
+  static width_Getter(mthis) native "DOMRect_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static z_Getter(mthis) native "DOMPoint_z_Getter";
+  static width_Setter(mthis, __arg_0) native "DOMRect_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
-  static z_Setter(mthis, value) native "DOMPoint_z_Setter";
+  static x_Getter(mthis) native "DOMRect_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "DOMRect_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "DOMRect_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "DOMRect_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
 class BlinkDOMRectReadOnly {
-  static constructorCallback_4(x, y, width, height) native "DOMRectReadOnly_constructorCallback";
+  static final instance = new BlinkDOMRectReadOnly();
 
   static bottom_Getter(mthis) native "DOMRectReadOnly_bottom_Getter";
+  bottom_Getter_(mthis) => bottom_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DOMRectReadOnly_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "DOMRectReadOnly_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "DOMRectReadOnly_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DOMRectReadOnly_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DOMRectReadOnly_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static height_Getter(mthis) native "DOMRectReadOnly_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static left_Getter(mthis) native "DOMRectReadOnly_left_Getter";
+  left_Getter_(mthis) => left_Getter(mthis);
 
   static right_Getter(mthis) native "DOMRectReadOnly_right_Getter";
+  right_Getter_(mthis) => right_Getter(mthis);
 
   static top_Getter(mthis) native "DOMRectReadOnly_top_Getter";
+  top_Getter_(mthis) => top_Getter(mthis);
 
   static width_Getter(mthis) native "DOMRectReadOnly_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "DOMRectReadOnly_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "DOMRectReadOnly_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkDOMRect {
-  static constructorCallback_4(x, y, width, height) native "DOMRect_constructorCallback";
+class BlinkDOMSettableTokenList extends BlinkDOMTokenList {
+  static final instance = new BlinkDOMSettableTokenList();
 
-  static constructorCallback_3(x, y, width) native "DOMRect_constructorCallback";
+  static $__getter___Callback_1(mthis, __arg_0) native "DOMSettableTokenList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
 
-  static constructorCallback_2(x, y) native "DOMRect_constructorCallback";
-
-  static constructorCallback_1(x) native "DOMRect_constructorCallback";
-
-  static constructorCallback() native "DOMRect_constructorCallback";
-
-  static height_Getter(mthis) native "DOMRect_height_Getter";
-
-  static height_Setter(mthis, value) native "DOMRect_height_Setter";
-
-  static width_Getter(mthis) native "DOMRect_width_Getter";
-
-  static width_Setter(mthis, value) native "DOMRect_width_Setter";
-
-  static x_Getter(mthis) native "DOMRect_x_Getter";
-
-  static x_Setter(mthis, value) native "DOMRect_x_Setter";
-
-  static y_Getter(mthis) native "DOMRect_y_Getter";
-
-  static y_Setter(mthis, value) native "DOMRect_y_Setter";
-}
-
-class BlinkDOMTokenList {
-  static length_Getter(mthis) native "DOMTokenList_length_Getter";
-
-  static add_Callback_1(mthis, tokens) native "DOMTokenList_add_Callback";
-
-  static contains_Callback_1(mthis, token) native "DOMTokenList_contains_Callback";
-
-  static item_Callback_1(mthis, index) native "DOMTokenList_item_Callback";
-
-  static remove_Callback_1(mthis, tokens) native "DOMTokenList_remove_Callback";
-
-  static toggle_Callback_2(mthis, token, force) native "DOMTokenList_toggle_Callback";
-
-  static toggle_Callback_1(mthis, token) native "DOMTokenList_toggle_Callback";
-}
-
-class BlinkDOMSettableTokenList {
   static value_Getter(mthis) native "DOMSettableTokenList_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "DOMSettableTokenList_value_Setter";
+  static value_Setter(mthis, __arg_0) native "DOMSettableTokenList_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
-  static $__getter___Callback_1(mthis, index) native "DOMSettableTokenList___getter___Callback";
 }
 
 class BlinkDOMStringList {
+  static final instance = new BlinkDOMStringList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "DOMStringList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static contains_Callback_0(mthis) native "DOMStringList_contains_Callback";
+  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+
+  static contains_Callback_1(mthis, __arg_0) native "DOMStringList_contains_Callback";
+  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+
+  static contains_Callback_2(mthis, __arg_0, __arg_1) native "DOMStringList_contains_Callback";
+  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+
+  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMStringList_contains_Callback";
+  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "DOMStringList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "DOMStringList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "DOMStringList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMStringList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "DOMStringList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static contains_Callback_1(mthis, string) native "DOMStringList_contains_Callback";
-
-  static item_Callback_1(mthis, index) native "DOMStringList_item_Callback";
 }
 
 class BlinkDOMStringMap {
-  static $__delete___Callback_1(mthis, index_OR_name) native "DOMStringMap___delete___Callback";
+  static final instance = new BlinkDOMStringMap();
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "DOMStringMap___getter___Callback";
+  static $__delete___Callback_1(mthis, __arg_0) native "DOMStringMap___delete___Callback";
+  $__delete___Callback_1_(mthis, __arg_0) => $__delete___Callback_1(mthis, __arg_0);
 
-  static $__setter___Callback_2(mthis, index_OR_name, value) native "DOMStringMap___setter___Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "DOMStringMap___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "DOMStringMap___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkDOMTokenList {
+  static final instance = new BlinkDOMTokenList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "DOMTokenList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static add_Callback_0(mthis) native "DOMTokenList_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "DOMTokenList_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static contains_Callback_0(mthis) native "DOMTokenList_contains_Callback";
+  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+
+  static contains_Callback_1(mthis, __arg_0) native "DOMTokenList_contains_Callback";
+  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+
+  static contains_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_contains_Callback";
+  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+
+  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_contains_Callback";
+  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "DOMTokenList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "DOMTokenList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "DOMTokenList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static remove_Callback_0(mthis) native "DOMTokenList_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
+
+  static remove_Callback_1(mthis, __arg_0) native "DOMTokenList_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
+
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
+
+  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_remove_Callback";
+  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static toggle_Callback_0(mthis) native "DOMTokenList_toggle_Callback";
+  toggle_Callback_0_(mthis) => toggle_Callback_0(mthis);
+
+  static toggle_Callback_1(mthis, __arg_0) native "DOMTokenList_toggle_Callback";
+  toggle_Callback_1_(mthis, __arg_0) => toggle_Callback_1(mthis, __arg_0);
+
+  static toggle_Callback_2(mthis, __arg_0, __arg_1) native "DOMTokenList_toggle_Callback";
+  toggle_Callback_2_(mthis, __arg_0, __arg_1) => toggle_Callback_2(mthis, __arg_0, __arg_1);
+
+  static toggle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DOMTokenList_toggle_Callback";
+  toggle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => toggle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static toggle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DOMTokenList_toggle_Callback";
+  toggle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => toggle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
 class BlinkDataTransfer {
-  static dropEffect_Getter(mthis) native "DataTransfer_dropEffect_Getter";
+  static final instance = new BlinkDataTransfer();
 
-  static dropEffect_Setter(mthis, value) native "DataTransfer_dropEffect_Setter";
+  static clearData_Callback_0(mthis) native "DataTransfer_clearData_Callback";
+  clearData_Callback_0_(mthis) => clearData_Callback_0(mthis);
+
+  static clearData_Callback_1(mthis, __arg_0) native "DataTransfer_clearData_Callback";
+  clearData_Callback_1_(mthis, __arg_0) => clearData_Callback_1(mthis, __arg_0);
+
+  static clearData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_clearData_Callback";
+  clearData_Callback_2_(mthis, __arg_0, __arg_1) => clearData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_clearData_Callback";
+  clearData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static dropEffect_Getter(mthis) native "DataTransfer_dropEffect_Getter";
+  dropEffect_Getter_(mthis) => dropEffect_Getter(mthis);
+
+  static dropEffect_Setter(mthis, __arg_0) native "DataTransfer_dropEffect_Setter";
+  dropEffect_Setter_(mthis, __arg_0) => dropEffect_Setter(mthis, __arg_0);
 
   static effectAllowed_Getter(mthis) native "DataTransfer_effectAllowed_Getter";
+  effectAllowed_Getter_(mthis) => effectAllowed_Getter(mthis);
 
-  static effectAllowed_Setter(mthis, value) native "DataTransfer_effectAllowed_Setter";
+  static effectAllowed_Setter(mthis, __arg_0) native "DataTransfer_effectAllowed_Setter";
+  effectAllowed_Setter_(mthis, __arg_0) => effectAllowed_Setter(mthis, __arg_0);
 
   static files_Getter(mthis) native "DataTransfer_files_Getter";
+  files_Getter_(mthis) => files_Getter(mthis);
+
+  static getData_Callback_0(mthis) native "DataTransfer_getData_Callback";
+  getData_Callback_0_(mthis) => getData_Callback_0(mthis);
+
+  static getData_Callback_1(mthis, __arg_0) native "DataTransfer_getData_Callback";
+  getData_Callback_1_(mthis, __arg_0) => getData_Callback_1(mthis, __arg_0);
+
+  static getData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_getData_Callback";
+  getData_Callback_2_(mthis, __arg_0, __arg_1) => getData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_getData_Callback";
+  getData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static items_Getter(mthis) native "DataTransfer_items_Getter";
+  items_Getter_(mthis) => items_Getter(mthis);
+
+  static setData_Callback_0(mthis) native "DataTransfer_setData_Callback";
+  setData_Callback_0_(mthis) => setData_Callback_0(mthis);
+
+  static setData_Callback_1(mthis, __arg_0) native "DataTransfer_setData_Callback";
+  setData_Callback_1_(mthis, __arg_0) => setData_Callback_1(mthis, __arg_0);
+
+  static setData_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_setData_Callback";
+  setData_Callback_2_(mthis, __arg_0, __arg_1) => setData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_setData_Callback";
+  setData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransfer_setData_Callback";
+  setData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setDragImage_Callback_1(mthis, __arg_0) native "DataTransfer_setDragImage_Callback";
+  setDragImage_Callback_1_(mthis, __arg_0) => setDragImage_Callback_1(mthis, __arg_0);
+
+  static setDragImage_Callback_2(mthis, __arg_0, __arg_1) native "DataTransfer_setDragImage_Callback";
+  setDragImage_Callback_2_(mthis, __arg_0, __arg_1) => setDragImage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setDragImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransfer_setDragImage_Callback";
+  setDragImage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setDragImage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setDragImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransfer_setDragImage_Callback";
+  setDragImage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setDragImage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setDragImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DataTransfer_setDragImage_Callback";
+  setDragImage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setDragImage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static types_Getter(mthis) native "DataTransfer_types_Getter";
+  types_Getter_(mthis) => types_Getter(mthis);
 
-  static clearData_Callback_1(mthis, type) native "DataTransfer_clearData_Callback";
-
-  static clearData_Callback(mthis) native "DataTransfer_clearData_Callback";
-
-  static getData_Callback_1(mthis, type) native "DataTransfer_getData_Callback";
-
-  static setData_Callback_2(mthis, type, data) native "DataTransfer_setData_Callback";
-
-  static setDragImage_Callback_3(mthis, image, x, y) native "DataTransfer_setDragImage_Callback";
 }
 
 class BlinkDataTransferItem {
+  static final instance = new BlinkDataTransferItem();
+
+  static getAsFile_Callback_0(mthis) native "DataTransferItem_getAsFile_Callback";
+  getAsFile_Callback_0_(mthis) => getAsFile_Callback_0(mthis);
+
+  static getAsFile_Callback_1(mthis, __arg_0) native "DataTransferItem_getAsFile_Callback";
+  getAsFile_Callback_1_(mthis, __arg_0) => getAsFile_Callback_1(mthis, __arg_0);
+
+  static getAsFile_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_getAsFile_Callback";
+  getAsFile_Callback_2_(mthis, __arg_0, __arg_1) => getAsFile_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAsString_Callback_0(mthis) native "DataTransferItem_getAsString_Callback";
+  getAsString_Callback_0_(mthis) => getAsString_Callback_0(mthis);
+
+  static getAsString_Callback_1(mthis, __arg_0) native "DataTransferItem_getAsString_Callback";
+  getAsString_Callback_1_(mthis, __arg_0) => getAsString_Callback_1(mthis, __arg_0);
+
+  static getAsString_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_getAsString_Callback";
+  getAsString_Callback_2_(mthis, __arg_0, __arg_1) => getAsString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAsString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItem_getAsString_Callback";
+  getAsString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAsString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static kind_Getter(mthis) native "DataTransferItem_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static type_Getter(mthis) native "DataTransferItem_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static getAsFile_Callback(mthis) native "DataTransferItem_getAsFile_Callback";
+  static webkitGetAsEntry_Callback_0(mthis) native "DataTransferItem_webkitGetAsEntry_Callback";
+  webkitGetAsEntry_Callback_0_(mthis) => webkitGetAsEntry_Callback_0(mthis);
 
-  static getAsString_Callback_1(mthis, callback) native "DataTransferItem_getAsString_Callback";
+  static webkitGetAsEntry_Callback_1(mthis, __arg_0) native "DataTransferItem_webkitGetAsEntry_Callback";
+  webkitGetAsEntry_Callback_1_(mthis, __arg_0) => webkitGetAsEntry_Callback_1(mthis, __arg_0);
 
-  static webkitGetAsEntry_Callback(mthis) native "DataTransferItem_webkitGetAsEntry_Callback";
+  static webkitGetAsEntry_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItem_webkitGetAsEntry_Callback";
+  webkitGetAsEntry_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetAsEntry_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkDataTransferItemList {
+  static final instance = new BlinkDataTransferItemList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "DataTransferItemList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static add_Callback_0(mthis) native "DataTransferItemList_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "DataTransferItemList_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItemList_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DataTransferItemList_add_Callback";
+  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static clear_Callback_0(mthis) native "DataTransferItemList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "DataTransferItemList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
   static length_Getter(mthis) native "DataTransferItemList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, index) native "DataTransferItemList___getter___Callback";
+  static remove_Callback_0(mthis) native "DataTransferItemList_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
 
-  static add_Callback_2(mthis, data_OR_file, type) native "DataTransferItemList_add_Callback";
+  static remove_Callback_1(mthis, __arg_0) native "DataTransferItemList_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
 
-  static add_Callback_1(mthis, data_OR_file) native "DataTransferItemList_add_Callback";
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "DataTransferItemList_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
 
-  static clear_Callback(mthis) native "DataTransferItemList_clear_Callback";
+  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DataTransferItemList_remove_Callback";
+  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static remove_Callback_1(mthis, index) native "DataTransferItemList_remove_Callback";
 }
 
 class BlinkDatabase {
+  static final instance = new BlinkDatabase();
+
+  static changeVersion_Callback_0(mthis) native "Database_changeVersion_Callback";
+  changeVersion_Callback_0_(mthis) => changeVersion_Callback_0(mthis);
+
+  static changeVersion_Callback_1(mthis, __arg_0) native "Database_changeVersion_Callback";
+  changeVersion_Callback_1_(mthis, __arg_0) => changeVersion_Callback_1(mthis, __arg_0);
+
+  static changeVersion_Callback_2(mthis, __arg_0, __arg_1) native "Database_changeVersion_Callback";
+  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => changeVersion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_changeVersion_Callback";
+  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_changeVersion_Callback";
+  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_changeVersion_Callback";
+  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static changeVersion_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Database_changeVersion_Callback";
+  changeVersion_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => changeVersion_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static changeVersion_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Database_changeVersion_Callback";
+  changeVersion_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => changeVersion_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static readTransaction_Callback_0(mthis) native "Database_readTransaction_Callback";
+  readTransaction_Callback_0_(mthis) => readTransaction_Callback_0(mthis);
+
+  static readTransaction_Callback_1(mthis, __arg_0) native "Database_readTransaction_Callback";
+  readTransaction_Callback_1_(mthis, __arg_0) => readTransaction_Callback_1(mthis, __arg_0);
+
+  static readTransaction_Callback_2(mthis, __arg_0, __arg_1) native "Database_readTransaction_Callback";
+  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => readTransaction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_readTransaction_Callback";
+  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readTransaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_readTransaction_Callback";
+  readTransaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readTransaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static readTransaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_readTransaction_Callback";
+  readTransaction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => readTransaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static transaction_Callback_0(mthis) native "Database_transaction_Callback";
+  transaction_Callback_0_(mthis) => transaction_Callback_0(mthis);
+
+  static transaction_Callback_1(mthis, __arg_0) native "Database_transaction_Callback";
+  transaction_Callback_1_(mthis, __arg_0) => transaction_Callback_1(mthis, __arg_0);
+
+  static transaction_Callback_2(mthis, __arg_0, __arg_1) native "Database_transaction_Callback";
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => transaction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Database_transaction_Callback";
+  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Database_transaction_Callback";
+  transaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static transaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Database_transaction_Callback";
+  transaction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => transaction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
   static version_Getter(mthis) native "Database_version_Getter";
+  version_Getter_(mthis) => version_Getter(mthis);
 
-  static changeVersion_Callback_5(mthis, oldVersion, newVersion, callback, errorCallback, successCallback) native "Database_changeVersion_Callback";
-
-  static changeVersion_Callback_4(mthis, oldVersion, newVersion, callback, errorCallback) native "Database_changeVersion_Callback";
-
-  static changeVersion_Callback_3(mthis, oldVersion, newVersion, callback) native "Database_changeVersion_Callback";
-
-  static changeVersion_Callback_2(mthis, oldVersion, newVersion) native "Database_changeVersion_Callback";
-
-  static readTransaction_Callback_3(mthis, callback, errorCallback, successCallback) native "Database_readTransaction_Callback";
-
-  static readTransaction_Callback_2(mthis, callback, errorCallback) native "Database_readTransaction_Callback";
-
-  static readTransaction_Callback_1(mthis, callback) native "Database_readTransaction_Callback";
-
-  static transaction_Callback_3(mthis, callback, errorCallback, successCallback) native "Database_transaction_Callback";
-
-  static transaction_Callback_2(mthis, callback, errorCallback) native "Database_transaction_Callback";
-
-  static transaction_Callback_1(mthis, callback) native "Database_transaction_Callback";
 }
 
-class BlinkDatabaseSync {}
+class BlinkDatabaseSync {
+  static final instance = new BlinkDatabaseSync();
 
-class BlinkWindowBase64 {
-  static atob_Callback_1(mthis, string) native "WindowBase64_atob_Callback";
+  static changeVersion_Callback_0(mthis) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_0_(mthis) => changeVersion_Callback_0(mthis);
 
-  static btoa_Callback_1(mthis, string) native "WindowBase64_btoa_Callback";
+  static changeVersion_Callback_1(mthis, __arg_0) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_1_(mthis, __arg_0) => changeVersion_Callback_1(mthis, __arg_0);
+
+  static changeVersion_Callback_2(mthis, __arg_0, __arg_1) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_2_(mthis, __arg_0, __arg_1) => changeVersion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => changeVersion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => changeVersion_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DatabaseSync_changeVersion_Callback";
+  changeVersion_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => changeVersion_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static lastErrorMessage_Getter(mthis) native "DatabaseSync_lastErrorMessage_Getter";
+  lastErrorMessage_Getter_(mthis) => lastErrorMessage_Getter(mthis);
+
+  static readTransaction_Callback_0(mthis) native "DatabaseSync_readTransaction_Callback";
+  readTransaction_Callback_0_(mthis) => readTransaction_Callback_0(mthis);
+
+  static readTransaction_Callback_1(mthis, __arg_0) native "DatabaseSync_readTransaction_Callback";
+  readTransaction_Callback_1_(mthis, __arg_0) => readTransaction_Callback_1(mthis, __arg_0);
+
+  static readTransaction_Callback_2(mthis, __arg_0, __arg_1) native "DatabaseSync_readTransaction_Callback";
+  readTransaction_Callback_2_(mthis, __arg_0, __arg_1) => readTransaction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DatabaseSync_readTransaction_Callback";
+  readTransaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readTransaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static transaction_Callback_0(mthis) native "DatabaseSync_transaction_Callback";
+  transaction_Callback_0_(mthis) => transaction_Callback_0(mthis);
+
+  static transaction_Callback_1(mthis, __arg_0) native "DatabaseSync_transaction_Callback";
+  transaction_Callback_1_(mthis, __arg_0) => transaction_Callback_1(mthis, __arg_0);
+
+  static transaction_Callback_2(mthis, __arg_0, __arg_1) native "DatabaseSync_transaction_Callback";
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => transaction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DatabaseSync_transaction_Callback";
+  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static version_Getter(mthis) native "DatabaseSync_version_Getter";
+  version_Getter_(mthis) => version_Getter(mthis);
+
 }
 
-class BlinkWindowTimers {
-  static clearInterval_Callback_1(mthis, handle) native "WindowTimers_clearInterval_Callback";
+class BlinkDedicatedWorkerGlobalScope extends BlinkWorkerGlobalScope {
+  static final instance = new BlinkDedicatedWorkerGlobalScope();
 
-  static clearTimeout_Callback_1(mthis, handle) native "WindowTimers_clearTimeout_Callback";
+  static onmessage_Getter(mthis) native "DedicatedWorkerGlobalScope_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
 
-  static setInterval_Callback_2(mthis, handler, timeout) native "WindowTimers_setInterval_Callback";
+  static onmessage_Setter(mthis, __arg_0) native "DedicatedWorkerGlobalScope_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
 
-  static setTimeout_Callback_2(mthis, handler, timeout) native "WindowTimers_setTimeout_Callback";
+  static postMessage_Callback_0(mthis) native "DedicatedWorkerGlobalScope_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "DedicatedWorkerGlobalScope_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "DedicatedWorkerGlobalScope_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DedicatedWorkerGlobalScope_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DedicatedWorkerGlobalScope_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkWorkerGlobalScope {
-  static console_Getter(mthis) native "WorkerGlobalScope_console_Getter";
+class BlinkDelayNode extends BlinkAudioNode {
+  static final instance = new BlinkDelayNode();
 
-  static crypto_Getter(mthis) native "WorkerGlobalScope_crypto_Getter";
-
-  static indexedDB_Getter(mthis) native "WorkerGlobalScope_indexedDB_Getter";
-
-  static location_Getter(mthis) native "WorkerGlobalScope_location_Getter";
-
-  static navigator_Getter(mthis) native "WorkerGlobalScope_navigator_Getter";
-
-  static performance_Getter(mthis) native "WorkerGlobalScope_performance_Getter";
-
-  static self_Getter(mthis) native "WorkerGlobalScope_self_Getter";
-
-  static close_Callback(mthis) native "WorkerGlobalScope_close_Callback";
-
-  static importScripts_Callback_1(mthis, urls) native "WorkerGlobalScope_importScripts_Callback";
-
-  static openDatabase_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabase_Callback";
-
-  static openDatabase_Callback_4(mthis, name, version, displayName, estimatedSize) native "WorkerGlobalScope_openDatabase_Callback";
-
-  static openDatabaseSync_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabaseSync_Callback";
-
-  static openDatabaseSync_Callback_4(mthis, name, version, displayName, estimatedSize) native "WorkerGlobalScope_openDatabaseSync_Callback";
-
-  static webkitRequestFileSystem_Callback_4(mthis, type, size, successCallback, errorCallback) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-
-  static webkitRequestFileSystem_Callback_3(mthis, type, size, successCallback) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-
-  static webkitRequestFileSystem_Callback_2(mthis, type, size) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
-
-  static webkitRequestFileSystemSync_Callback_2(mthis, type, size) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
-
-  static webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, url) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
-
-  static webkitResolveLocalFileSystemURL_Callback_3(mthis, url, successCallback, errorCallback) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-
-  static webkitResolveLocalFileSystemURL_Callback_2(mthis, url, successCallback) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
-
-  static atob_Callback_1(mthis, string) native "WorkerGlobalScope_atob_Callback";
-
-  static btoa_Callback_1(mthis, string) native "WorkerGlobalScope_btoa_Callback";
-
-  static clearInterval_Callback_1(mthis, handle) native "WorkerGlobalScope_clearInterval_Callback";
-
-  static clearTimeout_Callback_1(mthis, handle) native "WorkerGlobalScope_clearTimeout_Callback";
-
-  static setInterval_Callback_2(mthis, handler, timeout) native "WorkerGlobalScope_setInterval_Callback";
-
-  static setTimeout_Callback_2(mthis, handler, timeout) native "WorkerGlobalScope_setTimeout_Callback";
-}
-
-class BlinkDedicatedWorkerGlobalScope {
-  static postMessage_Callback_2(mthis, message, transfer) native "DedicatedWorkerGlobalScope_postMessage_Callback";
-}
-
-class BlinkDelayNode {
   static delayTime_Getter(mthis) native "DelayNode_delayTime_Getter";
+  delayTime_Getter_(mthis) => delayTime_Getter(mthis);
+
 }
 
 class BlinkDeprecatedStorageInfo {
-  static queryUsageAndQuota_Callback_3(mthis, storageType, usageCallback, errorCallback) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  static final instance = new BlinkDeprecatedStorageInfo();
 
-  static queryUsageAndQuota_Callback_2(mthis, storageType, usageCallback) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  static queryUsageAndQuota_Callback_0(mthis) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_0_(mthis) => queryUsageAndQuota_Callback_0(mthis);
 
-  static queryUsageAndQuota_Callback_1(mthis, storageType) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  static queryUsageAndQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => queryUsageAndQuota_Callback_1(mthis, __arg_0);
 
-  static requestQuota_Callback_4(mthis, storageType, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageInfo_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1);
 
-  static requestQuota_Callback_3(mthis, storageType, newQuotaInBytes, quotaCallback) native "DeprecatedStorageInfo_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static requestQuota_Callback_2(mthis, storageType, newQuotaInBytes) native "DeprecatedStorageInfo_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static queryUsageAndQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageInfo_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => queryUsageAndQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static requestQuota_Callback_0(mthis) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_0_(mthis) => requestQuota_Callback_0(mthis);
+
+  static requestQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_1_(mthis, __arg_0) => requestQuota_Callback_1(mthis, __arg_0);
+
+  static requestQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestQuota_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static requestQuota_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeprecatedStorageInfo_requestQuota_Callback";
+  requestQuota_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => requestQuota_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
 }
 
 class BlinkDeprecatedStorageQuota {
-  static queryUsageAndQuota_Callback_2(mthis, usageCallback, errorCallback) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  static final instance = new BlinkDeprecatedStorageQuota();
 
-  static queryUsageAndQuota_Callback_1(mthis, usageCallback) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  static queryUsageAndQuota_Callback_0(mthis) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_0_(mthis) => queryUsageAndQuota_Callback_0(mthis);
 
-  static requestQuota_Callback_3(mthis, newQuotaInBytes, quotaCallback, errorCallback) native "DeprecatedStorageQuota_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_1_(mthis, __arg_0) => queryUsageAndQuota_Callback_1(mthis, __arg_0);
 
-  static requestQuota_Callback_2(mthis, newQuotaInBytes, quotaCallback) native "DeprecatedStorageQuota_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_2_(mthis, __arg_0, __arg_1) => queryUsageAndQuota_Callback_2(mthis, __arg_0, __arg_1);
 
-  static requestQuota_Callback_1(mthis, newQuotaInBytes) native "DeprecatedStorageQuota_requestQuota_Callback";
+  static queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryUsageAndQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageQuota_queryUsageAndQuota_Callback";
+  queryUsageAndQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => queryUsageAndQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static requestQuota_Callback_0(mthis) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_0_(mthis) => requestQuota_Callback_0(mthis);
+
+  static requestQuota_Callback_1(mthis, __arg_0) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_1_(mthis, __arg_0) => requestQuota_Callback_1(mthis, __arg_0);
+
+  static requestQuota_Callback_2(mthis, __arg_0, __arg_1) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestQuota_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => requestQuota_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeprecatedStorageQuota_requestQuota_Callback";
+  requestQuota_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => requestQuota_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
 class BlinkDeviceAcceleration {
+  static final instance = new BlinkDeviceAcceleration();
+
   static x_Getter(mthis) native "DeviceAcceleration_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "DeviceAcceleration_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
   static z_Getter(mthis) native "DeviceAcceleration_z_Getter";
+  z_Getter_(mthis) => z_Getter(mthis);
+
 }
 
-class BlinkDeviceLightEvent {
-  static constructorCallback(type, options) native "DeviceLightEvent_constructorCallback";
+class BlinkDeviceLightEvent extends BlinkEvent {
+  static final instance = new BlinkDeviceLightEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DeviceLightEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static value_Getter(mthis) native "DeviceLightEvent_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
 }
 
-class BlinkDeviceMotionEvent {
-  static acceleration_Getter(mthis) native "DeviceMotionEvent_acceleration_Getter";
+class BlinkDeviceMotionEvent extends BlinkEvent {
+  static final instance = new BlinkDeviceMotionEvent();
 
   static accelerationIncludingGravity_Getter(mthis) native "DeviceMotionEvent_accelerationIncludingGravity_Getter";
+  accelerationIncludingGravity_Getter_(mthis) => accelerationIncludingGravity_Getter(mthis);
+
+  static acceleration_Getter(mthis) native "DeviceMotionEvent_acceleration_Getter";
+  acceleration_Getter_(mthis) => acceleration_Getter(mthis);
+
+  static initDeviceMotionEvent_Callback_0(mthis) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_0_(mthis) => initDeviceMotionEvent_Callback_0(mthis);
+
+  static initDeviceMotionEvent_Callback_1(mthis, __arg_0) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_1_(mthis, __arg_0) => initDeviceMotionEvent_Callback_1(mthis, __arg_0);
+
+  static initDeviceMotionEvent_Callback_2(mthis, __arg_0, __arg_1) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_2_(mthis, __arg_0, __arg_1) => initDeviceMotionEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initDeviceMotionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initDeviceMotionEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initDeviceMotionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initDeviceMotionEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initDeviceMotionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initDeviceMotionEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initDeviceMotionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initDeviceMotionEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initDeviceMotionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initDeviceMotionEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initDeviceMotionEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initDeviceMotionEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initDeviceMotionEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
+  initDeviceMotionEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initDeviceMotionEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static interval_Getter(mthis) native "DeviceMotionEvent_interval_Getter";
+  interval_Getter_(mthis) => interval_Getter(mthis);
 
   static rotationRate_Getter(mthis) native "DeviceMotionEvent_rotationRate_Getter";
+  rotationRate_Getter_(mthis) => rotationRate_Getter(mthis);
 
-  static initDeviceMotionEvent_Callback_7(mthis, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval) native "DeviceMotionEvent_initDeviceMotionEvent_Callback";
 }
 
-class BlinkDeviceOrientationEvent {
+class BlinkDeviceOrientationEvent extends BlinkEvent {
+  static final instance = new BlinkDeviceOrientationEvent();
+
   static absolute_Getter(mthis) native "DeviceOrientationEvent_absolute_Getter";
+  absolute_Getter_(mthis) => absolute_Getter(mthis);
 
   static alpha_Getter(mthis) native "DeviceOrientationEvent_alpha_Getter";
+  alpha_Getter_(mthis) => alpha_Getter(mthis);
 
   static beta_Getter(mthis) native "DeviceOrientationEvent_beta_Getter";
+  beta_Getter_(mthis) => beta_Getter(mthis);
 
   static gamma_Getter(mthis) native "DeviceOrientationEvent_gamma_Getter";
+  gamma_Getter_(mthis) => gamma_Getter(mthis);
 
-  static initDeviceOrientationEvent_Callback_7(mthis, type, bubbles, cancelable, alpha, beta, gamma, absolute) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  static initDeviceOrientationEvent_Callback_0(mthis) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_0_(mthis) => initDeviceOrientationEvent_Callback_0(mthis);
+
+  static initDeviceOrientationEvent_Callback_1(mthis, __arg_0) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_1_(mthis, __arg_0) => initDeviceOrientationEvent_Callback_1(mthis, __arg_0);
+
+  static initDeviceOrientationEvent_Callback_2(mthis, __arg_0, __arg_1) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_2_(mthis, __arg_0, __arg_1) => initDeviceOrientationEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initDeviceOrientationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initDeviceOrientationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initDeviceOrientationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initDeviceOrientationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initDeviceOrientationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initDeviceOrientationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initDeviceOrientationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initDeviceOrientationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initDeviceOrientationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initDeviceOrientationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initDeviceOrientationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initDeviceOrientationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initDeviceOrientationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "DeviceOrientationEvent_initDeviceOrientationEvent_Callback";
+  initDeviceOrientationEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initDeviceOrientationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
 }
 
 class BlinkDeviceRotationRate {
+  static final instance = new BlinkDeviceRotationRate();
+
   static alpha_Getter(mthis) native "DeviceRotationRate_alpha_Getter";
+  alpha_Getter_(mthis) => alpha_Getter(mthis);
 
   static beta_Getter(mthis) native "DeviceRotationRate_beta_Getter";
+  beta_Getter_(mthis) => beta_Getter(mthis);
 
   static gamma_Getter(mthis) native "DeviceRotationRate_gamma_Getter";
+  gamma_Getter_(mthis) => gamma_Getter(mthis);
+
+}
+
+class BlinkDirectoryEntry extends BlinkEntry {
+  static final instance = new BlinkDirectoryEntry();
+
+  static createReader_Callback_0(mthis) native "DirectoryEntry_createReader_Callback";
+  createReader_Callback_0_(mthis) => createReader_Callback_0(mthis);
+
+  static createReader_Callback_1(mthis, __arg_0) native "DirectoryEntry_createReader_Callback";
+  createReader_Callback_1_(mthis, __arg_0) => createReader_Callback_1(mthis, __arg_0);
+
+  static createReader_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_createReader_Callback";
+  createReader_Callback_2_(mthis, __arg_0, __arg_1) => createReader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getDirectory_Callback_0(mthis) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_0_(mthis) => getDirectory_Callback_0(mthis);
+
+  static getDirectory_Callback_1(mthis, __arg_0) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_1_(mthis, __arg_0) => getDirectory_Callback_1(mthis, __arg_0);
+
+  static getDirectory_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => getDirectory_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getDirectory_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getDirectory_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getDirectory_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DirectoryEntry_getDirectory_Callback";
+  getDirectory_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getDirectory_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static getFile_Callback_0(mthis) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_0_(mthis) => getFile_Callback_0(mthis);
+
+  static getFile_Callback_1(mthis, __arg_0) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_1_(mthis, __arg_0) => getFile_Callback_1(mthis, __arg_0);
+
+  static getFile_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => getFile_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getFile_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFile_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getFile_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "DirectoryEntry_getFile_Callback";
+  getFile_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getFile_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static removeRecursively_Callback_0(mthis) native "DirectoryEntry_removeRecursively_Callback";
+  removeRecursively_Callback_0_(mthis) => removeRecursively_Callback_0(mthis);
+
+  static removeRecursively_Callback_1(mthis, __arg_0) native "DirectoryEntry_removeRecursively_Callback";
+  removeRecursively_Callback_1_(mthis, __arg_0) => removeRecursively_Callback_1(mthis, __arg_0);
+
+  static removeRecursively_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntry_removeRecursively_Callback";
+  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => removeRecursively_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeRecursively_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntry_removeRecursively_Callback";
+  removeRecursively_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRecursively_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeRecursively_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntry_removeRecursively_Callback";
+  removeRecursively_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeRecursively_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkDirectoryEntrySync extends BlinkEntrySync {
+  static final instance = new BlinkDirectoryEntrySync();
+
+  static createReader_Callback_0(mthis) native "DirectoryEntrySync_createReader_Callback";
+  createReader_Callback_0_(mthis) => createReader_Callback_0(mthis);
+
+  static createReader_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_createReader_Callback";
+  createReader_Callback_1_(mthis, __arg_0) => createReader_Callback_1(mthis, __arg_0);
+
+  static createReader_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_createReader_Callback";
+  createReader_Callback_2_(mthis, __arg_0, __arg_1) => createReader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getDirectory_Callback_0(mthis) native "DirectoryEntrySync_getDirectory_Callback";
+  getDirectory_Callback_0_(mthis) => getDirectory_Callback_0(mthis);
+
+  static getDirectory_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_getDirectory_Callback";
+  getDirectory_Callback_1_(mthis, __arg_0) => getDirectory_Callback_1(mthis, __arg_0);
+
+  static getDirectory_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_getDirectory_Callback";
+  getDirectory_Callback_2_(mthis, __arg_0, __arg_1) => getDirectory_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntrySync_getDirectory_Callback";
+  getDirectory_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getDirectory_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntrySync_getDirectory_Callback";
+  getDirectory_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getDirectory_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getFile_Callback_0(mthis) native "DirectoryEntrySync_getFile_Callback";
+  getFile_Callback_0_(mthis) => getFile_Callback_0(mthis);
+
+  static getFile_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_getFile_Callback";
+  getFile_Callback_1_(mthis, __arg_0) => getFile_Callback_1(mthis, __arg_0);
+
+  static getFile_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_getFile_Callback";
+  getFile_Callback_2_(mthis, __arg_0, __arg_1) => getFile_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryEntrySync_getFile_Callback";
+  getFile_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFile_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryEntrySync_getFile_Callback";
+  getFile_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFile_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static removeRecursively_Callback_0(mthis) native "DirectoryEntrySync_removeRecursively_Callback";
+  removeRecursively_Callback_0_(mthis) => removeRecursively_Callback_0(mthis);
+
+  static removeRecursively_Callback_1(mthis, __arg_0) native "DirectoryEntrySync_removeRecursively_Callback";
+  removeRecursively_Callback_1_(mthis, __arg_0) => removeRecursively_Callback_1(mthis, __arg_0);
+
+  static removeRecursively_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryEntrySync_removeRecursively_Callback";
+  removeRecursively_Callback_2_(mthis, __arg_0, __arg_1) => removeRecursively_Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkDirectoryReader {
+  static final instance = new BlinkDirectoryReader();
+
+  static readEntries_Callback_0(mthis) native "DirectoryReader_readEntries_Callback";
+  readEntries_Callback_0_(mthis) => readEntries_Callback_0(mthis);
+
+  static readEntries_Callback_1(mthis, __arg_0) native "DirectoryReader_readEntries_Callback";
+  readEntries_Callback_1_(mthis, __arg_0) => readEntries_Callback_1(mthis, __arg_0);
+
+  static readEntries_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryReader_readEntries_Callback";
+  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => readEntries_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DirectoryReader_readEntries_Callback";
+  readEntries_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readEntries_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readEntries_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "DirectoryReader_readEntries_Callback";
+  readEntries_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readEntries_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+}
+
+class BlinkDirectoryReaderSync {
+  static final instance = new BlinkDirectoryReaderSync();
+
+  static readEntries_Callback_0(mthis) native "DirectoryReaderSync_readEntries_Callback";
+  readEntries_Callback_0_(mthis) => readEntries_Callback_0(mthis);
+
+  static readEntries_Callback_1(mthis, __arg_0) native "DirectoryReaderSync_readEntries_Callback";
+  readEntries_Callback_1_(mthis, __arg_0) => readEntries_Callback_1(mthis, __arg_0);
+
+  static readEntries_Callback_2(mthis, __arg_0, __arg_1) native "DirectoryReaderSync_readEntries_Callback";
+  readEntries_Callback_2_(mthis, __arg_0, __arg_1) => readEntries_Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkDocument extends BlinkNode {
+  static final instance = new BlinkDocument();
+
+  static URL_Getter(mthis) native "Document_URL_Getter";
+  URL_Getter_(mthis) => URL_Getter(mthis);
+
+  static activeElement_Getter(mthis) native "Document_activeElement_Getter";
+  activeElement_Getter_(mthis) => activeElement_Getter(mthis);
+
+  static adoptNode_Callback_0(mthis) native "Document_adoptNode_Callback";
+  adoptNode_Callback_0_(mthis) => adoptNode_Callback_0(mthis);
+
+  static adoptNode_Callback_1(mthis, __arg_0) native "Document_adoptNode_Callback";
+  adoptNode_Callback_1_(mthis, __arg_0) => adoptNode_Callback_1(mthis, __arg_0);
+
+  static adoptNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_adoptNode_Callback";
+  adoptNode_Callback_2_(mthis, __arg_0, __arg_1) => adoptNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static adoptNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_adoptNode_Callback";
+  adoptNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => adoptNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static anchors_Getter(mthis) native "Document_anchors_Getter";
+  anchors_Getter_(mthis) => anchors_Getter(mthis);
+
+  static body_Getter(mthis) native "Document_body_Getter";
+  body_Getter_(mthis) => body_Getter(mthis);
+
+  static body_Setter(mthis, __arg_0) native "Document_body_Setter";
+  body_Setter_(mthis, __arg_0) => body_Setter(mthis, __arg_0);
+
+  static caretRangeFromPoint_Callback_0(mthis) native "Document_caretRangeFromPoint_Callback";
+  caretRangeFromPoint_Callback_0_(mthis) => caretRangeFromPoint_Callback_0(mthis);
+
+  static caretRangeFromPoint_Callback_1(mthis, __arg_0) native "Document_caretRangeFromPoint_Callback";
+  caretRangeFromPoint_Callback_1_(mthis, __arg_0) => caretRangeFromPoint_Callback_1(mthis, __arg_0);
+
+  static caretRangeFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "Document_caretRangeFromPoint_Callback";
+  caretRangeFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => caretRangeFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static caretRangeFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_caretRangeFromPoint_Callback";
+  caretRangeFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => caretRangeFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static caretRangeFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_caretRangeFromPoint_Callback";
+  caretRangeFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => caretRangeFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static characterSet_Getter(mthis) native "Document_characterSet_Getter";
+  characterSet_Getter_(mthis) => characterSet_Getter(mthis);
+
+  static charset_Getter(mthis) native "Document_charset_Getter";
+  charset_Getter_(mthis) => charset_Getter(mthis);
+
+  static charset_Setter(mthis, __arg_0) native "Document_charset_Setter";
+  charset_Setter_(mthis, __arg_0) => charset_Setter(mthis, __arg_0);
+
+  static childElementCount_Getter(mthis) native "Document_childElementCount_Getter";
+  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+
+  static children_Getter(mthis) native "Document_children_Getter";
+  children_Getter_(mthis) => children_Getter(mthis);
+
+  static compatMode_Getter(mthis) native "Document_compatMode_Getter";
+  compatMode_Getter_(mthis) => compatMode_Getter(mthis);
+
+  static contentType_Getter(mthis) native "Document_contentType_Getter";
+  contentType_Getter_(mthis) => contentType_Getter(mthis);
+
+  static cookie_Getter(mthis) native "Document_cookie_Getter";
+  cookie_Getter_(mthis) => cookie_Getter(mthis);
+
+  static cookie_Setter(mthis, __arg_0) native "Document_cookie_Setter";
+  cookie_Setter_(mthis, __arg_0) => cookie_Setter(mthis, __arg_0);
+
+  static createCDATASection_Callback_0(mthis) native "Document_createCDATASection_Callback";
+  createCDATASection_Callback_0_(mthis) => createCDATASection_Callback_0(mthis);
+
+  static createCDATASection_Callback_1(mthis, __arg_0) native "Document_createCDATASection_Callback";
+  createCDATASection_Callback_1_(mthis, __arg_0) => createCDATASection_Callback_1(mthis, __arg_0);
+
+  static createCDATASection_Callback_2(mthis, __arg_0, __arg_1) native "Document_createCDATASection_Callback";
+  createCDATASection_Callback_2_(mthis, __arg_0, __arg_1) => createCDATASection_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createCDATASection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createCDATASection_Callback";
+  createCDATASection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createCDATASection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDocumentFragment_Callback_0(mthis) native "Document_createDocumentFragment_Callback";
+  createDocumentFragment_Callback_0_(mthis) => createDocumentFragment_Callback_0(mthis);
+
+  static createDocumentFragment_Callback_1(mthis, __arg_0) native "Document_createDocumentFragment_Callback";
+  createDocumentFragment_Callback_1_(mthis, __arg_0) => createDocumentFragment_Callback_1(mthis, __arg_0);
+
+  static createDocumentFragment_Callback_2(mthis, __arg_0, __arg_1) native "Document_createDocumentFragment_Callback";
+  createDocumentFragment_Callback_2_(mthis, __arg_0, __arg_1) => createDocumentFragment_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createElementNS_Callback_0(mthis) native "Document_createElementNS_Callback";
+  createElementNS_Callback_0_(mthis) => createElementNS_Callback_0(mthis);
+
+  static createElementNS_Callback_1(mthis, __arg_0) native "Document_createElementNS_Callback";
+  createElementNS_Callback_1_(mthis, __arg_0) => createElementNS_Callback_1(mthis, __arg_0);
+
+  static createElementNS_Callback_2(mthis, __arg_0, __arg_1) native "Document_createElementNS_Callback";
+  createElementNS_Callback_2_(mthis, __arg_0, __arg_1) => createElementNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createElementNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createElementNS_Callback";
+  createElementNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createElementNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createElementNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createElementNS_Callback";
+  createElementNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createElementNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createElementNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createElementNS_Callback";
+  createElementNS_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createElementNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createElement_Callback_0(mthis) native "Document_createElement_Callback";
+  createElement_Callback_0_(mthis) => createElement_Callback_0(mthis);
+
+  static createElement_Callback_1(mthis, __arg_0) native "Document_createElement_Callback";
+  createElement_Callback_1_(mthis, __arg_0) => createElement_Callback_1(mthis, __arg_0);
+
+  static createElement_Callback_2(mthis, __arg_0, __arg_1) native "Document_createElement_Callback";
+  createElement_Callback_2_(mthis, __arg_0, __arg_1) => createElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createElement_Callback";
+  createElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createElement_Callback";
+  createElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createEvent_Callback_0(mthis) native "Document_createEvent_Callback";
+  createEvent_Callback_0_(mthis) => createEvent_Callback_0(mthis);
+
+  static createEvent_Callback_1(mthis, __arg_0) native "Document_createEvent_Callback";
+  createEvent_Callback_1_(mthis, __arg_0) => createEvent_Callback_1(mthis, __arg_0);
+
+  static createEvent_Callback_2(mthis, __arg_0, __arg_1) native "Document_createEvent_Callback";
+  createEvent_Callback_2_(mthis, __arg_0, __arg_1) => createEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createEvent_Callback";
+  createEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createNodeIterator_Callback_0(mthis) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_0_(mthis) => createNodeIterator_Callback_0(mthis);
+
+  static createNodeIterator_Callback_1(mthis, __arg_0) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_1_(mthis, __arg_0) => createNodeIterator_Callback_1(mthis, __arg_0);
+
+  static createNodeIterator_Callback_2(mthis, __arg_0, __arg_1) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_2_(mthis, __arg_0, __arg_1) => createNodeIterator_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createNodeIterator_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createNodeIterator_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createNodeIterator_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createNodeIterator_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createNodeIterator_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createNodeIterator_Callback";
+  createNodeIterator_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createNodeIterator_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createRange_Callback_0(mthis) native "Document_createRange_Callback";
+  createRange_Callback_0_(mthis) => createRange_Callback_0(mthis);
+
+  static createRange_Callback_1(mthis, __arg_0) native "Document_createRange_Callback";
+  createRange_Callback_1_(mthis, __arg_0) => createRange_Callback_1(mthis, __arg_0);
+
+  static createRange_Callback_2(mthis, __arg_0, __arg_1) native "Document_createRange_Callback";
+  createRange_Callback_2_(mthis, __arg_0, __arg_1) => createRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTextNode_Callback_0(mthis) native "Document_createTextNode_Callback";
+  createTextNode_Callback_0_(mthis) => createTextNode_Callback_0(mthis);
+
+  static createTextNode_Callback_1(mthis, __arg_0) native "Document_createTextNode_Callback";
+  createTextNode_Callback_1_(mthis, __arg_0) => createTextNode_Callback_1(mthis, __arg_0);
+
+  static createTextNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTextNode_Callback";
+  createTextNode_Callback_2_(mthis, __arg_0, __arg_1) => createTextNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTextNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTextNode_Callback";
+  createTextNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTextNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createTouchList_Callback_0(mthis) native "Document_createTouchList_Callback";
+  createTouchList_Callback_0_(mthis) => createTouchList_Callback_0(mthis);
+
+  static createTouchList_Callback_1(mthis, __arg_0) native "Document_createTouchList_Callback";
+  createTouchList_Callback_1_(mthis, __arg_0) => createTouchList_Callback_1(mthis, __arg_0);
+
+  static createTouchList_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTouchList_Callback";
+  createTouchList_Callback_2_(mthis, __arg_0, __arg_1) => createTouchList_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTouchList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTouchList_Callback";
+  createTouchList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTouchList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createTouch_Callback_0(mthis) native "Document_createTouch_Callback";
+  createTouch_Callback_0_(mthis) => createTouch_Callback_0(mthis);
+
+  static createTouch_Callback_1(mthis, __arg_0) native "Document_createTouch_Callback";
+  createTouch_Callback_1_(mthis, __arg_0) => createTouch_Callback_1(mthis, __arg_0);
+
+  static createTouch_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "Document_createTouch_Callback";
+  createTouch_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => createTouch_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static createTouch_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "Document_createTouch_Callback";
+  createTouch_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => createTouch_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static createTouch_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "Document_createTouch_Callback";
+  createTouch_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => createTouch_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+
+  static createTouch_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "Document_createTouch_Callback";
+  createTouch_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => createTouch_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+
+  static createTouch_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTouch_Callback";
+  createTouch_Callback_2_(mthis, __arg_0, __arg_1) => createTouch_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTouch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTouch_Callback";
+  createTouch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTouch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createTouch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createTouch_Callback";
+  createTouch_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createTouch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createTouch_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createTouch_Callback";
+  createTouch_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createTouch_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createTouch_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Document_createTouch_Callback";
+  createTouch_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createTouch_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createTouch_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Document_createTouch_Callback";
+  createTouch_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createTouch_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createTouch_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Document_createTouch_Callback";
+  createTouch_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createTouch_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static createTouch_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Document_createTouch_Callback";
+  createTouch_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createTouch_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static createTreeWalker_Callback_0(mthis) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_0_(mthis) => createTreeWalker_Callback_0(mthis);
+
+  static createTreeWalker_Callback_1(mthis, __arg_0) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_1_(mthis, __arg_0) => createTreeWalker_Callback_1(mthis, __arg_0);
+
+  static createTreeWalker_Callback_2(mthis, __arg_0, __arg_1) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_2_(mthis, __arg_0, __arg_1) => createTreeWalker_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTreeWalker_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createTreeWalker_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createTreeWalker_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createTreeWalker_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createTreeWalker_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_createTreeWalker_Callback";
+  createTreeWalker_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createTreeWalker_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static currentScript_Getter(mthis) native "Document_currentScript_Getter";
+  currentScript_Getter_(mthis) => currentScript_Getter(mthis);
+
+  static defaultCharset_Getter(mthis) native "Document_defaultCharset_Getter";
+  defaultCharset_Getter_(mthis) => defaultCharset_Getter(mthis);
+
+  static defaultView_Getter(mthis) native "Document_defaultView_Getter";
+  defaultView_Getter_(mthis) => defaultView_Getter(mthis);
+
+  static doctype_Getter(mthis) native "Document_doctype_Getter";
+  doctype_Getter_(mthis) => doctype_Getter(mthis);
+
+  static documentElement_Getter(mthis) native "Document_documentElement_Getter";
+  documentElement_Getter_(mthis) => documentElement_Getter(mthis);
+
+  static documentURI_Getter(mthis) native "Document_documentURI_Getter";
+  documentURI_Getter_(mthis) => documentURI_Getter(mthis);
+
+  static domain_Getter(mthis) native "Document_domain_Getter";
+  domain_Getter_(mthis) => domain_Getter(mthis);
+
+  static domain_Setter(mthis, __arg_0) native "Document_domain_Setter";
+  domain_Setter_(mthis, __arg_0) => domain_Setter(mthis, __arg_0);
+
+  static elementFromPoint_Callback_0(mthis) native "Document_elementFromPoint_Callback";
+  elementFromPoint_Callback_0_(mthis) => elementFromPoint_Callback_0(mthis);
+
+  static elementFromPoint_Callback_1(mthis, __arg_0) native "Document_elementFromPoint_Callback";
+  elementFromPoint_Callback_1_(mthis, __arg_0) => elementFromPoint_Callback_1(mthis, __arg_0);
+
+  static elementFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "Document_elementFromPoint_Callback";
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => elementFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_elementFromPoint_Callback";
+  elementFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_elementFromPoint_Callback";
+  elementFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static embeds_Getter(mthis) native "Document_embeds_Getter";
+  embeds_Getter_(mthis) => embeds_Getter(mthis);
+
+  static execCommand_Callback_0(mthis) native "Document_execCommand_Callback";
+  execCommand_Callback_0_(mthis) => execCommand_Callback_0(mthis);
+
+  static execCommand_Callback_1(mthis, __arg_0) native "Document_execCommand_Callback";
+  execCommand_Callback_1_(mthis, __arg_0) => execCommand_Callback_1(mthis, __arg_0);
+
+  static execCommand_Callback_2(mthis, __arg_0, __arg_1) native "Document_execCommand_Callback";
+  execCommand_Callback_2_(mthis, __arg_0, __arg_1) => execCommand_Callback_2(mthis, __arg_0, __arg_1);
+
+  static execCommand_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_execCommand_Callback";
+  execCommand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => execCommand_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static execCommand_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_execCommand_Callback";
+  execCommand_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => execCommand_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static execCommand_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_execCommand_Callback";
+  execCommand_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => execCommand_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static exitFullscreen_Callback_0(mthis) native "Document_exitFullscreen_Callback";
+  exitFullscreen_Callback_0_(mthis) => exitFullscreen_Callback_0(mthis);
+
+  static exitFullscreen_Callback_1(mthis, __arg_0) native "Document_exitFullscreen_Callback";
+  exitFullscreen_Callback_1_(mthis, __arg_0) => exitFullscreen_Callback_1(mthis, __arg_0);
+
+  static exitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_exitFullscreen_Callback";
+  exitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => exitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static exitPointerLock_Callback_0(mthis) native "Document_exitPointerLock_Callback";
+  exitPointerLock_Callback_0_(mthis) => exitPointerLock_Callback_0(mthis);
+
+  static exitPointerLock_Callback_1(mthis, __arg_0) native "Document_exitPointerLock_Callback";
+  exitPointerLock_Callback_1_(mthis, __arg_0) => exitPointerLock_Callback_1(mthis, __arg_0);
+
+  static exitPointerLock_Callback_2(mthis, __arg_0, __arg_1) native "Document_exitPointerLock_Callback";
+  exitPointerLock_Callback_2_(mthis, __arg_0, __arg_1) => exitPointerLock_Callback_2(mthis, __arg_0, __arg_1);
+
+  static firstElementChild_Getter(mthis) native "Document_firstElementChild_Getter";
+  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+
+  static fonts_Getter(mthis) native "Document_fonts_Getter";
+  fonts_Getter_(mthis) => fonts_Getter(mthis);
+
+  static forms_Getter(mthis) native "Document_forms_Getter";
+  forms_Getter_(mthis) => forms_Getter(mthis);
+
+  static fullscreenElement_Getter(mthis) native "Document_fullscreenElement_Getter";
+  fullscreenElement_Getter_(mthis) => fullscreenElement_Getter(mthis);
+
+  static fullscreenEnabled_Getter(mthis) native "Document_fullscreenEnabled_Getter";
+  fullscreenEnabled_Getter_(mthis) => fullscreenEnabled_Getter(mthis);
+
+  static getCSSCanvasContext_Callback_2(mthis, __arg_0, __arg_1) native "Document_getCSSCanvasContext_Callback";
+  getCSSCanvasContext_Callback_2_(mthis, __arg_0, __arg_1) => getCSSCanvasContext_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCSSCanvasContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getCSSCanvasContext_Callback";
+  getCSSCanvasContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCSSCanvasContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getCSSCanvasContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_getCSSCanvasContext_Callback";
+  getCSSCanvasContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getCSSCanvasContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getCSSCanvasContext_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Document_getCSSCanvasContext_Callback";
+  getCSSCanvasContext_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getCSSCanvasContext_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getCSSCanvasContext_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Document_getCSSCanvasContext_Callback";
+  getCSSCanvasContext_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => getCSSCanvasContext_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static getElementById_Callback_0(mthis) native "Document_getElementById_Callback";
+  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+
+  static getElementById_Callback_1(mthis, __arg_0) native "Document_getElementById_Callback";
+  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+
+  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementById_Callback";
+  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementById_Callback";
+  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByClassName_Callback_0(mthis) native "Document_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+
+  static getElementsByClassName_Callback_1(mthis, __arg_0) native "Document_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+
+  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByName_Callback_0(mthis) native "Document_getElementsByName_Callback";
+  getElementsByName_Callback_0_(mthis) => getElementsByName_Callback_0(mthis);
+
+  static getElementsByName_Callback_1(mthis, __arg_0) native "Document_getElementsByName_Callback";
+  getElementsByName_Callback_1_(mthis, __arg_0) => getElementsByName_Callback_1(mthis, __arg_0);
+
+  static getElementsByName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByName_Callback";
+  getElementsByName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByName_Callback";
+  getElementsByName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByTagName_Callback_0(mthis) native "Document_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
+
+  static getElementsByTagName_Callback_1(mthis, __arg_0) native "Document_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
+
+  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "Document_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static head_Getter(mthis) native "Document_head_Getter";
+  head_Getter_(mthis) => head_Getter(mthis);
+
+  static hidden_Getter(mthis) native "Document_hidden_Getter";
+  hidden_Getter_(mthis) => hidden_Getter(mthis);
+
+  static implementation_Getter(mthis) native "Document_implementation_Getter";
+  implementation_Getter_(mthis) => implementation_Getter(mthis);
+
+  static importNode_Callback_0(mthis) native "Document_importNode_Callback";
+  importNode_Callback_0_(mthis) => importNode_Callback_0(mthis);
+
+  static importNode_Callback_1(mthis, __arg_0) native "Document_importNode_Callback";
+  importNode_Callback_1_(mthis, __arg_0) => importNode_Callback_1(mthis, __arg_0);
+
+  static importNode_Callback_2(mthis, __arg_0, __arg_1) native "Document_importNode_Callback";
+  importNode_Callback_2_(mthis, __arg_0, __arg_1) => importNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static importNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_importNode_Callback";
+  importNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static importNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_importNode_Callback";
+  importNode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => importNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static inputEncoding_Getter(mthis) native "Document_inputEncoding_Getter";
+  inputEncoding_Getter_(mthis) => inputEncoding_Getter(mthis);
+
+  static lastElementChild_Getter(mthis) native "Document_lastElementChild_Getter";
+  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
+
+  static lastModified_Getter(mthis) native "Document_lastModified_Getter";
+  lastModified_Getter_(mthis) => lastModified_Getter(mthis);
+
+  static links_Getter(mthis) native "Document_links_Getter";
+  links_Getter_(mthis) => links_Getter(mthis);
+
+  static onabort_Getter(mthis) native "Document_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "Document_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onautocomplete_Getter(mthis) native "Document_onautocomplete_Getter";
+  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+
+  static onautocomplete_Setter(mthis, __arg_0) native "Document_onautocomplete_Setter";
+  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+
+  static onautocompleteerror_Getter(mthis) native "Document_onautocompleteerror_Getter";
+  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+
+  static onautocompleteerror_Setter(mthis, __arg_0) native "Document_onautocompleteerror_Setter";
+  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+
+  static onbeforecopy_Getter(mthis) native "Document_onbeforecopy_Getter";
+  onbeforecopy_Getter_(mthis) => onbeforecopy_Getter(mthis);
+
+  static onbeforecopy_Setter(mthis, __arg_0) native "Document_onbeforecopy_Setter";
+  onbeforecopy_Setter_(mthis, __arg_0) => onbeforecopy_Setter(mthis, __arg_0);
+
+  static onbeforecut_Getter(mthis) native "Document_onbeforecut_Getter";
+  onbeforecut_Getter_(mthis) => onbeforecut_Getter(mthis);
+
+  static onbeforecut_Setter(mthis, __arg_0) native "Document_onbeforecut_Setter";
+  onbeforecut_Setter_(mthis, __arg_0) => onbeforecut_Setter(mthis, __arg_0);
+
+  static onbeforepaste_Getter(mthis) native "Document_onbeforepaste_Getter";
+  onbeforepaste_Getter_(mthis) => onbeforepaste_Getter(mthis);
+
+  static onbeforepaste_Setter(mthis, __arg_0) native "Document_onbeforepaste_Setter";
+  onbeforepaste_Setter_(mthis, __arg_0) => onbeforepaste_Setter(mthis, __arg_0);
+
+  static onblur_Getter(mthis) native "Document_onblur_Getter";
+  onblur_Getter_(mthis) => onblur_Getter(mthis);
+
+  static onblur_Setter(mthis, __arg_0) native "Document_onblur_Setter";
+  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+
+  static oncancel_Getter(mthis) native "Document_oncancel_Getter";
+  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+
+  static oncancel_Setter(mthis, __arg_0) native "Document_oncancel_Setter";
+  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+
+  static oncanplay_Getter(mthis) native "Document_oncanplay_Getter";
+  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+
+  static oncanplay_Setter(mthis, __arg_0) native "Document_oncanplay_Setter";
+  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+
+  static oncanplaythrough_Getter(mthis) native "Document_oncanplaythrough_Getter";
+  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+
+  static oncanplaythrough_Setter(mthis, __arg_0) native "Document_oncanplaythrough_Setter";
+  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "Document_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "Document_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onclick_Getter(mthis) native "Document_onclick_Getter";
+  onclick_Getter_(mthis) => onclick_Getter(mthis);
+
+  static onclick_Setter(mthis, __arg_0) native "Document_onclick_Setter";
+  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "Document_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "Document_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static oncontextmenu_Getter(mthis) native "Document_oncontextmenu_Getter";
+  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+
+  static oncontextmenu_Setter(mthis, __arg_0) native "Document_oncontextmenu_Setter";
+  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+
+  static oncopy_Getter(mthis) native "Document_oncopy_Getter";
+  oncopy_Getter_(mthis) => oncopy_Getter(mthis);
+
+  static oncopy_Setter(mthis, __arg_0) native "Document_oncopy_Setter";
+  oncopy_Setter_(mthis, __arg_0) => oncopy_Setter(mthis, __arg_0);
+
+  static oncuechange_Getter(mthis) native "Document_oncuechange_Getter";
+  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+
+  static oncuechange_Setter(mthis, __arg_0) native "Document_oncuechange_Setter";
+  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+
+  static oncut_Getter(mthis) native "Document_oncut_Getter";
+  oncut_Getter_(mthis) => oncut_Getter(mthis);
+
+  static oncut_Setter(mthis, __arg_0) native "Document_oncut_Setter";
+  oncut_Setter_(mthis, __arg_0) => oncut_Setter(mthis, __arg_0);
+
+  static ondblclick_Getter(mthis) native "Document_ondblclick_Getter";
+  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+
+  static ondblclick_Setter(mthis, __arg_0) native "Document_ondblclick_Setter";
+  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+
+  static ondrag_Getter(mthis) native "Document_ondrag_Getter";
+  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+
+  static ondrag_Setter(mthis, __arg_0) native "Document_ondrag_Setter";
+  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+
+  static ondragend_Getter(mthis) native "Document_ondragend_Getter";
+  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+
+  static ondragend_Setter(mthis, __arg_0) native "Document_ondragend_Setter";
+  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+
+  static ondragenter_Getter(mthis) native "Document_ondragenter_Getter";
+  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+
+  static ondragenter_Setter(mthis, __arg_0) native "Document_ondragenter_Setter";
+  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+
+  static ondragleave_Getter(mthis) native "Document_ondragleave_Getter";
+  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+
+  static ondragleave_Setter(mthis, __arg_0) native "Document_ondragleave_Setter";
+  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+
+  static ondragover_Getter(mthis) native "Document_ondragover_Getter";
+  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+
+  static ondragover_Setter(mthis, __arg_0) native "Document_ondragover_Setter";
+  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+
+  static ondragstart_Getter(mthis) native "Document_ondragstart_Getter";
+  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+
+  static ondragstart_Setter(mthis, __arg_0) native "Document_ondragstart_Setter";
+  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+
+  static ondrop_Getter(mthis) native "Document_ondrop_Getter";
+  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+
+  static ondrop_Setter(mthis, __arg_0) native "Document_ondrop_Setter";
+  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+
+  static ondurationchange_Getter(mthis) native "Document_ondurationchange_Getter";
+  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+
+  static ondurationchange_Setter(mthis, __arg_0) native "Document_ondurationchange_Setter";
+  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+
+  static onemptied_Getter(mthis) native "Document_onemptied_Getter";
+  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+
+  static onemptied_Setter(mthis, __arg_0) native "Document_onemptied_Setter";
+  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+
+  static onended_Getter(mthis) native "Document_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "Document_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "Document_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "Document_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onfocus_Getter(mthis) native "Document_onfocus_Getter";
+  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+
+  static onfocus_Setter(mthis, __arg_0) native "Document_onfocus_Setter";
+  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+
+  static onfullscreenchange_Getter(mthis) native "Document_onfullscreenchange_Getter";
+  onfullscreenchange_Getter_(mthis) => onfullscreenchange_Getter(mthis);
+
+  static onfullscreenchange_Setter(mthis, __arg_0) native "Document_onfullscreenchange_Setter";
+  onfullscreenchange_Setter_(mthis, __arg_0) => onfullscreenchange_Setter(mthis, __arg_0);
+
+  static onfullscreenerror_Getter(mthis) native "Document_onfullscreenerror_Getter";
+  onfullscreenerror_Getter_(mthis) => onfullscreenerror_Getter(mthis);
+
+  static onfullscreenerror_Setter(mthis, __arg_0) native "Document_onfullscreenerror_Setter";
+  onfullscreenerror_Setter_(mthis, __arg_0) => onfullscreenerror_Setter(mthis, __arg_0);
+
+  static oninput_Getter(mthis) native "Document_oninput_Getter";
+  oninput_Getter_(mthis) => oninput_Getter(mthis);
+
+  static oninput_Setter(mthis, __arg_0) native "Document_oninput_Setter";
+  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+
+  static oninvalid_Getter(mthis) native "Document_oninvalid_Getter";
+  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+
+  static oninvalid_Setter(mthis, __arg_0) native "Document_oninvalid_Setter";
+  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+
+  static onkeydown_Getter(mthis) native "Document_onkeydown_Getter";
+  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+
+  static onkeydown_Setter(mthis, __arg_0) native "Document_onkeydown_Setter";
+  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+
+  static onkeypress_Getter(mthis) native "Document_onkeypress_Getter";
+  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+
+  static onkeypress_Setter(mthis, __arg_0) native "Document_onkeypress_Setter";
+  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+
+  static onkeyup_Getter(mthis) native "Document_onkeyup_Getter";
+  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+
+  static onkeyup_Setter(mthis, __arg_0) native "Document_onkeyup_Setter";
+  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "Document_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "Document_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadeddata_Getter(mthis) native "Document_onloadeddata_Getter";
+  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+
+  static onloadeddata_Setter(mthis, __arg_0) native "Document_onloadeddata_Setter";
+  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+
+  static onloadedmetadata_Getter(mthis) native "Document_onloadedmetadata_Getter";
+  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+
+  static onloadedmetadata_Setter(mthis, __arg_0) native "Document_onloadedmetadata_Setter";
+  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "Document_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "Document_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onmousedown_Getter(mthis) native "Document_onmousedown_Getter";
+  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+
+  static onmousedown_Setter(mthis, __arg_0) native "Document_onmousedown_Setter";
+  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+
+  static onmouseenter_Getter(mthis) native "Document_onmouseenter_Getter";
+  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+
+  static onmouseenter_Setter(mthis, __arg_0) native "Document_onmouseenter_Setter";
+  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+
+  static onmouseleave_Getter(mthis) native "Document_onmouseleave_Getter";
+  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+
+  static onmouseleave_Setter(mthis, __arg_0) native "Document_onmouseleave_Setter";
+  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+
+  static onmousemove_Getter(mthis) native "Document_onmousemove_Getter";
+  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+
+  static onmousemove_Setter(mthis, __arg_0) native "Document_onmousemove_Setter";
+  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+
+  static onmouseout_Getter(mthis) native "Document_onmouseout_Getter";
+  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+
+  static onmouseout_Setter(mthis, __arg_0) native "Document_onmouseout_Setter";
+  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+
+  static onmouseover_Getter(mthis) native "Document_onmouseover_Getter";
+  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+
+  static onmouseover_Setter(mthis, __arg_0) native "Document_onmouseover_Setter";
+  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+
+  static onmouseup_Getter(mthis) native "Document_onmouseup_Getter";
+  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+
+  static onmouseup_Setter(mthis, __arg_0) native "Document_onmouseup_Setter";
+  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+
+  static onmousewheel_Getter(mthis) native "Document_onmousewheel_Getter";
+  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+
+  static onmousewheel_Setter(mthis, __arg_0) native "Document_onmousewheel_Setter";
+  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+
+  static onpaste_Getter(mthis) native "Document_onpaste_Getter";
+  onpaste_Getter_(mthis) => onpaste_Getter(mthis);
+
+  static onpaste_Setter(mthis, __arg_0) native "Document_onpaste_Setter";
+  onpaste_Setter_(mthis, __arg_0) => onpaste_Setter(mthis, __arg_0);
+
+  static onpause_Getter(mthis) native "Document_onpause_Getter";
+  onpause_Getter_(mthis) => onpause_Getter(mthis);
+
+  static onpause_Setter(mthis, __arg_0) native "Document_onpause_Setter";
+  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+
+  static onplay_Getter(mthis) native "Document_onplay_Getter";
+  onplay_Getter_(mthis) => onplay_Getter(mthis);
+
+  static onplay_Setter(mthis, __arg_0) native "Document_onplay_Setter";
+  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+
+  static onplaying_Getter(mthis) native "Document_onplaying_Getter";
+  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+
+  static onplaying_Setter(mthis, __arg_0) native "Document_onplaying_Setter";
+  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+
+  static onpointerlockchange_Getter(mthis) native "Document_onpointerlockchange_Getter";
+  onpointerlockchange_Getter_(mthis) => onpointerlockchange_Getter(mthis);
+
+  static onpointerlockchange_Setter(mthis, __arg_0) native "Document_onpointerlockchange_Setter";
+  onpointerlockchange_Setter_(mthis, __arg_0) => onpointerlockchange_Setter(mthis, __arg_0);
+
+  static onpointerlockerror_Getter(mthis) native "Document_onpointerlockerror_Getter";
+  onpointerlockerror_Getter_(mthis) => onpointerlockerror_Getter(mthis);
+
+  static onpointerlockerror_Setter(mthis, __arg_0) native "Document_onpointerlockerror_Setter";
+  onpointerlockerror_Setter_(mthis, __arg_0) => onpointerlockerror_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "Document_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "Document_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onratechange_Getter(mthis) native "Document_onratechange_Getter";
+  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+
+  static onratechange_Setter(mthis, __arg_0) native "Document_onratechange_Setter";
+  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+
+  static onreadystatechange_Getter(mthis) native "Document_onreadystatechange_Getter";
+  onreadystatechange_Getter_(mthis) => onreadystatechange_Getter(mthis);
+
+  static onreadystatechange_Setter(mthis, __arg_0) native "Document_onreadystatechange_Setter";
+  onreadystatechange_Setter_(mthis, __arg_0) => onreadystatechange_Setter(mthis, __arg_0);
+
+  static onreset_Getter(mthis) native "Document_onreset_Getter";
+  onreset_Getter_(mthis) => onreset_Getter(mthis);
+
+  static onreset_Setter(mthis, __arg_0) native "Document_onreset_Setter";
+  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+
+  static onresize_Getter(mthis) native "Document_onresize_Getter";
+  onresize_Getter_(mthis) => onresize_Getter(mthis);
+
+  static onresize_Setter(mthis, __arg_0) native "Document_onresize_Setter";
+  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+
+  static onscroll_Getter(mthis) native "Document_onscroll_Getter";
+  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+
+  static onscroll_Setter(mthis, __arg_0) native "Document_onscroll_Setter";
+  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+
+  static onsearch_Getter(mthis) native "Document_onsearch_Getter";
+  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
+
+  static onsearch_Setter(mthis, __arg_0) native "Document_onsearch_Setter";
+  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
+
+  static onsecuritypolicyviolation_Getter(mthis) native "Document_onsecuritypolicyviolation_Getter";
+  onsecuritypolicyviolation_Getter_(mthis) => onsecuritypolicyviolation_Getter(mthis);
+
+  static onsecuritypolicyviolation_Setter(mthis, __arg_0) native "Document_onsecuritypolicyviolation_Setter";
+  onsecuritypolicyviolation_Setter_(mthis, __arg_0) => onsecuritypolicyviolation_Setter(mthis, __arg_0);
+
+  static onseeked_Getter(mthis) native "Document_onseeked_Getter";
+  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+
+  static onseeked_Setter(mthis, __arg_0) native "Document_onseeked_Setter";
+  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+
+  static onseeking_Getter(mthis) native "Document_onseeking_Getter";
+  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+
+  static onseeking_Setter(mthis, __arg_0) native "Document_onseeking_Setter";
+  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+
+  static onselect_Getter(mthis) native "Document_onselect_Getter";
+  onselect_Getter_(mthis) => onselect_Getter(mthis);
+
+  static onselect_Setter(mthis, __arg_0) native "Document_onselect_Setter";
+  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+
+  static onselectionchange_Getter(mthis) native "Document_onselectionchange_Getter";
+  onselectionchange_Getter_(mthis) => onselectionchange_Getter(mthis);
+
+  static onselectionchange_Setter(mthis, __arg_0) native "Document_onselectionchange_Setter";
+  onselectionchange_Setter_(mthis, __arg_0) => onselectionchange_Setter(mthis, __arg_0);
+
+  static onselectstart_Getter(mthis) native "Document_onselectstart_Getter";
+  onselectstart_Getter_(mthis) => onselectstart_Getter(mthis);
+
+  static onselectstart_Setter(mthis, __arg_0) native "Document_onselectstart_Setter";
+  onselectstart_Setter_(mthis, __arg_0) => onselectstart_Setter(mthis, __arg_0);
+
+  static onshow_Getter(mthis) native "Document_onshow_Getter";
+  onshow_Getter_(mthis) => onshow_Getter(mthis);
+
+  static onshow_Setter(mthis, __arg_0) native "Document_onshow_Setter";
+  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+
+  static onstalled_Getter(mthis) native "Document_onstalled_Getter";
+  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+
+  static onstalled_Setter(mthis, __arg_0) native "Document_onstalled_Setter";
+  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+
+  static onsubmit_Getter(mthis) native "Document_onsubmit_Getter";
+  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+
+  static onsubmit_Setter(mthis, __arg_0) native "Document_onsubmit_Setter";
+  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+
+  static onsuspend_Getter(mthis) native "Document_onsuspend_Getter";
+  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+
+  static onsuspend_Setter(mthis, __arg_0) native "Document_onsuspend_Setter";
+  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+
+  static ontimeupdate_Getter(mthis) native "Document_ontimeupdate_Getter";
+  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+
+  static ontimeupdate_Setter(mthis, __arg_0) native "Document_ontimeupdate_Setter";
+  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+
+  static ontoggle_Getter(mthis) native "Document_ontoggle_Getter";
+  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+
+  static ontoggle_Setter(mthis, __arg_0) native "Document_ontoggle_Setter";
+  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+
+  static ontouchcancel_Getter(mthis) native "Document_ontouchcancel_Getter";
+  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
+
+  static ontouchcancel_Setter(mthis, __arg_0) native "Document_ontouchcancel_Setter";
+  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
+
+  static ontouchend_Getter(mthis) native "Document_ontouchend_Getter";
+  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
+
+  static ontouchend_Setter(mthis, __arg_0) native "Document_ontouchend_Setter";
+  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
+
+  static ontouchmove_Getter(mthis) native "Document_ontouchmove_Getter";
+  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
+
+  static ontouchmove_Setter(mthis, __arg_0) native "Document_ontouchmove_Setter";
+  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
+
+  static ontouchstart_Getter(mthis) native "Document_ontouchstart_Getter";
+  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
+
+  static ontouchstart_Setter(mthis, __arg_0) native "Document_ontouchstart_Setter";
+  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
+
+  static onvolumechange_Getter(mthis) native "Document_onvolumechange_Getter";
+  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+
+  static onvolumechange_Setter(mthis, __arg_0) native "Document_onvolumechange_Setter";
+  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+
+  static onwaiting_Getter(mthis) native "Document_onwaiting_Getter";
+  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+
+  static onwaiting_Setter(mthis, __arg_0) native "Document_onwaiting_Setter";
+  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+
+  static onwebkitfullscreenchange_Getter(mthis) native "Document_onwebkitfullscreenchange_Getter";
+  onwebkitfullscreenchange_Getter_(mthis) => onwebkitfullscreenchange_Getter(mthis);
+
+  static onwebkitfullscreenchange_Setter(mthis, __arg_0) native "Document_onwebkitfullscreenchange_Setter";
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => onwebkitfullscreenchange_Setter(mthis, __arg_0);
+
+  static onwebkitfullscreenerror_Getter(mthis) native "Document_onwebkitfullscreenerror_Getter";
+  onwebkitfullscreenerror_Getter_(mthis) => onwebkitfullscreenerror_Getter(mthis);
+
+  static onwebkitfullscreenerror_Setter(mthis, __arg_0) native "Document_onwebkitfullscreenerror_Setter";
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => onwebkitfullscreenerror_Setter(mthis, __arg_0);
+
+  static onwheel_Getter(mthis) native "Document_onwheel_Getter";
+  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
+
+  static onwheel_Setter(mthis, __arg_0) native "Document_onwheel_Setter";
+  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
+
+  static plugins_Getter(mthis) native "Document_plugins_Getter";
+  plugins_Getter_(mthis) => plugins_Getter(mthis);
+
+  static pointerLockElement_Getter(mthis) native "Document_pointerLockElement_Getter";
+  pointerLockElement_Getter_(mthis) => pointerLockElement_Getter(mthis);
+
+  static preferredStylesheetSet_Getter(mthis) native "Document_preferredStylesheetSet_Getter";
+  preferredStylesheetSet_Getter_(mthis) => preferredStylesheetSet_Getter(mthis);
+
+  static queryCommandEnabled_Callback_0(mthis) native "Document_queryCommandEnabled_Callback";
+  queryCommandEnabled_Callback_0_(mthis) => queryCommandEnabled_Callback_0(mthis);
+
+  static queryCommandEnabled_Callback_1(mthis, __arg_0) native "Document_queryCommandEnabled_Callback";
+  queryCommandEnabled_Callback_1_(mthis, __arg_0) => queryCommandEnabled_Callback_1(mthis, __arg_0);
+
+  static queryCommandEnabled_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandEnabled_Callback";
+  queryCommandEnabled_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandEnabled_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryCommandEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandEnabled_Callback";
+  queryCommandEnabled_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static queryCommandIndeterm_Callback_0(mthis) native "Document_queryCommandIndeterm_Callback";
+  queryCommandIndeterm_Callback_0_(mthis) => queryCommandIndeterm_Callback_0(mthis);
+
+  static queryCommandIndeterm_Callback_1(mthis, __arg_0) native "Document_queryCommandIndeterm_Callback";
+  queryCommandIndeterm_Callback_1_(mthis, __arg_0) => queryCommandIndeterm_Callback_1(mthis, __arg_0);
+
+  static queryCommandIndeterm_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandIndeterm_Callback";
+  queryCommandIndeterm_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandIndeterm_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryCommandIndeterm_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandIndeterm_Callback";
+  queryCommandIndeterm_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandIndeterm_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static queryCommandState_Callback_0(mthis) native "Document_queryCommandState_Callback";
+  queryCommandState_Callback_0_(mthis) => queryCommandState_Callback_0(mthis);
+
+  static queryCommandState_Callback_1(mthis, __arg_0) native "Document_queryCommandState_Callback";
+  queryCommandState_Callback_1_(mthis, __arg_0) => queryCommandState_Callback_1(mthis, __arg_0);
+
+  static queryCommandState_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandState_Callback";
+  queryCommandState_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandState_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryCommandState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandState_Callback";
+  queryCommandState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static queryCommandSupported_Callback_0(mthis) native "Document_queryCommandSupported_Callback";
+  queryCommandSupported_Callback_0_(mthis) => queryCommandSupported_Callback_0(mthis);
+
+  static queryCommandSupported_Callback_1(mthis, __arg_0) native "Document_queryCommandSupported_Callback";
+  queryCommandSupported_Callback_1_(mthis, __arg_0) => queryCommandSupported_Callback_1(mthis, __arg_0);
+
+  static queryCommandSupported_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandSupported_Callback";
+  queryCommandSupported_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandSupported_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryCommandSupported_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandSupported_Callback";
+  queryCommandSupported_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandSupported_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static queryCommandValue_Callback_0(mthis) native "Document_queryCommandValue_Callback";
+  queryCommandValue_Callback_0_(mthis) => queryCommandValue_Callback_0(mthis);
+
+  static queryCommandValue_Callback_1(mthis, __arg_0) native "Document_queryCommandValue_Callback";
+  queryCommandValue_Callback_1_(mthis, __arg_0) => queryCommandValue_Callback_1(mthis, __arg_0);
+
+  static queryCommandValue_Callback_2(mthis, __arg_0, __arg_1) native "Document_queryCommandValue_Callback";
+  queryCommandValue_Callback_2_(mthis, __arg_0, __arg_1) => queryCommandValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryCommandValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_queryCommandValue_Callback";
+  queryCommandValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryCommandValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static querySelectorAll_Callback_0(mthis) native "Document_querySelectorAll_Callback";
+  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
+
+  static querySelectorAll_Callback_1(mthis, __arg_0) native "Document_querySelectorAll_Callback";
+  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
+
+  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "Document_querySelectorAll_Callback";
+  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_querySelectorAll_Callback";
+  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static querySelector_Callback_0(mthis) native "Document_querySelector_Callback";
+  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
+
+  static querySelector_Callback_1(mthis, __arg_0) native "Document_querySelector_Callback";
+  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
+
+  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "Document_querySelector_Callback";
+  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_querySelector_Callback";
+  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readyState_Getter(mthis) native "Document_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
+
+  static referrer_Getter(mthis) native "Document_referrer_Getter";
+  referrer_Getter_(mthis) => referrer_Getter(mthis);
+
+  static registerElement_Callback_0(mthis) native "Document_registerElement_Callback";
+  registerElement_Callback_0_(mthis) => registerElement_Callback_0(mthis);
+
+  static registerElement_Callback_1(mthis, __arg_0) native "Document_registerElement_Callback";
+  registerElement_Callback_1_(mthis, __arg_0) => registerElement_Callback_1(mthis, __arg_0);
+
+  static registerElement_Callback_2(mthis, __arg_0, __arg_1) native "Document_registerElement_Callback";
+  registerElement_Callback_2_(mthis, __arg_0, __arg_1) => registerElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static registerElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Document_registerElement_Callback";
+  registerElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static registerElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Document_registerElement_Callback";
+  registerElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => registerElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rootElement_Getter(mthis) native "Document_rootElement_Getter";
+  rootElement_Getter_(mthis) => rootElement_Getter(mthis);
+
+  static scripts_Getter(mthis) native "Document_scripts_Getter";
+  scripts_Getter_(mthis) => scripts_Getter(mthis);
+
+  static selectedStylesheetSet_Getter(mthis) native "Document_selectedStylesheetSet_Getter";
+  selectedStylesheetSet_Getter_(mthis) => selectedStylesheetSet_Getter(mthis);
+
+  static selectedStylesheetSet_Setter(mthis, __arg_0) native "Document_selectedStylesheetSet_Setter";
+  selectedStylesheetSet_Setter_(mthis, __arg_0) => selectedStylesheetSet_Setter(mthis, __arg_0);
+
+  static styleSheets_Getter(mthis) native "Document_styleSheets_Getter";
+  styleSheets_Getter_(mthis) => styleSheets_Getter(mthis);
+
+  static timeline_Getter(mthis) native "Document_timeline_Getter";
+  timeline_Getter_(mthis) => timeline_Getter(mthis);
+
+  static title_Getter(mthis) native "Document_title_Getter";
+  title_Getter_(mthis) => title_Getter(mthis);
+
+  static title_Setter(mthis, __arg_0) native "Document_title_Setter";
+  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
+
+  static visibilityState_Getter(mthis) native "Document_visibilityState_Getter";
+  visibilityState_Getter_(mthis) => visibilityState_Getter(mthis);
+
+  static webkitCancelFullScreen_Callback_0(mthis) native "Document_webkitCancelFullScreen_Callback";
+  webkitCancelFullScreen_Callback_0_(mthis) => webkitCancelFullScreen_Callback_0(mthis);
+
+  static webkitCancelFullScreen_Callback_1(mthis, __arg_0) native "Document_webkitCancelFullScreen_Callback";
+  webkitCancelFullScreen_Callback_1_(mthis, __arg_0) => webkitCancelFullScreen_Callback_1(mthis, __arg_0);
+
+  static webkitCancelFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_webkitCancelFullScreen_Callback";
+  webkitCancelFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitCancelFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitExitFullscreen_Callback_0(mthis) native "Document_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_0_(mthis) => webkitExitFullscreen_Callback_0(mthis);
+
+  static webkitExitFullscreen_Callback_1(mthis, __arg_0) native "Document_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_1_(mthis, __arg_0) => webkitExitFullscreen_Callback_1(mthis, __arg_0);
+
+  static webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Document_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitFullscreenElement_Getter(mthis) native "Document_webkitFullscreenElement_Getter";
+  webkitFullscreenElement_Getter_(mthis) => webkitFullscreenElement_Getter(mthis);
+
+  static webkitFullscreenEnabled_Getter(mthis) native "Document_webkitFullscreenEnabled_Getter";
+  webkitFullscreenEnabled_Getter_(mthis) => webkitFullscreenEnabled_Getter(mthis);
+
+  static webkitHidden_Getter(mthis) native "Document_webkitHidden_Getter";
+  webkitHidden_Getter_(mthis) => webkitHidden_Getter(mthis);
+
+  static webkitIsFullScreen_Getter(mthis) native "Document_webkitIsFullScreen_Getter";
+  webkitIsFullScreen_Getter_(mthis) => webkitIsFullScreen_Getter(mthis);
+
+  static webkitVisibilityState_Getter(mthis) native "Document_webkitVisibilityState_Getter";
+  webkitVisibilityState_Getter_(mthis) => webkitVisibilityState_Getter(mthis);
+
+  static xmlEncoding_Getter(mthis) native "Document_xmlEncoding_Getter";
+  xmlEncoding_Getter_(mthis) => xmlEncoding_Getter(mthis);
+
+}
+
+class BlinkDocumentFragment extends BlinkNode {
+  static final instance = new BlinkDocumentFragment();
+
+  static childElementCount_Getter(mthis) native "DocumentFragment_childElementCount_Getter";
+  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+
+  static constructorCallback_0() native "DocumentFragment_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "DocumentFragment_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "DocumentFragment_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static firstElementChild_Getter(mthis) native "DocumentFragment_firstElementChild_Getter";
+  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+
+  static getElementById_Callback_0(mthis) native "DocumentFragment_getElementById_Callback";
+  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+
+  static getElementById_Callback_1(mthis, __arg_0) native "DocumentFragment_getElementById_Callback";
+  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+
+  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_getElementById_Callback";
+  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_getElementById_Callback";
+  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static lastElementChild_Getter(mthis) native "DocumentFragment_lastElementChild_Getter";
+  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
+
+  static querySelectorAll_Callback_0(mthis) native "DocumentFragment_querySelectorAll_Callback";
+  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
+
+  static querySelectorAll_Callback_1(mthis, __arg_0) native "DocumentFragment_querySelectorAll_Callback";
+  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
+
+  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_querySelectorAll_Callback";
+  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_querySelectorAll_Callback";
+  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static querySelector_Callback_0(mthis) native "DocumentFragment_querySelector_Callback";
+  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
+
+  static querySelector_Callback_1(mthis, __arg_0) native "DocumentFragment_querySelector_Callback";
+  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
+
+  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "DocumentFragment_querySelector_Callback";
+  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "DocumentFragment_querySelector_Callback";
+  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkDocumentType extends BlinkNode {
+  static final instance = new BlinkDocumentType();
+
+}
+
+class BlinkDynamicsCompressorNode extends BlinkAudioNode {
+  static final instance = new BlinkDynamicsCompressorNode();
+
+  static attack_Getter(mthis) native "DynamicsCompressorNode_attack_Getter";
+  attack_Getter_(mthis) => attack_Getter(mthis);
+
+  static knee_Getter(mthis) native "DynamicsCompressorNode_knee_Getter";
+  knee_Getter_(mthis) => knee_Getter(mthis);
+
+  static ratio_Getter(mthis) native "DynamicsCompressorNode_ratio_Getter";
+  ratio_Getter_(mthis) => ratio_Getter(mthis);
+
+  static reduction_Getter(mthis) native "DynamicsCompressorNode_reduction_Getter";
+  reduction_Getter_(mthis) => reduction_Getter(mthis);
+
+  static release_Getter(mthis) native "DynamicsCompressorNode_release_Getter";
+  release_Getter_(mthis) => release_Getter(mthis);
+
+  static threshold_Getter(mthis) native "DynamicsCompressorNode_threshold_Getter";
+  threshold_Getter_(mthis) => threshold_Getter(mthis);
+
+}
+
+class BlinkEXTBlendMinMax {
+  static final instance = new BlinkEXTBlendMinMax();
+
+}
+
+class BlinkEXTFragDepth {
+  static final instance = new BlinkEXTFragDepth();
+
+}
+
+class BlinkEXTShaderTextureLOD {
+  static final instance = new BlinkEXTShaderTextureLOD();
+
+}
+
+class BlinkEXTTextureFilterAnisotropic {
+  static final instance = new BlinkEXTTextureFilterAnisotropic();
+
+}
+
+class BlinkElement extends BlinkNode {
+  static final instance = new BlinkElement();
+
+  static animate_Callback_0(mthis) native "Element_animate_Callback";
+  animate_Callback_0_(mthis) => animate_Callback_0(mthis);
+
+  static animate_Callback_1(mthis, __arg_0) native "Element_animate_Callback";
+  animate_Callback_1_(mthis, __arg_0) => animate_Callback_1(mthis, __arg_0);
+
+  static animate_Callback_2(mthis, __arg_0, __arg_1) native "Element_animate_Callback";
+  animate_Callback_2_(mthis, __arg_0, __arg_1) => animate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static animate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_animate_Callback";
+  animate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => animate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static animate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_animate_Callback";
+  animate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => animate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static attributes_Getter(mthis) native "Element_attributes_Getter";
+  attributes_Getter_(mthis) => attributes_Getter(mthis);
+
+  static blur_Callback_0(mthis) native "Element_blur_Callback";
+  blur_Callback_0_(mthis) => blur_Callback_0(mthis);
+
+  static blur_Callback_1(mthis, __arg_0) native "Element_blur_Callback";
+  blur_Callback_1_(mthis, __arg_0) => blur_Callback_1(mthis, __arg_0);
+
+  static blur_Callback_2(mthis, __arg_0, __arg_1) native "Element_blur_Callback";
+  blur_Callback_2_(mthis, __arg_0, __arg_1) => blur_Callback_2(mthis, __arg_0, __arg_1);
+
+  static childElementCount_Getter(mthis) native "Element_childElementCount_Getter";
+  childElementCount_Getter_(mthis) => childElementCount_Getter(mthis);
+
+  static children_Getter(mthis) native "Element_children_Getter";
+  children_Getter_(mthis) => children_Getter(mthis);
+
+  static classList_Getter(mthis) native "Element_classList_Getter";
+  classList_Getter_(mthis) => classList_Getter(mthis);
+
+  static className_Getter(mthis) native "Element_className_Getter";
+  className_Getter_(mthis) => className_Getter(mthis);
+
+  static className_Setter(mthis, __arg_0) native "Element_className_Setter";
+  className_Setter_(mthis, __arg_0) => className_Setter(mthis, __arg_0);
+
+  static clientHeight_Getter(mthis) native "Element_clientHeight_Getter";
+  clientHeight_Getter_(mthis) => clientHeight_Getter(mthis);
+
+  static clientLeft_Getter(mthis) native "Element_clientLeft_Getter";
+  clientLeft_Getter_(mthis) => clientLeft_Getter(mthis);
+
+  static clientTop_Getter(mthis) native "Element_clientTop_Getter";
+  clientTop_Getter_(mthis) => clientTop_Getter(mthis);
+
+  static clientWidth_Getter(mthis) native "Element_clientWidth_Getter";
+  clientWidth_Getter_(mthis) => clientWidth_Getter(mthis);
+
+  static createShadowRoot_Callback_0(mthis) native "Element_createShadowRoot_Callback";
+  createShadowRoot_Callback_0_(mthis) => createShadowRoot_Callback_0(mthis);
+
+  static createShadowRoot_Callback_1(mthis, __arg_0) native "Element_createShadowRoot_Callback";
+  createShadowRoot_Callback_1_(mthis, __arg_0) => createShadowRoot_Callback_1(mthis, __arg_0);
+
+  static createShadowRoot_Callback_2(mthis, __arg_0, __arg_1) native "Element_createShadowRoot_Callback";
+  createShadowRoot_Callback_2_(mthis, __arg_0, __arg_1) => createShadowRoot_Callback_2(mthis, __arg_0, __arg_1);
+
+  static firstElementChild_Getter(mthis) native "Element_firstElementChild_Getter";
+  firstElementChild_Getter_(mthis) => firstElementChild_Getter(mthis);
+
+  static focus_Callback_0(mthis) native "Element_focus_Callback";
+  focus_Callback_0_(mthis) => focus_Callback_0(mthis);
+
+  static focus_Callback_1(mthis, __arg_0) native "Element_focus_Callback";
+  focus_Callback_1_(mthis, __arg_0) => focus_Callback_1(mthis, __arg_0);
+
+  static focus_Callback_2(mthis, __arg_0, __arg_1) native "Element_focus_Callback";
+  focus_Callback_2_(mthis, __arg_0, __arg_1) => focus_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAnimationPlayers_Callback_0(mthis) native "Element_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_0_(mthis) => getAnimationPlayers_Callback_0(mthis);
+
+  static getAnimationPlayers_Callback_1(mthis, __arg_0) native "Element_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_1_(mthis, __arg_0) => getAnimationPlayers_Callback_1(mthis, __arg_0);
+
+  static getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAnimationPlayers_Callback";
+  getAnimationPlayers_Callback_2_(mthis, __arg_0, __arg_1) => getAnimationPlayers_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAttributeNS_Callback_0(mthis) native "Element_getAttributeNS_Callback";
+  getAttributeNS_Callback_0_(mthis) => getAttributeNS_Callback_0(mthis);
+
+  static getAttributeNS_Callback_1(mthis, __arg_0) native "Element_getAttributeNS_Callback";
+  getAttributeNS_Callback_1_(mthis, __arg_0) => getAttributeNS_Callback_1(mthis, __arg_0);
+
+  static getAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAttributeNS_Callback";
+  getAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => getAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getAttributeNS_Callback";
+  getAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_getAttributeNS_Callback";
+  getAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getAttribute_Callback_0(mthis) native "Element_getAttribute_Callback";
+  getAttribute_Callback_0_(mthis) => getAttribute_Callback_0(mthis);
+
+  static getAttribute_Callback_1(mthis, __arg_0) native "Element_getAttribute_Callback";
+  getAttribute_Callback_1_(mthis, __arg_0) => getAttribute_Callback_1(mthis, __arg_0);
+
+  static getAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_getAttribute_Callback";
+  getAttribute_Callback_2_(mthis, __arg_0, __arg_1) => getAttribute_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getAttribute_Callback";
+  getAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getBoundingClientRect_Callback_0(mthis) native "Element_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_0_(mthis) => getBoundingClientRect_Callback_0(mthis);
+
+  static getBoundingClientRect_Callback_1(mthis, __arg_0) native "Element_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_1_(mthis, __arg_0) => getBoundingClientRect_Callback_1(mthis, __arg_0);
+
+  static getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1) native "Element_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_2_(mthis, __arg_0, __arg_1) => getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getClientRects_Callback_0(mthis) native "Element_getClientRects_Callback";
+  getClientRects_Callback_0_(mthis) => getClientRects_Callback_0(mthis);
+
+  static getClientRects_Callback_1(mthis, __arg_0) native "Element_getClientRects_Callback";
+  getClientRects_Callback_1_(mthis, __arg_0) => getClientRects_Callback_1(mthis, __arg_0);
+
+  static getClientRects_Callback_2(mthis, __arg_0, __arg_1) native "Element_getClientRects_Callback";
+  getClientRects_Callback_2_(mthis, __arg_0, __arg_1) => getClientRects_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getDestinationInsertionPoints_Callback_0(mthis) native "Element_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_0_(mthis) => getDestinationInsertionPoints_Callback_0(mthis);
+
+  static getDestinationInsertionPoints_Callback_1(mthis, __arg_0) native "Element_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_1_(mthis, __arg_0) => getDestinationInsertionPoints_Callback_1(mthis, __arg_0);
+
+  static getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1) native "Element_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_2_(mthis, __arg_0, __arg_1) => getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByClassName_Callback_0(mthis) native "Element_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+
+  static getElementsByClassName_Callback_1(mthis, __arg_0) native "Element_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+
+  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "Element_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByTagName_Callback_0(mthis) native "Element_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
+
+  static getElementsByTagName_Callback_1(mthis, __arg_0) native "Element_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
+
+  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "Element_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasAttributeNS_Callback_0(mthis) native "Element_hasAttributeNS_Callback";
+  hasAttributeNS_Callback_0_(mthis) => hasAttributeNS_Callback_0(mthis);
+
+  static hasAttributeNS_Callback_1(mthis, __arg_0) native "Element_hasAttributeNS_Callback";
+  hasAttributeNS_Callback_1_(mthis, __arg_0) => hasAttributeNS_Callback_1(mthis, __arg_0);
+
+  static hasAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttributeNS_Callback";
+  hasAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => hasAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_hasAttributeNS_Callback";
+  hasAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_hasAttributeNS_Callback";
+  hasAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hasAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static hasAttribute_Callback_0(mthis) native "Element_hasAttribute_Callback";
+  hasAttribute_Callback_0_(mthis) => hasAttribute_Callback_0(mthis);
+
+  static hasAttribute_Callback_1(mthis, __arg_0) native "Element_hasAttribute_Callback";
+  hasAttribute_Callback_1_(mthis, __arg_0) => hasAttribute_Callback_1(mthis, __arg_0);
+
+  static hasAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttribute_Callback";
+  hasAttribute_Callback_2_(mthis, __arg_0, __arg_1) => hasAttribute_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_hasAttribute_Callback";
+  hasAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasAttributes_Callback_0(mthis) native "Element_hasAttributes_Callback";
+  hasAttributes_Callback_0_(mthis) => hasAttributes_Callback_0(mthis);
+
+  static hasAttributes_Callback_1(mthis, __arg_0) native "Element_hasAttributes_Callback";
+  hasAttributes_Callback_1_(mthis, __arg_0) => hasAttributes_Callback_1(mthis, __arg_0);
+
+  static hasAttributes_Callback_2(mthis, __arg_0, __arg_1) native "Element_hasAttributes_Callback";
+  hasAttributes_Callback_2_(mthis, __arg_0, __arg_1) => hasAttributes_Callback_2(mthis, __arg_0, __arg_1);
+
+  static id_Getter(mthis) native "Element_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
+
+  static id_Setter(mthis, __arg_0) native "Element_id_Setter";
+  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
+
+  static innerHTML_Getter(mthis) native "Element_innerHTML_Getter";
+  innerHTML_Getter_(mthis) => innerHTML_Getter(mthis);
+
+  static innerHTML_Setter(mthis, __arg_0) native "Element_innerHTML_Setter";
+  innerHTML_Setter_(mthis, __arg_0) => innerHTML_Setter(mthis, __arg_0);
+
+  static insertAdjacentElement_Callback_0(mthis) native "Element_insertAdjacentElement_Callback";
+  insertAdjacentElement_Callback_0_(mthis) => insertAdjacentElement_Callback_0(mthis);
+
+  static insertAdjacentElement_Callback_1(mthis, __arg_0) native "Element_insertAdjacentElement_Callback";
+  insertAdjacentElement_Callback_1_(mthis, __arg_0) => insertAdjacentElement_Callback_1(mthis, __arg_0);
+
+  static insertAdjacentElement_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentElement_Callback";
+  insertAdjacentElement_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertAdjacentElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentElement_Callback";
+  insertAdjacentElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertAdjacentElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentElement_Callback";
+  insertAdjacentElement_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentElement_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static insertAdjacentHTML_Callback_0(mthis) native "Element_insertAdjacentHTML_Callback";
+  insertAdjacentHTML_Callback_0_(mthis) => insertAdjacentHTML_Callback_0(mthis);
+
+  static insertAdjacentHTML_Callback_1(mthis, __arg_0) native "Element_insertAdjacentHTML_Callback";
+  insertAdjacentHTML_Callback_1_(mthis, __arg_0) => insertAdjacentHTML_Callback_1(mthis, __arg_0);
+
+  static insertAdjacentHTML_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentHTML_Callback";
+  insertAdjacentHTML_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentHTML_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertAdjacentHTML_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentHTML_Callback";
+  insertAdjacentHTML_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentHTML_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertAdjacentHTML_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentHTML_Callback";
+  insertAdjacentHTML_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentHTML_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static insertAdjacentText_Callback_0(mthis) native "Element_insertAdjacentText_Callback";
+  insertAdjacentText_Callback_0_(mthis) => insertAdjacentText_Callback_0(mthis);
+
+  static insertAdjacentText_Callback_1(mthis, __arg_0) native "Element_insertAdjacentText_Callback";
+  insertAdjacentText_Callback_1_(mthis, __arg_0) => insertAdjacentText_Callback_1(mthis, __arg_0);
+
+  static insertAdjacentText_Callback_2(mthis, __arg_0, __arg_1) native "Element_insertAdjacentText_Callback";
+  insertAdjacentText_Callback_2_(mthis, __arg_0, __arg_1) => insertAdjacentText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertAdjacentText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_insertAdjacentText_Callback";
+  insertAdjacentText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertAdjacentText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertAdjacentText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_insertAdjacentText_Callback";
+  insertAdjacentText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertAdjacentText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static lastElementChild_Getter(mthis) native "Element_lastElementChild_Getter";
+  lastElementChild_Getter_(mthis) => lastElementChild_Getter(mthis);
+
+  static localName_Getter(mthis) native "Element_localName_Getter";
+  localName_Getter_(mthis) => localName_Getter(mthis);
+
+  static matches_Callback_0(mthis) native "Element_matches_Callback";
+  matches_Callback_0_(mthis) => matches_Callback_0(mthis);
+
+  static matches_Callback_1(mthis, __arg_0) native "Element_matches_Callback";
+  matches_Callback_1_(mthis, __arg_0) => matches_Callback_1(mthis, __arg_0);
+
+  static matches_Callback_2(mthis, __arg_0, __arg_1) native "Element_matches_Callback";
+  matches_Callback_2_(mthis, __arg_0, __arg_1) => matches_Callback_2(mthis, __arg_0, __arg_1);
+
+  static matches_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_matches_Callback";
+  matches_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matches_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static namespaceURI_Getter(mthis) native "Element_namespaceURI_Getter";
+  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
+
+  static nextElementSibling_Getter(mthis) native "Element_nextElementSibling_Getter";
+  nextElementSibling_Getter_(mthis) => nextElementSibling_Getter(mthis);
+
+  static offsetHeight_Getter(mthis) native "Element_offsetHeight_Getter";
+  offsetHeight_Getter_(mthis) => offsetHeight_Getter(mthis);
+
+  static offsetLeft_Getter(mthis) native "Element_offsetLeft_Getter";
+  offsetLeft_Getter_(mthis) => offsetLeft_Getter(mthis);
+
+  static offsetParent_Getter(mthis) native "Element_offsetParent_Getter";
+  offsetParent_Getter_(mthis) => offsetParent_Getter(mthis);
+
+  static offsetTop_Getter(mthis) native "Element_offsetTop_Getter";
+  offsetTop_Getter_(mthis) => offsetTop_Getter(mthis);
+
+  static offsetWidth_Getter(mthis) native "Element_offsetWidth_Getter";
+  offsetWidth_Getter_(mthis) => offsetWidth_Getter(mthis);
+
+  static onbeforecopy_Getter(mthis) native "Element_onbeforecopy_Getter";
+  onbeforecopy_Getter_(mthis) => onbeforecopy_Getter(mthis);
+
+  static onbeforecopy_Setter(mthis, __arg_0) native "Element_onbeforecopy_Setter";
+  onbeforecopy_Setter_(mthis, __arg_0) => onbeforecopy_Setter(mthis, __arg_0);
+
+  static onbeforecut_Getter(mthis) native "Element_onbeforecut_Getter";
+  onbeforecut_Getter_(mthis) => onbeforecut_Getter(mthis);
+
+  static onbeforecut_Setter(mthis, __arg_0) native "Element_onbeforecut_Setter";
+  onbeforecut_Setter_(mthis, __arg_0) => onbeforecut_Setter(mthis, __arg_0);
+
+  static onbeforepaste_Getter(mthis) native "Element_onbeforepaste_Getter";
+  onbeforepaste_Getter_(mthis) => onbeforepaste_Getter(mthis);
+
+  static onbeforepaste_Setter(mthis, __arg_0) native "Element_onbeforepaste_Setter";
+  onbeforepaste_Setter_(mthis, __arg_0) => onbeforepaste_Setter(mthis, __arg_0);
+
+  static oncopy_Getter(mthis) native "Element_oncopy_Getter";
+  oncopy_Getter_(mthis) => oncopy_Getter(mthis);
+
+  static oncopy_Setter(mthis, __arg_0) native "Element_oncopy_Setter";
+  oncopy_Setter_(mthis, __arg_0) => oncopy_Setter(mthis, __arg_0);
+
+  static oncut_Getter(mthis) native "Element_oncut_Getter";
+  oncut_Getter_(mthis) => oncut_Getter(mthis);
+
+  static oncut_Setter(mthis, __arg_0) native "Element_oncut_Setter";
+  oncut_Setter_(mthis, __arg_0) => oncut_Setter(mthis, __arg_0);
+
+  static onpaste_Getter(mthis) native "Element_onpaste_Getter";
+  onpaste_Getter_(mthis) => onpaste_Getter(mthis);
+
+  static onpaste_Setter(mthis, __arg_0) native "Element_onpaste_Setter";
+  onpaste_Setter_(mthis, __arg_0) => onpaste_Setter(mthis, __arg_0);
+
+  static onsearch_Getter(mthis) native "Element_onsearch_Getter";
+  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
+
+  static onsearch_Setter(mthis, __arg_0) native "Element_onsearch_Setter";
+  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
+
+  static onselectstart_Getter(mthis) native "Element_onselectstart_Getter";
+  onselectstart_Getter_(mthis) => onselectstart_Getter(mthis);
+
+  static onselectstart_Setter(mthis, __arg_0) native "Element_onselectstart_Setter";
+  onselectstart_Setter_(mthis, __arg_0) => onselectstart_Setter(mthis, __arg_0);
+
+  static ontouchcancel_Getter(mthis) native "Element_ontouchcancel_Getter";
+  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
+
+  static ontouchcancel_Setter(mthis, __arg_0) native "Element_ontouchcancel_Setter";
+  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
+
+  static ontouchend_Getter(mthis) native "Element_ontouchend_Getter";
+  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
+
+  static ontouchend_Setter(mthis, __arg_0) native "Element_ontouchend_Setter";
+  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
+
+  static ontouchmove_Getter(mthis) native "Element_ontouchmove_Getter";
+  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
+
+  static ontouchmove_Setter(mthis, __arg_0) native "Element_ontouchmove_Setter";
+  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
+
+  static ontouchstart_Getter(mthis) native "Element_ontouchstart_Getter";
+  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
+
+  static ontouchstart_Setter(mthis, __arg_0) native "Element_ontouchstart_Setter";
+  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
+
+  static onwebkitfullscreenchange_Getter(mthis) native "Element_onwebkitfullscreenchange_Getter";
+  onwebkitfullscreenchange_Getter_(mthis) => onwebkitfullscreenchange_Getter(mthis);
+
+  static onwebkitfullscreenchange_Setter(mthis, __arg_0) native "Element_onwebkitfullscreenchange_Setter";
+  onwebkitfullscreenchange_Setter_(mthis, __arg_0) => onwebkitfullscreenchange_Setter(mthis, __arg_0);
+
+  static onwebkitfullscreenerror_Getter(mthis) native "Element_onwebkitfullscreenerror_Getter";
+  onwebkitfullscreenerror_Getter_(mthis) => onwebkitfullscreenerror_Getter(mthis);
+
+  static onwebkitfullscreenerror_Setter(mthis, __arg_0) native "Element_onwebkitfullscreenerror_Setter";
+  onwebkitfullscreenerror_Setter_(mthis, __arg_0) => onwebkitfullscreenerror_Setter(mthis, __arg_0);
+
+  static onwheel_Getter(mthis) native "Element_onwheel_Getter";
+  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
+
+  static onwheel_Setter(mthis, __arg_0) native "Element_onwheel_Setter";
+  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
+
+  static outerHTML_Getter(mthis) native "Element_outerHTML_Getter";
+  outerHTML_Getter_(mthis) => outerHTML_Getter(mthis);
+
+  static outerHTML_Setter(mthis, __arg_0) native "Element_outerHTML_Setter";
+  outerHTML_Setter_(mthis, __arg_0) => outerHTML_Setter(mthis, __arg_0);
+
+  static prefix_Getter(mthis) native "Element_prefix_Getter";
+  prefix_Getter_(mthis) => prefix_Getter(mthis);
+
+  static prefix_Setter(mthis, __arg_0) native "Element_prefix_Setter";
+  prefix_Setter_(mthis, __arg_0) => prefix_Setter(mthis, __arg_0);
+
+  static previousElementSibling_Getter(mthis) native "Element_previousElementSibling_Getter";
+  previousElementSibling_Getter_(mthis) => previousElementSibling_Getter(mthis);
+
+  static querySelectorAll_Callback_0(mthis) native "Element_querySelectorAll_Callback";
+  querySelectorAll_Callback_0_(mthis) => querySelectorAll_Callback_0(mthis);
+
+  static querySelectorAll_Callback_1(mthis, __arg_0) native "Element_querySelectorAll_Callback";
+  querySelectorAll_Callback_1_(mthis, __arg_0) => querySelectorAll_Callback_1(mthis, __arg_0);
+
+  static querySelectorAll_Callback_2(mthis, __arg_0, __arg_1) native "Element_querySelectorAll_Callback";
+  querySelectorAll_Callback_2_(mthis, __arg_0, __arg_1) => querySelectorAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_querySelectorAll_Callback";
+  querySelectorAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelectorAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static querySelector_Callback_0(mthis) native "Element_querySelector_Callback";
+  querySelector_Callback_0_(mthis) => querySelector_Callback_0(mthis);
+
+  static querySelector_Callback_1(mthis, __arg_0) native "Element_querySelector_Callback";
+  querySelector_Callback_1_(mthis, __arg_0) => querySelector_Callback_1(mthis, __arg_0);
+
+  static querySelector_Callback_2(mthis, __arg_0, __arg_1) native "Element_querySelector_Callback";
+  querySelector_Callback_2_(mthis, __arg_0, __arg_1) => querySelector_Callback_2(mthis, __arg_0, __arg_1);
+
+  static querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_querySelector_Callback";
+  querySelector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => querySelector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeAttributeNS_Callback_0(mthis) native "Element_removeAttributeNS_Callback";
+  removeAttributeNS_Callback_0_(mthis) => removeAttributeNS_Callback_0(mthis);
+
+  static removeAttributeNS_Callback_1(mthis, __arg_0) native "Element_removeAttributeNS_Callback";
+  removeAttributeNS_Callback_1_(mthis, __arg_0) => removeAttributeNS_Callback_1(mthis, __arg_0);
+
+  static removeAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_removeAttributeNS_Callback";
+  removeAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => removeAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_removeAttributeNS_Callback";
+  removeAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_removeAttributeNS_Callback";
+  removeAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static removeAttribute_Callback_0(mthis) native "Element_removeAttribute_Callback";
+  removeAttribute_Callback_0_(mthis) => removeAttribute_Callback_0(mthis);
+
+  static removeAttribute_Callback_1(mthis, __arg_0) native "Element_removeAttribute_Callback";
+  removeAttribute_Callback_1_(mthis, __arg_0) => removeAttribute_Callback_1(mthis, __arg_0);
+
+  static removeAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_removeAttribute_Callback";
+  removeAttribute_Callback_2_(mthis, __arg_0, __arg_1) => removeAttribute_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_removeAttribute_Callback";
+  removeAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static remove_Callback_0(mthis) native "Element_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
+
+  static remove_Callback_1(mthis, __arg_0) native "Element_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
+
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "Element_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestFullscreen_Callback_0(mthis) native "Element_requestFullscreen_Callback";
+  requestFullscreen_Callback_0_(mthis) => requestFullscreen_Callback_0(mthis);
+
+  static requestFullscreen_Callback_1(mthis, __arg_0) native "Element_requestFullscreen_Callback";
+  requestFullscreen_Callback_1_(mthis, __arg_0) => requestFullscreen_Callback_1(mthis, __arg_0);
+
+  static requestFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_requestFullscreen_Callback";
+  requestFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => requestFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestPointerLock_Callback_0(mthis) native "Element_requestPointerLock_Callback";
+  requestPointerLock_Callback_0_(mthis) => requestPointerLock_Callback_0(mthis);
+
+  static requestPointerLock_Callback_1(mthis, __arg_0) native "Element_requestPointerLock_Callback";
+  requestPointerLock_Callback_1_(mthis, __arg_0) => requestPointerLock_Callback_1(mthis, __arg_0);
+
+  static requestPointerLock_Callback_2(mthis, __arg_0, __arg_1) native "Element_requestPointerLock_Callback";
+  requestPointerLock_Callback_2_(mthis, __arg_0, __arg_1) => requestPointerLock_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollHeight_Getter(mthis) native "Element_scrollHeight_Getter";
+  scrollHeight_Getter_(mthis) => scrollHeight_Getter(mthis);
+
+  static scrollIntoViewIfNeeded_Callback_0(mthis) native "Element_scrollIntoViewIfNeeded_Callback";
+  scrollIntoViewIfNeeded_Callback_0_(mthis) => scrollIntoViewIfNeeded_Callback_0(mthis);
+
+  static scrollIntoViewIfNeeded_Callback_1(mthis, __arg_0) native "Element_scrollIntoViewIfNeeded_Callback";
+  scrollIntoViewIfNeeded_Callback_1_(mthis, __arg_0) => scrollIntoViewIfNeeded_Callback_1(mthis, __arg_0);
+
+  static scrollIntoViewIfNeeded_Callback_2(mthis, __arg_0, __arg_1) native "Element_scrollIntoViewIfNeeded_Callback";
+  scrollIntoViewIfNeeded_Callback_2_(mthis, __arg_0, __arg_1) => scrollIntoViewIfNeeded_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollIntoViewIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_scrollIntoViewIfNeeded_Callback";
+  scrollIntoViewIfNeeded_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollIntoViewIfNeeded_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scrollIntoView_Callback_0(mthis) native "Element_scrollIntoView_Callback";
+  scrollIntoView_Callback_0_(mthis) => scrollIntoView_Callback_0(mthis);
+
+  static scrollIntoView_Callback_1(mthis, __arg_0) native "Element_scrollIntoView_Callback";
+  scrollIntoView_Callback_1_(mthis, __arg_0) => scrollIntoView_Callback_1(mthis, __arg_0);
+
+  static scrollIntoView_Callback_2(mthis, __arg_0, __arg_1) native "Element_scrollIntoView_Callback";
+  scrollIntoView_Callback_2_(mthis, __arg_0, __arg_1) => scrollIntoView_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_scrollIntoView_Callback";
+  scrollIntoView_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollIntoView_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scrollLeft_Getter(mthis) native "Element_scrollLeft_Getter";
+  scrollLeft_Getter_(mthis) => scrollLeft_Getter(mthis);
+
+  static scrollLeft_Setter(mthis, __arg_0) native "Element_scrollLeft_Setter";
+  scrollLeft_Setter_(mthis, __arg_0) => scrollLeft_Setter(mthis, __arg_0);
+
+  static scrollTop_Getter(mthis) native "Element_scrollTop_Getter";
+  scrollTop_Getter_(mthis) => scrollTop_Getter(mthis);
+
+  static scrollTop_Setter(mthis, __arg_0) native "Element_scrollTop_Setter";
+  scrollTop_Setter_(mthis, __arg_0) => scrollTop_Setter(mthis, __arg_0);
+
+  static scrollWidth_Getter(mthis) native "Element_scrollWidth_Getter";
+  scrollWidth_Getter_(mthis) => scrollWidth_Getter(mthis);
+
+  static setAttributeNS_Callback_1(mthis, __arg_0) native "Element_setAttributeNS_Callback";
+  setAttributeNS_Callback_1_(mthis, __arg_0) => setAttributeNS_Callback_1(mthis, __arg_0);
+
+  static setAttributeNS_Callback_2(mthis, __arg_0, __arg_1) native "Element_setAttributeNS_Callback";
+  setAttributeNS_Callback_2_(mthis, __arg_0, __arg_1) => setAttributeNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_setAttributeNS_Callback";
+  setAttributeNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setAttributeNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_setAttributeNS_Callback";
+  setAttributeNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setAttributeNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setAttributeNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Element_setAttributeNS_Callback";
+  setAttributeNS_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setAttributeNS_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setAttribute_Callback_0(mthis) native "Element_setAttribute_Callback";
+  setAttribute_Callback_0_(mthis) => setAttribute_Callback_0(mthis);
+
+  static setAttribute_Callback_1(mthis, __arg_0) native "Element_setAttribute_Callback";
+  setAttribute_Callback_1_(mthis, __arg_0) => setAttribute_Callback_1(mthis, __arg_0);
+
+  static setAttribute_Callback_2(mthis, __arg_0, __arg_1) native "Element_setAttribute_Callback";
+  setAttribute_Callback_2_(mthis, __arg_0, __arg_1) => setAttribute_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_setAttribute_Callback";
+  setAttribute_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setAttribute_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setAttribute_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Element_setAttribute_Callback";
+  setAttribute_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setAttribute_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static shadowRoot_Getter(mthis) native "Element_shadowRoot_Getter";
+  shadowRoot_Getter_(mthis) => shadowRoot_Getter(mthis);
+
+  static style_Getter(mthis) native "Element_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
+  static tagName_Getter(mthis) native "Element_tagName_Getter";
+  tagName_Getter_(mthis) => tagName_Getter(mthis);
+
+  static webkitRequestFullScreen_Callback_0(mthis) native "Element_webkitRequestFullScreen_Callback";
+  webkitRequestFullScreen_Callback_0_(mthis) => webkitRequestFullScreen_Callback_0(mthis);
+
+  static webkitRequestFullScreen_Callback_1(mthis, __arg_0) native "Element_webkitRequestFullScreen_Callback";
+  webkitRequestFullScreen_Callback_1_(mthis, __arg_0) => webkitRequestFullScreen_Callback_1(mthis, __arg_0);
+
+  static webkitRequestFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_webkitRequestFullScreen_Callback";
+  webkitRequestFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitRequestFullScreen_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Element_webkitRequestFullScreen_Callback";
+  webkitRequestFullScreen_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFullScreen_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitRequestFullscreen_Callback_0(mthis) native "Element_webkitRequestFullscreen_Callback";
+  webkitRequestFullscreen_Callback_0_(mthis) => webkitRequestFullscreen_Callback_0(mthis);
+
+  static webkitRequestFullscreen_Callback_1(mthis, __arg_0) native "Element_webkitRequestFullscreen_Callback";
+  webkitRequestFullscreen_Callback_1_(mthis, __arg_0) => webkitRequestFullscreen_Callback_1(mthis, __arg_0);
+
+  static webkitRequestFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "Element_webkitRequestFullscreen_Callback";
+  webkitRequestFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkEntry {
+  static final instance = new BlinkEntry();
+
+  static copyTo_Callback_0(mthis) native "Entry_copyTo_Callback";
+  copyTo_Callback_0_(mthis) => copyTo_Callback_0(mthis);
+
+  static copyTo_Callback_1(mthis, __arg_0) native "Entry_copyTo_Callback";
+  copyTo_Callback_1_(mthis, __arg_0) => copyTo_Callback_1(mthis, __arg_0);
+
+  static copyTo_Callback_2(mthis, __arg_0, __arg_1) native "Entry_copyTo_Callback";
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => copyTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_copyTo_Callback";
+  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_copyTo_Callback";
+  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static copyTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Entry_copyTo_Callback";
+  copyTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => copyTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static copyTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Entry_copyTo_Callback";
+  copyTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
   static filesystem_Getter(mthis) native "Entry_filesystem_Getter";
+  filesystem_Getter_(mthis) => filesystem_Getter(mthis);
 
   static fullPath_Getter(mthis) native "Entry_fullPath_Getter";
+  fullPath_Getter_(mthis) => fullPath_Getter(mthis);
+
+  static getMetadata_Callback_0(mthis) native "Entry_getMetadata_Callback";
+  getMetadata_Callback_0_(mthis) => getMetadata_Callback_0(mthis);
+
+  static getMetadata_Callback_1(mthis, __arg_0) native "Entry_getMetadata_Callback";
+  getMetadata_Callback_1_(mthis, __arg_0) => getMetadata_Callback_1(mthis, __arg_0);
+
+  static getMetadata_Callback_2(mthis, __arg_0, __arg_1) native "Entry_getMetadata_Callback";
+  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => getMetadata_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getMetadata_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_getMetadata_Callback";
+  getMetadata_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getMetadata_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getMetadata_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_getMetadata_Callback";
+  getMetadata_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getMetadata_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getParent_Callback_0(mthis) native "Entry_getParent_Callback";
+  getParent_Callback_0_(mthis) => getParent_Callback_0(mthis);
+
+  static getParent_Callback_1(mthis, __arg_0) native "Entry_getParent_Callback";
+  getParent_Callback_1_(mthis, __arg_0) => getParent_Callback_1(mthis, __arg_0);
+
+  static getParent_Callback_2(mthis, __arg_0, __arg_1) native "Entry_getParent_Callback";
+  getParent_Callback_2_(mthis, __arg_0, __arg_1) => getParent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getParent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_getParent_Callback";
+  getParent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getParent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_getParent_Callback";
+  getParent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getParent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static isDirectory_Getter(mthis) native "Entry_isDirectory_Getter";
+  isDirectory_Getter_(mthis) => isDirectory_Getter(mthis);
 
   static isFile_Getter(mthis) native "Entry_isFile_Getter";
+  isFile_Getter_(mthis) => isFile_Getter(mthis);
+
+  static moveTo_Callback_0(mthis) native "Entry_moveTo_Callback";
+  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+
+  static moveTo_Callback_1(mthis, __arg_0) native "Entry_moveTo_Callback";
+  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+
+  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Entry_moveTo_Callback";
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_moveTo_Callback";
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_moveTo_Callback";
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static moveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Entry_moveTo_Callback";
+  moveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => moveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static moveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Entry_moveTo_Callback";
+  moveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => moveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static name_Getter(mthis) native "Entry_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static copyTo_Callback_4(mthis, parent, name, successCallback, errorCallback) native "Entry_copyTo_Callback";
+  static remove_Callback_0(mthis) native "Entry_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
 
-  static copyTo_Callback_3(mthis, parent, name, successCallback) native "Entry_copyTo_Callback";
+  static remove_Callback_1(mthis, __arg_0) native "Entry_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
 
-  static copyTo_Callback_2(mthis, parent, name) native "Entry_copyTo_Callback";
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "Entry_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
 
-  static copyTo_Callback_1(mthis, parent) native "Entry_copyTo_Callback";
+  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Entry_remove_Callback";
+  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getMetadata_Callback_2(mthis, successCallback, errorCallback) native "Entry_getMetadata_Callback";
+  static remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Entry_remove_Callback";
+  remove_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getMetadata_Callback_1(mthis, successCallback) native "Entry_getMetadata_Callback";
+  static toURL_Callback_0(mthis) native "Entry_toURL_Callback";
+  toURL_Callback_0_(mthis) => toURL_Callback_0(mthis);
 
-  static getParent_Callback_2(mthis, successCallback, errorCallback) native "Entry_getParent_Callback";
+  static toURL_Callback_1(mthis, __arg_0) native "Entry_toURL_Callback";
+  toURL_Callback_1_(mthis, __arg_0) => toURL_Callback_1(mthis, __arg_0);
 
-  static getParent_Callback_1(mthis, successCallback) native "Entry_getParent_Callback";
+  static toURL_Callback_2(mthis, __arg_0, __arg_1) native "Entry_toURL_Callback";
+  toURL_Callback_2_(mthis, __arg_0, __arg_1) => toURL_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getParent_Callback(mthis) native "Entry_getParent_Callback";
-
-  static moveTo_Callback_4(mthis, parent, name, successCallback, errorCallback) native "Entry_moveTo_Callback";
-
-  static moveTo_Callback_3(mthis, parent, name, successCallback) native "Entry_moveTo_Callback";
-
-  static moveTo_Callback_2(mthis, parent, name) native "Entry_moveTo_Callback";
-
-  static moveTo_Callback_1(mthis, parent) native "Entry_moveTo_Callback";
-
-  static remove_Callback_2(mthis, successCallback, errorCallback) native "Entry_remove_Callback";
-
-  static remove_Callback_1(mthis, successCallback) native "Entry_remove_Callback";
-
-  static toURL_Callback(mthis) native "Entry_toURL_Callback";
 }
 
-class BlinkDirectoryEntry {
-  static createReader_Callback(mthis) native "DirectoryEntry_createReader_Callback";
+class BlinkEntrySync {
+  static final instance = new BlinkEntrySync();
 
-  static getDirectory_Callback_4(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getDirectory_Callback";
+  static copyTo_Callback_0(mthis) native "EntrySync_copyTo_Callback";
+  copyTo_Callback_0_(mthis) => copyTo_Callback_0(mthis);
 
-  static getDirectory_Callback_3(mthis, path, options, successCallback) native "DirectoryEntry_getDirectory_Callback";
+  static copyTo_Callback_1(mthis, __arg_0) native "EntrySync_copyTo_Callback";
+  copyTo_Callback_1_(mthis, __arg_0) => copyTo_Callback_1(mthis, __arg_0);
 
-  static getDirectory_Callback_2(mthis, path, options) native "DirectoryEntry_getDirectory_Callback";
+  static copyTo_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_copyTo_Callback";
+  copyTo_Callback_2_(mthis, __arg_0, __arg_1) => copyTo_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getDirectory_Callback_1(mthis, path) native "DirectoryEntry_getDirectory_Callback";
+  static copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EntrySync_copyTo_Callback";
+  copyTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getFile_Callback_4(mthis, path, options, successCallback, errorCallback) native "DirectoryEntry_getFile_Callback";
+  static copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EntrySync_copyTo_Callback";
+  copyTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => copyTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getFile_Callback_3(mthis, path, options, successCallback) native "DirectoryEntry_getFile_Callback";
+  static filesystem_Getter(mthis) native "EntrySync_filesystem_Getter";
+  filesystem_Getter_(mthis) => filesystem_Getter(mthis);
 
-  static getFile_Callback_2(mthis, path, options) native "DirectoryEntry_getFile_Callback";
+  static fullPath_Getter(mthis) native "EntrySync_fullPath_Getter";
+  fullPath_Getter_(mthis) => fullPath_Getter(mthis);
 
-  static getFile_Callback_1(mthis, path) native "DirectoryEntry_getFile_Callback";
+  static getMetadata_Callback_0(mthis) native "EntrySync_getMetadata_Callback";
+  getMetadata_Callback_0_(mthis) => getMetadata_Callback_0(mthis);
 
-  static removeRecursively_Callback_2(mthis, successCallback, errorCallback) native "DirectoryEntry_removeRecursively_Callback";
+  static getMetadata_Callback_1(mthis, __arg_0) native "EntrySync_getMetadata_Callback";
+  getMetadata_Callback_1_(mthis, __arg_0) => getMetadata_Callback_1(mthis, __arg_0);
 
-  static removeRecursively_Callback_1(mthis, successCallback) native "DirectoryEntry_removeRecursively_Callback";
+  static getMetadata_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_getMetadata_Callback";
+  getMetadata_Callback_2_(mthis, __arg_0, __arg_1) => getMetadata_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getParent_Callback_0(mthis) native "EntrySync_getParent_Callback";
+  getParent_Callback_0_(mthis) => getParent_Callback_0(mthis);
+
+  static getParent_Callback_1(mthis, __arg_0) native "EntrySync_getParent_Callback";
+  getParent_Callback_1_(mthis, __arg_0) => getParent_Callback_1(mthis, __arg_0);
+
+  static getParent_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_getParent_Callback";
+  getParent_Callback_2_(mthis, __arg_0, __arg_1) => getParent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isDirectory_Getter(mthis) native "EntrySync_isDirectory_Getter";
+  isDirectory_Getter_(mthis) => isDirectory_Getter(mthis);
+
+  static isFile_Getter(mthis) native "EntrySync_isFile_Getter";
+  isFile_Getter_(mthis) => isFile_Getter(mthis);
+
+  static moveTo_Callback_0(mthis) native "EntrySync_moveTo_Callback";
+  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+
+  static moveTo_Callback_1(mthis, __arg_0) native "EntrySync_moveTo_Callback";
+  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+
+  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_moveTo_Callback";
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EntrySync_moveTo_Callback";
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EntrySync_moveTo_Callback";
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static name_Getter(mthis) native "EntrySync_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static remove_Callback_0(mthis) native "EntrySync_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
+
+  static remove_Callback_1(mthis, __arg_0) native "EntrySync_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
+
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
+
+  static toURL_Callback_0(mthis) native "EntrySync_toURL_Callback";
+  toURL_Callback_0_(mthis) => toURL_Callback_0(mthis);
+
+  static toURL_Callback_1(mthis, __arg_0) native "EntrySync_toURL_Callback";
+  toURL_Callback_1_(mthis, __arg_0) => toURL_Callback_1(mthis, __arg_0);
+
+  static toURL_Callback_2(mthis, __arg_0, __arg_1) native "EntrySync_toURL_Callback";
+  toURL_Callback_2_(mthis, __arg_0, __arg_1) => toURL_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkEntrySync {}
-
-class BlinkDirectoryEntrySync {}
-
-class BlinkDirectoryReader {
-  static readEntries_Callback_2(mthis, successCallback, errorCallback) native "DirectoryReader_readEntries_Callback";
-
-  static readEntries_Callback_1(mthis, successCallback) native "DirectoryReader_readEntries_Callback";
-}
-
-class BlinkDirectoryReaderSync {}
-
-class BlinkGlobalEventHandlers {}
-
-class BlinkParentNode {
-  static childElementCount_Getter(mthis) native "ParentNode_childElementCount_Getter";
-
-  static children_Getter(mthis) native "ParentNode_children_Getter";
-
-  static firstElementChild_Getter(mthis) native "ParentNode_firstElementChild_Getter";
-
-  static lastElementChild_Getter(mthis) native "ParentNode_lastElementChild_Getter";
-
-  static querySelector_Callback_1(mthis, selectors) native "ParentNode_querySelector_Callback";
-
-  static querySelectorAll_Callback_1(mthis, selectors) native "ParentNode_querySelectorAll_Callback";
-}
-
-class BlinkDocument {
-  static activeElement_Getter(mthis) native "Document_activeElement_Getter";
-
-  static body_Getter(mthis) native "Document_body_Getter";
-
-  static body_Setter(mthis, value) native "Document_body_Setter";
-
-  static contentType_Getter(mthis) native "Document_contentType_Getter";
-
-  static cookie_Getter(mthis) native "Document_cookie_Getter";
-
-  static cookie_Setter(mthis, value) native "Document_cookie_Setter";
-
-  static currentScript_Getter(mthis) native "Document_currentScript_Getter";
-
-  static defaultView_Getter(mthis) native "Document_defaultView_Getter";
-
-  static documentElement_Getter(mthis) native "Document_documentElement_Getter";
-
-  static domain_Getter(mthis) native "Document_domain_Getter";
-
-  static fonts_Getter(mthis) native "Document_fonts_Getter";
-
-  static fullscreenElement_Getter(mthis) native "Document_fullscreenElement_Getter";
-
-  static fullscreenEnabled_Getter(mthis) native "Document_fullscreenEnabled_Getter";
-
-  static head_Getter(mthis) native "Document_head_Getter";
-
-  static hidden_Getter(mthis) native "Document_hidden_Getter";
-
-  static implementation_Getter(mthis) native "Document_implementation_Getter";
-
-  static lastModified_Getter(mthis) native "Document_lastModified_Getter";
-
-  static pointerLockElement_Getter(mthis) native "Document_pointerLockElement_Getter";
-
-  static preferredStylesheetSet_Getter(mthis) native "Document_preferredStylesheetSet_Getter";
-
-  static readyState_Getter(mthis) native "Document_readyState_Getter";
-
-  static referrer_Getter(mthis) native "Document_referrer_Getter";
-
-  static rootElement_Getter(mthis) native "Document_rootElement_Getter";
-
-  static selectedStylesheetSet_Getter(mthis) native "Document_selectedStylesheetSet_Getter";
-
-  static selectedStylesheetSet_Setter(mthis, value) native "Document_selectedStylesheetSet_Setter";
-
-  static styleSheets_Getter(mthis) native "Document_styleSheets_Getter";
-
-  static timeline_Getter(mthis) native "Document_timeline_Getter";
-
-  static title_Getter(mthis) native "Document_title_Getter";
-
-  static title_Setter(mthis, value) native "Document_title_Setter";
-
-  static visibilityState_Getter(mthis) native "Document_visibilityState_Getter";
-
-  static webkitFullscreenElement_Getter(mthis) native "Document_webkitFullscreenElement_Getter";
-
-  static webkitFullscreenEnabled_Getter(mthis) native "Document_webkitFullscreenEnabled_Getter";
-
-  static webkitHidden_Getter(mthis) native "Document_webkitHidden_Getter";
-
-  static webkitVisibilityState_Getter(mthis) native "Document_webkitVisibilityState_Getter";
-
-  static adoptNode_Callback_1(mthis, node) native "Document_adoptNode_Callback";
-
-  static caretRangeFromPoint_Callback_2(mthis, x, y) native "Document_caretRangeFromPoint_Callback";
-
-  static createDocumentFragment_Callback(mthis) native "Document_createDocumentFragment_Callback";
-
-  static createElement_Callback_2(mthis, localName_OR_tagName, typeExtension) native "Document_createElement_Callback";
-
-  static createElementNS_Callback_3(mthis, namespaceURI, qualifiedName, typeExtension) native "Document_createElementNS_Callback";
-
-  static createEvent_Callback_1(mthis, eventType) native "Document_createEvent_Callback";
-
-  static createNodeIterator_Callback_3(mthis, root, whatToShow, filter) native "Document_createNodeIterator_Callback";
-
-  static createNodeIterator_Callback_1(mthis, root) native "Document_createNodeIterator_Callback";
-
-  static createRange_Callback(mthis) native "Document_createRange_Callback";
-
-  static createTextNode_Callback_1(mthis, data) native "Document_createTextNode_Callback";
-
-  static createTouch_Callback_11(mthis, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce) native "Document_createTouch_Callback";
-
-  static createTouchList_Callback_1(mthis, touches) native "Document_createTouchList_Callback";
-
-  static createTreeWalker_Callback_3(mthis, root, whatToShow, filter) native "Document_createTreeWalker_Callback";
-
-  static createTreeWalker_Callback_1(mthis, root) native "Document_createTreeWalker_Callback";
-
-  static elementFromPoint_Callback_2(mthis, x, y) native "Document_elementFromPoint_Callback";
-
-  static execCommand_Callback_3(mthis, command, userInterface, value) native "Document_execCommand_Callback";
-
-  static exitFullscreen_Callback(mthis) native "Document_exitFullscreen_Callback";
-
-  static exitPointerLock_Callback(mthis) native "Document_exitPointerLock_Callback";
-
-  static getCSSCanvasContext_Callback_4(mthis, contextId, name, width, height) native "Document_getCSSCanvasContext_Callback";
-
-  static getElementById_Callback_1(mthis, elementId) native "Document_getElementById_Callback";
-
-  static getElementsByClassName_Callback_1(mthis, classNames) native "Document_getElementsByClassName_Callback";
-
-  static getElementsByName_Callback_1(mthis, elementName) native "Document_getElementsByName_Callback";
-
-  static getElementsByTagName_Callback_1(mthis, localName) native "Document_getElementsByTagName_Callback";
-
-  static importNode_Callback_2(mthis, node, deep) native "Document_importNode_Callback";
-
-  static importNode_Callback_1(mthis, node) native "Document_importNode_Callback";
-
-  static queryCommandEnabled_Callback_1(mthis, command) native "Document_queryCommandEnabled_Callback";
-
-  static queryCommandIndeterm_Callback_1(mthis, command) native "Document_queryCommandIndeterm_Callback";
-
-  static queryCommandState_Callback_1(mthis, command) native "Document_queryCommandState_Callback";
-
-  static queryCommandSupported_Callback_1(mthis, command) native "Document_queryCommandSupported_Callback";
-
-  static queryCommandValue_Callback_1(mthis, command) native "Document_queryCommandValue_Callback";
-
-  static webkitExitFullscreen_Callback(mthis) native "Document_webkitExitFullscreen_Callback";
-
-  static childElementCount_Getter(mthis) native "Document_childElementCount_Getter";
-
-  static children_Getter(mthis) native "Document_children_Getter";
-
-  static firstElementChild_Getter(mthis) native "Document_firstElementChild_Getter";
-
-  static lastElementChild_Getter(mthis) native "Document_lastElementChild_Getter";
-
-  static querySelector_Callback_1(mthis, selectors) native "Document_querySelector_Callback";
-
-  static querySelectorAll_Callback_1(mthis, selectors) native "Document_querySelectorAll_Callback";
-}
-
-class BlinkDocumentFragment {
-  static getElementById_Callback_1(mthis, elementId) native "DocumentFragment_getElementById_Callback";
-
-  static childElementCount_Getter(mthis) native "DocumentFragment_childElementCount_Getter";
-
-  static firstElementChild_Getter(mthis) native "DocumentFragment_firstElementChild_Getter";
-
-  static lastElementChild_Getter(mthis) native "DocumentFragment_lastElementChild_Getter";
-
-  static querySelector_Callback_1(mthis, selectors) native "DocumentFragment_querySelector_Callback";
-
-  static querySelectorAll_Callback_1(mthis, selectors) native "DocumentFragment_querySelectorAll_Callback";
-}
-
-class BlinkDocumentType {}
-
-class BlinkDynamicsCompressorNode {
-  static attack_Getter(mthis) native "DynamicsCompressorNode_attack_Getter";
-
-  static knee_Getter(mthis) native "DynamicsCompressorNode_knee_Getter";
-
-  static ratio_Getter(mthis) native "DynamicsCompressorNode_ratio_Getter";
-
-  static reduction_Getter(mthis) native "DynamicsCompressorNode_reduction_Getter";
-
-  static release_Getter(mthis) native "DynamicsCompressorNode_release_Getter";
-
-  static threshold_Getter(mthis) native "DynamicsCompressorNode_threshold_Getter";
-}
-
-class BlinkEXTBlendMinMax {}
-
-class BlinkEXTFragDepth {}
-
-class BlinkEXTShaderTextureLOD {}
-
-class BlinkEXTTextureFilterAnisotropic {}
-
-class BlinkElement {
-  static attributes_Getter(mthis) native "Element_attributes_Getter";
-
-  static className_Getter(mthis) native "Element_className_Getter";
-
-  static className_Setter(mthis, value) native "Element_className_Setter";
-
-  static clientHeight_Getter(mthis) native "Element_clientHeight_Getter";
-
-  static clientLeft_Getter(mthis) native "Element_clientLeft_Getter";
-
-  static clientTop_Getter(mthis) native "Element_clientTop_Getter";
-
-  static clientWidth_Getter(mthis) native "Element_clientWidth_Getter";
-
-  static id_Getter(mthis) native "Element_id_Getter";
-
-  static id_Setter(mthis, value) native "Element_id_Setter";
-
-  static innerHTML_Getter(mthis) native "Element_innerHTML_Getter";
-
-  static innerHTML_Setter(mthis, value) native "Element_innerHTML_Setter";
-
-  static localName_Getter(mthis) native "Element_localName_Getter";
-
-  static namespaceURI_Getter(mthis) native "Element_namespaceURI_Getter";
-
-  static offsetHeight_Getter(mthis) native "Element_offsetHeight_Getter";
-
-  static offsetLeft_Getter(mthis) native "Element_offsetLeft_Getter";
-
-  static offsetParent_Getter(mthis) native "Element_offsetParent_Getter";
-
-  static offsetTop_Getter(mthis) native "Element_offsetTop_Getter";
-
-  static offsetWidth_Getter(mthis) native "Element_offsetWidth_Getter";
-
-  static outerHTML_Getter(mthis) native "Element_outerHTML_Getter";
-
-  static scrollHeight_Getter(mthis) native "Element_scrollHeight_Getter";
-
-  static scrollLeft_Getter(mthis) native "Element_scrollLeft_Getter";
-
-  static scrollLeft_Setter(mthis, value) native "Element_scrollLeft_Setter";
-
-  static scrollTop_Getter(mthis) native "Element_scrollTop_Getter";
-
-  static scrollTop_Setter(mthis, value) native "Element_scrollTop_Setter";
-
-  static scrollWidth_Getter(mthis) native "Element_scrollWidth_Getter";
-
-  static shadowRoot_Getter(mthis) native "Element_shadowRoot_Getter";
-
-  static style_Getter(mthis) native "Element_style_Getter";
-
-  static tagName_Getter(mthis) native "Element_tagName_Getter";
-
-  static animate_Callback_2(mthis, effect, timing) native "Element_animate_Callback";
-
-  static blur_Callback(mthis) native "Element_blur_Callback";
-
-  static createShadowRoot_Callback(mthis) native "Element_createShadowRoot_Callback";
-
-  static focus_Callback(mthis) native "Element_focus_Callback";
-
-  static getAnimationPlayers_Callback(mthis) native "Element_getAnimationPlayers_Callback";
-
-  static getAttribute_Callback_1(mthis, name) native "Element_getAttribute_Callback";
-
-  static getAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_getAttributeNS_Callback";
-
-  static getBoundingClientRect_Callback(mthis) native "Element_getBoundingClientRect_Callback";
-
-  static getClientRects_Callback(mthis) native "Element_getClientRects_Callback";
-
-  static getDestinationInsertionPoints_Callback(mthis) native "Element_getDestinationInsertionPoints_Callback";
-
-  static getElementsByClassName_Callback_1(mthis, classNames) native "Element_getElementsByClassName_Callback";
-
-  static getElementsByTagName_Callback_1(mthis, name) native "Element_getElementsByTagName_Callback";
-
-  static hasAttribute_Callback_1(mthis, name) native "Element_hasAttribute_Callback";
-
-  static hasAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_hasAttributeNS_Callback";
-
-  static insertAdjacentElement_Callback_2(mthis, where, element) native "Element_insertAdjacentElement_Callback";
-
-  static insertAdjacentHTML_Callback_2(mthis, where, html) native "Element_insertAdjacentHTML_Callback";
-
-  static insertAdjacentText_Callback_2(mthis, where, text) native "Element_insertAdjacentText_Callback";
-
-  static matches_Callback_1(mthis, selectors) native "Element_matches_Callback";
-
-  static removeAttribute_Callback_1(mthis, name) native "Element_removeAttribute_Callback";
-
-  static removeAttributeNS_Callback_2(mthis, namespaceURI, localName) native "Element_removeAttributeNS_Callback";
-
-  static requestFullscreen_Callback(mthis) native "Element_requestFullscreen_Callback";
-
-  static requestPointerLock_Callback(mthis) native "Element_requestPointerLock_Callback";
-
-  static scrollIntoView_Callback_1(mthis, alignWithTop) native "Element_scrollIntoView_Callback";
-
-  static scrollIntoView_Callback(mthis) native "Element_scrollIntoView_Callback";
-
-  static scrollIntoViewIfNeeded_Callback_1(mthis, centerIfNeeded) native "Element_scrollIntoViewIfNeeded_Callback";
-
-  static scrollIntoViewIfNeeded_Callback(mthis) native "Element_scrollIntoViewIfNeeded_Callback";
-
-  static setAttribute_Callback_2(mthis, name, value) native "Element_setAttribute_Callback";
-
-  static setAttributeNS_Callback_3(mthis, namespaceURI, qualifiedName, value) native "Element_setAttributeNS_Callback";
-
-  static nextElementSibling_Getter(mthis) native "Element_nextElementSibling_Getter";
-
-  static previousElementSibling_Getter(mthis) native "Element_previousElementSibling_Getter";
-
-  static remove_Callback(mthis) native "Element_remove_Callback";
-
-  static childElementCount_Getter(mthis) native "Element_childElementCount_Getter";
-
-  static children_Getter(mthis) native "Element_children_Getter";
-
-  static firstElementChild_Getter(mthis) native "Element_firstElementChild_Getter";
-
-  static lastElementChild_Getter(mthis) native "Element_lastElementChild_Getter";
-
-  static querySelector_Callback_1(mthis, selectors) native "Element_querySelector_Callback";
-
-  static querySelectorAll_Callback_1(mthis, selectors) native "Element_querySelectorAll_Callback";
-}
-
-class BlinkErrorEvent {
-  static constructorCallback(type, options) native "ErrorEvent_constructorCallback";
+class BlinkErrorEvent extends BlinkEvent {
+  static final instance = new BlinkErrorEvent();
 
   static colno_Getter(mthis) native "ErrorEvent_colno_Getter";
+  colno_Getter_(mthis) => colno_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "ErrorEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static error_Getter(mthis) native "ErrorEvent_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
 
   static filename_Getter(mthis) native "ErrorEvent_filename_Getter";
+  filename_Getter_(mthis) => filename_Getter(mthis);
 
   static lineno_Getter(mthis) native "ErrorEvent_lineno_Getter";
+  lineno_Getter_(mthis) => lineno_Getter(mthis);
 
   static message_Getter(mthis) native "ErrorEvent_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
+
 }
 
-class BlinkEventSource {
-  static constructorCallback_2(url, eventSourceInit) native "EventSource_constructorCallback";
+class BlinkEvent {
+  static final instance = new BlinkEvent();
 
-  static constructorCallback_1(url) native "EventSource_constructorCallback";
+  static bubbles_Getter(mthis) native "Event_bubbles_Getter";
+  bubbles_Getter_(mthis) => bubbles_Getter(mthis);
+
+  static cancelBubble_Getter(mthis) native "Event_cancelBubble_Getter";
+  cancelBubble_Getter_(mthis) => cancelBubble_Getter(mthis);
+
+  static cancelBubble_Setter(mthis, __arg_0) native "Event_cancelBubble_Setter";
+  cancelBubble_Setter_(mthis, __arg_0) => cancelBubble_Setter(mthis, __arg_0);
+
+  static cancelable_Getter(mthis) native "Event_cancelable_Getter";
+  cancelable_Getter_(mthis) => cancelable_Getter(mthis);
+
+  static clipboardData_Getter(mthis) native "Event_clipboardData_Getter";
+  clipboardData_Getter_(mthis) => clipboardData_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Event_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static currentTarget_Getter(mthis) native "Event_currentTarget_Getter";
+  currentTarget_Getter_(mthis) => currentTarget_Getter(mthis);
+
+  static defaultPrevented_Getter(mthis) native "Event_defaultPrevented_Getter";
+  defaultPrevented_Getter_(mthis) => defaultPrevented_Getter(mthis);
+
+  static eventPhase_Getter(mthis) native "Event_eventPhase_Getter";
+  eventPhase_Getter_(mthis) => eventPhase_Getter(mthis);
+
+  static initEvent_Callback_0(mthis) native "Event_initEvent_Callback";
+  initEvent_Callback_0_(mthis) => initEvent_Callback_0(mthis);
+
+  static initEvent_Callback_1(mthis, __arg_0) native "Event_initEvent_Callback";
+  initEvent_Callback_1_(mthis, __arg_0) => initEvent_Callback_1(mthis, __arg_0);
+
+  static initEvent_Callback_2(mthis, __arg_0, __arg_1) native "Event_initEvent_Callback";
+  initEvent_Callback_2_(mthis, __arg_0, __arg_1) => initEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Event_initEvent_Callback";
+  initEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Event_initEvent_Callback";
+  initEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Event_initEvent_Callback";
+  initEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static path_Getter(mthis) native "Event_path_Getter";
+  path_Getter_(mthis) => path_Getter(mthis);
+
+  static preventDefault_Callback_0(mthis) native "Event_preventDefault_Callback";
+  preventDefault_Callback_0_(mthis) => preventDefault_Callback_0(mthis);
+
+  static preventDefault_Callback_1(mthis, __arg_0) native "Event_preventDefault_Callback";
+  preventDefault_Callback_1_(mthis, __arg_0) => preventDefault_Callback_1(mthis, __arg_0);
+
+  static preventDefault_Callback_2(mthis, __arg_0, __arg_1) native "Event_preventDefault_Callback";
+  preventDefault_Callback_2_(mthis, __arg_0, __arg_1) => preventDefault_Callback_2(mthis, __arg_0, __arg_1);
+
+  static returnValue_Getter(mthis) native "Event_returnValue_Getter";
+  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+
+  static returnValue_Setter(mthis, __arg_0) native "Event_returnValue_Setter";
+  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
+
+  static stopImmediatePropagation_Callback_0(mthis) native "Event_stopImmediatePropagation_Callback";
+  stopImmediatePropagation_Callback_0_(mthis) => stopImmediatePropagation_Callback_0(mthis);
+
+  static stopImmediatePropagation_Callback_1(mthis, __arg_0) native "Event_stopImmediatePropagation_Callback";
+  stopImmediatePropagation_Callback_1_(mthis, __arg_0) => stopImmediatePropagation_Callback_1(mthis, __arg_0);
+
+  static stopImmediatePropagation_Callback_2(mthis, __arg_0, __arg_1) native "Event_stopImmediatePropagation_Callback";
+  stopImmediatePropagation_Callback_2_(mthis, __arg_0, __arg_1) => stopImmediatePropagation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stopPropagation_Callback_0(mthis) native "Event_stopPropagation_Callback";
+  stopPropagation_Callback_0_(mthis) => stopPropagation_Callback_0(mthis);
+
+  static stopPropagation_Callback_1(mthis, __arg_0) native "Event_stopPropagation_Callback";
+  stopPropagation_Callback_1_(mthis, __arg_0) => stopPropagation_Callback_1(mthis, __arg_0);
+
+  static stopPropagation_Callback_2(mthis, __arg_0, __arg_1) native "Event_stopPropagation_Callback";
+  stopPropagation_Callback_2_(mthis, __arg_0, __arg_1) => stopPropagation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static target_Getter(mthis) native "Event_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
+  static timeStamp_Getter(mthis) native "Event_timeStamp_Getter";
+  timeStamp_Getter_(mthis) => timeStamp_Getter(mthis);
+
+  static type_Getter(mthis) native "Event_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+}
+
+class BlinkEventSource extends BlinkEventTarget {
+  static final instance = new BlinkEventSource();
+
+  static close_Callback_0(mthis) native "EventSource_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "EventSource_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "EventSource_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "EventSource_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "EventSource_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "EventSource_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "EventSource_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "EventSource_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static onerror_Getter(mthis) native "EventSource_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "EventSource_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "EventSource_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "EventSource_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onopen_Getter(mthis) native "EventSource_onopen_Getter";
+  onopen_Getter_(mthis) => onopen_Getter(mthis);
+
+  static onopen_Setter(mthis, __arg_0) native "EventSource_onopen_Setter";
+  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
 
   static readyState_Getter(mthis) native "EventSource_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static url_Getter(mthis) native "EventSource_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
 
   static withCredentials_Getter(mthis) native "EventSource_withCredentials_Getter";
+  withCredentials_Getter_(mthis) => withCredentials_Getter(mthis);
 
-  static close_Callback(mthis) native "EventSource_close_Callback";
 }
 
-class BlinkFederatedCredential {
-  static constructorCallback_4(id, name, avatarURL, federation) native "FederatedCredential_constructorCallback";
+class BlinkEventTarget {
+  static final instance = new BlinkEventTarget();
+
+  static addEventListener_Callback_0(mthis) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_0_(mthis) => addEventListener_Callback_0(mthis);
+
+  static addEventListener_Callback_1(mthis, __arg_0) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_1_(mthis, __arg_0) => addEventListener_Callback_1(mthis, __arg_0);
+
+  static addEventListener_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_2_(mthis, __arg_0, __arg_1) => addEventListener_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static addEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "EventTarget_addEventListener_Callback";
+  addEventListener_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static dispatchEvent_Callback_0(mthis) native "EventTarget_dispatchEvent_Callback";
+  dispatchEvent_Callback_0_(mthis) => dispatchEvent_Callback_0(mthis);
+
+  static dispatchEvent_Callback_1(mthis, __arg_0) native "EventTarget_dispatchEvent_Callback";
+  dispatchEvent_Callback_1_(mthis, __arg_0) => dispatchEvent_Callback_1(mthis, __arg_0);
+
+  static dispatchEvent_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_dispatchEvent_Callback";
+  dispatchEvent_Callback_2_(mthis, __arg_0, __arg_1) => dispatchEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static dispatchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_dispatchEvent_Callback";
+  dispatchEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => dispatchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeEventListener_Callback_0(mthis) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_0_(mthis) => removeEventListener_Callback_0(mthis);
+
+  static removeEventListener_Callback_1(mthis, __arg_0) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_1_(mthis, __arg_0) => removeEventListener_Callback_1(mthis, __arg_0);
+
+  static removeEventListener_Callback_2(mthis, __arg_0, __arg_1) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_2_(mthis, __arg_0, __arg_1) => removeEventListener_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeEventListener_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static removeEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "EventTarget_removeEventListener_Callback";
+  removeEventListener_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => removeEventListener_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+}
+
+class BlinkFederatedCredential extends BlinkCredential {
+  static final instance = new BlinkFederatedCredential();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FederatedCredential_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FederatedCredential_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "FederatedCredential_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FederatedCredential_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "FederatedCredential_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static federation_Getter(mthis) native "FederatedCredential_federation_Getter";
+  federation_Getter_(mthis) => federation_Getter(mthis);
+
 }
 
 class BlinkFetchBodyStream {
-  static asArrayBuffer_Callback(mthis) native "FetchBodyStream_asArrayBuffer_Callback";
+  static final instance = new BlinkFetchBodyStream();
 
-  static asBlob_Callback(mthis) native "FetchBodyStream_asBlob_Callback";
+  static asArrayBuffer_Callback_0(mthis) native "FetchBodyStream_asArrayBuffer_Callback";
+  asArrayBuffer_Callback_0_(mthis) => asArrayBuffer_Callback_0(mthis);
 
-  static asJSON_Callback(mthis) native "FetchBodyStream_asJSON_Callback";
+  static asArrayBuffer_Callback_1(mthis, __arg_0) native "FetchBodyStream_asArrayBuffer_Callback";
+  asArrayBuffer_Callback_1_(mthis, __arg_0) => asArrayBuffer_Callback_1(mthis, __arg_0);
 
-  static asText_Callback(mthis) native "FetchBodyStream_asText_Callback";
+  static asArrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "FetchBodyStream_asArrayBuffer_Callback";
+  asArrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => asArrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static asBlob_Callback_0(mthis) native "FetchBodyStream_asBlob_Callback";
+  asBlob_Callback_0_(mthis) => asBlob_Callback_0(mthis);
+
+  static asBlob_Callback_1(mthis, __arg_0) native "FetchBodyStream_asBlob_Callback";
+  asBlob_Callback_1_(mthis, __arg_0) => asBlob_Callback_1(mthis, __arg_0);
+
+  static asBlob_Callback_2(mthis, __arg_0, __arg_1) native "FetchBodyStream_asBlob_Callback";
+  asBlob_Callback_2_(mthis, __arg_0, __arg_1) => asBlob_Callback_2(mthis, __arg_0, __arg_1);
+
+  static asJSON_Callback_0(mthis) native "FetchBodyStream_asJSON_Callback";
+  asJSON_Callback_0_(mthis) => asJSON_Callback_0(mthis);
+
+  static asJSON_Callback_1(mthis, __arg_0) native "FetchBodyStream_asJSON_Callback";
+  asJSON_Callback_1_(mthis, __arg_0) => asJSON_Callback_1(mthis, __arg_0);
+
+  static asJSON_Callback_2(mthis, __arg_0, __arg_1) native "FetchBodyStream_asJSON_Callback";
+  asJSON_Callback_2_(mthis, __arg_0, __arg_1) => asJSON_Callback_2(mthis, __arg_0, __arg_1);
+
+  static asText_Callback_0(mthis) native "FetchBodyStream_asText_Callback";
+  asText_Callback_0_(mthis) => asText_Callback_0(mthis);
+
+  static asText_Callback_1(mthis, __arg_0) native "FetchBodyStream_asText_Callback";
+  asText_Callback_1_(mthis, __arg_0) => asText_Callback_1(mthis, __arg_0);
+
+  static asText_Callback_2(mthis, __arg_0, __arg_1) native "FetchBodyStream_asText_Callback";
+  asText_Callback_2_(mthis, __arg_0, __arg_1) => asText_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkFetchEvent {
+class BlinkFetchEvent extends BlinkEvent {
+  static final instance = new BlinkFetchEvent();
+
   static isReload_Getter(mthis) native "FetchEvent_isReload_Getter";
+  isReload_Getter_(mthis) => isReload_Getter(mthis);
 
   static request_Getter(mthis) native "FetchEvent_request_Getter";
+  request_Getter_(mthis) => request_Getter(mthis);
 
-  static respondWith_Callback_1(mthis, value) native "FetchEvent_respondWith_Callback";
+  static respondWith_Callback_0(mthis) native "FetchEvent_respondWith_Callback";
+  respondWith_Callback_0_(mthis) => respondWith_Callback_0(mthis);
+
+  static respondWith_Callback_1(mthis, __arg_0) native "FetchEvent_respondWith_Callback";
+  respondWith_Callback_1_(mthis, __arg_0) => respondWith_Callback_1(mthis, __arg_0);
+
+  static respondWith_Callback_2(mthis, __arg_0, __arg_1) native "FetchEvent_respondWith_Callback";
+  respondWith_Callback_2_(mthis, __arg_0, __arg_1) => respondWith_Callback_2(mthis, __arg_0, __arg_1);
+
+  static respondWith_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FetchEvent_respondWith_Callback";
+  respondWith_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => respondWith_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkFile {
-  static lastModified_Getter(mthis) native "File_lastModified_Getter";
+class BlinkFile extends BlinkBlob {
+  static final instance = new BlinkFile();
+
+  static constructorCallback_0() native "File_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "File_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "File_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "File_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "File_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "File_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static lastModifiedDate_Getter(mthis) native "File_lastModifiedDate_Getter";
+  lastModifiedDate_Getter_(mthis) => lastModifiedDate_Getter(mthis);
+
+  static lastModified_Getter(mthis) native "File_lastModified_Getter";
+  lastModified_Getter_(mthis) => lastModified_Getter(mthis);
 
   static name_Getter(mthis) native "File_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static webkitRelativePath_Getter(mthis) native "File_webkitRelativePath_Getter";
+  webkitRelativePath_Getter_(mthis) => webkitRelativePath_Getter(mthis);
+
 }
 
-class BlinkFileEntry {
-  static createWriter_Callback_2(mthis, successCallback, errorCallback) native "FileEntry_createWriter_Callback";
+class BlinkFileEntry extends BlinkEntry {
+  static final instance = new BlinkFileEntry();
 
-  static createWriter_Callback_1(mthis, successCallback) native "FileEntry_createWriter_Callback";
+  static createWriter_Callback_0(mthis) native "FileEntry_createWriter_Callback";
+  createWriter_Callback_0_(mthis) => createWriter_Callback_0(mthis);
 
-  static file_Callback_2(mthis, successCallback, errorCallback) native "FileEntry_file_Callback";
+  static createWriter_Callback_1(mthis, __arg_0) native "FileEntry_createWriter_Callback";
+  createWriter_Callback_1_(mthis, __arg_0) => createWriter_Callback_1(mthis, __arg_0);
 
-  static file_Callback_1(mthis, successCallback) native "FileEntry_file_Callback";
+  static createWriter_Callback_2(mthis, __arg_0, __arg_1) native "FileEntry_createWriter_Callback";
+  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => createWriter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createWriter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileEntry_createWriter_Callback";
+  createWriter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createWriter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createWriter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileEntry_createWriter_Callback";
+  createWriter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createWriter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static file_Callback_0(mthis) native "FileEntry_file_Callback";
+  file_Callback_0_(mthis) => file_Callback_0(mthis);
+
+  static file_Callback_1(mthis, __arg_0) native "FileEntry_file_Callback";
+  file_Callback_1_(mthis, __arg_0) => file_Callback_1(mthis, __arg_0);
+
+  static file_Callback_2(mthis, __arg_0, __arg_1) native "FileEntry_file_Callback";
+  file_Callback_2_(mthis, __arg_0, __arg_1) => file_Callback_2(mthis, __arg_0, __arg_1);
+
+  static file_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileEntry_file_Callback";
+  file_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => file_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static file_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileEntry_file_Callback";
+  file_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => file_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkFileEntrySync {}
+class BlinkFileEntrySync extends BlinkEntrySync {
+  static final instance = new BlinkFileEntrySync();
 
-class BlinkFileError {
+  static createWriter_Callback_0(mthis) native "FileEntrySync_createWriter_Callback";
+  createWriter_Callback_0_(mthis) => createWriter_Callback_0(mthis);
+
+  static createWriter_Callback_1(mthis, __arg_0) native "FileEntrySync_createWriter_Callback";
+  createWriter_Callback_1_(mthis, __arg_0) => createWriter_Callback_1(mthis, __arg_0);
+
+  static createWriter_Callback_2(mthis, __arg_0, __arg_1) native "FileEntrySync_createWriter_Callback";
+  createWriter_Callback_2_(mthis, __arg_0, __arg_1) => createWriter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static file_Callback_0(mthis) native "FileEntrySync_file_Callback";
+  file_Callback_0_(mthis) => file_Callback_0(mthis);
+
+  static file_Callback_1(mthis, __arg_0) native "FileEntrySync_file_Callback";
+  file_Callback_1_(mthis, __arg_0) => file_Callback_1(mthis, __arg_0);
+
+  static file_Callback_2(mthis, __arg_0, __arg_1) native "FileEntrySync_file_Callback";
+  file_Callback_2_(mthis, __arg_0, __arg_1) => file_Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkFileError extends BlinkDOMError {
+  static final instance = new BlinkFileError();
+
   static code_Getter(mthis) native "FileError_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
+
 }
 
 class BlinkFileList {
-  static length_Getter(mthis) native "FileList_length_Getter";
+  static final instance = new BlinkFileList();
 
-  static item_Callback_1(mthis, index) native "FileList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "FileList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "FileList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "FileList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "FileList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "FileList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
-class BlinkFileReader {
-  static constructorCallback() native "FileReader_constructorCallback";
+class BlinkFileReader extends BlinkEventTarget {
+  static final instance = new BlinkFileReader();
+
+  static abort_Callback_0(mthis) native "FileReader_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "FileReader_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "FileReader_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "FileReader_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FileReader_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static error_Getter(mthis) native "FileReader_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
+
+  static onabort_Getter(mthis) native "FileReader_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "FileReader_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "FileReader_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "FileReader_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "FileReader_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "FileReader_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadend_Getter(mthis) native "FileReader_onloadend_Getter";
+  onloadend_Getter_(mthis) => onloadend_Getter(mthis);
+
+  static onloadend_Setter(mthis, __arg_0) native "FileReader_onloadend_Setter";
+  onloadend_Setter_(mthis, __arg_0) => onloadend_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "FileReader_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "FileReader_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "FileReader_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "FileReader_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static readAsArrayBuffer_Callback_0(mthis) native "FileReader_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_0_(mthis) => readAsArrayBuffer_Callback_0(mthis);
+
+  static readAsArrayBuffer_Callback_1(mthis, __arg_0) native "FileReader_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => readAsArrayBuffer_Callback_1(mthis, __arg_0);
+
+  static readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsBinaryString_Callback_0(mthis) native "FileReader_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_0_(mthis) => readAsBinaryString_Callback_0(mthis);
+
+  static readAsBinaryString_Callback_1(mthis, __arg_0) native "FileReader_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => readAsBinaryString_Callback_1(mthis, __arg_0);
+
+  static readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_2_(mthis, __arg_0, __arg_1) => readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsDataURL_Callback_0(mthis) native "FileReader_readAsDataURL_Callback";
+  readAsDataURL_Callback_0_(mthis) => readAsDataURL_Callback_0(mthis);
+
+  static readAsDataURL_Callback_1(mthis, __arg_0) native "FileReader_readAsDataURL_Callback";
+  readAsDataURL_Callback_1_(mthis, __arg_0) => readAsDataURL_Callback_1(mthis, __arg_0);
+
+  static readAsDataURL_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsDataURL_Callback";
+  readAsDataURL_Callback_2_(mthis, __arg_0, __arg_1) => readAsDataURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsDataURL_Callback";
+  readAsDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsText_Callback_0(mthis) native "FileReader_readAsText_Callback";
+  readAsText_Callback_0_(mthis) => readAsText_Callback_0(mthis);
+
+  static readAsText_Callback_1(mthis, __arg_0) native "FileReader_readAsText_Callback";
+  readAsText_Callback_1_(mthis, __arg_0) => readAsText_Callback_1(mthis, __arg_0);
+
+  static readAsText_Callback_2(mthis, __arg_0, __arg_1) native "FileReader_readAsText_Callback";
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => readAsText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReader_readAsText_Callback";
+  readAsText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileReader_readAsText_Callback";
+  readAsText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static readyState_Getter(mthis) native "FileReader_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static result_Getter(mthis) native "FileReader_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
-  static abort_Callback(mthis) native "FileReader_abort_Callback";
-
-  static readAsArrayBuffer_Callback_1(mthis, blob) native "FileReader_readAsArrayBuffer_Callback";
-
-  static readAsDataURL_Callback_1(mthis, blob) native "FileReader_readAsDataURL_Callback";
-
-  static readAsText_Callback_2(mthis, blob, encoding) native "FileReader_readAsText_Callback";
-
-  static readAsText_Callback_1(mthis, blob) native "FileReader_readAsText_Callback";
 }
 
 class BlinkFileReaderSync {
-  static constructorCallback() native "FileReaderSync_constructorCallback";
+  static final instance = new BlinkFileReaderSync();
+
+  static constructorCallback_0() native "FileReaderSync_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "FileReaderSync_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FileReaderSync_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static readAsArrayBuffer_Callback_0(mthis) native "FileReaderSync_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_0_(mthis) => readAsArrayBuffer_Callback_0(mthis);
+
+  static readAsArrayBuffer_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_1_(mthis, __arg_0) => readAsArrayBuffer_Callback_1(mthis, __arg_0);
+
+  static readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_2_(mthis, __arg_0, __arg_1) => readAsArrayBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsArrayBuffer_Callback";
+  readAsArrayBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsArrayBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsBinaryString_Callback_0(mthis) native "FileReaderSync_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_0_(mthis) => readAsBinaryString_Callback_0(mthis);
+
+  static readAsBinaryString_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_1_(mthis, __arg_0) => readAsBinaryString_Callback_1(mthis, __arg_0);
+
+  static readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_2_(mthis, __arg_0, __arg_1) => readAsBinaryString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsBinaryString_Callback";
+  readAsBinaryString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsBinaryString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsDataURL_Callback_0(mthis) native "FileReaderSync_readAsDataURL_Callback";
+  readAsDataURL_Callback_0_(mthis) => readAsDataURL_Callback_0(mthis);
+
+  static readAsDataURL_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsDataURL_Callback";
+  readAsDataURL_Callback_1_(mthis, __arg_0) => readAsDataURL_Callback_1(mthis, __arg_0);
+
+  static readAsDataURL_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsDataURL_Callback";
+  readAsDataURL_Callback_2_(mthis, __arg_0, __arg_1) => readAsDataURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsDataURL_Callback";
+  readAsDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsText_Callback_0(mthis) native "FileReaderSync_readAsText_Callback";
+  readAsText_Callback_0_(mthis) => readAsText_Callback_0(mthis);
+
+  static readAsText_Callback_1(mthis, __arg_0) native "FileReaderSync_readAsText_Callback";
+  readAsText_Callback_1_(mthis, __arg_0) => readAsText_Callback_1(mthis, __arg_0);
+
+  static readAsText_Callback_2(mthis, __arg_0, __arg_1) native "FileReaderSync_readAsText_Callback";
+  readAsText_Callback_2_(mthis, __arg_0, __arg_1) => readAsText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileReaderSync_readAsText_Callback";
+  readAsText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => readAsText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FileReaderSync_readAsText_Callback";
+  readAsText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => readAsText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkFileWriter {
+class BlinkFileWriter extends BlinkEventTarget {
+  static final instance = new BlinkFileWriter();
+
+  static abort_Callback_0(mthis) native "FileWriter_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "FileWriter_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
   static error_Getter(mthis) native "FileWriter_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
 
   static length_Getter(mthis) native "FileWriter_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static onabort_Getter(mthis) native "FileWriter_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "FileWriter_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "FileWriter_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "FileWriter_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "FileWriter_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "FileWriter_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onwrite_Getter(mthis) native "FileWriter_onwrite_Getter";
+  onwrite_Getter_(mthis) => onwrite_Getter(mthis);
+
+  static onwrite_Setter(mthis, __arg_0) native "FileWriter_onwrite_Setter";
+  onwrite_Setter_(mthis, __arg_0) => onwrite_Setter(mthis, __arg_0);
+
+  static onwriteend_Getter(mthis) native "FileWriter_onwriteend_Getter";
+  onwriteend_Getter_(mthis) => onwriteend_Getter(mthis);
+
+  static onwriteend_Setter(mthis, __arg_0) native "FileWriter_onwriteend_Setter";
+  onwriteend_Setter_(mthis, __arg_0) => onwriteend_Setter(mthis, __arg_0);
+
+  static onwritestart_Getter(mthis) native "FileWriter_onwritestart_Getter";
+  onwritestart_Getter_(mthis) => onwritestart_Getter(mthis);
+
+  static onwritestart_Setter(mthis, __arg_0) native "FileWriter_onwritestart_Setter";
+  onwritestart_Setter_(mthis, __arg_0) => onwritestart_Setter(mthis, __arg_0);
 
   static position_Getter(mthis) native "FileWriter_position_Getter";
+  position_Getter_(mthis) => position_Getter(mthis);
 
   static readyState_Getter(mthis) native "FileWriter_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
-  static abort_Callback(mthis) native "FileWriter_abort_Callback";
+  static seek_Callback_0(mthis) native "FileWriter_seek_Callback";
+  seek_Callback_0_(mthis) => seek_Callback_0(mthis);
 
-  static seek_Callback_1(mthis, position) native "FileWriter_seek_Callback";
+  static seek_Callback_1(mthis, __arg_0) native "FileWriter_seek_Callback";
+  seek_Callback_1_(mthis, __arg_0) => seek_Callback_1(mthis, __arg_0);
 
-  static truncate_Callback_1(mthis, size) native "FileWriter_truncate_Callback";
+  static seek_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_seek_Callback";
+  seek_Callback_2_(mthis, __arg_0, __arg_1) => seek_Callback_2(mthis, __arg_0, __arg_1);
 
-  static write_Callback_1(mthis, data) native "FileWriter_write_Callback";
+  static seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_seek_Callback";
+  seek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static truncate_Callback_0(mthis) native "FileWriter_truncate_Callback";
+  truncate_Callback_0_(mthis) => truncate_Callback_0(mthis);
+
+  static truncate_Callback_1(mthis, __arg_0) native "FileWriter_truncate_Callback";
+  truncate_Callback_1_(mthis, __arg_0) => truncate_Callback_1(mthis, __arg_0);
+
+  static truncate_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_truncate_Callback";
+  truncate_Callback_2_(mthis, __arg_0, __arg_1) => truncate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_truncate_Callback";
+  truncate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static write_Callback_0(mthis) native "FileWriter_write_Callback";
+  write_Callback_0_(mthis) => write_Callback_0(mthis);
+
+  static write_Callback_1(mthis, __arg_0) native "FileWriter_write_Callback";
+  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
+
+  static write_Callback_2(mthis, __arg_0, __arg_1) native "FileWriter_write_Callback";
+  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
+
+  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriter_write_Callback";
+  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkFileWriterSync {}
+class BlinkFileWriterSync {
+  static final instance = new BlinkFileWriterSync();
 
-class BlinkFocusEvent {
-  static constructorCallback(type, options) native "FocusEvent_constructorCallback";
+  static length_Getter(mthis) native "FileWriterSync_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static position_Getter(mthis) native "FileWriterSync_position_Getter";
+  position_Getter_(mthis) => position_Getter(mthis);
+
+  static seek_Callback_0(mthis) native "FileWriterSync_seek_Callback";
+  seek_Callback_0_(mthis) => seek_Callback_0(mthis);
+
+  static seek_Callback_1(mthis, __arg_0) native "FileWriterSync_seek_Callback";
+  seek_Callback_1_(mthis, __arg_0) => seek_Callback_1(mthis, __arg_0);
+
+  static seek_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_seek_Callback";
+  seek_Callback_2_(mthis, __arg_0, __arg_1) => seek_Callback_2(mthis, __arg_0, __arg_1);
+
+  static seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_seek_Callback";
+  seek_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => seek_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static truncate_Callback_0(mthis) native "FileWriterSync_truncate_Callback";
+  truncate_Callback_0_(mthis) => truncate_Callback_0(mthis);
+
+  static truncate_Callback_1(mthis, __arg_0) native "FileWriterSync_truncate_Callback";
+  truncate_Callback_1_(mthis, __arg_0) => truncate_Callback_1(mthis, __arg_0);
+
+  static truncate_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_truncate_Callback";
+  truncate_Callback_2_(mthis, __arg_0, __arg_1) => truncate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_truncate_Callback";
+  truncate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => truncate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static write_Callback_0(mthis) native "FileWriterSync_write_Callback";
+  write_Callback_0_(mthis) => write_Callback_0(mthis);
+
+  static write_Callback_1(mthis, __arg_0) native "FileWriterSync_write_Callback";
+  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
+
+  static write_Callback_2(mthis, __arg_0, __arg_1) native "FileWriterSync_write_Callback";
+  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
+
+  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FileWriterSync_write_Callback";
+  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkFocusEvent extends BlinkUIEvent {
+  static final instance = new BlinkFocusEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FocusEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static relatedTarget_Getter(mthis) native "FocusEvent_relatedTarget_Getter";
+  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
+
 }
 
 class BlinkFontFace {
-  static constructorCallback_2(family, source) native "FontFace_constructorCallback";
+  static final instance = new BlinkFontFace();
 
-  static constructorCallback_3(family, source, descriptors) native "FontFace_constructorCallback";
+  static constructorCallback_0() native "FontFace_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "FontFace_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FontFace_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FontFace_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "FontFace_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FontFace_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static family_Getter(mthis) native "FontFace_family_Getter";
+  family_Getter_(mthis) => family_Getter(mthis);
 
-  static family_Setter(mthis, value) native "FontFace_family_Setter";
+  static family_Setter(mthis, __arg_0) native "FontFace_family_Setter";
+  family_Setter_(mthis, __arg_0) => family_Setter(mthis, __arg_0);
 
   static featureSettings_Getter(mthis) native "FontFace_featureSettings_Getter";
+  featureSettings_Getter_(mthis) => featureSettings_Getter(mthis);
 
-  static featureSettings_Setter(mthis, value) native "FontFace_featureSettings_Setter";
+  static featureSettings_Setter(mthis, __arg_0) native "FontFace_featureSettings_Setter";
+  featureSettings_Setter_(mthis, __arg_0) => featureSettings_Setter(mthis, __arg_0);
+
+  static load_Callback_0(mthis) native "FontFace_load_Callback";
+  load_Callback_0_(mthis) => load_Callback_0(mthis);
+
+  static load_Callback_1(mthis, __arg_0) native "FontFace_load_Callback";
+  load_Callback_1_(mthis, __arg_0) => load_Callback_1(mthis, __arg_0);
+
+  static load_Callback_2(mthis, __arg_0, __arg_1) native "FontFace_load_Callback";
+  load_Callback_2_(mthis, __arg_0, __arg_1) => load_Callback_2(mthis, __arg_0, __arg_1);
 
   static loaded_Getter(mthis) native "FontFace_loaded_Getter";
+  loaded_Getter_(mthis) => loaded_Getter(mthis);
 
   static status_Getter(mthis) native "FontFace_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
   static stretch_Getter(mthis) native "FontFace_stretch_Getter";
+  stretch_Getter_(mthis) => stretch_Getter(mthis);
 
-  static stretch_Setter(mthis, value) native "FontFace_stretch_Setter";
+  static stretch_Setter(mthis, __arg_0) native "FontFace_stretch_Setter";
+  stretch_Setter_(mthis, __arg_0) => stretch_Setter(mthis, __arg_0);
 
   static style_Getter(mthis) native "FontFace_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
 
-  static style_Setter(mthis, value) native "FontFace_style_Setter";
+  static style_Setter(mthis, __arg_0) native "FontFace_style_Setter";
+  style_Setter_(mthis, __arg_0) => style_Setter(mthis, __arg_0);
 
   static unicodeRange_Getter(mthis) native "FontFace_unicodeRange_Getter";
+  unicodeRange_Getter_(mthis) => unicodeRange_Getter(mthis);
 
-  static unicodeRange_Setter(mthis, value) native "FontFace_unicodeRange_Setter";
+  static unicodeRange_Setter(mthis, __arg_0) native "FontFace_unicodeRange_Setter";
+  unicodeRange_Setter_(mthis, __arg_0) => unicodeRange_Setter(mthis, __arg_0);
 
   static variant_Getter(mthis) native "FontFace_variant_Getter";
+  variant_Getter_(mthis) => variant_Getter(mthis);
 
-  static variant_Setter(mthis, value) native "FontFace_variant_Setter";
+  static variant_Setter(mthis, __arg_0) native "FontFace_variant_Setter";
+  variant_Setter_(mthis, __arg_0) => variant_Setter(mthis, __arg_0);
 
   static weight_Getter(mthis) native "FontFace_weight_Getter";
+  weight_Getter_(mthis) => weight_Getter(mthis);
 
-  static weight_Setter(mthis, value) native "FontFace_weight_Setter";
+  static weight_Setter(mthis, __arg_0) native "FontFace_weight_Setter";
+  weight_Setter_(mthis, __arg_0) => weight_Setter(mthis, __arg_0);
 
-  static load_Callback(mthis) native "FontFace_load_Callback";
 }
 
-class BlinkFontFaceSet {
+class BlinkFontFaceSet extends BlinkEventTarget {
+  static final instance = new BlinkFontFaceSet();
+
+  static add_Callback_0(mthis) native "FontFaceSet_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "FontFaceSet_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static check_Callback_0(mthis) native "FontFaceSet_check_Callback";
+  check_Callback_0_(mthis) => check_Callback_0(mthis);
+
+  static check_Callback_1(mthis, __arg_0) native "FontFaceSet_check_Callback";
+  check_Callback_1_(mthis, __arg_0) => check_Callback_1(mthis, __arg_0);
+
+  static check_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_check_Callback";
+  check_Callback_2_(mthis, __arg_0, __arg_1) => check_Callback_2(mthis, __arg_0, __arg_1);
+
+  static check_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_check_Callback";
+  check_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => check_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static check_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FontFaceSet_check_Callback";
+  check_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => check_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static clear_Callback_0(mthis) native "FontFaceSet_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "FontFaceSet_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_0(mthis) native "FontFaceSet_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "FontFaceSet_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_delete_Callback";
+  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static forEach_Callback_0(mthis) native "FontFaceSet_forEach_Callback";
+  forEach_Callback_0_(mthis) => forEach_Callback_0(mthis);
+
+  static forEach_Callback_1(mthis, __arg_0) native "FontFaceSet_forEach_Callback";
+  forEach_Callback_1_(mthis, __arg_0) => forEach_Callback_1(mthis, __arg_0);
+
+  static forEach_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_forEach_Callback";
+  forEach_Callback_2_(mthis, __arg_0, __arg_1) => forEach_Callback_2(mthis, __arg_0, __arg_1);
+
+  static forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_forEach_Callback";
+  forEach_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FontFaceSet_forEach_Callback";
+  forEach_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static has_Callback_0(mthis) native "FontFaceSet_has_Callback";
+  has_Callback_0_(mthis) => has_Callback_0(mthis);
+
+  static has_Callback_1(mthis, __arg_0) native "FontFaceSet_has_Callback";
+  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
+
+  static has_Callback_2(mthis, __arg_0, __arg_1) native "FontFaceSet_has_Callback";
+  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
+
+  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FontFaceSet_has_Callback";
+  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onloading_Getter(mthis) native "FontFaceSet_onloading_Getter";
+  onloading_Getter_(mthis) => onloading_Getter(mthis);
+
+  static onloading_Setter(mthis, __arg_0) native "FontFaceSet_onloading_Setter";
+  onloading_Setter_(mthis, __arg_0) => onloading_Setter(mthis, __arg_0);
+
+  static onloadingdone_Getter(mthis) native "FontFaceSet_onloadingdone_Getter";
+  onloadingdone_Getter_(mthis) => onloadingdone_Getter(mthis);
+
+  static onloadingdone_Setter(mthis, __arg_0) native "FontFaceSet_onloadingdone_Setter";
+  onloadingdone_Setter_(mthis, __arg_0) => onloadingdone_Setter(mthis, __arg_0);
+
+  static onloadingerror_Getter(mthis) native "FontFaceSet_onloadingerror_Getter";
+  onloadingerror_Getter_(mthis) => onloadingerror_Getter(mthis);
+
+  static onloadingerror_Setter(mthis, __arg_0) native "FontFaceSet_onloadingerror_Setter";
+  onloadingerror_Setter_(mthis, __arg_0) => onloadingerror_Setter(mthis, __arg_0);
+
   static size_Getter(mthis) native "FontFaceSet_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
   static status_Getter(mthis) native "FontFaceSet_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
-  static add_Callback_1(mthis, fontFace) native "FontFaceSet_add_Callback";
-
-  static check_Callback_2(mthis, font, text) native "FontFaceSet_check_Callback";
-
-  static clear_Callback(mthis) native "FontFaceSet_clear_Callback";
-
-  static delete_Callback_1(mthis, fontFace) native "FontFaceSet_delete_Callback";
-
-  static forEach_Callback_2(mthis, callback, thisArg) native "FontFaceSet_forEach_Callback";
-
-  static forEach_Callback_1(mthis, callback) native "FontFaceSet_forEach_Callback";
-
-  static has_Callback_1(mthis, fontFace) native "FontFaceSet_has_Callback";
 }
 
-class BlinkFontFaceSetLoadEvent {
+class BlinkFontFaceSetLoadEvent extends BlinkEvent {
+  static final instance = new BlinkFontFaceSetLoadEvent();
+
   static fontfaces_Getter(mthis) native "FontFaceSetLoadEvent_fontfaces_Getter";
+  fontfaces_Getter_(mthis) => fontfaces_Getter(mthis);
+
 }
 
 class BlinkFormData {
-  static constructorCallback_1(form) native "FormData_constructorCallback_HTMLFormElement";
+  static final instance = new BlinkFormData();
 
-  static append_Callback_2(mthis, name, value) native "FormData_append_Callback";
+  static append_Callback_0(mthis) native "FormData_append_Callback";
+  append_Callback_0_(mthis) => append_Callback_0(mthis);
 
-  static append_Callback_3(mthis, name, value, filename) native "FormData_append_Callback";
+  static append_Callback_1(mthis, __arg_0) native "FormData_append_Callback";
+  append_Callback_1_(mthis, __arg_0) => append_Callback_1(mthis, __arg_0);
+
+  static append_Callback_2(mthis, __arg_0, __arg_1) native "FormData_append_Callback";
+  append_Callback_2_(mthis, __arg_0, __arg_1) => append_Callback_2(mthis, __arg_0, __arg_1);
+
+  static append_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "FormData_append_Callback";
+  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => append_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "FormData_append_Callback";
+  append_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static append_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "FormData_append_Callback";
+  append_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => append_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_0() native "FormData_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "FormData_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "FormData_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "FormData_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkGainNode {
+class BlinkGainNode extends BlinkAudioNode {
+  static final instance = new BlinkGainNode();
+
   static gain_Getter(mthis) native "GainNode_gain_Getter";
+  gain_Getter_(mthis) => gain_Getter(mthis);
+
 }
 
 class BlinkGamepad {
+  static final instance = new BlinkGamepad();
+
   static axes_Getter(mthis) native "Gamepad_axes_Getter";
+  axes_Getter_(mthis) => axes_Getter(mthis);
 
   static connected_Getter(mthis) native "Gamepad_connected_Getter";
+  connected_Getter_(mthis) => connected_Getter(mthis);
 
   static id_Getter(mthis) native "Gamepad_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static index_Getter(mthis) native "Gamepad_index_Getter";
+  index_Getter_(mthis) => index_Getter(mthis);
 
   static mapping_Getter(mthis) native "Gamepad_mapping_Getter";
+  mapping_Getter_(mthis) => mapping_Getter(mthis);
 
   static timestamp_Getter(mthis) native "Gamepad_timestamp_Getter";
+  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+
 }
 
 class BlinkGamepadButton {
+  static final instance = new BlinkGamepadButton();
+
   static pressed_Getter(mthis) native "GamepadButton_pressed_Getter";
+  pressed_Getter_(mthis) => pressed_Getter(mthis);
 
   static value_Getter(mthis) native "GamepadButton_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
 }
 
-class BlinkGamepadEvent {
-  static constructorCallback(type, options) native "GamepadEvent_constructorCallback";
+class BlinkGamepadEvent extends BlinkEvent {
+  static final instance = new BlinkGamepadEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "GamepadEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static gamepad_Getter(mthis) native "GamepadEvent_gamepad_Getter";
+  gamepad_Getter_(mthis) => gamepad_Getter(mthis);
+
 }
 
 class BlinkGamepadList {
-  static length_Getter(mthis) native "GamepadList_length_Getter";
+  static final instance = new BlinkGamepadList();
 
-  static item_Callback_1(mthis, index) native "GamepadList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "GamepadList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "GamepadList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "GamepadList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "GamepadList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "GamepadList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "GamepadList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
 class BlinkGeofencing {
-  static getRegisteredRegions_Callback(mthis) native "Geofencing_getRegisteredRegions_Callback";
+  static final instance = new BlinkGeofencing();
 
-  static registerRegion_Callback_1(mthis, region) native "Geofencing_registerRegion_Callback";
+  static getRegisteredRegions_Callback_0(mthis) native "Geofencing_getRegisteredRegions_Callback";
+  getRegisteredRegions_Callback_0_(mthis) => getRegisteredRegions_Callback_0(mthis);
 
-  static unregisterRegion_Callback_1(mthis, regionId) native "Geofencing_unregisterRegion_Callback";
+  static getRegisteredRegions_Callback_1(mthis, __arg_0) native "Geofencing_getRegisteredRegions_Callback";
+  getRegisteredRegions_Callback_1_(mthis, __arg_0) => getRegisteredRegions_Callback_1(mthis, __arg_0);
+
+  static getRegisteredRegions_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_getRegisteredRegions_Callback";
+  getRegisteredRegions_Callback_2_(mthis, __arg_0, __arg_1) => getRegisteredRegions_Callback_2(mthis, __arg_0, __arg_1);
+
+  static registerRegion_Callback_0(mthis) native "Geofencing_registerRegion_Callback";
+  registerRegion_Callback_0_(mthis) => registerRegion_Callback_0(mthis);
+
+  static registerRegion_Callback_1(mthis, __arg_0) native "Geofencing_registerRegion_Callback";
+  registerRegion_Callback_1_(mthis, __arg_0) => registerRegion_Callback_1(mthis, __arg_0);
+
+  static registerRegion_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_registerRegion_Callback";
+  registerRegion_Callback_2_(mthis, __arg_0, __arg_1) => registerRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static registerRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geofencing_registerRegion_Callback";
+  registerRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static unregisterRegion_Callback_0(mthis) native "Geofencing_unregisterRegion_Callback";
+  unregisterRegion_Callback_0_(mthis) => unregisterRegion_Callback_0(mthis);
+
+  static unregisterRegion_Callback_1(mthis, __arg_0) native "Geofencing_unregisterRegion_Callback";
+  unregisterRegion_Callback_1_(mthis, __arg_0) => unregisterRegion_Callback_1(mthis, __arg_0);
+
+  static unregisterRegion_Callback_2(mthis, __arg_0, __arg_1) native "Geofencing_unregisterRegion_Callback";
+  unregisterRegion_Callback_2_(mthis, __arg_0, __arg_1) => unregisterRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unregisterRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geofencing_unregisterRegion_Callback";
+  unregisterRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unregisterRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkGeofencingRegion {
+  static final instance = new BlinkGeofencingRegion();
+
+  static id_Getter(mthis) native "GeofencingRegion_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
+
 }
 
 class BlinkGeolocation {
-  static clearWatch_Callback_1(mthis, watchID) native "Geolocation_clearWatch_Callback";
+  static final instance = new BlinkGeolocation();
 
-  static getCurrentPosition_Callback_3(mthis, successCallback, errorCallback, options) native "Geolocation_getCurrentPosition_Callback";
+  static clearWatch_Callback_0(mthis) native "Geolocation_clearWatch_Callback";
+  clearWatch_Callback_0_(mthis) => clearWatch_Callback_0(mthis);
 
-  static getCurrentPosition_Callback_2(mthis, successCallback, errorCallback) native "Geolocation_getCurrentPosition_Callback";
+  static clearWatch_Callback_1(mthis, __arg_0) native "Geolocation_clearWatch_Callback";
+  clearWatch_Callback_1_(mthis, __arg_0) => clearWatch_Callback_1(mthis, __arg_0);
 
-  static getCurrentPosition_Callback_1(mthis, successCallback) native "Geolocation_getCurrentPosition_Callback";
+  static clearWatch_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_clearWatch_Callback";
+  clearWatch_Callback_2_(mthis, __arg_0, __arg_1) => clearWatch_Callback_2(mthis, __arg_0, __arg_1);
 
-  static watchPosition_Callback_3(mthis, successCallback, errorCallback, options) native "Geolocation_watchPosition_Callback";
+  static clearWatch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_clearWatch_Callback";
+  clearWatch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearWatch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static watchPosition_Callback_2(mthis, successCallback, errorCallback) native "Geolocation_watchPosition_Callback";
+  static getCurrentPosition_Callback_0(mthis) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_0_(mthis) => getCurrentPosition_Callback_0(mthis);
 
-  static watchPosition_Callback_1(mthis, successCallback) native "Geolocation_watchPosition_Callback";
+  static getCurrentPosition_Callback_1(mthis, __arg_0) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_1_(mthis, __arg_0) => getCurrentPosition_Callback_1(mthis, __arg_0);
+
+  static getCurrentPosition_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCurrentPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCurrentPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getCurrentPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getCurrentPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getCurrentPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Geolocation_getCurrentPosition_Callback";
+  getCurrentPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getCurrentPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static watchPosition_Callback_0(mthis) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_0_(mthis) => watchPosition_Callback_0(mthis);
+
+  static watchPosition_Callback_1(mthis, __arg_0) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_1_(mthis, __arg_0) => watchPosition_Callback_1(mthis, __arg_0);
+
+  static watchPosition_Callback_2(mthis, __arg_0, __arg_1) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_2_(mthis, __arg_0, __arg_1) => watchPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static watchPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => watchPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static watchPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => watchPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static watchPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Geolocation_watchPosition_Callback";
+  watchPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => watchPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
 class BlinkGeoposition {
+  static final instance = new BlinkGeoposition();
+
   static coords_Getter(mthis) native "Geoposition_coords_Getter";
+  coords_Getter_(mthis) => coords_Getter(mthis);
 
   static timestamp_Getter(mthis) native "Geoposition_timestamp_Getter";
+  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+
 }
 
 class BlinkHTMLAllCollection {
-  static item_Callback_1(mthis, index) native "HTMLAllCollection_item_Callback";
+  static final instance = new BlinkHTMLAllCollection();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLAllCollection___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "HTMLAllCollection_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "HTMLAllCollection_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAllCollection_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLAllCollection_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "HTMLAllCollection_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static namedItem_Callback_0(mthis) native "HTMLAllCollection_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+
+  static namedItem_Callback_1(mthis, __arg_0) native "HTMLAllCollection_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAllCollection_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLAllCollection_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkHTMLElement {
-  static contentEditable_Getter(mthis) native "HTMLElement_contentEditable_Getter";
+class BlinkHTMLAnchorElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLAnchorElement();
 
-  static contentEditable_Setter(mthis, value) native "HTMLElement_contentEditable_Setter";
-
-  static dir_Getter(mthis) native "HTMLElement_dir_Getter";
-
-  static dir_Setter(mthis, value) native "HTMLElement_dir_Setter";
-
-  static draggable_Getter(mthis) native "HTMLElement_draggable_Getter";
-
-  static draggable_Setter(mthis, value) native "HTMLElement_draggable_Setter";
-
-  static hidden_Getter(mthis) native "HTMLElement_hidden_Getter";
-
-  static hidden_Setter(mthis, value) native "HTMLElement_hidden_Setter";
-
-  static inputMethodContext_Getter(mthis) native "HTMLElement_inputMethodContext_Getter";
-
-  static isContentEditable_Getter(mthis) native "HTMLElement_isContentEditable_Getter";
-
-  static lang_Getter(mthis) native "HTMLElement_lang_Getter";
-
-  static lang_Setter(mthis, value) native "HTMLElement_lang_Setter";
-
-  static spellcheck_Getter(mthis) native "HTMLElement_spellcheck_Getter";
-
-  static spellcheck_Setter(mthis, value) native "HTMLElement_spellcheck_Setter";
-
-  static tabIndex_Getter(mthis) native "HTMLElement_tabIndex_Getter";
-
-  static tabIndex_Setter(mthis, value) native "HTMLElement_tabIndex_Setter";
-
-  static title_Getter(mthis) native "HTMLElement_title_Getter";
-
-  static title_Setter(mthis, value) native "HTMLElement_title_Setter";
-
-  static translate_Getter(mthis) native "HTMLElement_translate_Getter";
-
-  static translate_Setter(mthis, value) native "HTMLElement_translate_Setter";
-
-  static webkitdropzone_Getter(mthis) native "HTMLElement_webkitdropzone_Getter";
-
-  static webkitdropzone_Setter(mthis, value) native "HTMLElement_webkitdropzone_Setter";
-
-  static click_Callback(mthis) native "HTMLElement_click_Callback";
-}
-
-class BlinkURLUtils {
-  static hash_Getter(mthis) native "URL_hash_Getter";
-
-  static hash_Setter(mthis, value) native "URL_hash_Setter";
-
-  static host_Getter(mthis) native "URL_host_Getter";
-
-  static host_Setter(mthis, value) native "URL_host_Setter";
-
-  static hostname_Getter(mthis) native "URL_hostname_Getter";
-
-  static hostname_Setter(mthis, value) native "URL_hostname_Setter";
-
-  static href_Getter(mthis) native "URL_href_Getter";
-
-  static href_Setter(mthis, value) native "URL_href_Setter";
-
-  static origin_Getter(mthis) native "URL_origin_Getter";
-
-  static password_Getter(mthis) native "URL_password_Getter";
-
-  static password_Setter(mthis, value) native "URL_password_Setter";
-
-  static pathname_Getter(mthis) native "URL_pathname_Getter";
-
-  static pathname_Setter(mthis, value) native "URL_pathname_Setter";
-
-  static port_Getter(mthis) native "URL_port_Getter";
-
-  static port_Setter(mthis, value) native "URL_port_Setter";
-
-  static protocol_Getter(mthis) native "URL_protocol_Getter";
-
-  static protocol_Setter(mthis, value) native "URL_protocol_Setter";
-
-  static search_Getter(mthis) native "URL_search_Getter";
-
-  static search_Setter(mthis, value) native "URL_search_Setter";
-
-  static username_Getter(mthis) native "URL_username_Getter";
-
-  static username_Setter(mthis, value) native "URL_username_Setter";
-
-  static toString_Callback(mthis) native "URL_toString_Callback";
-}
-
-class BlinkHTMLAnchorElement {
   static download_Getter(mthis) native "HTMLAnchorElement_download_Getter";
+  download_Getter_(mthis) => download_Getter(mthis);
 
-  static download_Setter(mthis, value) native "HTMLAnchorElement_download_Setter";
-
-  static hreflang_Getter(mthis) native "HTMLAnchorElement_hreflang_Getter";
-
-  static hreflang_Setter(mthis, value) native "HTMLAnchorElement_hreflang_Setter";
-
-  static integrity_Getter(mthis) native "HTMLAnchorElement_integrity_Getter";
-
-  static integrity_Setter(mthis, value) native "HTMLAnchorElement_integrity_Setter";
-
-  static rel_Getter(mthis) native "HTMLAnchorElement_rel_Getter";
-
-  static rel_Setter(mthis, value) native "HTMLAnchorElement_rel_Setter";
-
-  static target_Getter(mthis) native "HTMLAnchorElement_target_Getter";
-
-  static target_Setter(mthis, value) native "HTMLAnchorElement_target_Setter";
-
-  static type_Getter(mthis) native "HTMLAnchorElement_type_Getter";
-
-  static type_Setter(mthis, value) native "HTMLAnchorElement_type_Setter";
+  static download_Setter(mthis, __arg_0) native "HTMLAnchorElement_download_Setter";
+  download_Setter_(mthis, __arg_0) => download_Setter(mthis, __arg_0);
 
   static hash_Getter(mthis) native "HTMLAnchorElement_hash_Getter";
+  hash_Getter_(mthis) => hash_Getter(mthis);
 
-  static hash_Setter(mthis, value) native "HTMLAnchorElement_hash_Setter";
+  static hash_Setter(mthis, __arg_0) native "HTMLAnchorElement_hash_Setter";
+  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
 
   static host_Getter(mthis) native "HTMLAnchorElement_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
 
-  static host_Setter(mthis, value) native "HTMLAnchorElement_host_Setter";
+  static host_Setter(mthis, __arg_0) native "HTMLAnchorElement_host_Setter";
+  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
 
   static hostname_Getter(mthis) native "HTMLAnchorElement_hostname_Getter";
+  hostname_Getter_(mthis) => hostname_Getter(mthis);
 
-  static hostname_Setter(mthis, value) native "HTMLAnchorElement_hostname_Setter";
+  static hostname_Setter(mthis, __arg_0) native "HTMLAnchorElement_hostname_Setter";
+  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "HTMLAnchorElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "HTMLAnchorElement_href_Setter";
+  static href_Setter(mthis, __arg_0) native "HTMLAnchorElement_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
+
+  static hreflang_Getter(mthis) native "HTMLAnchorElement_hreflang_Getter";
+  hreflang_Getter_(mthis) => hreflang_Getter(mthis);
+
+  static hreflang_Setter(mthis, __arg_0) native "HTMLAnchorElement_hreflang_Setter";
+  hreflang_Setter_(mthis, __arg_0) => hreflang_Setter(mthis, __arg_0);
+
+  static integrity_Getter(mthis) native "HTMLAnchorElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
+
+  static integrity_Setter(mthis, __arg_0) native "HTMLAnchorElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+
+  static name_Getter(mthis) native "HTMLAnchorElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static name_Setter(mthis, __arg_0) native "HTMLAnchorElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static origin_Getter(mthis) native "HTMLAnchorElement_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
 
   static password_Getter(mthis) native "HTMLAnchorElement_password_Getter";
+  password_Getter_(mthis) => password_Getter(mthis);
 
-  static password_Setter(mthis, value) native "HTMLAnchorElement_password_Setter";
+  static password_Setter(mthis, __arg_0) native "HTMLAnchorElement_password_Setter";
+  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
 
   static pathname_Getter(mthis) native "HTMLAnchorElement_pathname_Getter";
+  pathname_Getter_(mthis) => pathname_Getter(mthis);
 
-  static pathname_Setter(mthis, value) native "HTMLAnchorElement_pathname_Setter";
+  static pathname_Setter(mthis, __arg_0) native "HTMLAnchorElement_pathname_Setter";
+  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+
+  static ping_Getter(mthis) native "HTMLAnchorElement_ping_Getter";
+  ping_Getter_(mthis) => ping_Getter(mthis);
+
+  static ping_Setter(mthis, __arg_0) native "HTMLAnchorElement_ping_Setter";
+  ping_Setter_(mthis, __arg_0) => ping_Setter(mthis, __arg_0);
 
   static port_Getter(mthis) native "HTMLAnchorElement_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
 
-  static port_Setter(mthis, value) native "HTMLAnchorElement_port_Setter";
+  static port_Setter(mthis, __arg_0) native "HTMLAnchorElement_port_Setter";
+  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
 
   static protocol_Getter(mthis) native "HTMLAnchorElement_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
-  static protocol_Setter(mthis, value) native "HTMLAnchorElement_protocol_Setter";
+  static protocol_Setter(mthis, __arg_0) native "HTMLAnchorElement_protocol_Setter";
+  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+
+  static rel_Getter(mthis) native "HTMLAnchorElement_rel_Getter";
+  rel_Getter_(mthis) => rel_Getter(mthis);
+
+  static rel_Setter(mthis, __arg_0) native "HTMLAnchorElement_rel_Setter";
+  rel_Setter_(mthis, __arg_0) => rel_Setter(mthis, __arg_0);
 
   static search_Getter(mthis) native "HTMLAnchorElement_search_Getter";
+  search_Getter_(mthis) => search_Getter(mthis);
 
-  static search_Setter(mthis, value) native "HTMLAnchorElement_search_Setter";
+  static search_Setter(mthis, __arg_0) native "HTMLAnchorElement_search_Setter";
+  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
+
+  static target_Getter(mthis) native "HTMLAnchorElement_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
+  static target_Setter(mthis, __arg_0) native "HTMLAnchorElement_target_Setter";
+  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+
+  static toString_Callback_0(mthis) native "HTMLAnchorElement_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+
+  static toString_Callback_1(mthis, __arg_0) native "HTMLAnchorElement_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAnchorElement_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static type_Getter(mthis) native "HTMLAnchorElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static type_Setter(mthis, __arg_0) native "HTMLAnchorElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
   static username_Getter(mthis) native "HTMLAnchorElement_username_Getter";
+  username_Getter_(mthis) => username_Getter(mthis);
 
-  static username_Setter(mthis, value) native "HTMLAnchorElement_username_Setter";
+  static username_Setter(mthis, __arg_0) native "HTMLAnchorElement_username_Setter";
+  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
 
-  static toString_Callback(mthis) native "HTMLAnchorElement_toString_Callback";
 }
 
-class BlinkHTMLAppletElement {}
+class BlinkHTMLAppletElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLAppletElement();
 
-class BlinkHTMLAreaElement {
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLAppletElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLAppletElement___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkHTMLAreaElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLAreaElement();
+
   static alt_Getter(mthis) native "HTMLAreaElement_alt_Getter";
+  alt_Getter_(mthis) => alt_Getter(mthis);
 
-  static alt_Setter(mthis, value) native "HTMLAreaElement_alt_Setter";
+  static alt_Setter(mthis, __arg_0) native "HTMLAreaElement_alt_Setter";
+  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
 
   static coords_Getter(mthis) native "HTMLAreaElement_coords_Getter";
+  coords_Getter_(mthis) => coords_Getter(mthis);
 
-  static coords_Setter(mthis, value) native "HTMLAreaElement_coords_Setter";
-
-  static shape_Getter(mthis) native "HTMLAreaElement_shape_Getter";
-
-  static shape_Setter(mthis, value) native "HTMLAreaElement_shape_Setter";
-
-  static target_Getter(mthis) native "HTMLAreaElement_target_Getter";
-
-  static target_Setter(mthis, value) native "HTMLAreaElement_target_Setter";
+  static coords_Setter(mthis, __arg_0) native "HTMLAreaElement_coords_Setter";
+  coords_Setter_(mthis, __arg_0) => coords_Setter(mthis, __arg_0);
 
   static hash_Getter(mthis) native "HTMLAreaElement_hash_Getter";
+  hash_Getter_(mthis) => hash_Getter(mthis);
 
-  static hash_Setter(mthis, value) native "HTMLAreaElement_hash_Setter";
+  static hash_Setter(mthis, __arg_0) native "HTMLAreaElement_hash_Setter";
+  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
 
   static host_Getter(mthis) native "HTMLAreaElement_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
 
-  static host_Setter(mthis, value) native "HTMLAreaElement_host_Setter";
+  static host_Setter(mthis, __arg_0) native "HTMLAreaElement_host_Setter";
+  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
 
   static hostname_Getter(mthis) native "HTMLAreaElement_hostname_Getter";
+  hostname_Getter_(mthis) => hostname_Getter(mthis);
 
-  static hostname_Setter(mthis, value) native "HTMLAreaElement_hostname_Setter";
+  static hostname_Setter(mthis, __arg_0) native "HTMLAreaElement_hostname_Setter";
+  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "HTMLAreaElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "HTMLAreaElement_href_Setter";
+  static href_Setter(mthis, __arg_0) native "HTMLAreaElement_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
 
   static origin_Getter(mthis) native "HTMLAreaElement_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
 
   static password_Getter(mthis) native "HTMLAreaElement_password_Getter";
+  password_Getter_(mthis) => password_Getter(mthis);
 
-  static password_Setter(mthis, value) native "HTMLAreaElement_password_Setter";
+  static password_Setter(mthis, __arg_0) native "HTMLAreaElement_password_Setter";
+  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
 
   static pathname_Getter(mthis) native "HTMLAreaElement_pathname_Getter";
+  pathname_Getter_(mthis) => pathname_Getter(mthis);
 
-  static pathname_Setter(mthis, value) native "HTMLAreaElement_pathname_Setter";
+  static pathname_Setter(mthis, __arg_0) native "HTMLAreaElement_pathname_Setter";
+  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
+
+  static ping_Getter(mthis) native "HTMLAreaElement_ping_Getter";
+  ping_Getter_(mthis) => ping_Getter(mthis);
+
+  static ping_Setter(mthis, __arg_0) native "HTMLAreaElement_ping_Setter";
+  ping_Setter_(mthis, __arg_0) => ping_Setter(mthis, __arg_0);
 
   static port_Getter(mthis) native "HTMLAreaElement_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
 
-  static port_Setter(mthis, value) native "HTMLAreaElement_port_Setter";
+  static port_Setter(mthis, __arg_0) native "HTMLAreaElement_port_Setter";
+  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
 
   static protocol_Getter(mthis) native "HTMLAreaElement_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
-  static protocol_Setter(mthis, value) native "HTMLAreaElement_protocol_Setter";
+  static protocol_Setter(mthis, __arg_0) native "HTMLAreaElement_protocol_Setter";
+  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
 
   static search_Getter(mthis) native "HTMLAreaElement_search_Getter";
+  search_Getter_(mthis) => search_Getter(mthis);
 
-  static search_Setter(mthis, value) native "HTMLAreaElement_search_Setter";
+  static search_Setter(mthis, __arg_0) native "HTMLAreaElement_search_Setter";
+  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
+
+  static shape_Getter(mthis) native "HTMLAreaElement_shape_Getter";
+  shape_Getter_(mthis) => shape_Getter(mthis);
+
+  static shape_Setter(mthis, __arg_0) native "HTMLAreaElement_shape_Setter";
+  shape_Setter_(mthis, __arg_0) => shape_Setter(mthis, __arg_0);
+
+  static target_Getter(mthis) native "HTMLAreaElement_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
+  static target_Setter(mthis, __arg_0) native "HTMLAreaElement_target_Setter";
+  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+
+  static toString_Callback_0(mthis) native "HTMLAreaElement_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+
+  static toString_Callback_1(mthis, __arg_0) native "HTMLAreaElement_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "HTMLAreaElement_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
 
   static username_Getter(mthis) native "HTMLAreaElement_username_Getter";
+  username_Getter_(mthis) => username_Getter(mthis);
 
-  static username_Setter(mthis, value) native "HTMLAreaElement_username_Setter";
+  static username_Setter(mthis, __arg_0) native "HTMLAreaElement_username_Setter";
+  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
 
-  static toString_Callback(mthis) native "HTMLAreaElement_toString_Callback";
 }
 
-class BlinkHTMLMediaElement {
-  static audioTracks_Getter(mthis) native "HTMLMediaElement_audioTracks_Getter";
+class BlinkHTMLAudioElement extends BlinkHTMLMediaElement {
+  static final instance = new BlinkHTMLAudioElement();
 
-  static autoplay_Getter(mthis) native "HTMLMediaElement_autoplay_Getter";
+  static constructorCallback_0() native "HTMLAudioElement_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static autoplay_Setter(mthis, value) native "HTMLMediaElement_autoplay_Setter";
+  static constructorCallback_1(__arg_0) native "HTMLAudioElement_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
 
-  static buffered_Getter(mthis) native "HTMLMediaElement_buffered_Getter";
+  static constructorCallback_2(__arg_0, __arg_1) native "HTMLAudioElement_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
-  static controller_Getter(mthis) native "HTMLMediaElement_controller_Getter";
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLAudioElement_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
-  static controller_Setter(mthis, value) native "HTMLMediaElement_controller_Setter";
-
-  static controls_Getter(mthis) native "HTMLMediaElement_controls_Getter";
-
-  static controls_Setter(mthis, value) native "HTMLMediaElement_controls_Setter";
-
-  static crossOrigin_Getter(mthis) native "HTMLMediaElement_crossOrigin_Getter";
-
-  static crossOrigin_Setter(mthis, value) native "HTMLMediaElement_crossOrigin_Setter";
-
-  static currentSrc_Getter(mthis) native "HTMLMediaElement_currentSrc_Getter";
-
-  static currentTime_Getter(mthis) native "HTMLMediaElement_currentTime_Getter";
-
-  static currentTime_Setter(mthis, value) native "HTMLMediaElement_currentTime_Setter";
-
-  static defaultMuted_Getter(mthis) native "HTMLMediaElement_defaultMuted_Getter";
-
-  static defaultMuted_Setter(mthis, value) native "HTMLMediaElement_defaultMuted_Setter";
-
-  static defaultPlaybackRate_Getter(mthis) native "HTMLMediaElement_defaultPlaybackRate_Getter";
-
-  static defaultPlaybackRate_Setter(mthis, value) native "HTMLMediaElement_defaultPlaybackRate_Setter";
-
-  static duration_Getter(mthis) native "HTMLMediaElement_duration_Getter";
-
-  static ended_Getter(mthis) native "HTMLMediaElement_ended_Getter";
-
-  static error_Getter(mthis) native "HTMLMediaElement_error_Getter";
-
-  static integrity_Getter(mthis) native "HTMLMediaElement_integrity_Getter";
-
-  static integrity_Setter(mthis, value) native "HTMLMediaElement_integrity_Setter";
-
-  static loop_Getter(mthis) native "HTMLMediaElement_loop_Getter";
-
-  static loop_Setter(mthis, value) native "HTMLMediaElement_loop_Setter";
-
-  static mediaGroup_Getter(mthis) native "HTMLMediaElement_mediaGroup_Getter";
-
-  static mediaGroup_Setter(mthis, value) native "HTMLMediaElement_mediaGroup_Setter";
-
-  static mediaKeys_Getter(mthis) native "HTMLMediaElement_mediaKeys_Getter";
-
-  static muted_Getter(mthis) native "HTMLMediaElement_muted_Getter";
-
-  static muted_Setter(mthis, value) native "HTMLMediaElement_muted_Setter";
-
-  static networkState_Getter(mthis) native "HTMLMediaElement_networkState_Getter";
-
-  static paused_Getter(mthis) native "HTMLMediaElement_paused_Getter";
-
-  static playbackRate_Getter(mthis) native "HTMLMediaElement_playbackRate_Getter";
-
-  static playbackRate_Setter(mthis, value) native "HTMLMediaElement_playbackRate_Setter";
-
-  static played_Getter(mthis) native "HTMLMediaElement_played_Getter";
-
-  static preload_Getter(mthis) native "HTMLMediaElement_preload_Getter";
-
-  static preload_Setter(mthis, value) native "HTMLMediaElement_preload_Setter";
-
-  static readyState_Getter(mthis) native "HTMLMediaElement_readyState_Getter";
-
-  static seekable_Getter(mthis) native "HTMLMediaElement_seekable_Getter";
-
-  static seeking_Getter(mthis) native "HTMLMediaElement_seeking_Getter";
-
-  static src_Getter(mthis) native "HTMLMediaElement_src_Getter";
-
-  static src_Setter(mthis, value) native "HTMLMediaElement_src_Setter";
-
-  static textTracks_Getter(mthis) native "HTMLMediaElement_textTracks_Getter";
-
-  static videoTracks_Getter(mthis) native "HTMLMediaElement_videoTracks_Getter";
-
-  static volume_Getter(mthis) native "HTMLMediaElement_volume_Getter";
-
-  static volume_Setter(mthis, value) native "HTMLMediaElement_volume_Setter";
-
-  static webkitAudioDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitAudioDecodedByteCount_Getter";
-
-  static webkitVideoDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitVideoDecodedByteCount_Getter";
-
-  static addTextTrack_Callback_3(mthis, kind, label, language) native "HTMLMediaElement_addTextTrack_Callback";
-
-  static addTextTrack_Callback_2(mthis, kind, label) native "HTMLMediaElement_addTextTrack_Callback";
-
-  static addTextTrack_Callback_1(mthis, kind) native "HTMLMediaElement_addTextTrack_Callback";
-
-  static canPlayType_Callback_2(mthis, type, keySystem) native "HTMLMediaElement_canPlayType_Callback";
-
-  static canPlayType_Callback_1(mthis, type) native "HTMLMediaElement_canPlayType_Callback";
-
-  static load_Callback(mthis) native "HTMLMediaElement_load_Callback";
-
-  static pause_Callback(mthis) native "HTMLMediaElement_pause_Callback";
-
-  static play_Callback(mthis) native "HTMLMediaElement_play_Callback";
-
-  static setMediaKeys_Callback_1(mthis, mediaKeys) native "HTMLMediaElement_setMediaKeys_Callback";
-
-  static webkitAddKey_Callback_4(mthis, keySystem, key, initData, sessionId) native "HTMLMediaElement_webkitAddKey_Callback";
-
-  static webkitAddKey_Callback_2(mthis, keySystem, key) native "HTMLMediaElement_webkitAddKey_Callback";
-
-  static webkitCancelKeyRequest_Callback_2(mthis, keySystem, sessionId) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
-
-  static webkitGenerateKeyRequest_Callback_2(mthis, keySystem, initData) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
-
-  static webkitGenerateKeyRequest_Callback_1(mthis, keySystem) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
 }
 
-class BlinkHTMLAudioElement {
-  static constructorCallback_1(src) native "HTMLAudioElement_constructorCallback";
+class BlinkHTMLBRElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLBRElement();
+
 }
 
-class BlinkHTMLBRElement {}
+class BlinkHTMLBaseElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLBaseElement();
 
-class BlinkHTMLBaseElement {
   static href_Getter(mthis) native "HTMLBaseElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "HTMLBaseElement_href_Setter";
+  static href_Setter(mthis, __arg_0) native "HTMLBaseElement_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
 
   static target_Getter(mthis) native "HTMLBaseElement_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
 
-  static target_Setter(mthis, value) native "HTMLBaseElement_target_Setter";
+  static target_Setter(mthis, __arg_0) native "HTMLBaseElement_target_Setter";
+  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
+
 }
 
-class BlinkWindowEventHandlers {}
+class BlinkHTMLBodyElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLBodyElement();
 
-class BlinkHTMLBodyElement {}
+  static onbeforeunload_Getter(mthis) native "HTMLBodyElement_onbeforeunload_Getter";
+  onbeforeunload_Getter_(mthis) => onbeforeunload_Getter(mthis);
 
-class BlinkHTMLButtonElement {
+  static onbeforeunload_Setter(mthis, __arg_0) native "HTMLBodyElement_onbeforeunload_Setter";
+  onbeforeunload_Setter_(mthis, __arg_0) => onbeforeunload_Setter(mthis, __arg_0);
+
+  static onblur_Getter(mthis) native "HTMLBodyElement_onblur_Getter";
+  onblur_Getter_(mthis) => onblur_Getter(mthis);
+
+  static onblur_Setter(mthis, __arg_0) native "HTMLBodyElement_onblur_Setter";
+  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "HTMLBodyElement_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "HTMLBodyElement_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onfocus_Getter(mthis) native "HTMLBodyElement_onfocus_Getter";
+  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+
+  static onfocus_Setter(mthis, __arg_0) native "HTMLBodyElement_onfocus_Setter";
+  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+
+  static onhashchange_Getter(mthis) native "HTMLBodyElement_onhashchange_Getter";
+  onhashchange_Getter_(mthis) => onhashchange_Getter(mthis);
+
+  static onhashchange_Setter(mthis, __arg_0) native "HTMLBodyElement_onhashchange_Setter";
+  onhashchange_Setter_(mthis, __arg_0) => onhashchange_Setter(mthis, __arg_0);
+
+  static onlanguagechange_Getter(mthis) native "HTMLBodyElement_onlanguagechange_Getter";
+  onlanguagechange_Getter_(mthis) => onlanguagechange_Getter(mthis);
+
+  static onlanguagechange_Setter(mthis, __arg_0) native "HTMLBodyElement_onlanguagechange_Setter";
+  onlanguagechange_Setter_(mthis, __arg_0) => onlanguagechange_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "HTMLBodyElement_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "HTMLBodyElement_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "HTMLBodyElement_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "HTMLBodyElement_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onoffline_Getter(mthis) native "HTMLBodyElement_onoffline_Getter";
+  onoffline_Getter_(mthis) => onoffline_Getter(mthis);
+
+  static onoffline_Setter(mthis, __arg_0) native "HTMLBodyElement_onoffline_Setter";
+  onoffline_Setter_(mthis, __arg_0) => onoffline_Setter(mthis, __arg_0);
+
+  static ononline_Getter(mthis) native "HTMLBodyElement_ononline_Getter";
+  ononline_Getter_(mthis) => ononline_Getter(mthis);
+
+  static ononline_Setter(mthis, __arg_0) native "HTMLBodyElement_ononline_Setter";
+  ononline_Setter_(mthis, __arg_0) => ononline_Setter(mthis, __arg_0);
+
+  static onorientationchange_Getter(mthis) native "HTMLBodyElement_onorientationchange_Getter";
+  onorientationchange_Getter_(mthis) => onorientationchange_Getter(mthis);
+
+  static onorientationchange_Setter(mthis, __arg_0) native "HTMLBodyElement_onorientationchange_Setter";
+  onorientationchange_Setter_(mthis, __arg_0) => onorientationchange_Setter(mthis, __arg_0);
+
+  static onpagehide_Getter(mthis) native "HTMLBodyElement_onpagehide_Getter";
+  onpagehide_Getter_(mthis) => onpagehide_Getter(mthis);
+
+  static onpagehide_Setter(mthis, __arg_0) native "HTMLBodyElement_onpagehide_Setter";
+  onpagehide_Setter_(mthis, __arg_0) => onpagehide_Setter(mthis, __arg_0);
+
+  static onpageshow_Getter(mthis) native "HTMLBodyElement_onpageshow_Getter";
+  onpageshow_Getter_(mthis) => onpageshow_Getter(mthis);
+
+  static onpageshow_Setter(mthis, __arg_0) native "HTMLBodyElement_onpageshow_Setter";
+  onpageshow_Setter_(mthis, __arg_0) => onpageshow_Setter(mthis, __arg_0);
+
+  static onpopstate_Getter(mthis) native "HTMLBodyElement_onpopstate_Getter";
+  onpopstate_Getter_(mthis) => onpopstate_Getter(mthis);
+
+  static onpopstate_Setter(mthis, __arg_0) native "HTMLBodyElement_onpopstate_Setter";
+  onpopstate_Setter_(mthis, __arg_0) => onpopstate_Setter(mthis, __arg_0);
+
+  static onresize_Getter(mthis) native "HTMLBodyElement_onresize_Getter";
+  onresize_Getter_(mthis) => onresize_Getter(mthis);
+
+  static onresize_Setter(mthis, __arg_0) native "HTMLBodyElement_onresize_Setter";
+  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+
+  static onscroll_Getter(mthis) native "HTMLBodyElement_onscroll_Getter";
+  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+
+  static onscroll_Setter(mthis, __arg_0) native "HTMLBodyElement_onscroll_Setter";
+  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+
+  static onstorage_Getter(mthis) native "HTMLBodyElement_onstorage_Getter";
+  onstorage_Getter_(mthis) => onstorage_Getter(mthis);
+
+  static onstorage_Setter(mthis, __arg_0) native "HTMLBodyElement_onstorage_Setter";
+  onstorage_Setter_(mthis, __arg_0) => onstorage_Setter(mthis, __arg_0);
+
+  static onunload_Getter(mthis) native "HTMLBodyElement_onunload_Getter";
+  onunload_Getter_(mthis) => onunload_Getter(mthis);
+
+  static onunload_Setter(mthis, __arg_0) native "HTMLBodyElement_onunload_Setter";
+  onunload_Setter_(mthis, __arg_0) => onunload_Setter(mthis, __arg_0);
+
+}
+
+class BlinkHTMLButtonElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLButtonElement();
+
   static autofocus_Getter(mthis) native "HTMLButtonElement_autofocus_Getter";
+  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
 
-  static autofocus_Setter(mthis, value) native "HTMLButtonElement_autofocus_Setter";
+  static autofocus_Setter(mthis, __arg_0) native "HTMLButtonElement_autofocus_Setter";
+  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLButtonElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLButtonElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLButtonElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
 
   static disabled_Getter(mthis) native "HTMLButtonElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLButtonElement_disabled_Setter";
-
-  static form_Getter(mthis) native "HTMLButtonElement_form_Getter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLButtonElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static formAction_Getter(mthis) native "HTMLButtonElement_formAction_Getter";
+  formAction_Getter_(mthis) => formAction_Getter(mthis);
 
-  static formAction_Setter(mthis, value) native "HTMLButtonElement_formAction_Setter";
+  static formAction_Setter(mthis, __arg_0) native "HTMLButtonElement_formAction_Setter";
+  formAction_Setter_(mthis, __arg_0) => formAction_Setter(mthis, __arg_0);
 
   static formEnctype_Getter(mthis) native "HTMLButtonElement_formEnctype_Getter";
+  formEnctype_Getter_(mthis) => formEnctype_Getter(mthis);
 
-  static formEnctype_Setter(mthis, value) native "HTMLButtonElement_formEnctype_Setter";
+  static formEnctype_Setter(mthis, __arg_0) native "HTMLButtonElement_formEnctype_Setter";
+  formEnctype_Setter_(mthis, __arg_0) => formEnctype_Setter(mthis, __arg_0);
 
   static formMethod_Getter(mthis) native "HTMLButtonElement_formMethod_Getter";
+  formMethod_Getter_(mthis) => formMethod_Getter(mthis);
 
-  static formMethod_Setter(mthis, value) native "HTMLButtonElement_formMethod_Setter";
+  static formMethod_Setter(mthis, __arg_0) native "HTMLButtonElement_formMethod_Setter";
+  formMethod_Setter_(mthis, __arg_0) => formMethod_Setter(mthis, __arg_0);
 
   static formNoValidate_Getter(mthis) native "HTMLButtonElement_formNoValidate_Getter";
+  formNoValidate_Getter_(mthis) => formNoValidate_Getter(mthis);
 
-  static formNoValidate_Setter(mthis, value) native "HTMLButtonElement_formNoValidate_Setter";
+  static formNoValidate_Setter(mthis, __arg_0) native "HTMLButtonElement_formNoValidate_Setter";
+  formNoValidate_Setter_(mthis, __arg_0) => formNoValidate_Setter(mthis, __arg_0);
 
   static formTarget_Getter(mthis) native "HTMLButtonElement_formTarget_Getter";
+  formTarget_Getter_(mthis) => formTarget_Getter(mthis);
 
-  static formTarget_Setter(mthis, value) native "HTMLButtonElement_formTarget_Setter";
+  static formTarget_Setter(mthis, __arg_0) native "HTMLButtonElement_formTarget_Setter";
+  formTarget_Setter_(mthis, __arg_0) => formTarget_Setter(mthis, __arg_0);
+
+  static form_Getter(mthis) native "HTMLButtonElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static labels_Getter(mthis) native "HTMLButtonElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static name_Getter(mthis) native "HTMLButtonElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLButtonElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLButtonElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLButtonElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLButtonElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLButtonElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLButtonElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "HTMLButtonElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLButtonElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLButtonElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
   static validationMessage_Getter(mthis) native "HTMLButtonElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLButtonElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static value_Getter(mthis) native "HTMLButtonElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLButtonElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLButtonElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLButtonElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static checkValidity_Callback(mthis) native "HTMLButtonElement_checkValidity_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLButtonElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLCanvasElement {
-  static height_Getter(mthis) native "HTMLCanvasElement_height_Getter";
+class BlinkHTMLCanvasElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLCanvasElement();
 
-  static height_Setter(mthis, value) native "HTMLCanvasElement_height_Setter";
+  static getContext_Callback_0(mthis) native "HTMLCanvasElement_getContext_Callback";
+  getContext_Callback_0_(mthis) => getContext_Callback_0(mthis);
+
+  static getContext_Callback_1(mthis, __arg_0) native "HTMLCanvasElement_getContext_Callback";
+  getContext_Callback_1_(mthis, __arg_0) => getContext_Callback_1(mthis, __arg_0);
+
+  static getContext_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCanvasElement_getContext_Callback";
+  getContext_Callback_2_(mthis, __arg_0, __arg_1) => getContext_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCanvasElement_getContext_Callback";
+  getContext_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getContext_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLCanvasElement_getContext_Callback";
+  getContext_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getContext_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static height_Getter(mthis) native "HTMLCanvasElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static height_Setter(mthis, __arg_0) native "HTMLCanvasElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
+
+  static toDataURL_Callback_0(mthis) native "HTMLCanvasElement_toDataURL_Callback";
+  toDataURL_Callback_0_(mthis) => toDataURL_Callback_0(mthis);
+
+  static toDataURL_Callback_1(mthis, __arg_0) native "HTMLCanvasElement_toDataURL_Callback";
+  toDataURL_Callback_1_(mthis, __arg_0) => toDataURL_Callback_1(mthis, __arg_0);
+
+  static toDataURL_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCanvasElement_toDataURL_Callback";
+  toDataURL_Callback_2_(mthis, __arg_0, __arg_1) => toDataURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static toDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCanvasElement_toDataURL_Callback";
+  toDataURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => toDataURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static toDataURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLCanvasElement_toDataURL_Callback";
+  toDataURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => toDataURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static width_Getter(mthis) native "HTMLCanvasElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLCanvasElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLCanvasElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
-  static getContext_Callback_2(mthis, contextId, attrs) native "HTMLCanvasElement_getContext_Callback";
-
-  static toDataURL_Callback_2(mthis, type, quality) native "HTMLCanvasElement_toDataURL_Callback";
 }
 
 class BlinkHTMLCollection {
+  static final instance = new BlinkHTMLCollection();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLCollection___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "HTMLCollection_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "HTMLCollection_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCollection_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCollection_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "HTMLCollection_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static item_Callback_1(mthis, index) native "HTMLCollection_item_Callback";
+  static namedItem_Callback_0(mthis) native "HTMLCollection_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
 
-  static namedItem_Callback_1(mthis, name) native "HTMLCollection_namedItem_Callback";
+  static namedItem_Callback_1(mthis, __arg_0) native "HTMLCollection_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLCollection_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLCollection_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkHTMLContentElement {
+class BlinkHTMLContentElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLContentElement();
+
+  static getDistributedNodes_Callback_0(mthis) native "HTMLContentElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_0_(mthis) => getDistributedNodes_Callback_0(mthis);
+
+  static getDistributedNodes_Callback_1(mthis, __arg_0) native "HTMLContentElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_1_(mthis, __arg_0) => getDistributedNodes_Callback_1(mthis, __arg_0);
+
+  static getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1) native "HTMLContentElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_2_(mthis, __arg_0, __arg_1) => getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1);
+
   static select_Getter(mthis) native "HTMLContentElement_select_Getter";
+  select_Getter_(mthis) => select_Getter(mthis);
 
-  static select_Setter(mthis, value) native "HTMLContentElement_select_Setter";
+  static select_Setter(mthis, __arg_0) native "HTMLContentElement_select_Setter";
+  select_Setter_(mthis, __arg_0) => select_Setter(mthis, __arg_0);
 
-  static getDistributedNodes_Callback(mthis) native "HTMLContentElement_getDistributedNodes_Callback";
 }
 
-class BlinkHTMLDListElement {}
+class BlinkHTMLDListElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDListElement();
 
-class BlinkHTMLDataListElement {
+}
+
+class BlinkHTMLDataListElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDataListElement();
+
   static options_Getter(mthis) native "HTMLDataListElement_options_Getter";
+  options_Getter_(mthis) => options_Getter(mthis);
+
 }
 
-class BlinkHTMLDetailsElement {
+class BlinkHTMLDetailsElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDetailsElement();
+
   static open_Getter(mthis) native "HTMLDetailsElement_open_Getter";
+  open_Getter_(mthis) => open_Getter(mthis);
 
-  static open_Setter(mthis, value) native "HTMLDetailsElement_open_Setter";
+  static open_Setter(mthis, __arg_0) native "HTMLDetailsElement_open_Setter";
+  open_Setter_(mthis, __arg_0) => open_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLDialogElement {
-  static open_Getter(mthis) native "HTMLDialogElement_open_Getter";
+class BlinkHTMLDialogElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDialogElement();
 
-  static open_Setter(mthis, value) native "HTMLDialogElement_open_Setter";
+  static close_Callback_0(mthis) native "HTMLDialogElement_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "HTMLDialogElement_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static close_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDialogElement_close_Callback";
+  close_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => close_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static open_Getter(mthis) native "HTMLDialogElement_open_Getter";
+  open_Getter_(mthis) => open_Getter(mthis);
+
+  static open_Setter(mthis, __arg_0) native "HTMLDialogElement_open_Setter";
+  open_Setter_(mthis, __arg_0) => open_Setter(mthis, __arg_0);
 
   static returnValue_Getter(mthis) native "HTMLDialogElement_returnValue_Getter";
+  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
 
-  static returnValue_Setter(mthis, value) native "HTMLDialogElement_returnValue_Setter";
+  static returnValue_Setter(mthis, __arg_0) native "HTMLDialogElement_returnValue_Setter";
+  returnValue_Setter_(mthis, __arg_0) => returnValue_Setter(mthis, __arg_0);
 
-  static close_Callback_1(mthis, returnValue) native "HTMLDialogElement_close_Callback";
+  static showModal_Callback_0(mthis) native "HTMLDialogElement_showModal_Callback";
+  showModal_Callback_0_(mthis) => showModal_Callback_0(mthis);
 
-  static show_Callback(mthis) native "HTMLDialogElement_show_Callback";
+  static showModal_Callback_1(mthis, __arg_0) native "HTMLDialogElement_showModal_Callback";
+  showModal_Callback_1_(mthis, __arg_0) => showModal_Callback_1(mthis, __arg_0);
 
-  static showModal_Callback(mthis) native "HTMLDialogElement_showModal_Callback";
+  static showModal_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_showModal_Callback";
+  showModal_Callback_2_(mthis, __arg_0, __arg_1) => showModal_Callback_2(mthis, __arg_0, __arg_1);
+
+  static show_Callback_0(mthis) native "HTMLDialogElement_show_Callback";
+  show_Callback_0_(mthis) => show_Callback_0(mthis);
+
+  static show_Callback_1(mthis, __arg_0) native "HTMLDialogElement_show_Callback";
+  show_Callback_1_(mthis, __arg_0) => show_Callback_1(mthis, __arg_0);
+
+  static show_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDialogElement_show_Callback";
+  show_Callback_2_(mthis, __arg_0, __arg_1) => show_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkHTMLDirectoryElement {}
+class BlinkHTMLDirectoryElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDirectoryElement();
 
-class BlinkHTMLDivElement {}
+}
 
-class BlinkHTMLDocument {}
+class BlinkHTMLDivElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLDivElement();
 
-class BlinkHTMLEmbedElement {
+}
+
+class BlinkHTMLDocument extends BlinkDocument {
+  static final instance = new BlinkHTMLDocument();
+
+  static alinkColor_Getter(mthis) native "HTMLDocument_alinkColor_Getter";
+  alinkColor_Getter_(mthis) => alinkColor_Getter(mthis);
+
+  static alinkColor_Setter(mthis, __arg_0) native "HTMLDocument_alinkColor_Setter";
+  alinkColor_Setter_(mthis, __arg_0) => alinkColor_Setter(mthis, __arg_0);
+
+  static bgColor_Getter(mthis) native "HTMLDocument_bgColor_Getter";
+  bgColor_Getter_(mthis) => bgColor_Getter(mthis);
+
+  static bgColor_Setter(mthis, __arg_0) native "HTMLDocument_bgColor_Setter";
+  bgColor_Setter_(mthis, __arg_0) => bgColor_Setter(mthis, __arg_0);
+
+  static captureEvents_Callback_0(mthis) native "HTMLDocument_captureEvents_Callback";
+  captureEvents_Callback_0_(mthis) => captureEvents_Callback_0(mthis);
+
+  static captureEvents_Callback_1(mthis, __arg_0) native "HTMLDocument_captureEvents_Callback";
+  captureEvents_Callback_1_(mthis, __arg_0) => captureEvents_Callback_1(mthis, __arg_0);
+
+  static captureEvents_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_captureEvents_Callback";
+  captureEvents_Callback_2_(mthis, __arg_0, __arg_1) => captureEvents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clear_Callback_0(mthis) native "HTMLDocument_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "HTMLDocument_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static close_Callback_0(mthis) native "HTMLDocument_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "HTMLDocument_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static compatMode_Getter(mthis) native "HTMLDocument_compatMode_Getter";
+  compatMode_Getter_(mthis) => compatMode_Getter(mthis);
+
+  static fgColor_Getter(mthis) native "HTMLDocument_fgColor_Getter";
+  fgColor_Getter_(mthis) => fgColor_Getter(mthis);
+
+  static fgColor_Setter(mthis, __arg_0) native "HTMLDocument_fgColor_Setter";
+  fgColor_Setter_(mthis, __arg_0) => fgColor_Setter(mthis, __arg_0);
+
+  static linkColor_Getter(mthis) native "HTMLDocument_linkColor_Getter";
+  linkColor_Getter_(mthis) => linkColor_Getter(mthis);
+
+  static linkColor_Setter(mthis, __arg_0) native "HTMLDocument_linkColor_Setter";
+  linkColor_Setter_(mthis, __arg_0) => linkColor_Setter(mthis, __arg_0);
+
+  static open_Callback_0(mthis) native "HTMLDocument_open_Callback";
+  open_Callback_0_(mthis) => open_Callback_0(mthis);
+
+  static open_Callback_1(mthis, __arg_0) native "HTMLDocument_open_Callback";
+  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+
+  static open_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_open_Callback";
+  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+
+  static releaseEvents_Callback_0(mthis) native "HTMLDocument_releaseEvents_Callback";
+  releaseEvents_Callback_0_(mthis) => releaseEvents_Callback_0(mthis);
+
+  static releaseEvents_Callback_1(mthis, __arg_0) native "HTMLDocument_releaseEvents_Callback";
+  releaseEvents_Callback_1_(mthis, __arg_0) => releaseEvents_Callback_1(mthis, __arg_0);
+
+  static releaseEvents_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_releaseEvents_Callback";
+  releaseEvents_Callback_2_(mthis, __arg_0, __arg_1) => releaseEvents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static vlinkColor_Getter(mthis) native "HTMLDocument_vlinkColor_Getter";
+  vlinkColor_Getter_(mthis) => vlinkColor_Getter(mthis);
+
+  static vlinkColor_Setter(mthis, __arg_0) native "HTMLDocument_vlinkColor_Setter";
+  vlinkColor_Setter_(mthis, __arg_0) => vlinkColor_Setter(mthis, __arg_0);
+
+  static write_Callback_0(mthis) native "HTMLDocument_write_Callback";
+  write_Callback_0_(mthis) => write_Callback_0(mthis);
+
+  static write_Callback_1(mthis, __arg_0) native "HTMLDocument_write_Callback";
+  write_Callback_1_(mthis, __arg_0) => write_Callback_1(mthis, __arg_0);
+
+  static write_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_write_Callback";
+  write_Callback_2_(mthis, __arg_0, __arg_1) => write_Callback_2(mthis, __arg_0, __arg_1);
+
+  static write_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDocument_write_Callback";
+  write_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => write_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static writeln_Callback_0(mthis) native "HTMLDocument_writeln_Callback";
+  writeln_Callback_0_(mthis) => writeln_Callback_0(mthis);
+
+  static writeln_Callback_1(mthis, __arg_0) native "HTMLDocument_writeln_Callback";
+  writeln_Callback_1_(mthis, __arg_0) => writeln_Callback_1(mthis, __arg_0);
+
+  static writeln_Callback_2(mthis, __arg_0, __arg_1) native "HTMLDocument_writeln_Callback";
+  writeln_Callback_2_(mthis, __arg_0, __arg_1) => writeln_Callback_2(mthis, __arg_0, __arg_1);
+
+  static writeln_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLDocument_writeln_Callback";
+  writeln_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => writeln_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkHTMLElement extends BlinkElement {
+  static final instance = new BlinkHTMLElement();
+
+  static accessKey_Getter(mthis) native "HTMLElement_accessKey_Getter";
+  accessKey_Getter_(mthis) => accessKey_Getter(mthis);
+
+  static accessKey_Setter(mthis, __arg_0) native "HTMLElement_accessKey_Setter";
+  accessKey_Setter_(mthis, __arg_0) => accessKey_Setter(mthis, __arg_0);
+
+  static click_Callback_0(mthis) native "HTMLElement_click_Callback";
+  click_Callback_0_(mthis) => click_Callback_0(mthis);
+
+  static click_Callback_1(mthis, __arg_0) native "HTMLElement_click_Callback";
+  click_Callback_1_(mthis, __arg_0) => click_Callback_1(mthis, __arg_0);
+
+  static click_Callback_2(mthis, __arg_0, __arg_1) native "HTMLElement_click_Callback";
+  click_Callback_2_(mthis, __arg_0, __arg_1) => click_Callback_2(mthis, __arg_0, __arg_1);
+
+  static contentEditable_Getter(mthis) native "HTMLElement_contentEditable_Getter";
+  contentEditable_Getter_(mthis) => contentEditable_Getter(mthis);
+
+  static contentEditable_Setter(mthis, __arg_0) native "HTMLElement_contentEditable_Setter";
+  contentEditable_Setter_(mthis, __arg_0) => contentEditable_Setter(mthis, __arg_0);
+
+  static dir_Getter(mthis) native "HTMLElement_dir_Getter";
+  dir_Getter_(mthis) => dir_Getter(mthis);
+
+  static dir_Setter(mthis, __arg_0) native "HTMLElement_dir_Setter";
+  dir_Setter_(mthis, __arg_0) => dir_Setter(mthis, __arg_0);
+
+  static draggable_Getter(mthis) native "HTMLElement_draggable_Getter";
+  draggable_Getter_(mthis) => draggable_Getter(mthis);
+
+  static draggable_Setter(mthis, __arg_0) native "HTMLElement_draggable_Setter";
+  draggable_Setter_(mthis, __arg_0) => draggable_Setter(mthis, __arg_0);
+
+  static hidden_Getter(mthis) native "HTMLElement_hidden_Getter";
+  hidden_Getter_(mthis) => hidden_Getter(mthis);
+
+  static hidden_Setter(mthis, __arg_0) native "HTMLElement_hidden_Setter";
+  hidden_Setter_(mthis, __arg_0) => hidden_Setter(mthis, __arg_0);
+
+  static innerText_Getter(mthis) native "HTMLElement_innerText_Getter";
+  innerText_Getter_(mthis) => innerText_Getter(mthis);
+
+  static innerText_Setter(mthis, __arg_0) native "HTMLElement_innerText_Setter";
+  innerText_Setter_(mthis, __arg_0) => innerText_Setter(mthis, __arg_0);
+
+  static inputMethodContext_Getter(mthis) native "HTMLElement_inputMethodContext_Getter";
+  inputMethodContext_Getter_(mthis) => inputMethodContext_Getter(mthis);
+
+  static isContentEditable_Getter(mthis) native "HTMLElement_isContentEditable_Getter";
+  isContentEditable_Getter_(mthis) => isContentEditable_Getter(mthis);
+
+  static lang_Getter(mthis) native "HTMLElement_lang_Getter";
+  lang_Getter_(mthis) => lang_Getter(mthis);
+
+  static lang_Setter(mthis, __arg_0) native "HTMLElement_lang_Setter";
+  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
+
+  static onabort_Getter(mthis) native "HTMLElement_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "HTMLElement_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onautocomplete_Getter(mthis) native "HTMLElement_onautocomplete_Getter";
+  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+
+  static onautocomplete_Setter(mthis, __arg_0) native "HTMLElement_onautocomplete_Setter";
+  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+
+  static onautocompleteerror_Getter(mthis) native "HTMLElement_onautocompleteerror_Getter";
+  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+
+  static onautocompleteerror_Setter(mthis, __arg_0) native "HTMLElement_onautocompleteerror_Setter";
+  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+
+  static onblur_Getter(mthis) native "HTMLElement_onblur_Getter";
+  onblur_Getter_(mthis) => onblur_Getter(mthis);
+
+  static onblur_Setter(mthis, __arg_0) native "HTMLElement_onblur_Setter";
+  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+
+  static oncancel_Getter(mthis) native "HTMLElement_oncancel_Getter";
+  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+
+  static oncancel_Setter(mthis, __arg_0) native "HTMLElement_oncancel_Setter";
+  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+
+  static oncanplay_Getter(mthis) native "HTMLElement_oncanplay_Getter";
+  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+
+  static oncanplay_Setter(mthis, __arg_0) native "HTMLElement_oncanplay_Setter";
+  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+
+  static oncanplaythrough_Getter(mthis) native "HTMLElement_oncanplaythrough_Getter";
+  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+
+  static oncanplaythrough_Setter(mthis, __arg_0) native "HTMLElement_oncanplaythrough_Setter";
+  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "HTMLElement_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "HTMLElement_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onclick_Getter(mthis) native "HTMLElement_onclick_Getter";
+  onclick_Getter_(mthis) => onclick_Getter(mthis);
+
+  static onclick_Setter(mthis, __arg_0) native "HTMLElement_onclick_Setter";
+  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "HTMLElement_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "HTMLElement_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static oncontextmenu_Getter(mthis) native "HTMLElement_oncontextmenu_Getter";
+  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+
+  static oncontextmenu_Setter(mthis, __arg_0) native "HTMLElement_oncontextmenu_Setter";
+  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+
+  static oncuechange_Getter(mthis) native "HTMLElement_oncuechange_Getter";
+  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+
+  static oncuechange_Setter(mthis, __arg_0) native "HTMLElement_oncuechange_Setter";
+  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+
+  static ondblclick_Getter(mthis) native "HTMLElement_ondblclick_Getter";
+  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+
+  static ondblclick_Setter(mthis, __arg_0) native "HTMLElement_ondblclick_Setter";
+  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+
+  static ondrag_Getter(mthis) native "HTMLElement_ondrag_Getter";
+  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+
+  static ondrag_Setter(mthis, __arg_0) native "HTMLElement_ondrag_Setter";
+  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+
+  static ondragend_Getter(mthis) native "HTMLElement_ondragend_Getter";
+  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+
+  static ondragend_Setter(mthis, __arg_0) native "HTMLElement_ondragend_Setter";
+  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+
+  static ondragenter_Getter(mthis) native "HTMLElement_ondragenter_Getter";
+  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+
+  static ondragenter_Setter(mthis, __arg_0) native "HTMLElement_ondragenter_Setter";
+  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+
+  static ondragleave_Getter(mthis) native "HTMLElement_ondragleave_Getter";
+  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+
+  static ondragleave_Setter(mthis, __arg_0) native "HTMLElement_ondragleave_Setter";
+  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+
+  static ondragover_Getter(mthis) native "HTMLElement_ondragover_Getter";
+  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+
+  static ondragover_Setter(mthis, __arg_0) native "HTMLElement_ondragover_Setter";
+  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+
+  static ondragstart_Getter(mthis) native "HTMLElement_ondragstart_Getter";
+  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+
+  static ondragstart_Setter(mthis, __arg_0) native "HTMLElement_ondragstart_Setter";
+  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+
+  static ondrop_Getter(mthis) native "HTMLElement_ondrop_Getter";
+  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+
+  static ondrop_Setter(mthis, __arg_0) native "HTMLElement_ondrop_Setter";
+  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+
+  static ondurationchange_Getter(mthis) native "HTMLElement_ondurationchange_Getter";
+  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+
+  static ondurationchange_Setter(mthis, __arg_0) native "HTMLElement_ondurationchange_Setter";
+  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+
+  static onemptied_Getter(mthis) native "HTMLElement_onemptied_Getter";
+  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+
+  static onemptied_Setter(mthis, __arg_0) native "HTMLElement_onemptied_Setter";
+  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+
+  static onended_Getter(mthis) native "HTMLElement_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "HTMLElement_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "HTMLElement_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "HTMLElement_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onfocus_Getter(mthis) native "HTMLElement_onfocus_Getter";
+  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+
+  static onfocus_Setter(mthis, __arg_0) native "HTMLElement_onfocus_Setter";
+  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+
+  static oninput_Getter(mthis) native "HTMLElement_oninput_Getter";
+  oninput_Getter_(mthis) => oninput_Getter(mthis);
+
+  static oninput_Setter(mthis, __arg_0) native "HTMLElement_oninput_Setter";
+  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+
+  static oninvalid_Getter(mthis) native "HTMLElement_oninvalid_Getter";
+  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+
+  static oninvalid_Setter(mthis, __arg_0) native "HTMLElement_oninvalid_Setter";
+  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+
+  static onkeydown_Getter(mthis) native "HTMLElement_onkeydown_Getter";
+  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+
+  static onkeydown_Setter(mthis, __arg_0) native "HTMLElement_onkeydown_Setter";
+  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+
+  static onkeypress_Getter(mthis) native "HTMLElement_onkeypress_Getter";
+  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+
+  static onkeypress_Setter(mthis, __arg_0) native "HTMLElement_onkeypress_Setter";
+  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+
+  static onkeyup_Getter(mthis) native "HTMLElement_onkeyup_Getter";
+  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+
+  static onkeyup_Setter(mthis, __arg_0) native "HTMLElement_onkeyup_Setter";
+  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "HTMLElement_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "HTMLElement_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadeddata_Getter(mthis) native "HTMLElement_onloadeddata_Getter";
+  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+
+  static onloadeddata_Setter(mthis, __arg_0) native "HTMLElement_onloadeddata_Setter";
+  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+
+  static onloadedmetadata_Getter(mthis) native "HTMLElement_onloadedmetadata_Getter";
+  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+
+  static onloadedmetadata_Setter(mthis, __arg_0) native "HTMLElement_onloadedmetadata_Setter";
+  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "HTMLElement_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "HTMLElement_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onmousedown_Getter(mthis) native "HTMLElement_onmousedown_Getter";
+  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+
+  static onmousedown_Setter(mthis, __arg_0) native "HTMLElement_onmousedown_Setter";
+  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+
+  static onmouseenter_Getter(mthis) native "HTMLElement_onmouseenter_Getter";
+  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+
+  static onmouseenter_Setter(mthis, __arg_0) native "HTMLElement_onmouseenter_Setter";
+  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+
+  static onmouseleave_Getter(mthis) native "HTMLElement_onmouseleave_Getter";
+  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+
+  static onmouseleave_Setter(mthis, __arg_0) native "HTMLElement_onmouseleave_Setter";
+  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+
+  static onmousemove_Getter(mthis) native "HTMLElement_onmousemove_Getter";
+  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+
+  static onmousemove_Setter(mthis, __arg_0) native "HTMLElement_onmousemove_Setter";
+  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+
+  static onmouseout_Getter(mthis) native "HTMLElement_onmouseout_Getter";
+  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+
+  static onmouseout_Setter(mthis, __arg_0) native "HTMLElement_onmouseout_Setter";
+  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+
+  static onmouseover_Getter(mthis) native "HTMLElement_onmouseover_Getter";
+  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+
+  static onmouseover_Setter(mthis, __arg_0) native "HTMLElement_onmouseover_Setter";
+  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+
+  static onmouseup_Getter(mthis) native "HTMLElement_onmouseup_Getter";
+  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+
+  static onmouseup_Setter(mthis, __arg_0) native "HTMLElement_onmouseup_Setter";
+  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+
+  static onmousewheel_Getter(mthis) native "HTMLElement_onmousewheel_Getter";
+  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+
+  static onmousewheel_Setter(mthis, __arg_0) native "HTMLElement_onmousewheel_Setter";
+  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+
+  static onpause_Getter(mthis) native "HTMLElement_onpause_Getter";
+  onpause_Getter_(mthis) => onpause_Getter(mthis);
+
+  static onpause_Setter(mthis, __arg_0) native "HTMLElement_onpause_Setter";
+  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+
+  static onplay_Getter(mthis) native "HTMLElement_onplay_Getter";
+  onplay_Getter_(mthis) => onplay_Getter(mthis);
+
+  static onplay_Setter(mthis, __arg_0) native "HTMLElement_onplay_Setter";
+  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+
+  static onplaying_Getter(mthis) native "HTMLElement_onplaying_Getter";
+  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+
+  static onplaying_Setter(mthis, __arg_0) native "HTMLElement_onplaying_Setter";
+  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "HTMLElement_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "HTMLElement_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onratechange_Getter(mthis) native "HTMLElement_onratechange_Getter";
+  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+
+  static onratechange_Setter(mthis, __arg_0) native "HTMLElement_onratechange_Setter";
+  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+
+  static onreset_Getter(mthis) native "HTMLElement_onreset_Getter";
+  onreset_Getter_(mthis) => onreset_Getter(mthis);
+
+  static onreset_Setter(mthis, __arg_0) native "HTMLElement_onreset_Setter";
+  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+
+  static onresize_Getter(mthis) native "HTMLElement_onresize_Getter";
+  onresize_Getter_(mthis) => onresize_Getter(mthis);
+
+  static onresize_Setter(mthis, __arg_0) native "HTMLElement_onresize_Setter";
+  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+
+  static onscroll_Getter(mthis) native "HTMLElement_onscroll_Getter";
+  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+
+  static onscroll_Setter(mthis, __arg_0) native "HTMLElement_onscroll_Setter";
+  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+
+  static onseeked_Getter(mthis) native "HTMLElement_onseeked_Getter";
+  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+
+  static onseeked_Setter(mthis, __arg_0) native "HTMLElement_onseeked_Setter";
+  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+
+  static onseeking_Getter(mthis) native "HTMLElement_onseeking_Getter";
+  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+
+  static onseeking_Setter(mthis, __arg_0) native "HTMLElement_onseeking_Setter";
+  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+
+  static onselect_Getter(mthis) native "HTMLElement_onselect_Getter";
+  onselect_Getter_(mthis) => onselect_Getter(mthis);
+
+  static onselect_Setter(mthis, __arg_0) native "HTMLElement_onselect_Setter";
+  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+
+  static onshow_Getter(mthis) native "HTMLElement_onshow_Getter";
+  onshow_Getter_(mthis) => onshow_Getter(mthis);
+
+  static onshow_Setter(mthis, __arg_0) native "HTMLElement_onshow_Setter";
+  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+
+  static onstalled_Getter(mthis) native "HTMLElement_onstalled_Getter";
+  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+
+  static onstalled_Setter(mthis, __arg_0) native "HTMLElement_onstalled_Setter";
+  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+
+  static onsubmit_Getter(mthis) native "HTMLElement_onsubmit_Getter";
+  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+
+  static onsubmit_Setter(mthis, __arg_0) native "HTMLElement_onsubmit_Setter";
+  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+
+  static onsuspend_Getter(mthis) native "HTMLElement_onsuspend_Getter";
+  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+
+  static onsuspend_Setter(mthis, __arg_0) native "HTMLElement_onsuspend_Setter";
+  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+
+  static ontimeupdate_Getter(mthis) native "HTMLElement_ontimeupdate_Getter";
+  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+
+  static ontimeupdate_Setter(mthis, __arg_0) native "HTMLElement_ontimeupdate_Setter";
+  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+
+  static ontoggle_Getter(mthis) native "HTMLElement_ontoggle_Getter";
+  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+
+  static ontoggle_Setter(mthis, __arg_0) native "HTMLElement_ontoggle_Setter";
+  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+
+  static onvolumechange_Getter(mthis) native "HTMLElement_onvolumechange_Getter";
+  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+
+  static onvolumechange_Setter(mthis, __arg_0) native "HTMLElement_onvolumechange_Setter";
+  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+
+  static onwaiting_Getter(mthis) native "HTMLElement_onwaiting_Getter";
+  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+
+  static onwaiting_Setter(mthis, __arg_0) native "HTMLElement_onwaiting_Setter";
+  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+
+  static outerText_Getter(mthis) native "HTMLElement_outerText_Getter";
+  outerText_Getter_(mthis) => outerText_Getter(mthis);
+
+  static outerText_Setter(mthis, __arg_0) native "HTMLElement_outerText_Setter";
+  outerText_Setter_(mthis, __arg_0) => outerText_Setter(mthis, __arg_0);
+
+  static spellcheck_Getter(mthis) native "HTMLElement_spellcheck_Getter";
+  spellcheck_Getter_(mthis) => spellcheck_Getter(mthis);
+
+  static spellcheck_Setter(mthis, __arg_0) native "HTMLElement_spellcheck_Setter";
+  spellcheck_Setter_(mthis, __arg_0) => spellcheck_Setter(mthis, __arg_0);
+
+  static tabIndex_Getter(mthis) native "HTMLElement_tabIndex_Getter";
+  tabIndex_Getter_(mthis) => tabIndex_Getter(mthis);
+
+  static tabIndex_Setter(mthis, __arg_0) native "HTMLElement_tabIndex_Setter";
+  tabIndex_Setter_(mthis, __arg_0) => tabIndex_Setter(mthis, __arg_0);
+
+  static title_Getter(mthis) native "HTMLElement_title_Getter";
+  title_Getter_(mthis) => title_Getter(mthis);
+
+  static title_Setter(mthis, __arg_0) native "HTMLElement_title_Setter";
+  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
+
+  static translate_Getter(mthis) native "HTMLElement_translate_Getter";
+  translate_Getter_(mthis) => translate_Getter(mthis);
+
+  static translate_Setter(mthis, __arg_0) native "HTMLElement_translate_Setter";
+  translate_Setter_(mthis, __arg_0) => translate_Setter(mthis, __arg_0);
+
+  static webkitdropzone_Getter(mthis) native "HTMLElement_webkitdropzone_Getter";
+  webkitdropzone_Getter_(mthis) => webkitdropzone_Getter(mthis);
+
+  static webkitdropzone_Setter(mthis, __arg_0) native "HTMLElement_webkitdropzone_Setter";
+  webkitdropzone_Setter_(mthis, __arg_0) => webkitdropzone_Setter(mthis, __arg_0);
+
+}
+
+class BlinkHTMLEmbedElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLEmbedElement();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLEmbedElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLEmbedElement___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static align_Getter(mthis) native "HTMLEmbedElement_align_Getter";
+  align_Getter_(mthis) => align_Getter(mthis);
+
+  static align_Setter(mthis, __arg_0) native "HTMLEmbedElement_align_Setter";
+  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
+
+  static getSVGDocument_Callback_0(mthis) native "HTMLEmbedElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+
+  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLEmbedElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+
+  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLEmbedElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
+
   static height_Getter(mthis) native "HTMLEmbedElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLEmbedElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLEmbedElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLEmbedElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLEmbedElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLEmbedElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLEmbedElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLEmbedElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLEmbedElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLEmbedElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLEmbedElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLEmbedElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLEmbedElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLEmbedElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLEmbedElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "HTMLEmbedElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLEmbedElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLEmbedElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "HTMLEmbedElement___getter___Callback";
-
-  static $__setter___Callback_2(mthis, index_OR_name, value) native "HTMLEmbedElement___setter___Callback";
 }
 
-class BlinkHTMLFieldSetElement {
-  static disabled_Getter(mthis) native "HTMLFieldSetElement_disabled_Getter";
+class BlinkHTMLFieldSetElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLFieldSetElement();
 
-  static disabled_Setter(mthis, value) native "HTMLFieldSetElement_disabled_Setter";
+  static checkValidity_Callback_0(mthis) native "HTMLFieldSetElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLFieldSetElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFieldSetElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static disabled_Getter(mthis) native "HTMLFieldSetElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
+
+  static disabled_Setter(mthis, __arg_0) native "HTMLFieldSetElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static elements_Getter(mthis) native "HTMLFieldSetElement_elements_Getter";
+  elements_Getter_(mthis) => elements_Getter(mthis);
 
   static form_Getter(mthis) native "HTMLFieldSetElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static name_Getter(mthis) native "HTMLFieldSetElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLFieldSetElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLFieldSetElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLFieldSetElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLFieldSetElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFieldSetElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLFieldSetElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "HTMLFieldSetElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static validationMessage_Getter(mthis) native "HTMLFieldSetElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLFieldSetElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static willValidate_Getter(mthis) native "HTMLFieldSetElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static checkValidity_Callback(mthis) native "HTMLFieldSetElement_checkValidity_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLFieldSetElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLFontElement {}
+class BlinkHTMLFontElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLFontElement();
 
-class BlinkHTMLFormControlsCollection {
-  static namedItem_Callback_1(mthis, name) native "HTMLFormControlsCollection_namedItem_Callback";
 }
 
-class BlinkHTMLFormElement {
+class BlinkHTMLFormControlsCollection extends BlinkHTMLCollection {
+  static final instance = new BlinkHTMLFormControlsCollection();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFormControlsCollection___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_0(mthis) native "HTMLFormControlsCollection_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+
+  static namedItem_Callback_1(mthis, __arg_0) native "HTMLFormControlsCollection_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormControlsCollection_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLFormControlsCollection_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkHTMLFormElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLFormElement();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFormElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
   static acceptCharset_Getter(mthis) native "HTMLFormElement_acceptCharset_Getter";
+  acceptCharset_Getter_(mthis) => acceptCharset_Getter(mthis);
 
-  static acceptCharset_Setter(mthis, value) native "HTMLFormElement_acceptCharset_Setter";
+  static acceptCharset_Setter(mthis, __arg_0) native "HTMLFormElement_acceptCharset_Setter";
+  acceptCharset_Setter_(mthis, __arg_0) => acceptCharset_Setter(mthis, __arg_0);
 
   static action_Getter(mthis) native "HTMLFormElement_action_Getter";
+  action_Getter_(mthis) => action_Getter(mthis);
 
-  static action_Setter(mthis, value) native "HTMLFormElement_action_Setter";
+  static action_Setter(mthis, __arg_0) native "HTMLFormElement_action_Setter";
+  action_Setter_(mthis, __arg_0) => action_Setter(mthis, __arg_0);
 
   static autocomplete_Getter(mthis) native "HTMLFormElement_autocomplete_Getter";
+  autocomplete_Getter_(mthis) => autocomplete_Getter(mthis);
 
-  static autocomplete_Setter(mthis, value) native "HTMLFormElement_autocomplete_Setter";
+  static autocomplete_Setter(mthis, __arg_0) native "HTMLFormElement_autocomplete_Setter";
+  autocomplete_Setter_(mthis, __arg_0) => autocomplete_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLFormElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLFormElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static elements_Getter(mthis) native "HTMLFormElement_elements_Getter";
+  elements_Getter_(mthis) => elements_Getter(mthis);
 
   static encoding_Getter(mthis) native "HTMLFormElement_encoding_Getter";
+  encoding_Getter_(mthis) => encoding_Getter(mthis);
 
-  static encoding_Setter(mthis, value) native "HTMLFormElement_encoding_Setter";
+  static encoding_Setter(mthis, __arg_0) native "HTMLFormElement_encoding_Setter";
+  encoding_Setter_(mthis, __arg_0) => encoding_Setter(mthis, __arg_0);
 
   static enctype_Getter(mthis) native "HTMLFormElement_enctype_Getter";
+  enctype_Getter_(mthis) => enctype_Getter(mthis);
 
-  static enctype_Setter(mthis, value) native "HTMLFormElement_enctype_Setter";
+  static enctype_Setter(mthis, __arg_0) native "HTMLFormElement_enctype_Setter";
+  enctype_Setter_(mthis, __arg_0) => enctype_Setter(mthis, __arg_0);
 
   static length_Getter(mthis) native "HTMLFormElement_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static method_Getter(mthis) native "HTMLFormElement_method_Getter";
+  method_Getter_(mthis) => method_Getter(mthis);
 
-  static method_Setter(mthis, value) native "HTMLFormElement_method_Setter";
+  static method_Setter(mthis, __arg_0) native "HTMLFormElement_method_Setter";
+  method_Setter_(mthis, __arg_0) => method_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLFormElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLFormElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLFormElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static noValidate_Getter(mthis) native "HTMLFormElement_noValidate_Getter";
+  noValidate_Getter_(mthis) => noValidate_Getter(mthis);
 
-  static noValidate_Setter(mthis, value) native "HTMLFormElement_noValidate_Setter";
+  static noValidate_Setter(mthis, __arg_0) native "HTMLFormElement_noValidate_Setter";
+  noValidate_Setter_(mthis, __arg_0) => noValidate_Setter(mthis, __arg_0);
+
+  static requestAutocomplete_Callback_0(mthis) native "HTMLFormElement_requestAutocomplete_Callback";
+  requestAutocomplete_Callback_0_(mthis) => requestAutocomplete_Callback_0(mthis);
+
+  static requestAutocomplete_Callback_1(mthis, __arg_0) native "HTMLFormElement_requestAutocomplete_Callback";
+  requestAutocomplete_Callback_1_(mthis, __arg_0) => requestAutocomplete_Callback_1(mthis, __arg_0);
+
+  static requestAutocomplete_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_requestAutocomplete_Callback";
+  requestAutocomplete_Callback_2_(mthis, __arg_0, __arg_1) => requestAutocomplete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static reset_Callback_0(mthis) native "HTMLFormElement_reset_Callback";
+  reset_Callback_0_(mthis) => reset_Callback_0(mthis);
+
+  static reset_Callback_1(mthis, __arg_0) native "HTMLFormElement_reset_Callback";
+  reset_Callback_1_(mthis, __arg_0) => reset_Callback_1(mthis, __arg_0);
+
+  static reset_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_reset_Callback";
+  reset_Callback_2_(mthis, __arg_0, __arg_1) => reset_Callback_2(mthis, __arg_0, __arg_1);
+
+  static submit_Callback_0(mthis) native "HTMLFormElement_submit_Callback";
+  submit_Callback_0_(mthis) => submit_Callback_0(mthis);
+
+  static submit_Callback_1(mthis, __arg_0) native "HTMLFormElement_submit_Callback";
+  submit_Callback_1_(mthis, __arg_0) => submit_Callback_1(mthis, __arg_0);
+
+  static submit_Callback_2(mthis, __arg_0, __arg_1) native "HTMLFormElement_submit_Callback";
+  submit_Callback_2_(mthis, __arg_0, __arg_1) => submit_Callback_2(mthis, __arg_0, __arg_1);
 
   static target_Getter(mthis) native "HTMLFormElement_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
 
-  static target_Setter(mthis, value) native "HTMLFormElement_target_Setter";
+  static target_Setter(mthis, __arg_0) native "HTMLFormElement_target_Setter";
+  target_Setter_(mthis, __arg_0) => target_Setter(mthis, __arg_0);
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "HTMLFormElement___getter___Callback";
-
-  static checkValidity_Callback(mthis) native "HTMLFormElement_checkValidity_Callback";
-
-  static requestAutocomplete_Callback_1(mthis, details) native "HTMLFormElement_requestAutocomplete_Callback";
-
-  static reset_Callback(mthis) native "HTMLFormElement_reset_Callback";
-
-  static submit_Callback(mthis) native "HTMLFormElement_submit_Callback";
 }
 
-class BlinkHTMLFrameElement {}
+class BlinkHTMLFrameElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLFrameElement();
 
-class BlinkHTMLFrameSetElement {}
+}
 
-class BlinkHTMLHRElement {
+class BlinkHTMLFrameSetElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLFrameSetElement();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLFrameSetElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+}
+
+class BlinkHTMLHRElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLHRElement();
+
   static color_Getter(mthis) native "HTMLHRElement_color_Getter";
+  color_Getter_(mthis) => color_Getter(mthis);
 
-  static color_Setter(mthis, value) native "HTMLHRElement_color_Setter";
+  static color_Setter(mthis, __arg_0) native "HTMLHRElement_color_Setter";
+  color_Setter_(mthis, __arg_0) => color_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLHeadElement {}
+class BlinkHTMLHeadElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLHeadElement();
 
-class BlinkHTMLHeadingElement {}
+}
 
-class BlinkHTMLHtmlElement {}
+class BlinkHTMLHeadingElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLHeadingElement();
 
-class BlinkHTMLIFrameElement {
+}
+
+class BlinkHTMLHtmlElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLHtmlElement();
+
+}
+
+class BlinkHTMLIFrameElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLIFrameElement();
+
   static allowFullscreen_Getter(mthis) native "HTMLIFrameElement_allowFullscreen_Getter";
+  allowFullscreen_Getter_(mthis) => allowFullscreen_Getter(mthis);
 
-  static allowFullscreen_Setter(mthis, value) native "HTMLIFrameElement_allowFullscreen_Setter";
+  static allowFullscreen_Setter(mthis, __arg_0) native "HTMLIFrameElement_allowFullscreen_Setter";
+  allowFullscreen_Setter_(mthis, __arg_0) => allowFullscreen_Setter(mthis, __arg_0);
+
+  static contentDocument_Getter(mthis) native "HTMLIFrameElement_contentDocument_Getter";
+  contentDocument_Getter_(mthis) => contentDocument_Getter(mthis);
 
   static contentWindow_Getter(mthis) native "HTMLIFrameElement_contentWindow_Getter";
+  contentWindow_Getter_(mthis) => contentWindow_Getter(mthis);
+
+  static getSVGDocument_Callback_0(mthis) native "HTMLIFrameElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+
+  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLIFrameElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+
+  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLIFrameElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
 
   static height_Getter(mthis) native "HTMLIFrameElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLIFrameElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLIFrameElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLIFrameElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLIFrameElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLIFrameElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLIFrameElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLIFrameElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLIFrameElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static sandbox_Getter(mthis) native "HTMLIFrameElement_sandbox_Getter";
+  sandbox_Getter_(mthis) => sandbox_Getter(mthis);
 
-  static sandbox_Setter(mthis, value) native "HTMLIFrameElement_sandbox_Setter";
+  static sandbox_Setter(mthis, __arg_0) native "HTMLIFrameElement_sandbox_Setter";
+  sandbox_Setter_(mthis, __arg_0) => sandbox_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLIFrameElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLIFrameElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLIFrameElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static srcdoc_Getter(mthis) native "HTMLIFrameElement_srcdoc_Getter";
+  srcdoc_Getter_(mthis) => srcdoc_Getter(mthis);
 
-  static srcdoc_Setter(mthis, value) native "HTMLIFrameElement_srcdoc_Setter";
+  static srcdoc_Setter(mthis, __arg_0) native "HTMLIFrameElement_srcdoc_Setter";
+  srcdoc_Setter_(mthis, __arg_0) => srcdoc_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "HTMLIFrameElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLIFrameElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLIFrameElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLImageElement {
-  static alt_Getter(mthis) native "HTMLImageElement_alt_Getter";
+class BlinkHTMLImageElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLImageElement();
 
-  static alt_Setter(mthis, value) native "HTMLImageElement_alt_Setter";
+  static alt_Getter(mthis) native "HTMLImageElement_alt_Getter";
+  alt_Getter_(mthis) => alt_Getter(mthis);
+
+  static alt_Setter(mthis, __arg_0) native "HTMLImageElement_alt_Setter";
+  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
+
+  static border_Getter(mthis) native "HTMLImageElement_border_Getter";
+  border_Getter_(mthis) => border_Getter(mthis);
+
+  static border_Setter(mthis, __arg_0) native "HTMLImageElement_border_Setter";
+  border_Setter_(mthis, __arg_0) => border_Setter(mthis, __arg_0);
 
   static complete_Getter(mthis) native "HTMLImageElement_complete_Getter";
+  complete_Getter_(mthis) => complete_Getter(mthis);
+
+  static constructorCallback_0() native "HTMLImageElement_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "HTMLImageElement_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "HTMLImageElement_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLImageElement_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "HTMLImageElement_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static crossOrigin_Getter(mthis) native "HTMLImageElement_crossOrigin_Getter";
+  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
 
-  static crossOrigin_Setter(mthis, value) native "HTMLImageElement_crossOrigin_Setter";
+  static crossOrigin_Setter(mthis, __arg_0) native "HTMLImageElement_crossOrigin_Setter";
+  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
 
   static currentSrc_Getter(mthis) native "HTMLImageElement_currentSrc_Getter";
+  currentSrc_Getter_(mthis) => currentSrc_Getter(mthis);
 
   static height_Getter(mthis) native "HTMLImageElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLImageElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLImageElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLImageElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLImageElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLImageElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static isMap_Getter(mthis) native "HTMLImageElement_isMap_Getter";
+  isMap_Getter_(mthis) => isMap_Getter(mthis);
 
-  static isMap_Setter(mthis, value) native "HTMLImageElement_isMap_Setter";
+  static isMap_Setter(mthis, __arg_0) native "HTMLImageElement_isMap_Setter";
+  isMap_Setter_(mthis, __arg_0) => isMap_Setter(mthis, __arg_0);
+
+  static lowsrc_Getter(mthis) native "HTMLImageElement_lowsrc_Getter";
+  lowsrc_Getter_(mthis) => lowsrc_Getter(mthis);
+
+  static lowsrc_Setter(mthis, __arg_0) native "HTMLImageElement_lowsrc_Setter";
+  lowsrc_Setter_(mthis, __arg_0) => lowsrc_Setter(mthis, __arg_0);
 
   static naturalHeight_Getter(mthis) native "HTMLImageElement_naturalHeight_Getter";
+  naturalHeight_Getter_(mthis) => naturalHeight_Getter(mthis);
 
   static naturalWidth_Getter(mthis) native "HTMLImageElement_naturalWidth_Getter";
+  naturalWidth_Getter_(mthis) => naturalWidth_Getter(mthis);
 
   static sizes_Getter(mthis) native "HTMLImageElement_sizes_Getter";
+  sizes_Getter_(mthis) => sizes_Getter(mthis);
 
-  static sizes_Setter(mthis, value) native "HTMLImageElement_sizes_Setter";
+  static sizes_Setter(mthis, __arg_0) native "HTMLImageElement_sizes_Setter";
+  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLImageElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLImageElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLImageElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static srcset_Getter(mthis) native "HTMLImageElement_srcset_Getter";
+  srcset_Getter_(mthis) => srcset_Getter(mthis);
 
-  static srcset_Setter(mthis, value) native "HTMLImageElement_srcset_Setter";
+  static srcset_Setter(mthis, __arg_0) native "HTMLImageElement_srcset_Setter";
+  srcset_Setter_(mthis, __arg_0) => srcset_Setter(mthis, __arg_0);
 
   static useMap_Getter(mthis) native "HTMLImageElement_useMap_Getter";
+  useMap_Getter_(mthis) => useMap_Getter(mthis);
 
-  static useMap_Setter(mthis, value) native "HTMLImageElement_useMap_Setter";
+  static useMap_Setter(mthis, __arg_0) native "HTMLImageElement_useMap_Setter";
+  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "HTMLImageElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLImageElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLImageElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+
+  static x_Getter(mthis) native "HTMLImageElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "HTMLImageElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkHTMLInputElement {
-  static accept_Getter(mthis) native "HTMLInputElement_accept_Getter";
+class BlinkHTMLInputElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLInputElement();
 
-  static accept_Setter(mthis, value) native "HTMLInputElement_accept_Setter";
+  static accept_Getter(mthis) native "HTMLInputElement_accept_Getter";
+  accept_Getter_(mthis) => accept_Getter(mthis);
+
+  static accept_Setter(mthis, __arg_0) native "HTMLInputElement_accept_Setter";
+  accept_Setter_(mthis, __arg_0) => accept_Setter(mthis, __arg_0);
 
   static alt_Getter(mthis) native "HTMLInputElement_alt_Getter";
+  alt_Getter_(mthis) => alt_Getter(mthis);
 
-  static alt_Setter(mthis, value) native "HTMLInputElement_alt_Setter";
+  static alt_Setter(mthis, __arg_0) native "HTMLInputElement_alt_Setter";
+  alt_Setter_(mthis, __arg_0) => alt_Setter(mthis, __arg_0);
 
   static autocomplete_Getter(mthis) native "HTMLInputElement_autocomplete_Getter";
+  autocomplete_Getter_(mthis) => autocomplete_Getter(mthis);
 
-  static autocomplete_Setter(mthis, value) native "HTMLInputElement_autocomplete_Setter";
+  static autocomplete_Setter(mthis, __arg_0) native "HTMLInputElement_autocomplete_Setter";
+  autocomplete_Setter_(mthis, __arg_0) => autocomplete_Setter(mthis, __arg_0);
 
   static autofocus_Getter(mthis) native "HTMLInputElement_autofocus_Getter";
+  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
 
-  static autofocus_Setter(mthis, value) native "HTMLInputElement_autofocus_Setter";
+  static autofocus_Setter(mthis, __arg_0) native "HTMLInputElement_autofocus_Setter";
+  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
 
   static capture_Getter(mthis) native "HTMLInputElement_capture_Getter";
+  capture_Getter_(mthis) => capture_Getter(mthis);
 
-  static capture_Setter(mthis, value) native "HTMLInputElement_capture_Setter";
+  static capture_Setter(mthis, __arg_0) native "HTMLInputElement_capture_Setter";
+  capture_Setter_(mthis, __arg_0) => capture_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLInputElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLInputElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
 
   static checked_Getter(mthis) native "HTMLInputElement_checked_Getter";
+  checked_Getter_(mthis) => checked_Getter(mthis);
 
-  static checked_Setter(mthis, value) native "HTMLInputElement_checked_Setter";
+  static checked_Setter(mthis, __arg_0) native "HTMLInputElement_checked_Setter";
+  checked_Setter_(mthis, __arg_0) => checked_Setter(mthis, __arg_0);
 
   static defaultChecked_Getter(mthis) native "HTMLInputElement_defaultChecked_Getter";
+  defaultChecked_Getter_(mthis) => defaultChecked_Getter(mthis);
 
-  static defaultChecked_Setter(mthis, value) native "HTMLInputElement_defaultChecked_Setter";
+  static defaultChecked_Setter(mthis, __arg_0) native "HTMLInputElement_defaultChecked_Setter";
+  defaultChecked_Setter_(mthis, __arg_0) => defaultChecked_Setter(mthis, __arg_0);
 
   static defaultValue_Getter(mthis) native "HTMLInputElement_defaultValue_Getter";
+  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
 
-  static defaultValue_Setter(mthis, value) native "HTMLInputElement_defaultValue_Setter";
+  static defaultValue_Setter(mthis, __arg_0) native "HTMLInputElement_defaultValue_Setter";
+  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
 
   static dirName_Getter(mthis) native "HTMLInputElement_dirName_Getter";
+  dirName_Getter_(mthis) => dirName_Getter(mthis);
 
-  static dirName_Setter(mthis, value) native "HTMLInputElement_dirName_Setter";
+  static dirName_Setter(mthis, __arg_0) native "HTMLInputElement_dirName_Setter";
+  dirName_Setter_(mthis, __arg_0) => dirName_Setter(mthis, __arg_0);
 
   static disabled_Getter(mthis) native "HTMLInputElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLInputElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLInputElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static files_Getter(mthis) native "HTMLInputElement_files_Getter";
+  files_Getter_(mthis) => files_Getter(mthis);
 
-  static files_Setter(mthis, value) native "HTMLInputElement_files_Setter";
-
-  static form_Getter(mthis) native "HTMLInputElement_form_Getter";
+  static files_Setter(mthis, __arg_0) native "HTMLInputElement_files_Setter";
+  files_Setter_(mthis, __arg_0) => files_Setter(mthis, __arg_0);
 
   static formAction_Getter(mthis) native "HTMLInputElement_formAction_Getter";
+  formAction_Getter_(mthis) => formAction_Getter(mthis);
 
-  static formAction_Setter(mthis, value) native "HTMLInputElement_formAction_Setter";
+  static formAction_Setter(mthis, __arg_0) native "HTMLInputElement_formAction_Setter";
+  formAction_Setter_(mthis, __arg_0) => formAction_Setter(mthis, __arg_0);
 
   static formEnctype_Getter(mthis) native "HTMLInputElement_formEnctype_Getter";
+  formEnctype_Getter_(mthis) => formEnctype_Getter(mthis);
 
-  static formEnctype_Setter(mthis, value) native "HTMLInputElement_formEnctype_Setter";
+  static formEnctype_Setter(mthis, __arg_0) native "HTMLInputElement_formEnctype_Setter";
+  formEnctype_Setter_(mthis, __arg_0) => formEnctype_Setter(mthis, __arg_0);
 
   static formMethod_Getter(mthis) native "HTMLInputElement_formMethod_Getter";
+  formMethod_Getter_(mthis) => formMethod_Getter(mthis);
 
-  static formMethod_Setter(mthis, value) native "HTMLInputElement_formMethod_Setter";
+  static formMethod_Setter(mthis, __arg_0) native "HTMLInputElement_formMethod_Setter";
+  formMethod_Setter_(mthis, __arg_0) => formMethod_Setter(mthis, __arg_0);
 
   static formNoValidate_Getter(mthis) native "HTMLInputElement_formNoValidate_Getter";
+  formNoValidate_Getter_(mthis) => formNoValidate_Getter(mthis);
 
-  static formNoValidate_Setter(mthis, value) native "HTMLInputElement_formNoValidate_Setter";
+  static formNoValidate_Setter(mthis, __arg_0) native "HTMLInputElement_formNoValidate_Setter";
+  formNoValidate_Setter_(mthis, __arg_0) => formNoValidate_Setter(mthis, __arg_0);
 
   static formTarget_Getter(mthis) native "HTMLInputElement_formTarget_Getter";
+  formTarget_Getter_(mthis) => formTarget_Getter(mthis);
 
-  static formTarget_Setter(mthis, value) native "HTMLInputElement_formTarget_Setter";
+  static formTarget_Setter(mthis, __arg_0) native "HTMLInputElement_formTarget_Setter";
+  formTarget_Setter_(mthis, __arg_0) => formTarget_Setter(mthis, __arg_0);
+
+  static form_Getter(mthis) native "HTMLInputElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static height_Getter(mthis) native "HTMLInputElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLInputElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLInputElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static incremental_Getter(mthis) native "HTMLInputElement_incremental_Getter";
+  incremental_Getter_(mthis) => incremental_Getter(mthis);
 
-  static incremental_Setter(mthis, value) native "HTMLInputElement_incremental_Setter";
+  static incremental_Setter(mthis, __arg_0) native "HTMLInputElement_incremental_Setter";
+  incremental_Setter_(mthis, __arg_0) => incremental_Setter(mthis, __arg_0);
 
   static indeterminate_Getter(mthis) native "HTMLInputElement_indeterminate_Getter";
+  indeterminate_Getter_(mthis) => indeterminate_Getter(mthis);
 
-  static indeterminate_Setter(mthis, value) native "HTMLInputElement_indeterminate_Setter";
+  static indeterminate_Setter(mthis, __arg_0) native "HTMLInputElement_indeterminate_Setter";
+  indeterminate_Setter_(mthis, __arg_0) => indeterminate_Setter(mthis, __arg_0);
 
   static inputMode_Getter(mthis) native "HTMLInputElement_inputMode_Getter";
+  inputMode_Getter_(mthis) => inputMode_Getter(mthis);
 
-  static inputMode_Setter(mthis, value) native "HTMLInputElement_inputMode_Setter";
+  static inputMode_Setter(mthis, __arg_0) native "HTMLInputElement_inputMode_Setter";
+  inputMode_Setter_(mthis, __arg_0) => inputMode_Setter(mthis, __arg_0);
 
   static labels_Getter(mthis) native "HTMLInputElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static list_Getter(mthis) native "HTMLInputElement_list_Getter";
-
-  static max_Getter(mthis) native "HTMLInputElement_max_Getter";
-
-  static max_Setter(mthis, value) native "HTMLInputElement_max_Setter";
+  list_Getter_(mthis) => list_Getter(mthis);
 
   static maxLength_Getter(mthis) native "HTMLInputElement_maxLength_Getter";
+  maxLength_Getter_(mthis) => maxLength_Getter(mthis);
 
-  static maxLength_Setter(mthis, value) native "HTMLInputElement_maxLength_Setter";
+  static maxLength_Setter(mthis, __arg_0) native "HTMLInputElement_maxLength_Setter";
+  maxLength_Setter_(mthis, __arg_0) => maxLength_Setter(mthis, __arg_0);
+
+  static max_Getter(mthis) native "HTMLInputElement_max_Getter";
+  max_Getter_(mthis) => max_Getter(mthis);
+
+  static max_Setter(mthis, __arg_0) native "HTMLInputElement_max_Setter";
+  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
 
   static min_Getter(mthis) native "HTMLInputElement_min_Getter";
+  min_Getter_(mthis) => min_Getter(mthis);
 
-  static min_Setter(mthis, value) native "HTMLInputElement_min_Setter";
+  static min_Setter(mthis, __arg_0) native "HTMLInputElement_min_Setter";
+  min_Setter_(mthis, __arg_0) => min_Setter(mthis, __arg_0);
 
   static multiple_Getter(mthis) native "HTMLInputElement_multiple_Getter";
+  multiple_Getter_(mthis) => multiple_Getter(mthis);
 
-  static multiple_Setter(mthis, value) native "HTMLInputElement_multiple_Setter";
+  static multiple_Setter(mthis, __arg_0) native "HTMLInputElement_multiple_Setter";
+  multiple_Setter_(mthis, __arg_0) => multiple_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLInputElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLInputElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLInputElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static pattern_Getter(mthis) native "HTMLInputElement_pattern_Getter";
+  pattern_Getter_(mthis) => pattern_Getter(mthis);
 
-  static pattern_Setter(mthis, value) native "HTMLInputElement_pattern_Setter";
+  static pattern_Setter(mthis, __arg_0) native "HTMLInputElement_pattern_Setter";
+  pattern_Setter_(mthis, __arg_0) => pattern_Setter(mthis, __arg_0);
 
   static placeholder_Getter(mthis) native "HTMLInputElement_placeholder_Getter";
+  placeholder_Getter_(mthis) => placeholder_Getter(mthis);
 
-  static placeholder_Setter(mthis, value) native "HTMLInputElement_placeholder_Setter";
+  static placeholder_Setter(mthis, __arg_0) native "HTMLInputElement_placeholder_Setter";
+  placeholder_Setter_(mthis, __arg_0) => placeholder_Setter(mthis, __arg_0);
 
   static readOnly_Getter(mthis) native "HTMLInputElement_readOnly_Getter";
+  readOnly_Getter_(mthis) => readOnly_Getter(mthis);
 
-  static readOnly_Setter(mthis, value) native "HTMLInputElement_readOnly_Setter";
+  static readOnly_Setter(mthis, __arg_0) native "HTMLInputElement_readOnly_Setter";
+  readOnly_Setter_(mthis, __arg_0) => readOnly_Setter(mthis, __arg_0);
 
   static required_Getter(mthis) native "HTMLInputElement_required_Getter";
+  required_Getter_(mthis) => required_Getter(mthis);
 
-  static required_Setter(mthis, value) native "HTMLInputElement_required_Setter";
+  static required_Setter(mthis, __arg_0) native "HTMLInputElement_required_Setter";
+  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
+
+  static select_Callback_0(mthis) native "HTMLInputElement_select_Callback";
+  select_Callback_0_(mthis) => select_Callback_0(mthis);
+
+  static select_Callback_1(mthis, __arg_0) native "HTMLInputElement_select_Callback";
+  select_Callback_1_(mthis, __arg_0) => select_Callback_1(mthis, __arg_0);
+
+  static select_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_select_Callback";
+  select_Callback_2_(mthis, __arg_0, __arg_1) => select_Callback_2(mthis, __arg_0, __arg_1);
 
   static selectionDirection_Getter(mthis) native "HTMLInputElement_selectionDirection_Getter";
+  selectionDirection_Getter_(mthis) => selectionDirection_Getter(mthis);
 
-  static selectionDirection_Setter(mthis, value) native "HTMLInputElement_selectionDirection_Setter";
+  static selectionDirection_Setter(mthis, __arg_0) native "HTMLInputElement_selectionDirection_Setter";
+  selectionDirection_Setter_(mthis, __arg_0) => selectionDirection_Setter(mthis, __arg_0);
 
   static selectionEnd_Getter(mthis) native "HTMLInputElement_selectionEnd_Getter";
+  selectionEnd_Getter_(mthis) => selectionEnd_Getter(mthis);
 
-  static selectionEnd_Setter(mthis, value) native "HTMLInputElement_selectionEnd_Setter";
+  static selectionEnd_Setter(mthis, __arg_0) native "HTMLInputElement_selectionEnd_Setter";
+  selectionEnd_Setter_(mthis, __arg_0) => selectionEnd_Setter(mthis, __arg_0);
 
   static selectionStart_Getter(mthis) native "HTMLInputElement_selectionStart_Getter";
+  selectionStart_Getter_(mthis) => selectionStart_Getter(mthis);
 
-  static selectionStart_Setter(mthis, value) native "HTMLInputElement_selectionStart_Setter";
+  static selectionStart_Setter(mthis, __arg_0) native "HTMLInputElement_selectionStart_Setter";
+  selectionStart_Setter_(mthis, __arg_0) => selectionStart_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLInputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLInputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRangeText_Callback_0(mthis) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_0_(mthis) => setRangeText_Callback_0(mthis);
+
+  static setRangeText_Callback_1(mthis, __arg_0) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_1_(mthis, __arg_0) => setRangeText_Callback_1(mthis, __arg_0);
+
+  static setRangeText_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => setRangeText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLInputElement_setRangeText_Callback";
+  setRangeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static setSelectionRange_Callback_0(mthis) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_0_(mthis) => setSelectionRange_Callback_0(mthis);
+
+  static setSelectionRange_Callback_1(mthis, __arg_0) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_1_(mthis, __arg_0) => setSelectionRange_Callback_1(mthis, __arg_0);
+
+  static setSelectionRange_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => setSelectionRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLInputElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static size_Getter(mthis) native "HTMLInputElement_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
-  static size_Setter(mthis, value) native "HTMLInputElement_size_Setter";
+  static size_Setter(mthis, __arg_0) native "HTMLInputElement_size_Setter";
+  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLInputElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLInputElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLInputElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+
+  static stepDown_Callback_0(mthis) native "HTMLInputElement_stepDown_Callback";
+  stepDown_Callback_0_(mthis) => stepDown_Callback_0(mthis);
+
+  static stepDown_Callback_1(mthis, __arg_0) native "HTMLInputElement_stepDown_Callback";
+  stepDown_Callback_1_(mthis, __arg_0) => stepDown_Callback_1(mthis, __arg_0);
+
+  static stepDown_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_stepDown_Callback";
+  stepDown_Callback_2_(mthis, __arg_0, __arg_1) => stepDown_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stepDown_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_stepDown_Callback";
+  stepDown_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stepDown_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stepUp_Callback_0(mthis) native "HTMLInputElement_stepUp_Callback";
+  stepUp_Callback_0_(mthis) => stepUp_Callback_0(mthis);
+
+  static stepUp_Callback_1(mthis, __arg_0) native "HTMLInputElement_stepUp_Callback";
+  stepUp_Callback_1_(mthis, __arg_0) => stepUp_Callback_1(mthis, __arg_0);
+
+  static stepUp_Callback_2(mthis, __arg_0, __arg_1) native "HTMLInputElement_stepUp_Callback";
+  stepUp_Callback_2_(mthis, __arg_0, __arg_1) => stepUp_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stepUp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLInputElement_stepUp_Callback";
+  stepUp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stepUp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static step_Getter(mthis) native "HTMLInputElement_step_Getter";
+  step_Getter_(mthis) => step_Getter(mthis);
 
-  static step_Setter(mthis, value) native "HTMLInputElement_step_Setter";
+  static step_Setter(mthis, __arg_0) native "HTMLInputElement_step_Setter";
+  step_Setter_(mthis, __arg_0) => step_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLInputElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLInputElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLInputElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
+  static useMap_Getter(mthis) native "HTMLInputElement_useMap_Getter";
+  useMap_Getter_(mthis) => useMap_Getter(mthis);
+
+  static useMap_Setter(mthis, __arg_0) native "HTMLInputElement_useMap_Setter";
+  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
 
   static validationMessage_Getter(mthis) native "HTMLInputElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLInputElement_validity_Getter";
-
-  static value_Getter(mthis) native "HTMLInputElement_value_Getter";
-
-  static value_Setter(mthis, value) native "HTMLInputElement_value_Setter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static valueAsDate_Getter(mthis) native "HTMLInputElement_valueAsDate_Getter";
+  valueAsDate_Getter_(mthis) => valueAsDate_Getter(mthis);
 
-  static valueAsDate_Setter(mthis, value) native "HTMLInputElement_valueAsDate_Setter";
+  static valueAsDate_Setter(mthis, __arg_0) native "HTMLInputElement_valueAsDate_Setter";
+  valueAsDate_Setter_(mthis, __arg_0) => valueAsDate_Setter(mthis, __arg_0);
 
   static valueAsNumber_Getter(mthis) native "HTMLInputElement_valueAsNumber_Getter";
+  valueAsNumber_Getter_(mthis) => valueAsNumber_Getter(mthis);
 
-  static valueAsNumber_Setter(mthis, value) native "HTMLInputElement_valueAsNumber_Setter";
+  static valueAsNumber_Setter(mthis, __arg_0) native "HTMLInputElement_valueAsNumber_Setter";
+  valueAsNumber_Setter_(mthis, __arg_0) => valueAsNumber_Setter(mthis, __arg_0);
+
+  static value_Getter(mthis) native "HTMLInputElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
+  static value_Setter(mthis, __arg_0) native "HTMLInputElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
   static webkitEntries_Getter(mthis) native "HTMLInputElement_webkitEntries_Getter";
+  webkitEntries_Getter_(mthis) => webkitEntries_Getter(mthis);
 
   static webkitdirectory_Getter(mthis) native "HTMLInputElement_webkitdirectory_Getter";
+  webkitdirectory_Getter_(mthis) => webkitdirectory_Getter(mthis);
 
-  static webkitdirectory_Setter(mthis, value) native "HTMLInputElement_webkitdirectory_Setter";
+  static webkitdirectory_Setter(mthis, __arg_0) native "HTMLInputElement_webkitdirectory_Setter";
+  webkitdirectory_Setter_(mthis, __arg_0) => webkitdirectory_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "HTMLInputElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLInputElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLInputElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLInputElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static checkValidity_Callback(mthis) native "HTMLInputElement_checkValidity_Callback";
-
-  static select_Callback(mthis) native "HTMLInputElement_select_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLInputElement_setCustomValidity_Callback";
-
-  static setRangeText_Callback_1(mthis, replacement) native "HTMLInputElement_setRangeText_Callback";
-
-  static setRangeText_Callback_4(mthis, replacement, start, end, selectionMode) native "HTMLInputElement_setRangeText_Callback";
-
-  static setSelectionRange_Callback_3(mthis, start, end, direction) native "HTMLInputElement_setSelectionRange_Callback";
-
-  static setSelectionRange_Callback_2(mthis, start, end) native "HTMLInputElement_setSelectionRange_Callback";
-
-  static stepDown_Callback_1(mthis, n) native "HTMLInputElement_stepDown_Callback";
-
-  static stepDown_Callback(mthis) native "HTMLInputElement_stepDown_Callback";
-
-  static stepUp_Callback_1(mthis, n) native "HTMLInputElement_stepUp_Callback";
-
-  static stepUp_Callback(mthis) native "HTMLInputElement_stepUp_Callback";
 }
 
-class BlinkHTMLKeygenElement {
-  static autofocus_Getter(mthis) native "HTMLKeygenElement_autofocus_Getter";
+class BlinkHTMLKeygenElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLKeygenElement();
 
-  static autofocus_Setter(mthis, value) native "HTMLKeygenElement_autofocus_Setter";
+  static autofocus_Getter(mthis) native "HTMLKeygenElement_autofocus_Getter";
+  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+
+  static autofocus_Setter(mthis, __arg_0) native "HTMLKeygenElement_autofocus_Setter";
+  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
 
   static challenge_Getter(mthis) native "HTMLKeygenElement_challenge_Getter";
+  challenge_Getter_(mthis) => challenge_Getter(mthis);
 
-  static challenge_Setter(mthis, value) native "HTMLKeygenElement_challenge_Setter";
+  static challenge_Setter(mthis, __arg_0) native "HTMLKeygenElement_challenge_Setter";
+  challenge_Setter_(mthis, __arg_0) => challenge_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLKeygenElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLKeygenElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLKeygenElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
 
   static disabled_Getter(mthis) native "HTMLKeygenElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLKeygenElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLKeygenElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLKeygenElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static keytype_Getter(mthis) native "HTMLKeygenElement_keytype_Getter";
+  keytype_Getter_(mthis) => keytype_Getter(mthis);
 
-  static keytype_Setter(mthis, value) native "HTMLKeygenElement_keytype_Setter";
+  static keytype_Setter(mthis, __arg_0) native "HTMLKeygenElement_keytype_Setter";
+  keytype_Setter_(mthis, __arg_0) => keytype_Setter(mthis, __arg_0);
 
   static labels_Getter(mthis) native "HTMLKeygenElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static name_Getter(mthis) native "HTMLKeygenElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLKeygenElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLKeygenElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLKeygenElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLKeygenElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLKeygenElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLKeygenElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "HTMLKeygenElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static validationMessage_Getter(mthis) native "HTMLKeygenElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLKeygenElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static willValidate_Getter(mthis) native "HTMLKeygenElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static checkValidity_Callback(mthis) native "HTMLKeygenElement_checkValidity_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLKeygenElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLLIElement {
+class BlinkHTMLLIElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLLIElement();
+
+  static type_Getter(mthis) native "HTMLLIElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static type_Setter(mthis, __arg_0) native "HTMLLIElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
   static value_Getter(mthis) native "HTMLLIElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLLIElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLLIElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLLabelElement {
+class BlinkHTMLLabelElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLLabelElement();
+
   static control_Getter(mthis) native "HTMLLabelElement_control_Getter";
+  control_Getter_(mthis) => control_Getter(mthis);
 
   static form_Getter(mthis) native "HTMLLabelElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static htmlFor_Getter(mthis) native "HTMLLabelElement_htmlFor_Getter";
+  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
 
-  static htmlFor_Setter(mthis, value) native "HTMLLabelElement_htmlFor_Setter";
+  static htmlFor_Setter(mthis, __arg_0) native "HTMLLabelElement_htmlFor_Setter";
+  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLLegendElement {
+class BlinkHTMLLegendElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLLegendElement();
+
   static form_Getter(mthis) native "HTMLLegendElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
+
 }
 
-class BlinkHTMLLinkElement {
-  static crossOrigin_Getter(mthis) native "HTMLLinkElement_crossOrigin_Getter";
+class BlinkHTMLLinkElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLLinkElement();
 
-  static crossOrigin_Setter(mthis, value) native "HTMLLinkElement_crossOrigin_Setter";
+  static crossOrigin_Getter(mthis) native "HTMLLinkElement_crossOrigin_Getter";
+  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+
+  static crossOrigin_Setter(mthis, __arg_0) native "HTMLLinkElement_crossOrigin_Setter";
+  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
 
   static disabled_Getter(mthis) native "HTMLLinkElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLLinkElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLLinkElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "HTMLLinkElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "HTMLLinkElement_href_Setter";
+  static href_Setter(mthis, __arg_0) native "HTMLLinkElement_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
 
   static hreflang_Getter(mthis) native "HTMLLinkElement_hreflang_Getter";
+  hreflang_Getter_(mthis) => hreflang_Getter(mthis);
 
-  static hreflang_Setter(mthis, value) native "HTMLLinkElement_hreflang_Setter";
+  static hreflang_Setter(mthis, __arg_0) native "HTMLLinkElement_hreflang_Setter";
+  hreflang_Setter_(mthis, __arg_0) => hreflang_Setter(mthis, __arg_0);
 
   static import_Getter(mthis) native "HTMLLinkElement_import_Getter";
+  import_Getter_(mthis) => import_Getter(mthis);
 
   static integrity_Getter(mthis) native "HTMLLinkElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLLinkElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLLinkElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static media_Getter(mthis) native "HTMLLinkElement_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
 
-  static media_Setter(mthis, value) native "HTMLLinkElement_media_Setter";
+  static media_Setter(mthis, __arg_0) native "HTMLLinkElement_media_Setter";
+  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
 
   static rel_Getter(mthis) native "HTMLLinkElement_rel_Getter";
+  rel_Getter_(mthis) => rel_Getter(mthis);
 
-  static rel_Setter(mthis, value) native "HTMLLinkElement_rel_Setter";
+  static rel_Setter(mthis, __arg_0) native "HTMLLinkElement_rel_Setter";
+  rel_Setter_(mthis, __arg_0) => rel_Setter(mthis, __arg_0);
 
   static sheet_Getter(mthis) native "HTMLLinkElement_sheet_Getter";
+  sheet_Getter_(mthis) => sheet_Getter(mthis);
 
   static sizes_Getter(mthis) native "HTMLLinkElement_sizes_Getter";
+  sizes_Getter_(mthis) => sizes_Getter(mthis);
+
+  static sizes_Setter(mthis, __arg_0) native "HTMLLinkElement_sizes_Setter";
+  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLLinkElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLLinkElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLLinkElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLMapElement {
+class BlinkHTMLMapElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMapElement();
+
   static areas_Getter(mthis) native "HTMLMapElement_areas_Getter";
+  areas_Getter_(mthis) => areas_Getter(mthis);
 
   static name_Getter(mthis) native "HTMLMapElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLMapElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLMapElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLMarqueeElement {}
+class BlinkHTMLMarqueeElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMarqueeElement();
 
-class BlinkHTMLMenuElement {
+}
+
+class BlinkHTMLMediaElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMediaElement();
+
+  static addTextTrack_Callback_0(mthis) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_0_(mthis) => addTextTrack_Callback_0(mthis);
+
+  static addTextTrack_Callback_1(mthis, __arg_0) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_1_(mthis, __arg_0) => addTextTrack_Callback_1(mthis, __arg_0);
+
+  static addTextTrack_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_2_(mthis, __arg_0, __arg_1) => addTextTrack_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addTextTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addTextTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addTextTrack_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addTextTrack_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static addTextTrack_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLMediaElement_addTextTrack_Callback";
+  addTextTrack_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addTextTrack_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static audioTracks_Getter(mthis) native "HTMLMediaElement_audioTracks_Getter";
+  audioTracks_Getter_(mthis) => audioTracks_Getter(mthis);
+
+  static autoplay_Getter(mthis) native "HTMLMediaElement_autoplay_Getter";
+  autoplay_Getter_(mthis) => autoplay_Getter(mthis);
+
+  static autoplay_Setter(mthis, __arg_0) native "HTMLMediaElement_autoplay_Setter";
+  autoplay_Setter_(mthis, __arg_0) => autoplay_Setter(mthis, __arg_0);
+
+  static buffered_Getter(mthis) native "HTMLMediaElement_buffered_Getter";
+  buffered_Getter_(mthis) => buffered_Getter(mthis);
+
+  static canPlayType_Callback_0(mthis) native "HTMLMediaElement_canPlayType_Callback";
+  canPlayType_Callback_0_(mthis) => canPlayType_Callback_0(mthis);
+
+  static canPlayType_Callback_1(mthis, __arg_0) native "HTMLMediaElement_canPlayType_Callback";
+  canPlayType_Callback_1_(mthis, __arg_0) => canPlayType_Callback_1(mthis, __arg_0);
+
+  static canPlayType_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_canPlayType_Callback";
+  canPlayType_Callback_2_(mthis, __arg_0, __arg_1) => canPlayType_Callback_2(mthis, __arg_0, __arg_1);
+
+  static canPlayType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_canPlayType_Callback";
+  canPlayType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => canPlayType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static canPlayType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_canPlayType_Callback";
+  canPlayType_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => canPlayType_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static controller_Getter(mthis) native "HTMLMediaElement_controller_Getter";
+  controller_Getter_(mthis) => controller_Getter(mthis);
+
+  static controller_Setter(mthis, __arg_0) native "HTMLMediaElement_controller_Setter";
+  controller_Setter_(mthis, __arg_0) => controller_Setter(mthis, __arg_0);
+
+  static controls_Getter(mthis) native "HTMLMediaElement_controls_Getter";
+  controls_Getter_(mthis) => controls_Getter(mthis);
+
+  static controls_Setter(mthis, __arg_0) native "HTMLMediaElement_controls_Setter";
+  controls_Setter_(mthis, __arg_0) => controls_Setter(mthis, __arg_0);
+
+  static crossOrigin_Getter(mthis) native "HTMLMediaElement_crossOrigin_Getter";
+  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
+
+  static crossOrigin_Setter(mthis, __arg_0) native "HTMLMediaElement_crossOrigin_Setter";
+  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
+
+  static currentSrc_Getter(mthis) native "HTMLMediaElement_currentSrc_Getter";
+  currentSrc_Getter_(mthis) => currentSrc_Getter(mthis);
+
+  static currentTime_Getter(mthis) native "HTMLMediaElement_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
+
+  static currentTime_Setter(mthis, __arg_0) native "HTMLMediaElement_currentTime_Setter";
+  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
+
+  static defaultMuted_Getter(mthis) native "HTMLMediaElement_defaultMuted_Getter";
+  defaultMuted_Getter_(mthis) => defaultMuted_Getter(mthis);
+
+  static defaultMuted_Setter(mthis, __arg_0) native "HTMLMediaElement_defaultMuted_Setter";
+  defaultMuted_Setter_(mthis, __arg_0) => defaultMuted_Setter(mthis, __arg_0);
+
+  static defaultPlaybackRate_Getter(mthis) native "HTMLMediaElement_defaultPlaybackRate_Getter";
+  defaultPlaybackRate_Getter_(mthis) => defaultPlaybackRate_Getter(mthis);
+
+  static defaultPlaybackRate_Setter(mthis, __arg_0) native "HTMLMediaElement_defaultPlaybackRate_Setter";
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => defaultPlaybackRate_Setter(mthis, __arg_0);
+
+  static duration_Getter(mthis) native "HTMLMediaElement_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
+
+  static ended_Getter(mthis) native "HTMLMediaElement_ended_Getter";
+  ended_Getter_(mthis) => ended_Getter(mthis);
+
+  static error_Getter(mthis) native "HTMLMediaElement_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
+
+  static integrity_Getter(mthis) native "HTMLMediaElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
+
+  static integrity_Setter(mthis, __arg_0) native "HTMLMediaElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
+
+  static load_Callback_0(mthis) native "HTMLMediaElement_load_Callback";
+  load_Callback_0_(mthis) => load_Callback_0(mthis);
+
+  static load_Callback_1(mthis, __arg_0) native "HTMLMediaElement_load_Callback";
+  load_Callback_1_(mthis, __arg_0) => load_Callback_1(mthis, __arg_0);
+
+  static load_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_load_Callback";
+  load_Callback_2_(mthis, __arg_0, __arg_1) => load_Callback_2(mthis, __arg_0, __arg_1);
+
+  static loop_Getter(mthis) native "HTMLMediaElement_loop_Getter";
+  loop_Getter_(mthis) => loop_Getter(mthis);
+
+  static loop_Setter(mthis, __arg_0) native "HTMLMediaElement_loop_Setter";
+  loop_Setter_(mthis, __arg_0) => loop_Setter(mthis, __arg_0);
+
+  static mediaGroup_Getter(mthis) native "HTMLMediaElement_mediaGroup_Getter";
+  mediaGroup_Getter_(mthis) => mediaGroup_Getter(mthis);
+
+  static mediaGroup_Setter(mthis, __arg_0) native "HTMLMediaElement_mediaGroup_Setter";
+  mediaGroup_Setter_(mthis, __arg_0) => mediaGroup_Setter(mthis, __arg_0);
+
+  static mediaKeys_Getter(mthis) native "HTMLMediaElement_mediaKeys_Getter";
+  mediaKeys_Getter_(mthis) => mediaKeys_Getter(mthis);
+
+  static muted_Getter(mthis) native "HTMLMediaElement_muted_Getter";
+  muted_Getter_(mthis) => muted_Getter(mthis);
+
+  static muted_Setter(mthis, __arg_0) native "HTMLMediaElement_muted_Setter";
+  muted_Setter_(mthis, __arg_0) => muted_Setter(mthis, __arg_0);
+
+  static networkState_Getter(mthis) native "HTMLMediaElement_networkState_Getter";
+  networkState_Getter_(mthis) => networkState_Getter(mthis);
+
+  static onneedkey_Getter(mthis) native "HTMLMediaElement_onneedkey_Getter";
+  onneedkey_Getter_(mthis) => onneedkey_Getter(mthis);
+
+  static onneedkey_Setter(mthis, __arg_0) native "HTMLMediaElement_onneedkey_Setter";
+  onneedkey_Setter_(mthis, __arg_0) => onneedkey_Setter(mthis, __arg_0);
+
+  static onwebkitkeyadded_Getter(mthis) native "HTMLMediaElement_onwebkitkeyadded_Getter";
+  onwebkitkeyadded_Getter_(mthis) => onwebkitkeyadded_Getter(mthis);
+
+  static onwebkitkeyadded_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeyadded_Setter";
+  onwebkitkeyadded_Setter_(mthis, __arg_0) => onwebkitkeyadded_Setter(mthis, __arg_0);
+
+  static onwebkitkeyerror_Getter(mthis) native "HTMLMediaElement_onwebkitkeyerror_Getter";
+  onwebkitkeyerror_Getter_(mthis) => onwebkitkeyerror_Getter(mthis);
+
+  static onwebkitkeyerror_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeyerror_Setter";
+  onwebkitkeyerror_Setter_(mthis, __arg_0) => onwebkitkeyerror_Setter(mthis, __arg_0);
+
+  static onwebkitkeymessage_Getter(mthis) native "HTMLMediaElement_onwebkitkeymessage_Getter";
+  onwebkitkeymessage_Getter_(mthis) => onwebkitkeymessage_Getter(mthis);
+
+  static onwebkitkeymessage_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitkeymessage_Setter";
+  onwebkitkeymessage_Setter_(mthis, __arg_0) => onwebkitkeymessage_Setter(mthis, __arg_0);
+
+  static onwebkitneedkey_Getter(mthis) native "HTMLMediaElement_onwebkitneedkey_Getter";
+  onwebkitneedkey_Getter_(mthis) => onwebkitneedkey_Getter(mthis);
+
+  static onwebkitneedkey_Setter(mthis, __arg_0) native "HTMLMediaElement_onwebkitneedkey_Setter";
+  onwebkitneedkey_Setter_(mthis, __arg_0) => onwebkitneedkey_Setter(mthis, __arg_0);
+
+  static pause_Callback_0(mthis) native "HTMLMediaElement_pause_Callback";
+  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+
+  static pause_Callback_1(mthis, __arg_0) native "HTMLMediaElement_pause_Callback";
+  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+
+  static pause_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_pause_Callback";
+  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
+
+  static paused_Getter(mthis) native "HTMLMediaElement_paused_Getter";
+  paused_Getter_(mthis) => paused_Getter(mthis);
+
+  static play_Callback_0(mthis) native "HTMLMediaElement_play_Callback";
+  play_Callback_0_(mthis) => play_Callback_0(mthis);
+
+  static play_Callback_1(mthis, __arg_0) native "HTMLMediaElement_play_Callback";
+  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
+
+  static play_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_play_Callback";
+  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
+
+  static playbackRate_Getter(mthis) native "HTMLMediaElement_playbackRate_Getter";
+  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
+
+  static playbackRate_Setter(mthis, __arg_0) native "HTMLMediaElement_playbackRate_Setter";
+  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
+
+  static played_Getter(mthis) native "HTMLMediaElement_played_Getter";
+  played_Getter_(mthis) => played_Getter(mthis);
+
+  static preload_Getter(mthis) native "HTMLMediaElement_preload_Getter";
+  preload_Getter_(mthis) => preload_Getter(mthis);
+
+  static preload_Setter(mthis, __arg_0) native "HTMLMediaElement_preload_Setter";
+  preload_Setter_(mthis, __arg_0) => preload_Setter(mthis, __arg_0);
+
+  static readyState_Getter(mthis) native "HTMLMediaElement_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
+
+  static seekable_Getter(mthis) native "HTMLMediaElement_seekable_Getter";
+  seekable_Getter_(mthis) => seekable_Getter(mthis);
+
+  static seeking_Getter(mthis) native "HTMLMediaElement_seeking_Getter";
+  seeking_Getter_(mthis) => seeking_Getter(mthis);
+
+  static setMediaKeys_Callback_0(mthis) native "HTMLMediaElement_setMediaKeys_Callback";
+  setMediaKeys_Callback_0_(mthis) => setMediaKeys_Callback_0(mthis);
+
+  static setMediaKeys_Callback_1(mthis, __arg_0) native "HTMLMediaElement_setMediaKeys_Callback";
+  setMediaKeys_Callback_1_(mthis, __arg_0) => setMediaKeys_Callback_1(mthis, __arg_0);
+
+  static setMediaKeys_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_setMediaKeys_Callback";
+  setMediaKeys_Callback_2_(mthis, __arg_0, __arg_1) => setMediaKeys_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setMediaKeys_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_setMediaKeys_Callback";
+  setMediaKeys_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMediaKeys_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static src_Getter(mthis) native "HTMLMediaElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
+
+  static src_Setter(mthis, __arg_0) native "HTMLMediaElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
+
+  static textTracks_Getter(mthis) native "HTMLMediaElement_textTracks_Getter";
+  textTracks_Getter_(mthis) => textTracks_Getter(mthis);
+
+  static videoTracks_Getter(mthis) native "HTMLMediaElement_videoTracks_Getter";
+  videoTracks_Getter_(mthis) => videoTracks_Getter(mthis);
+
+  static volume_Getter(mthis) native "HTMLMediaElement_volume_Getter";
+  volume_Getter_(mthis) => volume_Getter(mthis);
+
+  static volume_Setter(mthis, __arg_0) native "HTMLMediaElement_volume_Setter";
+  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
+
+  static webkitAddKey_Callback_0(mthis) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_0_(mthis) => webkitAddKey_Callback_0(mthis);
+
+  static webkitAddKey_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_1_(mthis, __arg_0) => webkitAddKey_Callback_1(mthis, __arg_0);
+
+  static webkitAddKey_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_2_(mthis, __arg_0, __arg_1) => webkitAddKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitAddKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitAddKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitAddKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitAddKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitAddKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitAddKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static webkitAddKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLMediaElement_webkitAddKey_Callback";
+  webkitAddKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitAddKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static webkitAudioDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitAudioDecodedByteCount_Getter";
+  webkitAudioDecodedByteCount_Getter_(mthis) => webkitAudioDecodedByteCount_Getter(mthis);
+
+  static webkitCancelKeyRequest_Callback_0(mthis) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
+  webkitCancelKeyRequest_Callback_0_(mthis) => webkitCancelKeyRequest_Callback_0(mthis);
+
+  static webkitCancelKeyRequest_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
+  webkitCancelKeyRequest_Callback_1_(mthis, __arg_0) => webkitCancelKeyRequest_Callback_1(mthis, __arg_0);
+
+  static webkitCancelKeyRequest_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
+  webkitCancelKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => webkitCancelKeyRequest_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitCancelKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
+  webkitCancelKeyRequest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitCancelKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitCancelKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitCancelKeyRequest_Callback";
+  webkitCancelKeyRequest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitCancelKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitGenerateKeyRequest_Callback_0(mthis) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
+  webkitGenerateKeyRequest_Callback_0_(mthis) => webkitGenerateKeyRequest_Callback_0(mthis);
+
+  static webkitGenerateKeyRequest_Callback_1(mthis, __arg_0) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
+  webkitGenerateKeyRequest_Callback_1_(mthis, __arg_0) => webkitGenerateKeyRequest_Callback_1(mthis, __arg_0);
+
+  static webkitGenerateKeyRequest_Callback_2(mthis, __arg_0, __arg_1) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
+  webkitGenerateKeyRequest_Callback_2_(mthis, __arg_0, __arg_1) => webkitGenerateKeyRequest_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitGenerateKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
+  webkitGenerateKeyRequest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitGenerateKeyRequest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitGenerateKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLMediaElement_webkitGenerateKeyRequest_Callback";
+  webkitGenerateKeyRequest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitGenerateKeyRequest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitVideoDecodedByteCount_Getter(mthis) native "HTMLMediaElement_webkitVideoDecodedByteCount_Getter";
+  webkitVideoDecodedByteCount_Getter_(mthis) => webkitVideoDecodedByteCount_Getter(mthis);
+
+}
+
+class BlinkHTMLMenuElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMenuElement();
+
   static label_Getter(mthis) native "HTMLMenuElement_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static label_Setter(mthis, value) native "HTMLMenuElement_label_Setter";
+  static label_Setter(mthis, __arg_0) native "HTMLMenuElement_label_Setter";
+  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLMenuElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLMenuElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLMenuElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLMenuItemElement {
-  static checked_Getter(mthis) native "HTMLMenuItemElement_checked_Getter";
+class BlinkHTMLMenuItemElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMenuItemElement();
 
-  static checked_Setter(mthis, value) native "HTMLMenuItemElement_checked_Setter";
+  static checked_Getter(mthis) native "HTMLMenuItemElement_checked_Getter";
+  checked_Getter_(mthis) => checked_Getter(mthis);
+
+  static checked_Setter(mthis, __arg_0) native "HTMLMenuItemElement_checked_Setter";
+  checked_Setter_(mthis, __arg_0) => checked_Setter(mthis, __arg_0);
 
   static default_Getter(mthis) native "HTMLMenuItemElement_default_Getter";
+  default_Getter_(mthis) => default_Getter(mthis);
 
-  static default_Setter(mthis, value) native "HTMLMenuItemElement_default_Setter";
+  static default_Setter(mthis, __arg_0) native "HTMLMenuItemElement_default_Setter";
+  default_Setter_(mthis, __arg_0) => default_Setter(mthis, __arg_0);
 
   static disabled_Getter(mthis) native "HTMLMenuItemElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLMenuItemElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLMenuItemElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static label_Getter(mthis) native "HTMLMenuItemElement_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static label_Setter(mthis, value) native "HTMLMenuItemElement_label_Setter";
+  static label_Setter(mthis, __arg_0) native "HTMLMenuItemElement_label_Setter";
+  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLMenuItemElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLMenuItemElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLMenuItemElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLMetaElement {
-  static content_Getter(mthis) native "HTMLMetaElement_content_Getter";
+class BlinkHTMLMetaElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMetaElement();
 
-  static content_Setter(mthis, value) native "HTMLMetaElement_content_Setter";
+  static content_Getter(mthis) native "HTMLMetaElement_content_Getter";
+  content_Getter_(mthis) => content_Getter(mthis);
+
+  static content_Setter(mthis, __arg_0) native "HTMLMetaElement_content_Setter";
+  content_Setter_(mthis, __arg_0) => content_Setter(mthis, __arg_0);
 
   static httpEquiv_Getter(mthis) native "HTMLMetaElement_httpEquiv_Getter";
+  httpEquiv_Getter_(mthis) => httpEquiv_Getter(mthis);
 
-  static httpEquiv_Setter(mthis, value) native "HTMLMetaElement_httpEquiv_Setter";
+  static httpEquiv_Setter(mthis, __arg_0) native "HTMLMetaElement_httpEquiv_Setter";
+  httpEquiv_Setter_(mthis, __arg_0) => httpEquiv_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLMetaElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLMetaElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLMetaElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLMeterElement {
-  static high_Getter(mthis) native "HTMLMeterElement_high_Getter";
+class BlinkHTMLMeterElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLMeterElement();
 
-  static high_Setter(mthis, value) native "HTMLMeterElement_high_Setter";
+  static high_Getter(mthis) native "HTMLMeterElement_high_Getter";
+  high_Getter_(mthis) => high_Getter(mthis);
+
+  static high_Setter(mthis, __arg_0) native "HTMLMeterElement_high_Setter";
+  high_Setter_(mthis, __arg_0) => high_Setter(mthis, __arg_0);
 
   static labels_Getter(mthis) native "HTMLMeterElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static low_Getter(mthis) native "HTMLMeterElement_low_Getter";
+  low_Getter_(mthis) => low_Getter(mthis);
 
-  static low_Setter(mthis, value) native "HTMLMeterElement_low_Setter";
+  static low_Setter(mthis, __arg_0) native "HTMLMeterElement_low_Setter";
+  low_Setter_(mthis, __arg_0) => low_Setter(mthis, __arg_0);
 
   static max_Getter(mthis) native "HTMLMeterElement_max_Getter";
+  max_Getter_(mthis) => max_Getter(mthis);
 
-  static max_Setter(mthis, value) native "HTMLMeterElement_max_Setter";
+  static max_Setter(mthis, __arg_0) native "HTMLMeterElement_max_Setter";
+  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
 
   static min_Getter(mthis) native "HTMLMeterElement_min_Getter";
+  min_Getter_(mthis) => min_Getter(mthis);
 
-  static min_Setter(mthis, value) native "HTMLMeterElement_min_Setter";
+  static min_Setter(mthis, __arg_0) native "HTMLMeterElement_min_Setter";
+  min_Setter_(mthis, __arg_0) => min_Setter(mthis, __arg_0);
 
   static optimum_Getter(mthis) native "HTMLMeterElement_optimum_Getter";
+  optimum_Getter_(mthis) => optimum_Getter(mthis);
 
-  static optimum_Setter(mthis, value) native "HTMLMeterElement_optimum_Setter";
+  static optimum_Setter(mthis, __arg_0) native "HTMLMeterElement_optimum_Setter";
+  optimum_Setter_(mthis, __arg_0) => optimum_Setter(mthis, __arg_0);
 
   static value_Getter(mthis) native "HTMLMeterElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLMeterElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLMeterElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLModElement {
-  static cite_Getter(mthis) native "HTMLModElement_cite_Getter";
+class BlinkHTMLModElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLModElement();
 
-  static cite_Setter(mthis, value) native "HTMLModElement_cite_Setter";
+  static cite_Getter(mthis) native "HTMLModElement_cite_Getter";
+  cite_Getter_(mthis) => cite_Getter(mthis);
+
+  static cite_Setter(mthis, __arg_0) native "HTMLModElement_cite_Setter";
+  cite_Setter_(mthis, __arg_0) => cite_Setter(mthis, __arg_0);
 
   static dateTime_Getter(mthis) native "HTMLModElement_dateTime_Getter";
+  dateTime_Getter_(mthis) => dateTime_Getter(mthis);
 
-  static dateTime_Setter(mthis, value) native "HTMLModElement_dateTime_Setter";
+  static dateTime_Setter(mthis, __arg_0) native "HTMLModElement_dateTime_Setter";
+  dateTime_Setter_(mthis, __arg_0) => dateTime_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLOListElement {
-  static reversed_Getter(mthis) native "HTMLOListElement_reversed_Getter";
+class BlinkHTMLOListElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLOListElement();
 
-  static reversed_Setter(mthis, value) native "HTMLOListElement_reversed_Setter";
+  static reversed_Getter(mthis) native "HTMLOListElement_reversed_Getter";
+  reversed_Getter_(mthis) => reversed_Getter(mthis);
+
+  static reversed_Setter(mthis, __arg_0) native "HTMLOListElement_reversed_Setter";
+  reversed_Setter_(mthis, __arg_0) => reversed_Setter(mthis, __arg_0);
 
   static start_Getter(mthis) native "HTMLOListElement_start_Getter";
+  start_Getter_(mthis) => start_Getter(mthis);
 
-  static start_Setter(mthis, value) native "HTMLOListElement_start_Setter";
+  static start_Setter(mthis, __arg_0) native "HTMLOListElement_start_Setter";
+  start_Setter_(mthis, __arg_0) => start_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLOListElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLOListElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLOListElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLObjectElement {
-  static data_Getter(mthis) native "HTMLObjectElement_data_Getter";
+class BlinkHTMLObjectElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLObjectElement();
 
-  static data_Setter(mthis, value) native "HTMLObjectElement_data_Setter";
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLObjectElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static checkValidity_Callback_0(mthis) native "HTMLObjectElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLObjectElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static code_Getter(mthis) native "HTMLObjectElement_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
+
+  static code_Setter(mthis, __arg_0) native "HTMLObjectElement_code_Setter";
+  code_Setter_(mthis, __arg_0) => code_Setter(mthis, __arg_0);
+
+  static contentDocument_Getter(mthis) native "HTMLObjectElement_contentDocument_Getter";
+  contentDocument_Getter_(mthis) => contentDocument_Getter(mthis);
+
+  static data_Getter(mthis) native "HTMLObjectElement_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
+
+  static data_Setter(mthis, __arg_0) native "HTMLObjectElement_data_Setter";
+  data_Setter_(mthis, __arg_0) => data_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLObjectElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
+
+  static getSVGDocument_Callback_0(mthis) native "HTMLObjectElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_0_(mthis) => getSVGDocument_Callback_0(mthis);
+
+  static getSVGDocument_Callback_1(mthis, __arg_0) native "HTMLObjectElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_1_(mthis, __arg_0) => getSVGDocument_Callback_1(mthis, __arg_0);
+
+  static getSVGDocument_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_getSVGDocument_Callback";
+  getSVGDocument_Callback_2_(mthis, __arg_0, __arg_1) => getSVGDocument_Callback_2(mthis, __arg_0, __arg_1);
 
   static height_Getter(mthis) native "HTMLObjectElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLObjectElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLObjectElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLObjectElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLObjectElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLObjectElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLObjectElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLObjectElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLObjectElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLObjectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLObjectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLObjectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLObjectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "HTMLObjectElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLObjectElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLObjectElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
   static useMap_Getter(mthis) native "HTMLObjectElement_useMap_Getter";
+  useMap_Getter_(mthis) => useMap_Getter(mthis);
 
-  static useMap_Setter(mthis, value) native "HTMLObjectElement_useMap_Setter";
+  static useMap_Setter(mthis, __arg_0) native "HTMLObjectElement_useMap_Setter";
+  useMap_Setter_(mthis, __arg_0) => useMap_Setter(mthis, __arg_0);
 
   static validationMessage_Getter(mthis) native "HTMLObjectElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLObjectElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static width_Getter(mthis) native "HTMLObjectElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLObjectElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLObjectElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLObjectElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "HTMLObjectElement___getter___Callback";
-
-  static $__setter___Callback_2(mthis, index_OR_name, value) native "HTMLObjectElement___setter___Callback";
-
-  static checkValidity_Callback(mthis) native "HTMLObjectElement_checkValidity_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLObjectElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLOptGroupElement {
-  static disabled_Getter(mthis) native "HTMLOptGroupElement_disabled_Getter";
+class BlinkHTMLOptGroupElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLOptGroupElement();
 
-  static disabled_Setter(mthis, value) native "HTMLOptGroupElement_disabled_Setter";
+  static disabled_Getter(mthis) native "HTMLOptGroupElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
+
+  static disabled_Setter(mthis, __arg_0) native "HTMLOptGroupElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static label_Getter(mthis) native "HTMLOptGroupElement_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static label_Setter(mthis, value) native "HTMLOptGroupElement_label_Setter";
+  static label_Setter(mthis, __arg_0) native "HTMLOptGroupElement_label_Setter";
+  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLOptionElement {
-  static constructorCallback_4(data, value, defaultSelected, selected) native "HTMLOptionElement_constructorCallback";
+class BlinkHTMLOptionElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLOptionElement();
+
+  static constructorCallback_0() native "HTMLOptionElement_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLOptionElement_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static defaultSelected_Getter(mthis) native "HTMLOptionElement_defaultSelected_Getter";
+  defaultSelected_Getter_(mthis) => defaultSelected_Getter(mthis);
 
-  static defaultSelected_Setter(mthis, value) native "HTMLOptionElement_defaultSelected_Setter";
+  static defaultSelected_Setter(mthis, __arg_0) native "HTMLOptionElement_defaultSelected_Setter";
+  defaultSelected_Setter_(mthis, __arg_0) => defaultSelected_Setter(mthis, __arg_0);
 
   static disabled_Getter(mthis) native "HTMLOptionElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLOptionElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLOptionElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLOptionElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static index_Getter(mthis) native "HTMLOptionElement_index_Getter";
+  index_Getter_(mthis) => index_Getter(mthis);
 
   static label_Getter(mthis) native "HTMLOptionElement_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static label_Setter(mthis, value) native "HTMLOptionElement_label_Setter";
+  static label_Setter(mthis, __arg_0) native "HTMLOptionElement_label_Setter";
+  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
 
   static selected_Getter(mthis) native "HTMLOptionElement_selected_Getter";
+  selected_Getter_(mthis) => selected_Getter(mthis);
 
-  static selected_Setter(mthis, value) native "HTMLOptionElement_selected_Setter";
+  static selected_Setter(mthis, __arg_0) native "HTMLOptionElement_selected_Setter";
+  selected_Setter_(mthis, __arg_0) => selected_Setter(mthis, __arg_0);
 
   static value_Getter(mthis) native "HTMLOptionElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLOptionElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLOptionElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLOptionsCollection {}
+class BlinkHTMLOptionsCollection extends BlinkHTMLCollection {
+  static final instance = new BlinkHTMLOptionsCollection();
 
-class BlinkHTMLOutputElement {
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLOptionsCollection___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLOptionsCollection___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkHTMLOutputElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLOutputElement();
+
+  static checkValidity_Callback_0(mthis) native "HTMLOutputElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLOutputElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLOutputElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
+
   static defaultValue_Getter(mthis) native "HTMLOutputElement_defaultValue_Getter";
+  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
 
-  static defaultValue_Setter(mthis, value) native "HTMLOutputElement_defaultValue_Setter";
+  static defaultValue_Setter(mthis, __arg_0) native "HTMLOutputElement_defaultValue_Setter";
+  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLOutputElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static htmlFor_Getter(mthis) native "HTMLOutputElement_htmlFor_Getter";
+  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
+
+  static htmlFor_Setter(mthis, __arg_0) native "HTMLOutputElement_htmlFor_Setter";
+  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
 
   static labels_Getter(mthis) native "HTMLOutputElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static name_Getter(mthis) native "HTMLOutputElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLOutputElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLOutputElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLOutputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLOutputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLOutputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLOutputElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "HTMLOutputElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static validationMessage_Getter(mthis) native "HTMLOutputElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLOutputElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static value_Getter(mthis) native "HTMLOutputElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLOutputElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLOutputElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLOutputElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static checkValidity_Callback(mthis) native "HTMLOutputElement_checkValidity_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLOutputElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLParagraphElement {}
+class BlinkHTMLParagraphElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLParagraphElement();
 
-class BlinkHTMLParamElement {
+}
+
+class BlinkHTMLParamElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLParamElement();
+
   static name_Getter(mthis) native "HTMLParamElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLParamElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLParamElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static value_Getter(mthis) native "HTMLParamElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLParamElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLParamElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLPictureElement {}
+class BlinkHTMLPictureElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLPictureElement();
 
-class BlinkHTMLPreElement {}
+}
 
-class BlinkHTMLProgressElement {
+class BlinkHTMLPreElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLPreElement();
+
+}
+
+class BlinkHTMLProgressElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLProgressElement();
+
   static labels_Getter(mthis) native "HTMLProgressElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static max_Getter(mthis) native "HTMLProgressElement_max_Getter";
+  max_Getter_(mthis) => max_Getter(mthis);
 
-  static max_Setter(mthis, value) native "HTMLProgressElement_max_Setter";
+  static max_Setter(mthis, __arg_0) native "HTMLProgressElement_max_Setter";
+  max_Setter_(mthis, __arg_0) => max_Setter(mthis, __arg_0);
 
   static position_Getter(mthis) native "HTMLProgressElement_position_Getter";
+  position_Getter_(mthis) => position_Getter(mthis);
 
   static value_Getter(mthis) native "HTMLProgressElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLProgressElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLProgressElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLQuoteElement {
+class BlinkHTMLQuoteElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLQuoteElement();
+
   static cite_Getter(mthis) native "HTMLQuoteElement_cite_Getter";
+  cite_Getter_(mthis) => cite_Getter(mthis);
 
-  static cite_Setter(mthis, value) native "HTMLQuoteElement_cite_Setter";
+  static cite_Setter(mthis, __arg_0) native "HTMLQuoteElement_cite_Setter";
+  cite_Setter_(mthis, __arg_0) => cite_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLScriptElement {
-  static async_Getter(mthis) native "HTMLScriptElement_async_Getter";
+class BlinkHTMLScriptElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLScriptElement();
 
-  static async_Setter(mthis, value) native "HTMLScriptElement_async_Setter";
+  static async_Getter(mthis) native "HTMLScriptElement_async_Getter";
+  async_Getter_(mthis) => async_Getter(mthis);
+
+  static async_Setter(mthis, __arg_0) native "HTMLScriptElement_async_Setter";
+  async_Setter_(mthis, __arg_0) => async_Setter(mthis, __arg_0);
 
   static charset_Getter(mthis) native "HTMLScriptElement_charset_Getter";
+  charset_Getter_(mthis) => charset_Getter(mthis);
 
-  static charset_Setter(mthis, value) native "HTMLScriptElement_charset_Setter";
+  static charset_Setter(mthis, __arg_0) native "HTMLScriptElement_charset_Setter";
+  charset_Setter_(mthis, __arg_0) => charset_Setter(mthis, __arg_0);
 
   static crossOrigin_Getter(mthis) native "HTMLScriptElement_crossOrigin_Getter";
+  crossOrigin_Getter_(mthis) => crossOrigin_Getter(mthis);
 
-  static crossOrigin_Setter(mthis, value) native "HTMLScriptElement_crossOrigin_Setter";
+  static crossOrigin_Setter(mthis, __arg_0) native "HTMLScriptElement_crossOrigin_Setter";
+  crossOrigin_Setter_(mthis, __arg_0) => crossOrigin_Setter(mthis, __arg_0);
 
   static defer_Getter(mthis) native "HTMLScriptElement_defer_Getter";
+  defer_Getter_(mthis) => defer_Getter(mthis);
 
-  static defer_Setter(mthis, value) native "HTMLScriptElement_defer_Setter";
+  static defer_Setter(mthis, __arg_0) native "HTMLScriptElement_defer_Setter";
+  defer_Setter_(mthis, __arg_0) => defer_Setter(mthis, __arg_0);
+
+  static event_Getter(mthis) native "HTMLScriptElement_event_Getter";
+  event_Getter_(mthis) => event_Getter(mthis);
+
+  static event_Setter(mthis, __arg_0) native "HTMLScriptElement_event_Setter";
+  event_Setter_(mthis, __arg_0) => event_Setter(mthis, __arg_0);
+
+  static htmlFor_Getter(mthis) native "HTMLScriptElement_htmlFor_Getter";
+  htmlFor_Getter_(mthis) => htmlFor_Getter(mthis);
+
+  static htmlFor_Setter(mthis, __arg_0) native "HTMLScriptElement_htmlFor_Setter";
+  htmlFor_Setter_(mthis, __arg_0) => htmlFor_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLScriptElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLScriptElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLScriptElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static nonce_Getter(mthis) native "HTMLScriptElement_nonce_Getter";
+  nonce_Getter_(mthis) => nonce_Getter(mthis);
 
-  static nonce_Setter(mthis, value) native "HTMLScriptElement_nonce_Setter";
+  static nonce_Setter(mthis, __arg_0) native "HTMLScriptElement_nonce_Setter";
+  nonce_Setter_(mthis, __arg_0) => nonce_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLScriptElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLScriptElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLScriptElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLScriptElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLScriptElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLScriptElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLSelectElement {
-  static autofocus_Getter(mthis) native "HTMLSelectElement_autofocus_Getter";
+class BlinkHTMLSelectElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLSelectElement();
 
-  static autofocus_Setter(mthis, value) native "HTMLSelectElement_autofocus_Setter";
+  static $__getter___Callback_1(mthis, __arg_0) native "HTMLSelectElement___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_0(mthis) native "HTMLSelectElement_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "HTMLSelectElement_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLSelectElement_add_Callback";
+  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static autofocus_Getter(mthis) native "HTMLSelectElement_autofocus_Getter";
+  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+
+  static autofocus_Setter(mthis, __arg_0) native "HTMLSelectElement_autofocus_Setter";
+  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLSelectElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLSelectElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
 
   static disabled_Getter(mthis) native "HTMLSelectElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLSelectElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLSelectElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLSelectElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
+
+  static item_Callback_0(mthis) native "HTMLSelectElement_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "HTMLSelectElement_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static labels_Getter(mthis) native "HTMLSelectElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static length_Getter(mthis) native "HTMLSelectElement_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static length_Setter(mthis, value) native "HTMLSelectElement_length_Setter";
+  static length_Setter(mthis, __arg_0) native "HTMLSelectElement_length_Setter";
+  length_Setter_(mthis, __arg_0) => length_Setter(mthis, __arg_0);
 
   static multiple_Getter(mthis) native "HTMLSelectElement_multiple_Getter";
+  multiple_Getter_(mthis) => multiple_Getter(mthis);
 
-  static multiple_Setter(mthis, value) native "HTMLSelectElement_multiple_Setter";
+  static multiple_Setter(mthis, __arg_0) native "HTMLSelectElement_multiple_Setter";
+  multiple_Setter_(mthis, __arg_0) => multiple_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLSelectElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLSelectElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLSelectElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
+
+  static namedItem_Callback_0(mthis) native "HTMLSelectElement_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+
+  static namedItem_Callback_1(mthis, __arg_0) native "HTMLSelectElement_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static required_Getter(mthis) native "HTMLSelectElement_required_Getter";
+  required_Getter_(mthis) => required_Getter(mthis);
 
-  static required_Setter(mthis, value) native "HTMLSelectElement_required_Setter";
+  static required_Setter(mthis, __arg_0) native "HTMLSelectElement_required_Setter";
+  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
 
   static selectedIndex_Getter(mthis) native "HTMLSelectElement_selectedIndex_Getter";
+  selectedIndex_Getter_(mthis) => selectedIndex_Getter(mthis);
 
-  static selectedIndex_Setter(mthis, value) native "HTMLSelectElement_selectedIndex_Setter";
+  static selectedIndex_Setter(mthis, __arg_0) native "HTMLSelectElement_selectedIndex_Setter";
+  selectedIndex_Setter_(mthis, __arg_0) => selectedIndex_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLSelectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLSelectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLSelectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLSelectElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static size_Getter(mthis) native "HTMLSelectElement_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
-  static size_Setter(mthis, value) native "HTMLSelectElement_size_Setter";
+  static size_Setter(mthis, __arg_0) native "HTMLSelectElement_size_Setter";
+  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLSelectElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static validationMessage_Getter(mthis) native "HTMLSelectElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLSelectElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static value_Getter(mthis) native "HTMLSelectElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLSelectElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLSelectElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLSelectElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "HTMLSelectElement___setter___Callback";
-
-  static add_Callback_2(mthis, element, before) native "HTMLSelectElement_add_Callback";
-
-  static checkValidity_Callback(mthis) native "HTMLSelectElement_checkValidity_Callback";
-
-  static item_Callback_1(mthis, index) native "HTMLSelectElement_item_Callback";
-
-  static namedItem_Callback_1(mthis, name) native "HTMLSelectElement_namedItem_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLSelectElement_setCustomValidity_Callback";
 }
 
-class BlinkHTMLShadowElement {
-  static getDistributedNodes_Callback(mthis) native "HTMLShadowElement_getDistributedNodes_Callback";
+class BlinkHTMLShadowElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLShadowElement();
+
+  static getDistributedNodes_Callback_0(mthis) native "HTMLShadowElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_0_(mthis) => getDistributedNodes_Callback_0(mthis);
+
+  static getDistributedNodes_Callback_1(mthis, __arg_0) native "HTMLShadowElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_1_(mthis, __arg_0) => getDistributedNodes_Callback_1(mthis, __arg_0);
+
+  static getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1) native "HTMLShadowElement_getDistributedNodes_Callback";
+  getDistributedNodes_Callback_2_(mthis, __arg_0, __arg_1) => getDistributedNodes_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkHTMLSourceElement {
+class BlinkHTMLSourceElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLSourceElement();
+
   static integrity_Getter(mthis) native "HTMLSourceElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLSourceElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLSourceElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static media_Getter(mthis) native "HTMLSourceElement_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
 
-  static media_Setter(mthis, value) native "HTMLSourceElement_media_Setter";
+  static media_Setter(mthis, __arg_0) native "HTMLSourceElement_media_Setter";
+  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
 
   static sizes_Getter(mthis) native "HTMLSourceElement_sizes_Getter";
+  sizes_Getter_(mthis) => sizes_Getter(mthis);
 
-  static sizes_Setter(mthis, value) native "HTMLSourceElement_sizes_Setter";
+  static sizes_Setter(mthis, __arg_0) native "HTMLSourceElement_sizes_Setter";
+  sizes_Setter_(mthis, __arg_0) => sizes_Setter(mthis, __arg_0);
 
   static src_Getter(mthis) native "HTMLSourceElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLSourceElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLSourceElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static srcset_Getter(mthis) native "HTMLSourceElement_srcset_Getter";
+  srcset_Getter_(mthis) => srcset_Getter(mthis);
 
-  static srcset_Setter(mthis, value) native "HTMLSourceElement_srcset_Setter";
+  static srcset_Setter(mthis, __arg_0) native "HTMLSourceElement_srcset_Setter";
+  srcset_Setter_(mthis, __arg_0) => srcset_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "HTMLSourceElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLSourceElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLSourceElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLSpanElement {}
+class BlinkHTMLSpanElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLSpanElement();
 
-class BlinkHTMLStyleElement {
+}
+
+class BlinkHTMLStyleElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLStyleElement();
+
   static disabled_Getter(mthis) native "HTMLStyleElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLStyleElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLStyleElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static media_Getter(mthis) native "HTMLStyleElement_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
 
-  static media_Setter(mthis, value) native "HTMLStyleElement_media_Setter";
+  static media_Setter(mthis, __arg_0) native "HTMLStyleElement_media_Setter";
+  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
 
   static sheet_Getter(mthis) native "HTMLStyleElement_sheet_Getter";
+  sheet_Getter_(mthis) => sheet_Getter(mthis);
 
   static type_Getter(mthis) native "HTMLStyleElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "HTMLStyleElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "HTMLStyleElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLTableCaptionElement {}
+class BlinkHTMLTableCaptionElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableCaptionElement();
 
-class BlinkHTMLTableCellElement {
+}
+
+class BlinkHTMLTableCellElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableCellElement();
+
   static cellIndex_Getter(mthis) native "HTMLTableCellElement_cellIndex_Getter";
+  cellIndex_Getter_(mthis) => cellIndex_Getter(mthis);
 
   static colSpan_Getter(mthis) native "HTMLTableCellElement_colSpan_Getter";
+  colSpan_Getter_(mthis) => colSpan_Getter(mthis);
 
-  static colSpan_Setter(mthis, value) native "HTMLTableCellElement_colSpan_Setter";
+  static colSpan_Setter(mthis, __arg_0) native "HTMLTableCellElement_colSpan_Setter";
+  colSpan_Setter_(mthis, __arg_0) => colSpan_Setter(mthis, __arg_0);
 
   static headers_Getter(mthis) native "HTMLTableCellElement_headers_Getter";
+  headers_Getter_(mthis) => headers_Getter(mthis);
 
-  static headers_Setter(mthis, value) native "HTMLTableCellElement_headers_Setter";
+  static headers_Setter(mthis, __arg_0) native "HTMLTableCellElement_headers_Setter";
+  headers_Setter_(mthis, __arg_0) => headers_Setter(mthis, __arg_0);
 
   static rowSpan_Getter(mthis) native "HTMLTableCellElement_rowSpan_Getter";
+  rowSpan_Getter_(mthis) => rowSpan_Getter(mthis);
 
-  static rowSpan_Setter(mthis, value) native "HTMLTableCellElement_rowSpan_Setter";
+  static rowSpan_Setter(mthis, __arg_0) native "HTMLTableCellElement_rowSpan_Setter";
+  rowSpan_Setter_(mthis, __arg_0) => rowSpan_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLTableColElement {
+class BlinkHTMLTableColElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableColElement();
+
   static span_Getter(mthis) native "HTMLTableColElement_span_Getter";
+  span_Getter_(mthis) => span_Getter(mthis);
 
-  static span_Setter(mthis, value) native "HTMLTableColElement_span_Setter";
+  static span_Setter(mthis, __arg_0) native "HTMLTableColElement_span_Setter";
+  span_Setter_(mthis, __arg_0) => span_Setter(mthis, __arg_0);
+
 }
 
-class BlinkHTMLTableElement {
-  static caption_Getter(mthis) native "HTMLTableElement_caption_Getter";
+class BlinkHTMLTableElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableElement();
 
-  static caption_Setter(mthis, value) native "HTMLTableElement_caption_Setter";
+  static border_Getter(mthis) native "HTMLTableElement_border_Getter";
+  border_Getter_(mthis) => border_Getter(mthis);
+
+  static border_Setter(mthis, __arg_0) native "HTMLTableElement_border_Setter";
+  border_Setter_(mthis, __arg_0) => border_Setter(mthis, __arg_0);
+
+  static caption_Getter(mthis) native "HTMLTableElement_caption_Getter";
+  caption_Getter_(mthis) => caption_Getter(mthis);
+
+  static caption_Setter(mthis, __arg_0) native "HTMLTableElement_caption_Setter";
+  caption_Setter_(mthis, __arg_0) => caption_Setter(mthis, __arg_0);
+
+  static createCaption_Callback_0(mthis) native "HTMLTableElement_createCaption_Callback";
+  createCaption_Callback_0_(mthis) => createCaption_Callback_0(mthis);
+
+  static createCaption_Callback_1(mthis, __arg_0) native "HTMLTableElement_createCaption_Callback";
+  createCaption_Callback_1_(mthis, __arg_0) => createCaption_Callback_1(mthis, __arg_0);
+
+  static createCaption_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createCaption_Callback";
+  createCaption_Callback_2_(mthis, __arg_0, __arg_1) => createCaption_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTBody_Callback_0(mthis) native "HTMLTableElement_createTBody_Callback";
+  createTBody_Callback_0_(mthis) => createTBody_Callback_0(mthis);
+
+  static createTBody_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTBody_Callback";
+  createTBody_Callback_1_(mthis, __arg_0) => createTBody_Callback_1(mthis, __arg_0);
+
+  static createTBody_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTBody_Callback";
+  createTBody_Callback_2_(mthis, __arg_0, __arg_1) => createTBody_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTFoot_Callback_0(mthis) native "HTMLTableElement_createTFoot_Callback";
+  createTFoot_Callback_0_(mthis) => createTFoot_Callback_0(mthis);
+
+  static createTFoot_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTFoot_Callback";
+  createTFoot_Callback_1_(mthis, __arg_0) => createTFoot_Callback_1(mthis, __arg_0);
+
+  static createTFoot_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTFoot_Callback";
+  createTFoot_Callback_2_(mthis, __arg_0, __arg_1) => createTFoot_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createTHead_Callback_0(mthis) native "HTMLTableElement_createTHead_Callback";
+  createTHead_Callback_0_(mthis) => createTHead_Callback_0(mthis);
+
+  static createTHead_Callback_1(mthis, __arg_0) native "HTMLTableElement_createTHead_Callback";
+  createTHead_Callback_1_(mthis, __arg_0) => createTHead_Callback_1(mthis, __arg_0);
+
+  static createTHead_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_createTHead_Callback";
+  createTHead_Callback_2_(mthis, __arg_0, __arg_1) => createTHead_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteCaption_Callback_0(mthis) native "HTMLTableElement_deleteCaption_Callback";
+  deleteCaption_Callback_0_(mthis) => deleteCaption_Callback_0(mthis);
+
+  static deleteCaption_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteCaption_Callback";
+  deleteCaption_Callback_1_(mthis, __arg_0) => deleteCaption_Callback_1(mthis, __arg_0);
+
+  static deleteCaption_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteCaption_Callback";
+  deleteCaption_Callback_2_(mthis, __arg_0, __arg_1) => deleteCaption_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRow_Callback_0(mthis) native "HTMLTableElement_deleteRow_Callback";
+  deleteRow_Callback_0_(mthis) => deleteRow_Callback_0(mthis);
+
+  static deleteRow_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteRow_Callback";
+  deleteRow_Callback_1_(mthis, __arg_0) => deleteRow_Callback_1(mthis, __arg_0);
+
+  static deleteRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteRow_Callback";
+  deleteRow_Callback_2_(mthis, __arg_0, __arg_1) => deleteRow_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableElement_deleteRow_Callback";
+  deleteRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteTFoot_Callback_0(mthis) native "HTMLTableElement_deleteTFoot_Callback";
+  deleteTFoot_Callback_0_(mthis) => deleteTFoot_Callback_0(mthis);
+
+  static deleteTFoot_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteTFoot_Callback";
+  deleteTFoot_Callback_1_(mthis, __arg_0) => deleteTFoot_Callback_1(mthis, __arg_0);
+
+  static deleteTFoot_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteTFoot_Callback";
+  deleteTFoot_Callback_2_(mthis, __arg_0, __arg_1) => deleteTFoot_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteTHead_Callback_0(mthis) native "HTMLTableElement_deleteTHead_Callback";
+  deleteTHead_Callback_0_(mthis) => deleteTHead_Callback_0(mthis);
+
+  static deleteTHead_Callback_1(mthis, __arg_0) native "HTMLTableElement_deleteTHead_Callback";
+  deleteTHead_Callback_1_(mthis, __arg_0) => deleteTHead_Callback_1(mthis, __arg_0);
+
+  static deleteTHead_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_deleteTHead_Callback";
+  deleteTHead_Callback_2_(mthis, __arg_0, __arg_1) => deleteTHead_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRow_Callback_0(mthis) native "HTMLTableElement_insertRow_Callback";
+  insertRow_Callback_0_(mthis) => insertRow_Callback_0(mthis);
+
+  static insertRow_Callback_1(mthis, __arg_0) native "HTMLTableElement_insertRow_Callback";
+  insertRow_Callback_1_(mthis, __arg_0) => insertRow_Callback_1(mthis, __arg_0);
+
+  static insertRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableElement_insertRow_Callback";
+  insertRow_Callback_2_(mthis, __arg_0, __arg_1) => insertRow_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableElement_insertRow_Callback";
+  insertRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static rows_Getter(mthis) native "HTMLTableElement_rows_Getter";
+  rows_Getter_(mthis) => rows_Getter(mthis);
 
   static tBodies_Getter(mthis) native "HTMLTableElement_tBodies_Getter";
+  tBodies_Getter_(mthis) => tBodies_Getter(mthis);
 
   static tFoot_Getter(mthis) native "HTMLTableElement_tFoot_Getter";
+  tFoot_Getter_(mthis) => tFoot_Getter(mthis);
 
-  static tFoot_Setter(mthis, value) native "HTMLTableElement_tFoot_Setter";
+  static tFoot_Setter(mthis, __arg_0) native "HTMLTableElement_tFoot_Setter";
+  tFoot_Setter_(mthis, __arg_0) => tFoot_Setter(mthis, __arg_0);
 
   static tHead_Getter(mthis) native "HTMLTableElement_tHead_Getter";
+  tHead_Getter_(mthis) => tHead_Getter(mthis);
 
-  static tHead_Setter(mthis, value) native "HTMLTableElement_tHead_Setter";
+  static tHead_Setter(mthis, __arg_0) native "HTMLTableElement_tHead_Setter";
+  tHead_Setter_(mthis, __arg_0) => tHead_Setter(mthis, __arg_0);
 
-  static createCaption_Callback(mthis) native "HTMLTableElement_createCaption_Callback";
-
-  static createTBody_Callback(mthis) native "HTMLTableElement_createTBody_Callback";
-
-  static createTFoot_Callback(mthis) native "HTMLTableElement_createTFoot_Callback";
-
-  static createTHead_Callback(mthis) native "HTMLTableElement_createTHead_Callback";
-
-  static deleteCaption_Callback(mthis) native "HTMLTableElement_deleteCaption_Callback";
-
-  static deleteRow_Callback_1(mthis, index) native "HTMLTableElement_deleteRow_Callback";
-
-  static deleteTFoot_Callback(mthis) native "HTMLTableElement_deleteTFoot_Callback";
-
-  static deleteTHead_Callback(mthis) native "HTMLTableElement_deleteTHead_Callback";
-
-  static insertRow_Callback_1(mthis, index) native "HTMLTableElement_insertRow_Callback";
-
-  static insertRow_Callback(mthis) native "HTMLTableElement_insertRow_Callback";
 }
 
-class BlinkHTMLTableRowElement {
+class BlinkHTMLTableRowElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableRowElement();
+
   static cells_Getter(mthis) native "HTMLTableRowElement_cells_Getter";
+  cells_Getter_(mthis) => cells_Getter(mthis);
+
+  static deleteCell_Callback_0(mthis) native "HTMLTableRowElement_deleteCell_Callback";
+  deleteCell_Callback_0_(mthis) => deleteCell_Callback_0(mthis);
+
+  static deleteCell_Callback_1(mthis, __arg_0) native "HTMLTableRowElement_deleteCell_Callback";
+  deleteCell_Callback_1_(mthis, __arg_0) => deleteCell_Callback_1(mthis, __arg_0);
+
+  static deleteCell_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableRowElement_deleteCell_Callback";
+  deleteCell_Callback_2_(mthis, __arg_0, __arg_1) => deleteCell_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableRowElement_deleteCell_Callback";
+  deleteCell_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertCell_Callback_0(mthis) native "HTMLTableRowElement_insertCell_Callback";
+  insertCell_Callback_0_(mthis) => insertCell_Callback_0(mthis);
+
+  static insertCell_Callback_1(mthis, __arg_0) native "HTMLTableRowElement_insertCell_Callback";
+  insertCell_Callback_1_(mthis, __arg_0) => insertCell_Callback_1(mthis, __arg_0);
+
+  static insertCell_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableRowElement_insertCell_Callback";
+  insertCell_Callback_2_(mthis, __arg_0, __arg_1) => insertCell_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableRowElement_insertCell_Callback";
+  insertCell_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertCell_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static rowIndex_Getter(mthis) native "HTMLTableRowElement_rowIndex_Getter";
+  rowIndex_Getter_(mthis) => rowIndex_Getter(mthis);
 
   static sectionRowIndex_Getter(mthis) native "HTMLTableRowElement_sectionRowIndex_Getter";
+  sectionRowIndex_Getter_(mthis) => sectionRowIndex_Getter(mthis);
 
-  static deleteCell_Callback_1(mthis, index) native "HTMLTableRowElement_deleteCell_Callback";
-
-  static insertCell_Callback_1(mthis, index) native "HTMLTableRowElement_insertCell_Callback";
-
-  static insertCell_Callback(mthis) native "HTMLTableRowElement_insertCell_Callback";
 }
 
-class BlinkHTMLTableSectionElement {
+class BlinkHTMLTableSectionElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTableSectionElement();
+
+  static deleteRow_Callback_0(mthis) native "HTMLTableSectionElement_deleteRow_Callback";
+  deleteRow_Callback_0_(mthis) => deleteRow_Callback_0(mthis);
+
+  static deleteRow_Callback_1(mthis, __arg_0) native "HTMLTableSectionElement_deleteRow_Callback";
+  deleteRow_Callback_1_(mthis, __arg_0) => deleteRow_Callback_1(mthis, __arg_0);
+
+  static deleteRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableSectionElement_deleteRow_Callback";
+  deleteRow_Callback_2_(mthis, __arg_0, __arg_1) => deleteRow_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableSectionElement_deleteRow_Callback";
+  deleteRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertRow_Callback_0(mthis) native "HTMLTableSectionElement_insertRow_Callback";
+  insertRow_Callback_0_(mthis) => insertRow_Callback_0(mthis);
+
+  static insertRow_Callback_1(mthis, __arg_0) native "HTMLTableSectionElement_insertRow_Callback";
+  insertRow_Callback_1_(mthis, __arg_0) => insertRow_Callback_1(mthis, __arg_0);
+
+  static insertRow_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTableSectionElement_insertRow_Callback";
+  insertRow_Callback_2_(mthis, __arg_0, __arg_1) => insertRow_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTableSectionElement_insertRow_Callback";
+  insertRow_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertRow_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static rows_Getter(mthis) native "HTMLTableSectionElement_rows_Getter";
+  rows_Getter_(mthis) => rows_Getter(mthis);
 
-  static deleteRow_Callback_1(mthis, index) native "HTMLTableSectionElement_deleteRow_Callback";
-
-  static insertRow_Callback_1(mthis, index) native "HTMLTableSectionElement_insertRow_Callback";
-
-  static insertRow_Callback(mthis) native "HTMLTableSectionElement_insertRow_Callback";
 }
 
-class BlinkHTMLTemplateElement {
+class BlinkHTMLTemplateElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTemplateElement();
+
   static content_Getter(mthis) native "HTMLTemplateElement_content_Getter";
+  content_Getter_(mthis) => content_Getter(mthis);
+
 }
 
-class BlinkHTMLTextAreaElement {
-  static autofocus_Getter(mthis) native "HTMLTextAreaElement_autofocus_Getter";
+class BlinkHTMLTextAreaElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTextAreaElement();
 
-  static autofocus_Setter(mthis, value) native "HTMLTextAreaElement_autofocus_Setter";
+  static autofocus_Getter(mthis) native "HTMLTextAreaElement_autofocus_Getter";
+  autofocus_Getter_(mthis) => autofocus_Getter(mthis);
+
+  static autofocus_Setter(mthis, __arg_0) native "HTMLTextAreaElement_autofocus_Setter";
+  autofocus_Setter_(mthis, __arg_0) => autofocus_Setter(mthis, __arg_0);
+
+  static checkValidity_Callback_0(mthis) native "HTMLTextAreaElement_checkValidity_Callback";
+  checkValidity_Callback_0_(mthis) => checkValidity_Callback_0(mthis);
+
+  static checkValidity_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_checkValidity_Callback";
+  checkValidity_Callback_1_(mthis, __arg_0) => checkValidity_Callback_1(mthis, __arg_0);
+
+  static checkValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_checkValidity_Callback";
+  checkValidity_Callback_2_(mthis, __arg_0, __arg_1) => checkValidity_Callback_2(mthis, __arg_0, __arg_1);
 
   static cols_Getter(mthis) native "HTMLTextAreaElement_cols_Getter";
+  cols_Getter_(mthis) => cols_Getter(mthis);
 
-  static cols_Setter(mthis, value) native "HTMLTextAreaElement_cols_Setter";
+  static cols_Setter(mthis, __arg_0) native "HTMLTextAreaElement_cols_Setter";
+  cols_Setter_(mthis, __arg_0) => cols_Setter(mthis, __arg_0);
 
   static defaultValue_Getter(mthis) native "HTMLTextAreaElement_defaultValue_Getter";
+  defaultValue_Getter_(mthis) => defaultValue_Getter(mthis);
 
-  static defaultValue_Setter(mthis, value) native "HTMLTextAreaElement_defaultValue_Setter";
+  static defaultValue_Setter(mthis, __arg_0) native "HTMLTextAreaElement_defaultValue_Setter";
+  defaultValue_Setter_(mthis, __arg_0) => defaultValue_Setter(mthis, __arg_0);
 
   static dirName_Getter(mthis) native "HTMLTextAreaElement_dirName_Getter";
+  dirName_Getter_(mthis) => dirName_Getter(mthis);
 
-  static dirName_Setter(mthis, value) native "HTMLTextAreaElement_dirName_Setter";
+  static dirName_Setter(mthis, __arg_0) native "HTMLTextAreaElement_dirName_Setter";
+  dirName_Setter_(mthis, __arg_0) => dirName_Setter(mthis, __arg_0);
 
   static disabled_Getter(mthis) native "HTMLTextAreaElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
 
-  static disabled_Setter(mthis, value) native "HTMLTextAreaElement_disabled_Setter";
+  static disabled_Setter(mthis, __arg_0) native "HTMLTextAreaElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static form_Getter(mthis) native "HTMLTextAreaElement_form_Getter";
+  form_Getter_(mthis) => form_Getter(mthis);
 
   static inputMode_Getter(mthis) native "HTMLTextAreaElement_inputMode_Getter";
+  inputMode_Getter_(mthis) => inputMode_Getter(mthis);
 
-  static inputMode_Setter(mthis, value) native "HTMLTextAreaElement_inputMode_Setter";
+  static inputMode_Setter(mthis, __arg_0) native "HTMLTextAreaElement_inputMode_Setter";
+  inputMode_Setter_(mthis, __arg_0) => inputMode_Setter(mthis, __arg_0);
 
   static labels_Getter(mthis) native "HTMLTextAreaElement_labels_Getter";
+  labels_Getter_(mthis) => labels_Getter(mthis);
 
   static maxLength_Getter(mthis) native "HTMLTextAreaElement_maxLength_Getter";
+  maxLength_Getter_(mthis) => maxLength_Getter(mthis);
 
-  static maxLength_Setter(mthis, value) native "HTMLTextAreaElement_maxLength_Setter";
+  static maxLength_Setter(mthis, __arg_0) native "HTMLTextAreaElement_maxLength_Setter";
+  maxLength_Setter_(mthis, __arg_0) => maxLength_Setter(mthis, __arg_0);
 
   static name_Getter(mthis) native "HTMLTextAreaElement_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "HTMLTextAreaElement_name_Setter";
+  static name_Setter(mthis, __arg_0) native "HTMLTextAreaElement_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static placeholder_Getter(mthis) native "HTMLTextAreaElement_placeholder_Getter";
+  placeholder_Getter_(mthis) => placeholder_Getter(mthis);
 
-  static placeholder_Setter(mthis, value) native "HTMLTextAreaElement_placeholder_Setter";
+  static placeholder_Setter(mthis, __arg_0) native "HTMLTextAreaElement_placeholder_Setter";
+  placeholder_Setter_(mthis, __arg_0) => placeholder_Setter(mthis, __arg_0);
 
   static readOnly_Getter(mthis) native "HTMLTextAreaElement_readOnly_Getter";
+  readOnly_Getter_(mthis) => readOnly_Getter(mthis);
 
-  static readOnly_Setter(mthis, value) native "HTMLTextAreaElement_readOnly_Setter";
+  static readOnly_Setter(mthis, __arg_0) native "HTMLTextAreaElement_readOnly_Setter";
+  readOnly_Setter_(mthis, __arg_0) => readOnly_Setter(mthis, __arg_0);
 
   static required_Getter(mthis) native "HTMLTextAreaElement_required_Getter";
+  required_Getter_(mthis) => required_Getter(mthis);
 
-  static required_Setter(mthis, value) native "HTMLTextAreaElement_required_Setter";
+  static required_Setter(mthis, __arg_0) native "HTMLTextAreaElement_required_Setter";
+  required_Setter_(mthis, __arg_0) => required_Setter(mthis, __arg_0);
 
   static rows_Getter(mthis) native "HTMLTextAreaElement_rows_Getter";
+  rows_Getter_(mthis) => rows_Getter(mthis);
 
-  static rows_Setter(mthis, value) native "HTMLTextAreaElement_rows_Setter";
+  static rows_Setter(mthis, __arg_0) native "HTMLTextAreaElement_rows_Setter";
+  rows_Setter_(mthis, __arg_0) => rows_Setter(mthis, __arg_0);
+
+  static select_Callback_0(mthis) native "HTMLTextAreaElement_select_Callback";
+  select_Callback_0_(mthis) => select_Callback_0(mthis);
+
+  static select_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_select_Callback";
+  select_Callback_1_(mthis, __arg_0) => select_Callback_1(mthis, __arg_0);
+
+  static select_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_select_Callback";
+  select_Callback_2_(mthis, __arg_0, __arg_1) => select_Callback_2(mthis, __arg_0, __arg_1);
 
   static selectionDirection_Getter(mthis) native "HTMLTextAreaElement_selectionDirection_Getter";
+  selectionDirection_Getter_(mthis) => selectionDirection_Getter(mthis);
 
-  static selectionDirection_Setter(mthis, value) native "HTMLTextAreaElement_selectionDirection_Setter";
+  static selectionDirection_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionDirection_Setter";
+  selectionDirection_Setter_(mthis, __arg_0) => selectionDirection_Setter(mthis, __arg_0);
 
   static selectionEnd_Getter(mthis) native "HTMLTextAreaElement_selectionEnd_Getter";
+  selectionEnd_Getter_(mthis) => selectionEnd_Getter(mthis);
 
-  static selectionEnd_Setter(mthis, value) native "HTMLTextAreaElement_selectionEnd_Setter";
+  static selectionEnd_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionEnd_Setter";
+  selectionEnd_Setter_(mthis, __arg_0) => selectionEnd_Setter(mthis, __arg_0);
 
   static selectionStart_Getter(mthis) native "HTMLTextAreaElement_selectionStart_Getter";
+  selectionStart_Getter_(mthis) => selectionStart_Getter(mthis);
 
-  static selectionStart_Setter(mthis, value) native "HTMLTextAreaElement_selectionStart_Setter";
+  static selectionStart_Setter(mthis, __arg_0) native "HTMLTextAreaElement_selectionStart_Setter";
+  selectionStart_Setter_(mthis, __arg_0) => selectionStart_Setter(mthis, __arg_0);
+
+  static setCustomValidity_Callback_0(mthis) native "HTMLTextAreaElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_0_(mthis) => setCustomValidity_Callback_0(mthis);
+
+  static setCustomValidity_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_1_(mthis, __arg_0) => setCustomValidity_Callback_1(mthis, __arg_0);
+
+  static setCustomValidity_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_2_(mthis, __arg_0, __arg_1) => setCustomValidity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setCustomValidity_Callback";
+  setCustomValidity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCustomValidity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRangeText_Callback_0(mthis) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_0_(mthis) => setRangeText_Callback_0(mthis);
+
+  static setRangeText_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_1_(mthis, __arg_0) => setRangeText_Callback_1(mthis, __arg_0);
+
+  static setRangeText_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_2_(mthis, __arg_0, __arg_1) => setRangeText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRangeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRangeText_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRangeText_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HTMLTextAreaElement_setRangeText_Callback";
+  setRangeText_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setRangeText_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static setSelectionRange_Callback_0(mthis) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_0_(mthis) => setSelectionRange_Callback_0(mthis);
+
+  static setSelectionRange_Callback_1(mthis, __arg_0) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_1_(mthis, __arg_0) => setSelectionRange_Callback_1(mthis, __arg_0);
+
+  static setSelectionRange_Callback_2(mthis, __arg_0, __arg_1) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_2_(mthis, __arg_0, __arg_1) => setSelectionRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSelectionRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setSelectionRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HTMLTextAreaElement_setSelectionRange_Callback";
+  setSelectionRange_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setSelectionRange_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static textLength_Getter(mthis) native "HTMLTextAreaElement_textLength_Getter";
+  textLength_Getter_(mthis) => textLength_Getter(mthis);
 
   static type_Getter(mthis) native "HTMLTextAreaElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static validationMessage_Getter(mthis) native "HTMLTextAreaElement_validationMessage_Getter";
+  validationMessage_Getter_(mthis) => validationMessage_Getter(mthis);
 
   static validity_Getter(mthis) native "HTMLTextAreaElement_validity_Getter";
+  validity_Getter_(mthis) => validity_Getter(mthis);
 
   static value_Getter(mthis) native "HTMLTextAreaElement_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static value_Setter(mthis, value) native "HTMLTextAreaElement_value_Setter";
+  static value_Setter(mthis, __arg_0) native "HTMLTextAreaElement_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
 
   static willValidate_Getter(mthis) native "HTMLTextAreaElement_willValidate_Getter";
+  willValidate_Getter_(mthis) => willValidate_Getter(mthis);
 
   static wrap_Getter(mthis) native "HTMLTextAreaElement_wrap_Getter";
+  wrap_Getter_(mthis) => wrap_Getter(mthis);
 
-  static wrap_Setter(mthis, value) native "HTMLTextAreaElement_wrap_Setter";
+  static wrap_Setter(mthis, __arg_0) native "HTMLTextAreaElement_wrap_Setter";
+  wrap_Setter_(mthis, __arg_0) => wrap_Setter(mthis, __arg_0);
 
-  static checkValidity_Callback(mthis) native "HTMLTextAreaElement_checkValidity_Callback";
-
-  static select_Callback(mthis) native "HTMLTextAreaElement_select_Callback";
-
-  static setCustomValidity_Callback_1(mthis, error) native "HTMLTextAreaElement_setCustomValidity_Callback";
-
-  static setRangeText_Callback_1(mthis, replacement) native "HTMLTextAreaElement_setRangeText_Callback";
-
-  static setRangeText_Callback_4(mthis, replacement, start, end, selectionMode) native "HTMLTextAreaElement_setRangeText_Callback";
-
-  static setSelectionRange_Callback_3(mthis, start, end, direction) native "HTMLTextAreaElement_setSelectionRange_Callback";
-
-  static setSelectionRange_Callback_2(mthis, start, end) native "HTMLTextAreaElement_setSelectionRange_Callback";
 }
 
-class BlinkHTMLTitleElement {}
+class BlinkHTMLTitleElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTitleElement();
 
-class BlinkHTMLTrackElement {
+}
+
+class BlinkHTMLTrackElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLTrackElement();
+
   static default_Getter(mthis) native "HTMLTrackElement_default_Getter";
+  default_Getter_(mthis) => default_Getter(mthis);
 
-  static default_Setter(mthis, value) native "HTMLTrackElement_default_Setter";
+  static default_Setter(mthis, __arg_0) native "HTMLTrackElement_default_Setter";
+  default_Setter_(mthis, __arg_0) => default_Setter(mthis, __arg_0);
 
   static integrity_Getter(mthis) native "HTMLTrackElement_integrity_Getter";
+  integrity_Getter_(mthis) => integrity_Getter(mthis);
 
-  static integrity_Setter(mthis, value) native "HTMLTrackElement_integrity_Setter";
+  static integrity_Setter(mthis, __arg_0) native "HTMLTrackElement_integrity_Setter";
+  integrity_Setter_(mthis, __arg_0) => integrity_Setter(mthis, __arg_0);
 
   static kind_Getter(mthis) native "HTMLTrackElement_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
-  static kind_Setter(mthis, value) native "HTMLTrackElement_kind_Setter";
+  static kind_Setter(mthis, __arg_0) native "HTMLTrackElement_kind_Setter";
+  kind_Setter_(mthis, __arg_0) => kind_Setter(mthis, __arg_0);
 
   static label_Getter(mthis) native "HTMLTrackElement_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static label_Setter(mthis, value) native "HTMLTrackElement_label_Setter";
+  static label_Setter(mthis, __arg_0) native "HTMLTrackElement_label_Setter";
+  label_Setter_(mthis, __arg_0) => label_Setter(mthis, __arg_0);
 
   static readyState_Getter(mthis) native "HTMLTrackElement_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static src_Getter(mthis) native "HTMLTrackElement_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "HTMLTrackElement_src_Setter";
+  static src_Setter(mthis, __arg_0) native "HTMLTrackElement_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static srclang_Getter(mthis) native "HTMLTrackElement_srclang_Getter";
+  srclang_Getter_(mthis) => srclang_Getter(mthis);
 
-  static srclang_Setter(mthis, value) native "HTMLTrackElement_srclang_Setter";
+  static srclang_Setter(mthis, __arg_0) native "HTMLTrackElement_srclang_Setter";
+  srclang_Setter_(mthis, __arg_0) => srclang_Setter(mthis, __arg_0);
 
   static track_Getter(mthis) native "HTMLTrackElement_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
+
 }
 
-class BlinkHTMLUListElement {}
+class BlinkHTMLUListElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLUListElement();
 
-class BlinkHTMLUnknownElement {}
+}
 
-class BlinkHTMLVideoElement {
+class BlinkHTMLUnknownElement extends BlinkHTMLElement {
+  static final instance = new BlinkHTMLUnknownElement();
+
+}
+
+class BlinkHTMLVideoElement extends BlinkHTMLMediaElement {
+  static final instance = new BlinkHTMLVideoElement();
+
+  static getVideoPlaybackQuality_Callback_0(mthis) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
+  getVideoPlaybackQuality_Callback_0_(mthis) => getVideoPlaybackQuality_Callback_0(mthis);
+
+  static getVideoPlaybackQuality_Callback_1(mthis, __arg_0) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
+  getVideoPlaybackQuality_Callback_1_(mthis, __arg_0) => getVideoPlaybackQuality_Callback_1(mthis, __arg_0);
+
+  static getVideoPlaybackQuality_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
+  getVideoPlaybackQuality_Callback_2_(mthis, __arg_0, __arg_1) => getVideoPlaybackQuality_Callback_2(mthis, __arg_0, __arg_1);
+
   static height_Getter(mthis) native "HTMLVideoElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "HTMLVideoElement_height_Setter";
+  static height_Setter(mthis, __arg_0) native "HTMLVideoElement_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static poster_Getter(mthis) native "HTMLVideoElement_poster_Getter";
+  poster_Getter_(mthis) => poster_Getter(mthis);
 
-  static poster_Setter(mthis, value) native "HTMLVideoElement_poster_Setter";
+  static poster_Setter(mthis, __arg_0) native "HTMLVideoElement_poster_Setter";
+  poster_Setter_(mthis, __arg_0) => poster_Setter(mthis, __arg_0);
 
   static videoHeight_Getter(mthis) native "HTMLVideoElement_videoHeight_Getter";
+  videoHeight_Getter_(mthis) => videoHeight_Getter(mthis);
 
   static videoWidth_Getter(mthis) native "HTMLVideoElement_videoWidth_Getter";
+  videoWidth_Getter_(mthis) => videoWidth_Getter(mthis);
 
   static webkitDecodedFrameCount_Getter(mthis) native "HTMLVideoElement_webkitDecodedFrameCount_Getter";
+  webkitDecodedFrameCount_Getter_(mthis) => webkitDecodedFrameCount_Getter(mthis);
+
+  static webkitDisplayingFullscreen_Getter(mthis) native "HTMLVideoElement_webkitDisplayingFullscreen_Getter";
+  webkitDisplayingFullscreen_Getter_(mthis) => webkitDisplayingFullscreen_Getter(mthis);
 
   static webkitDroppedFrameCount_Getter(mthis) native "HTMLVideoElement_webkitDroppedFrameCount_Getter";
+  webkitDroppedFrameCount_Getter_(mthis) => webkitDroppedFrameCount_Getter(mthis);
+
+  static webkitEnterFullScreen_Callback_0(mthis) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
+  webkitEnterFullScreen_Callback_0_(mthis) => webkitEnterFullScreen_Callback_0(mthis);
+
+  static webkitEnterFullScreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
+  webkitEnterFullScreen_Callback_1_(mthis, __arg_0) => webkitEnterFullScreen_Callback_1(mthis, __arg_0);
+
+  static webkitEnterFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitEnterFullScreen_Callback";
+  webkitEnterFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitEnterFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitEnterFullscreen_Callback_0(mthis) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
+  webkitEnterFullscreen_Callback_0_(mthis) => webkitEnterFullscreen_Callback_0(mthis);
+
+  static webkitEnterFullscreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
+  webkitEnterFullscreen_Callback_1_(mthis, __arg_0) => webkitEnterFullscreen_Callback_1(mthis, __arg_0);
+
+  static webkitEnterFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
+  webkitEnterFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitEnterFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitExitFullScreen_Callback_0(mthis) native "HTMLVideoElement_webkitExitFullScreen_Callback";
+  webkitExitFullScreen_Callback_0_(mthis) => webkitExitFullScreen_Callback_0(mthis);
+
+  static webkitExitFullScreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitExitFullScreen_Callback";
+  webkitExitFullScreen_Callback_1_(mthis, __arg_0) => webkitExitFullScreen_Callback_1(mthis, __arg_0);
+
+  static webkitExitFullScreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitExitFullScreen_Callback";
+  webkitExitFullScreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullScreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitExitFullscreen_Callback_0(mthis) native "HTMLVideoElement_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_0_(mthis) => webkitExitFullscreen_Callback_0(mthis);
+
+  static webkitExitFullscreen_Callback_1(mthis, __arg_0) native "HTMLVideoElement_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_1_(mthis, __arg_0) => webkitExitFullscreen_Callback_1(mthis, __arg_0);
+
+  static webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1) native "HTMLVideoElement_webkitExitFullscreen_Callback";
+  webkitExitFullscreen_Callback_2_(mthis, __arg_0, __arg_1) => webkitExitFullscreen_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitSupportsFullscreen_Getter(mthis) native "HTMLVideoElement_webkitSupportsFullscreen_Getter";
+  webkitSupportsFullscreen_Getter_(mthis) => webkitSupportsFullscreen_Getter(mthis);
 
   static width_Getter(mthis) native "HTMLVideoElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "HTMLVideoElement_width_Setter";
+  static width_Setter(mthis, __arg_0) native "HTMLVideoElement_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
-  static getVideoPlaybackQuality_Callback(mthis) native "HTMLVideoElement_getVideoPlaybackQuality_Callback";
-
-  static webkitEnterFullscreen_Callback(mthis) native "HTMLVideoElement_webkitEnterFullscreen_Callback";
-
-  static webkitExitFullscreen_Callback(mthis) native "HTMLVideoElement_webkitExitFullscreen_Callback";
 }
 
-class BlinkHashChangeEvent {
-  static constructorCallback(type, options) native "HashChangeEvent_constructorCallback";
+class BlinkHashChangeEvent extends BlinkEvent {
+  static final instance = new BlinkHashChangeEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "HashChangeEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static initHashChangeEvent_Callback_0(mthis) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_0_(mthis) => initHashChangeEvent_Callback_0(mthis);
+
+  static initHashChangeEvent_Callback_1(mthis, __arg_0) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_1_(mthis, __arg_0) => initHashChangeEvent_Callback_1(mthis, __arg_0);
+
+  static initHashChangeEvent_Callback_2(mthis, __arg_0, __arg_1) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_2_(mthis, __arg_0, __arg_1) => initHashChangeEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initHashChangeEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initHashChangeEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initHashChangeEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initHashChangeEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initHashChangeEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initHashChangeEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initHashChangeEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initHashChangeEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initHashChangeEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "HashChangeEvent_initHashChangeEvent_Callback";
+  initHashChangeEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initHashChangeEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
   static newURL_Getter(mthis) native "HashChangeEvent_newURL_Getter";
+  newURL_Getter_(mthis) => newURL_Getter(mthis);
 
   static oldURL_Getter(mthis) native "HashChangeEvent_oldURL_Getter";
+  oldURL_Getter_(mthis) => oldURL_Getter(mthis);
 
-  static initHashChangeEvent_Callback_5(mthis, type, canBubble, cancelable, oldURL, newURL) native "HashChangeEvent_initHashChangeEvent_Callback";
 }
 
 class BlinkHeaders {
-  static constructorCallback() native "Headers_constructorCallback";
+  static final instance = new BlinkHeaders();
 
-  static constructorCallback_1(input) native "Headers_constructorCallback";
+  static append_Callback_0(mthis) native "Headers_append_Callback";
+  append_Callback_0_(mthis) => append_Callback_0(mthis);
+
+  static append_Callback_1(mthis, __arg_0) native "Headers_append_Callback";
+  append_Callback_1_(mthis, __arg_0) => append_Callback_1(mthis, __arg_0);
+
+  static append_Callback_2(mthis, __arg_0, __arg_1) native "Headers_append_Callback";
+  append_Callback_2_(mthis, __arg_0, __arg_1) => append_Callback_2(mthis, __arg_0, __arg_1);
+
+  static append_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_append_Callback";
+  append_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => append_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_append_Callback";
+  append_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => append_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_0() native "Headers_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Headers_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Headers_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Headers_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_0(mthis) native "Headers_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "Headers_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "Headers_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_delete_Callback";
+  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static forEach_Callback_0(mthis) native "Headers_forEach_Callback";
+  forEach_Callback_0_(mthis) => forEach_Callback_0(mthis);
+
+  static forEach_Callback_1(mthis, __arg_0) native "Headers_forEach_Callback";
+  forEach_Callback_1_(mthis, __arg_0) => forEach_Callback_1(mthis, __arg_0);
+
+  static forEach_Callback_2(mthis, __arg_0, __arg_1) native "Headers_forEach_Callback";
+  forEach_Callback_2_(mthis, __arg_0, __arg_1) => forEach_Callback_2(mthis, __arg_0, __arg_1);
+
+  static forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_forEach_Callback";
+  forEach_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => forEach_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_forEach_Callback";
+  forEach_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => forEach_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getAll_Callback_0(mthis) native "Headers_getAll_Callback";
+  getAll_Callback_0_(mthis) => getAll_Callback_0(mthis);
+
+  static getAll_Callback_1(mthis, __arg_0) native "Headers_getAll_Callback";
+  getAll_Callback_1_(mthis, __arg_0) => getAll_Callback_1(mthis, __arg_0);
+
+  static getAll_Callback_2(mthis, __arg_0, __arg_1) native "Headers_getAll_Callback";
+  getAll_Callback_2_(mthis, __arg_0, __arg_1) => getAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_getAll_Callback";
+  getAll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static get_Callback_0(mthis) native "Headers_get_Callback";
+  get_Callback_0_(mthis) => get_Callback_0(mthis);
+
+  static get_Callback_1(mthis, __arg_0) native "Headers_get_Callback";
+  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+
+  static get_Callback_2(mthis, __arg_0, __arg_1) native "Headers_get_Callback";
+  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+
+  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_get_Callback";
+  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static has_Callback_0(mthis) native "Headers_has_Callback";
+  has_Callback_0_(mthis) => has_Callback_0(mthis);
+
+  static has_Callback_1(mthis, __arg_0) native "Headers_has_Callback";
+  has_Callback_1_(mthis, __arg_0) => has_Callback_1(mthis, __arg_0);
+
+  static has_Callback_2(mthis, __arg_0, __arg_1) native "Headers_has_Callback";
+  has_Callback_2_(mthis, __arg_0, __arg_1) => has_Callback_2(mthis, __arg_0, __arg_1);
+
+  static has_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_has_Callback";
+  has_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => has_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static set_Callback_0(mthis) native "Headers_set_Callback";
+  set_Callback_0_(mthis) => set_Callback_0(mthis);
+
+  static set_Callback_1(mthis, __arg_0) native "Headers_set_Callback";
+  set_Callback_1_(mthis, __arg_0) => set_Callback_1(mthis, __arg_0);
+
+  static set_Callback_2(mthis, __arg_0, __arg_1) native "Headers_set_Callback";
+  set_Callback_2_(mthis, __arg_0, __arg_1) => set_Callback_2(mthis, __arg_0, __arg_1);
+
+  static set_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Headers_set_Callback";
+  set_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => set_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static set_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Headers_set_Callback";
+  set_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => set_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static size_Getter(mthis) native "Headers_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
-  static forEach_Callback_2(mthis, callback, thisArg) native "Headers_forEach_Callback";
-
-  static forEach_Callback_1(mthis, callback) native "Headers_forEach_Callback";
 }
 
 class BlinkHistory {
+  static final instance = new BlinkHistory();
+
+  static back_Callback_0(mthis) native "History_back_Callback";
+  back_Callback_0_(mthis) => back_Callback_0(mthis);
+
+  static back_Callback_1(mthis, __arg_0) native "History_back_Callback";
+  back_Callback_1_(mthis, __arg_0) => back_Callback_1(mthis, __arg_0);
+
+  static back_Callback_2(mthis, __arg_0, __arg_1) native "History_back_Callback";
+  back_Callback_2_(mthis, __arg_0, __arg_1) => back_Callback_2(mthis, __arg_0, __arg_1);
+
+  static forward_Callback_0(mthis) native "History_forward_Callback";
+  forward_Callback_0_(mthis) => forward_Callback_0(mthis);
+
+  static forward_Callback_1(mthis, __arg_0) native "History_forward_Callback";
+  forward_Callback_1_(mthis, __arg_0) => forward_Callback_1(mthis, __arg_0);
+
+  static forward_Callback_2(mthis, __arg_0, __arg_1) native "History_forward_Callback";
+  forward_Callback_2_(mthis, __arg_0, __arg_1) => forward_Callback_2(mthis, __arg_0, __arg_1);
+
+  static go_Callback_0(mthis) native "History_go_Callback";
+  go_Callback_0_(mthis) => go_Callback_0(mthis);
+
+  static go_Callback_1(mthis, __arg_0) native "History_go_Callback";
+  go_Callback_1_(mthis, __arg_0) => go_Callback_1(mthis, __arg_0);
+
+  static go_Callback_2(mthis, __arg_0, __arg_1) native "History_go_Callback";
+  go_Callback_2_(mthis, __arg_0, __arg_1) => go_Callback_2(mthis, __arg_0, __arg_1);
+
+  static go_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_go_Callback";
+  go_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => go_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "History_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static pushState_Callback_0(mthis) native "History_pushState_Callback";
+  pushState_Callback_0_(mthis) => pushState_Callback_0(mthis);
+
+  static pushState_Callback_1(mthis, __arg_0) native "History_pushState_Callback";
+  pushState_Callback_1_(mthis, __arg_0) => pushState_Callback_1(mthis, __arg_0);
+
+  static pushState_Callback_2(mthis, __arg_0, __arg_1) native "History_pushState_Callback";
+  pushState_Callback_2_(mthis, __arg_0, __arg_1) => pushState_Callback_2(mthis, __arg_0, __arg_1);
+
+  static pushState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_pushState_Callback";
+  pushState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => pushState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static pushState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "History_pushState_Callback";
+  pushState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => pushState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static pushState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "History_pushState_Callback";
+  pushState_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => pushState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static replaceState_Callback_0(mthis) native "History_replaceState_Callback";
+  replaceState_Callback_0_(mthis) => replaceState_Callback_0(mthis);
+
+  static replaceState_Callback_1(mthis, __arg_0) native "History_replaceState_Callback";
+  replaceState_Callback_1_(mthis, __arg_0) => replaceState_Callback_1(mthis, __arg_0);
+
+  static replaceState_Callback_2(mthis, __arg_0, __arg_1) native "History_replaceState_Callback";
+  replaceState_Callback_2_(mthis, __arg_0, __arg_1) => replaceState_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replaceState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "History_replaceState_Callback";
+  replaceState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "History_replaceState_Callback";
+  replaceState_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceState_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static replaceState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "History_replaceState_Callback";
+  replaceState_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => replaceState_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static state_Getter(mthis) native "History_state_Getter";
+  state_Getter_(mthis) => state_Getter(mthis);
 
-  static back_Callback(mthis) native "History_back_Callback";
-
-  static forward_Callback(mthis) native "History_forward_Callback";
-
-  static go_Callback_1(mthis, distance) native "History_go_Callback";
-
-  static pushState_Callback_3(mthis, data, title, url) native "History_pushState_Callback";
-
-  static replaceState_Callback_3(mthis, data, title, url) native "History_replaceState_Callback";
 }
 
 class BlinkIDBCursor {
+  static final instance = new BlinkIDBCursor();
+
+  static advance_Callback_0(mthis) native "IDBCursor_advance_Callback";
+  advance_Callback_0_(mthis) => advance_Callback_0(mthis);
+
+  static advance_Callback_1(mthis, __arg_0) native "IDBCursor_advance_Callback";
+  advance_Callback_1_(mthis, __arg_0) => advance_Callback_1(mthis, __arg_0);
+
+  static advance_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_advance_Callback";
+  advance_Callback_2_(mthis, __arg_0, __arg_1) => advance_Callback_2(mthis, __arg_0, __arg_1);
+
+  static advance_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_advance_Callback";
+  advance_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => advance_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static continuePrimaryKey_Callback_0(mthis) native "IDBCursor_continuePrimaryKey_Callback";
+  continuePrimaryKey_Callback_0_(mthis) => continuePrimaryKey_Callback_0(mthis);
+
+  static continuePrimaryKey_Callback_1(mthis, __arg_0) native "IDBCursor_continuePrimaryKey_Callback";
+  continuePrimaryKey_Callback_1_(mthis, __arg_0) => continuePrimaryKey_Callback_1(mthis, __arg_0);
+
+  static continuePrimaryKey_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_continuePrimaryKey_Callback";
+  continuePrimaryKey_Callback_2_(mthis, __arg_0, __arg_1) => continuePrimaryKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static continuePrimaryKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_continuePrimaryKey_Callback";
+  continuePrimaryKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => continuePrimaryKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static continuePrimaryKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBCursor_continuePrimaryKey_Callback";
+  continuePrimaryKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => continuePrimaryKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static continue_Callback_0(mthis) native "IDBCursor_continue_Callback";
+  continue_Callback_0_(mthis) => continue_Callback_0(mthis);
+
+  static continue_Callback_1(mthis, __arg_0) native "IDBCursor_continue_Callback";
+  continue_Callback_1_(mthis, __arg_0) => continue_Callback_1(mthis, __arg_0);
+
+  static continue_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_continue_Callback";
+  continue_Callback_2_(mthis, __arg_0, __arg_1) => continue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static continue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_continue_Callback";
+  continue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => continue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_0(mthis) native "IDBCursor_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "IDBCursor_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
   static direction_Getter(mthis) native "IDBCursor_direction_Getter";
+  direction_Getter_(mthis) => direction_Getter(mthis);
 
   static key_Getter(mthis) native "IDBCursor_key_Getter";
+  key_Getter_(mthis) => key_Getter(mthis);
 
   static primaryKey_Getter(mthis) native "IDBCursor_primaryKey_Getter";
+  primaryKey_Getter_(mthis) => primaryKey_Getter(mthis);
 
   static source_Getter(mthis) native "IDBCursor_source_Getter";
+  source_Getter_(mthis) => source_Getter(mthis);
 
-  static advance_Callback_1(mthis, count) native "IDBCursor_advance_Callback";
+  static update_Callback_0(mthis) native "IDBCursor_update_Callback";
+  update_Callback_0_(mthis) => update_Callback_0(mthis);
 
-  static continuePrimaryKey_Callback_2(mthis, key, primaryKey) native "IDBCursor_continuePrimaryKey_Callback";
+  static update_Callback_1(mthis, __arg_0) native "IDBCursor_update_Callback";
+  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
 
-  static delete_Callback(mthis) native "IDBCursor_delete_Callback";
+  static update_Callback_2(mthis, __arg_0, __arg_1) native "IDBCursor_update_Callback";
+  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
 
-  static continue_Callback_1(mthis, key) native "IDBCursor_continue_Callback";
+  static update_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBCursor_update_Callback";
+  update_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => update_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static continue_Callback(mthis) native "IDBCursor_continue_Callback";
-
-  static update_Callback_1(mthis, value) native "IDBCursor_update_Callback";
 }
 
-class BlinkIDBCursorWithValue {
+class BlinkIDBCursorWithValue extends BlinkIDBCursor {
+  static final instance = new BlinkIDBCursorWithValue();
+
   static value_Getter(mthis) native "IDBCursorWithValue_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
 }
 
-class BlinkIDBDatabase {
+class BlinkIDBDatabase extends BlinkEventTarget {
+  static final instance = new BlinkIDBDatabase();
+
+  static close_Callback_0(mthis) native "IDBDatabase_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "IDBDatabase_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createObjectStore_Callback_0(mthis) native "IDBDatabase_createObjectStore_Callback";
+  createObjectStore_Callback_0_(mthis) => createObjectStore_Callback_0(mthis);
+
+  static createObjectStore_Callback_1(mthis, __arg_0) native "IDBDatabase_createObjectStore_Callback";
+  createObjectStore_Callback_1_(mthis, __arg_0) => createObjectStore_Callback_1(mthis, __arg_0);
+
+  static createObjectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_createObjectStore_Callback";
+  createObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => createObjectStore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_createObjectStore_Callback";
+  createObjectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createObjectStore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBDatabase_createObjectStore_Callback";
+  createObjectStore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createObjectStore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static deleteObjectStore_Callback_0(mthis) native "IDBDatabase_deleteObjectStore_Callback";
+  deleteObjectStore_Callback_0_(mthis) => deleteObjectStore_Callback_0(mthis);
+
+  static deleteObjectStore_Callback_1(mthis, __arg_0) native "IDBDatabase_deleteObjectStore_Callback";
+  deleteObjectStore_Callback_1_(mthis, __arg_0) => deleteObjectStore_Callback_1(mthis, __arg_0);
+
+  static deleteObjectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_deleteObjectStore_Callback";
+  deleteObjectStore_Callback_2_(mthis, __arg_0, __arg_1) => deleteObjectStore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_deleteObjectStore_Callback";
+  deleteObjectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteObjectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static name_Getter(mthis) native "IDBDatabase_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static objectStoreNames_Getter(mthis) native "IDBDatabase_objectStoreNames_Getter";
+  objectStoreNames_Getter_(mthis) => objectStoreNames_Getter(mthis);
+
+  static onabort_Getter(mthis) native "IDBDatabase_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "IDBDatabase_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "IDBDatabase_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "IDBDatabase_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "IDBDatabase_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "IDBDatabase_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onversionchange_Getter(mthis) native "IDBDatabase_onversionchange_Getter";
+  onversionchange_Getter_(mthis) => onversionchange_Getter(mthis);
+
+  static onversionchange_Setter(mthis, __arg_0) native "IDBDatabase_onversionchange_Setter";
+  onversionchange_Setter_(mthis, __arg_0) => onversionchange_Setter(mthis, __arg_0);
+
+  static transaction_Callback_0(mthis) native "IDBDatabase_transaction_Callback";
+  transaction_Callback_0_(mthis) => transaction_Callback_0(mthis);
+
+  static transaction_Callback_1(mthis, __arg_0) native "IDBDatabase_transaction_Callback";
+  transaction_Callback_1_(mthis, __arg_0) => transaction_Callback_1(mthis, __arg_0);
+
+  static transaction_Callback_2(mthis, __arg_0, __arg_1) native "IDBDatabase_transaction_Callback";
+  transaction_Callback_2_(mthis, __arg_0, __arg_1) => transaction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBDatabase_transaction_Callback";
+  transaction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transaction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBDatabase_transaction_Callback";
+  transaction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transaction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static version_Getter(mthis) native "IDBDatabase_version_Getter";
+  version_Getter_(mthis) => version_Getter(mthis);
 
-  static close_Callback(mthis) native "IDBDatabase_close_Callback";
-
-  static createObjectStore_Callback_2(mthis, name, options) native "IDBDatabase_createObjectStore_Callback";
-
-  static createObjectStore_Callback_1(mthis, name) native "IDBDatabase_createObjectStore_Callback";
-
-  static deleteObjectStore_Callback_1(mthis, name) native "IDBDatabase_deleteObjectStore_Callback";
-
-  static transaction_Callback_1(mthis, storeName_OR_storeNames) native "IDBDatabase_transaction_Callback";
-
-  static transaction_Callback_2(mthis, storeName_OR_storeNames, mode) native "IDBDatabase_transaction_Callback";
 }
 
 class BlinkIDBFactory {
-  static cmp_Callback_2(mthis, first, second) native "IDBFactory_cmp_Callback";
+  static final instance = new BlinkIDBFactory();
 
-  static deleteDatabase_Callback_1(mthis, name) native "IDBFactory_deleteDatabase_Callback";
+  static cmp_Callback_0(mthis) native "IDBFactory_cmp_Callback";
+  cmp_Callback_0_(mthis) => cmp_Callback_0(mthis);
 
-  static open_Callback_2(mthis, name, version) native "IDBFactory_open_Callback";
+  static cmp_Callback_1(mthis, __arg_0) native "IDBFactory_cmp_Callback";
+  cmp_Callback_1_(mthis, __arg_0) => cmp_Callback_1(mthis, __arg_0);
 
-  static open_Callback_1(mthis, name) native "IDBFactory_open_Callback";
+  static cmp_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_cmp_Callback";
+  cmp_Callback_2_(mthis, __arg_0, __arg_1) => cmp_Callback_2(mthis, __arg_0, __arg_1);
 
-  static webkitGetDatabaseNames_Callback(mthis) native "IDBFactory_webkitGetDatabaseNames_Callback";
+  static cmp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_cmp_Callback";
+  cmp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cmp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static cmp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBFactory_cmp_Callback";
+  cmp_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => cmp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static deleteDatabase_Callback_0(mthis) native "IDBFactory_deleteDatabase_Callback";
+  deleteDatabase_Callback_0_(mthis) => deleteDatabase_Callback_0(mthis);
+
+  static deleteDatabase_Callback_1(mthis, __arg_0) native "IDBFactory_deleteDatabase_Callback";
+  deleteDatabase_Callback_1_(mthis, __arg_0) => deleteDatabase_Callback_1(mthis, __arg_0);
+
+  static deleteDatabase_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_deleteDatabase_Callback";
+  deleteDatabase_Callback_2_(mthis, __arg_0, __arg_1) => deleteDatabase_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_deleteDatabase_Callback";
+  deleteDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static open_Callback_0(mthis) native "IDBFactory_open_Callback";
+  open_Callback_0_(mthis) => open_Callback_0(mthis);
+
+  static open_Callback_1(mthis, __arg_0) native "IDBFactory_open_Callback";
+  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+
+  static open_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_open_Callback";
+  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+
+  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBFactory_open_Callback";
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBFactory_open_Callback";
+  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitGetDatabaseNames_Callback_0(mthis) native "IDBFactory_webkitGetDatabaseNames_Callback";
+  webkitGetDatabaseNames_Callback_0_(mthis) => webkitGetDatabaseNames_Callback_0(mthis);
+
+  static webkitGetDatabaseNames_Callback_1(mthis, __arg_0) native "IDBFactory_webkitGetDatabaseNames_Callback";
+  webkitGetDatabaseNames_Callback_1_(mthis, __arg_0) => webkitGetDatabaseNames_Callback_1(mthis, __arg_0);
+
+  static webkitGetDatabaseNames_Callback_2(mthis, __arg_0, __arg_1) native "IDBFactory_webkitGetDatabaseNames_Callback";
+  webkitGetDatabaseNames_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetDatabaseNames_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkIDBIndex {
+  static final instance = new BlinkIDBIndex();
+
+  static count_Callback_0(mthis) native "IDBIndex_count_Callback";
+  count_Callback_0_(mthis) => count_Callback_0(mthis);
+
+  static count_Callback_1(mthis, __arg_0) native "IDBIndex_count_Callback";
+  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
+
+  static count_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_count_Callback";
+  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
+
+  static count_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_count_Callback";
+  count_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => count_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getKey_Callback_0(mthis) native "IDBIndex_getKey_Callback";
+  getKey_Callback_0_(mthis) => getKey_Callback_0(mthis);
+
+  static getKey_Callback_1(mthis, __arg_0) native "IDBIndex_getKey_Callback";
+  getKey_Callback_1_(mthis, __arg_0) => getKey_Callback_1(mthis, __arg_0);
+
+  static getKey_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_getKey_Callback";
+  getKey_Callback_2_(mthis, __arg_0, __arg_1) => getKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_getKey_Callback";
+  getKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static get_Callback_0(mthis) native "IDBIndex_get_Callback";
+  get_Callback_0_(mthis) => get_Callback_0(mthis);
+
+  static get_Callback_1(mthis, __arg_0) native "IDBIndex_get_Callback";
+  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+
+  static get_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_get_Callback";
+  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+
+  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_get_Callback";
+  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static keyPath_Getter(mthis) native "IDBIndex_keyPath_Getter";
+  keyPath_Getter_(mthis) => keyPath_Getter(mthis);
 
   static multiEntry_Getter(mthis) native "IDBIndex_multiEntry_Getter";
+  multiEntry_Getter_(mthis) => multiEntry_Getter(mthis);
 
   static name_Getter(mthis) native "IDBIndex_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static objectStore_Getter(mthis) native "IDBIndex_objectStore_Getter";
+  objectStore_Getter_(mthis) => objectStore_Getter(mthis);
+
+  static openCursor_Callback_0(mthis) native "IDBIndex_openCursor_Callback";
+  openCursor_Callback_0_(mthis) => openCursor_Callback_0(mthis);
+
+  static openCursor_Callback_1(mthis, __arg_0) native "IDBIndex_openCursor_Callback";
+  openCursor_Callback_1_(mthis, __arg_0) => openCursor_Callback_1(mthis, __arg_0);
+
+  static openCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_openCursor_Callback";
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => openCursor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_openCursor_Callback";
+  openCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBIndex_openCursor_Callback";
+  openCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static openKeyCursor_Callback_0(mthis) native "IDBIndex_openKeyCursor_Callback";
+  openKeyCursor_Callback_0_(mthis) => openKeyCursor_Callback_0(mthis);
+
+  static openKeyCursor_Callback_1(mthis, __arg_0) native "IDBIndex_openKeyCursor_Callback";
+  openKeyCursor_Callback_1_(mthis, __arg_0) => openKeyCursor_Callback_1(mthis, __arg_0);
+
+  static openKeyCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBIndex_openKeyCursor_Callback";
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => openKeyCursor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBIndex_openKeyCursor_Callback";
+  openKeyCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBIndex_openKeyCursor_Callback";
+  openKeyCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static unique_Getter(mthis) native "IDBIndex_unique_Getter";
+  unique_Getter_(mthis) => unique_Getter(mthis);
 
-  static count_Callback_1(mthis, key) native "IDBIndex_count_Callback";
-
-  static get_Callback_1(mthis, key) native "IDBIndex_get_Callback";
-
-  static getKey_Callback_1(mthis, key) native "IDBIndex_getKey_Callback";
-
-  static openCursor_Callback_2(mthis, range, direction) native "IDBIndex_openCursor_Callback";
-
-  static openCursor_Callback_1(mthis, range) native "IDBIndex_openCursor_Callback";
-
-  static openKeyCursor_Callback_2(mthis, range, direction) native "IDBIndex_openKeyCursor_Callback";
-
-  static openKeyCursor_Callback_1(mthis, range) native "IDBIndex_openKeyCursor_Callback";
 }
 
 class BlinkIDBKeyRange {
-  static lower_Getter(mthis) native "IDBKeyRange_lower_Getter";
+  static final instance = new BlinkIDBKeyRange();
+
+  static bound_Callback_0() native "IDBKeyRange_bound_Callback";
+  bound_Callback_0_() => bound_Callback_0();
+
+  static bound_Callback_1(__arg_0) native "IDBKeyRange_bound_Callback";
+  bound_Callback_1_(__arg_0) => bound_Callback_1(__arg_0);
+
+  static bound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_bound_Callback";
+  bound_Callback_2_(__arg_0, __arg_1) => bound_Callback_2(__arg_0, __arg_1);
+
+  static bound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_bound_Callback";
+  bound_Callback_3_(__arg_0, __arg_1, __arg_2) => bound_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static bound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_bound_Callback";
+  bound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => bound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bound_Callback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "IDBKeyRange_bound_Callback";
+  bound_Callback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bound_Callback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static bound_Callback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "IDBKeyRange_bound_Callback";
+  bound_Callback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bound_Callback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static lowerBound_Callback_0() native "IDBKeyRange_lowerBound_Callback";
+  lowerBound_Callback_0_() => lowerBound_Callback_0();
+
+  static lowerBound_Callback_1(__arg_0) native "IDBKeyRange_lowerBound_Callback";
+  lowerBound_Callback_1_(__arg_0) => lowerBound_Callback_1(__arg_0);
+
+  static lowerBound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_lowerBound_Callback";
+  lowerBound_Callback_2_(__arg_0, __arg_1) => lowerBound_Callback_2(__arg_0, __arg_1);
+
+  static lowerBound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_lowerBound_Callback";
+  lowerBound_Callback_3_(__arg_0, __arg_1, __arg_2) => lowerBound_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static lowerBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_lowerBound_Callback";
+  lowerBound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => lowerBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static lowerOpen_Getter(mthis) native "IDBKeyRange_lowerOpen_Getter";
+  lowerOpen_Getter_(mthis) => lowerOpen_Getter(mthis);
 
-  static upper_Getter(mthis) native "IDBKeyRange_upper_Getter";
+  static lower_Getter(mthis) native "IDBKeyRange_lower_Getter";
+  lower_Getter_(mthis) => lower_Getter(mthis);
+
+  static only_Callback_0() native "IDBKeyRange_only_Callback";
+  only_Callback_0_() => only_Callback_0();
+
+  static only_Callback_1(__arg_0) native "IDBKeyRange_only_Callback";
+  only_Callback_1_(__arg_0) => only_Callback_1(__arg_0);
+
+  static only_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_only_Callback";
+  only_Callback_2_(__arg_0, __arg_1) => only_Callback_2(__arg_0, __arg_1);
+
+  static only_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_only_Callback";
+  only_Callback_3_(__arg_0, __arg_1, __arg_2) => only_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static upperBound_Callback_0() native "IDBKeyRange_upperBound_Callback";
+  upperBound_Callback_0_() => upperBound_Callback_0();
+
+  static upperBound_Callback_1(__arg_0) native "IDBKeyRange_upperBound_Callback";
+  upperBound_Callback_1_(__arg_0) => upperBound_Callback_1(__arg_0);
+
+  static upperBound_Callback_2(__arg_0, __arg_1) native "IDBKeyRange_upperBound_Callback";
+  upperBound_Callback_2_(__arg_0, __arg_1) => upperBound_Callback_2(__arg_0, __arg_1);
+
+  static upperBound_Callback_3(__arg_0, __arg_1, __arg_2) native "IDBKeyRange_upperBound_Callback";
+  upperBound_Callback_3_(__arg_0, __arg_1, __arg_2) => upperBound_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static upperBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "IDBKeyRange_upperBound_Callback";
+  upperBound_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => upperBound_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static upperOpen_Getter(mthis) native "IDBKeyRange_upperOpen_Getter";
+  upperOpen_Getter_(mthis) => upperOpen_Getter(mthis);
 
-  static bound_Callback_4(lower, upper, lowerOpen, upperOpen) native "IDBKeyRange_bound_Callback";
+  static upper_Getter(mthis) native "IDBKeyRange_upper_Getter";
+  upper_Getter_(mthis) => upper_Getter(mthis);
 
-  static bound_Callback_3(lower, upper, lowerOpen) native "IDBKeyRange_bound_Callback";
-
-  static bound_Callback_2(lower, upper) native "IDBKeyRange_bound_Callback";
-
-  static lowerBound_Callback_2(bound, open) native "IDBKeyRange_lowerBound_Callback";
-
-  static lowerBound_Callback_1(bound) native "IDBKeyRange_lowerBound_Callback";
-
-  static only_Callback_1(value) native "IDBKeyRange_only_Callback";
-
-  static upperBound_Callback_2(bound, open) native "IDBKeyRange_upperBound_Callback";
-
-  static upperBound_Callback_1(bound) native "IDBKeyRange_upperBound_Callback";
 }
 
 class BlinkIDBObjectStore {
+  static final instance = new BlinkIDBObjectStore();
+
+  static add_Callback_0(mthis) native "IDBObjectStore_add_Callback";
+  add_Callback_0_(mthis) => add_Callback_0(mthis);
+
+  static add_Callback_1(mthis, __arg_0) native "IDBObjectStore_add_Callback";
+  add_Callback_1_(mthis, __arg_0) => add_Callback_1(mthis, __arg_0);
+
+  static add_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_add_Callback";
+  add_Callback_2_(mthis, __arg_0, __arg_1) => add_Callback_2(mthis, __arg_0, __arg_1);
+
+  static add_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_add_Callback";
+  add_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => add_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_add_Callback";
+  add_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => add_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static autoIncrement_Getter(mthis) native "IDBObjectStore_autoIncrement_Getter";
+  autoIncrement_Getter_(mthis) => autoIncrement_Getter(mthis);
+
+  static clear_Callback_0(mthis) native "IDBObjectStore_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "IDBObjectStore_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static count_Callback_0(mthis) native "IDBObjectStore_count_Callback";
+  count_Callback_0_(mthis) => count_Callback_0(mthis);
+
+  static count_Callback_1(mthis, __arg_0) native "IDBObjectStore_count_Callback";
+  count_Callback_1_(mthis, __arg_0) => count_Callback_1(mthis, __arg_0);
+
+  static count_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_count_Callback";
+  count_Callback_2_(mthis, __arg_0, __arg_1) => count_Callback_2(mthis, __arg_0, __arg_1);
+
+  static count_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_count_Callback";
+  count_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => count_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createIndex_Callback_0(mthis) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_0_(mthis) => createIndex_Callback_0(mthis);
+
+  static createIndex_Callback_1(mthis, __arg_0) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_1_(mthis, __arg_0) => createIndex_Callback_1(mthis, __arg_0);
+
+  static createIndex_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_2_(mthis, __arg_0, __arg_1) => createIndex_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createIndex_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createIndex_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createIndex_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "IDBObjectStore_createIndex_Callback";
+  createIndex_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createIndex_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static deleteIndex_Callback_0(mthis) native "IDBObjectStore_deleteIndex_Callback";
+  deleteIndex_Callback_0_(mthis) => deleteIndex_Callback_0(mthis);
+
+  static deleteIndex_Callback_1(mthis, __arg_0) native "IDBObjectStore_deleteIndex_Callback";
+  deleteIndex_Callback_1_(mthis, __arg_0) => deleteIndex_Callback_1(mthis, __arg_0);
+
+  static deleteIndex_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_deleteIndex_Callback";
+  deleteIndex_Callback_2_(mthis, __arg_0, __arg_1) => deleteIndex_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_deleteIndex_Callback";
+  deleteIndex_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteIndex_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static delete_Callback_0(mthis) native "IDBObjectStore_delete_Callback";
+  delete_Callback_0_(mthis) => delete_Callback_0(mthis);
+
+  static delete_Callback_1(mthis, __arg_0) native "IDBObjectStore_delete_Callback";
+  delete_Callback_1_(mthis, __arg_0) => delete_Callback_1(mthis, __arg_0);
+
+  static delete_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_delete_Callback";
+  delete_Callback_2_(mthis, __arg_0, __arg_1) => delete_Callback_2(mthis, __arg_0, __arg_1);
+
+  static delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_delete_Callback";
+  delete_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => delete_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static get_Callback_0(mthis) native "IDBObjectStore_get_Callback";
+  get_Callback_0_(mthis) => get_Callback_0(mthis);
+
+  static get_Callback_1(mthis, __arg_0) native "IDBObjectStore_get_Callback";
+  get_Callback_1_(mthis, __arg_0) => get_Callback_1(mthis, __arg_0);
+
+  static get_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_get_Callback";
+  get_Callback_2_(mthis, __arg_0, __arg_1) => get_Callback_2(mthis, __arg_0, __arg_1);
+
+  static get_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_get_Callback";
+  get_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => get_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static indexNames_Getter(mthis) native "IDBObjectStore_indexNames_Getter";
+  indexNames_Getter_(mthis) => indexNames_Getter(mthis);
+
+  static index_Callback_0(mthis) native "IDBObjectStore_index_Callback";
+  index_Callback_0_(mthis) => index_Callback_0(mthis);
+
+  static index_Callback_1(mthis, __arg_0) native "IDBObjectStore_index_Callback";
+  index_Callback_1_(mthis, __arg_0) => index_Callback_1(mthis, __arg_0);
+
+  static index_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_index_Callback";
+  index_Callback_2_(mthis, __arg_0, __arg_1) => index_Callback_2(mthis, __arg_0, __arg_1);
+
+  static index_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_index_Callback";
+  index_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => index_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static keyPath_Getter(mthis) native "IDBObjectStore_keyPath_Getter";
+  keyPath_Getter_(mthis) => keyPath_Getter(mthis);
 
   static name_Getter(mthis) native "IDBObjectStore_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static openCursor_Callback_0(mthis) native "IDBObjectStore_openCursor_Callback";
+  openCursor_Callback_0_(mthis) => openCursor_Callback_0(mthis);
+
+  static openCursor_Callback_1(mthis, __arg_0) native "IDBObjectStore_openCursor_Callback";
+  openCursor_Callback_1_(mthis, __arg_0) => openCursor_Callback_1(mthis, __arg_0);
+
+  static openCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_openCursor_Callback";
+  openCursor_Callback_2_(mthis, __arg_0, __arg_1) => openCursor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_openCursor_Callback";
+  openCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_openCursor_Callback";
+  openCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static openKeyCursor_Callback_0(mthis) native "IDBObjectStore_openKeyCursor_Callback";
+  openKeyCursor_Callback_0_(mthis) => openKeyCursor_Callback_0(mthis);
+
+  static openKeyCursor_Callback_1(mthis, __arg_0) native "IDBObjectStore_openKeyCursor_Callback";
+  openKeyCursor_Callback_1_(mthis, __arg_0) => openKeyCursor_Callback_1(mthis, __arg_0);
+
+  static openKeyCursor_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_openKeyCursor_Callback";
+  openKeyCursor_Callback_2_(mthis, __arg_0, __arg_1) => openKeyCursor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_openKeyCursor_Callback";
+  openKeyCursor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openKeyCursor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_openKeyCursor_Callback";
+  openKeyCursor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openKeyCursor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static put_Callback_0(mthis) native "IDBObjectStore_put_Callback";
+  put_Callback_0_(mthis) => put_Callback_0(mthis);
+
+  static put_Callback_1(mthis, __arg_0) native "IDBObjectStore_put_Callback";
+  put_Callback_1_(mthis, __arg_0) => put_Callback_1(mthis, __arg_0);
+
+  static put_Callback_2(mthis, __arg_0, __arg_1) native "IDBObjectStore_put_Callback";
+  put_Callback_2_(mthis, __arg_0, __arg_1) => put_Callback_2(mthis, __arg_0, __arg_1);
+
+  static put_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBObjectStore_put_Callback";
+  put_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => put_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "IDBObjectStore_put_Callback";
+  put_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => put_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static transaction_Getter(mthis) native "IDBObjectStore_transaction_Getter";
+  transaction_Getter_(mthis) => transaction_Getter(mthis);
 
-  static add_Callback_2(mthis, value, key) native "IDBObjectStore_add_Callback";
-
-  static add_Callback_1(mthis, value) native "IDBObjectStore_add_Callback";
-
-  static clear_Callback(mthis) native "IDBObjectStore_clear_Callback";
-
-  static count_Callback_1(mthis, key) native "IDBObjectStore_count_Callback";
-
-  static createIndex_Callback_2(mthis, name, keyPath) native "IDBObjectStore_createIndex_Callback";
-
-  static createIndex_Callback_3(mthis, name, keyPath, options) native "IDBObjectStore_createIndex_Callback";
-
-  static delete_Callback_1(mthis, key) native "IDBObjectStore_delete_Callback";
-
-  static deleteIndex_Callback_1(mthis, name) native "IDBObjectStore_deleteIndex_Callback";
-
-  static get_Callback_1(mthis, key) native "IDBObjectStore_get_Callback";
-
-  static index_Callback_1(mthis, name) native "IDBObjectStore_index_Callback";
-
-  static openCursor_Callback_2(mthis, range, direction) native "IDBObjectStore_openCursor_Callback";
-
-  static openCursor_Callback_1(mthis, range) native "IDBObjectStore_openCursor_Callback";
-
-  static openKeyCursor_Callback_2(mthis, range, direction) native "IDBObjectStore_openKeyCursor_Callback";
-
-  static openKeyCursor_Callback_1(mthis, range) native "IDBObjectStore_openKeyCursor_Callback";
-
-  static put_Callback_2(mthis, value, key) native "IDBObjectStore_put_Callback";
-
-  static put_Callback_1(mthis, value) native "IDBObjectStore_put_Callback";
 }
 
-class BlinkIDBRequest {
+class BlinkIDBOpenDBRequest extends BlinkIDBRequest {
+  static final instance = new BlinkIDBOpenDBRequest();
+
+  static onblocked_Getter(mthis) native "IDBOpenDBRequest_onblocked_Getter";
+  onblocked_Getter_(mthis) => onblocked_Getter(mthis);
+
+  static onblocked_Setter(mthis, __arg_0) native "IDBOpenDBRequest_onblocked_Setter";
+  onblocked_Setter_(mthis, __arg_0) => onblocked_Setter(mthis, __arg_0);
+
+  static onupgradeneeded_Getter(mthis) native "IDBOpenDBRequest_onupgradeneeded_Getter";
+  onupgradeneeded_Getter_(mthis) => onupgradeneeded_Getter(mthis);
+
+  static onupgradeneeded_Setter(mthis, __arg_0) native "IDBOpenDBRequest_onupgradeneeded_Setter";
+  onupgradeneeded_Setter_(mthis, __arg_0) => onupgradeneeded_Setter(mthis, __arg_0);
+
+}
+
+class BlinkIDBRequest extends BlinkEventTarget {
+  static final instance = new BlinkIDBRequest();
+
   static error_Getter(mthis) native "IDBRequest_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
+
+  static onerror_Getter(mthis) native "IDBRequest_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "IDBRequest_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onsuccess_Getter(mthis) native "IDBRequest_onsuccess_Getter";
+  onsuccess_Getter_(mthis) => onsuccess_Getter(mthis);
+
+  static onsuccess_Setter(mthis, __arg_0) native "IDBRequest_onsuccess_Setter";
+  onsuccess_Setter_(mthis, __arg_0) => onsuccess_Setter(mthis, __arg_0);
 
   static readyState_Getter(mthis) native "IDBRequest_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static result_Getter(mthis) native "IDBRequest_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static source_Getter(mthis) native "IDBRequest_source_Getter";
+  source_Getter_(mthis) => source_Getter(mthis);
 
   static transaction_Getter(mthis) native "IDBRequest_transaction_Getter";
+  transaction_Getter_(mthis) => transaction_Getter(mthis);
+
 }
 
-class BlinkIDBOpenDBRequest {}
+class BlinkIDBTransaction extends BlinkEventTarget {
+  static final instance = new BlinkIDBTransaction();
 
-class BlinkIDBTransaction {
+  static abort_Callback_0(mthis) native "IDBTransaction_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "IDBTransaction_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "IDBTransaction_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
   static db_Getter(mthis) native "IDBTransaction_db_Getter";
+  db_Getter_(mthis) => db_Getter(mthis);
 
   static error_Getter(mthis) native "IDBTransaction_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
 
   static mode_Getter(mthis) native "IDBTransaction_mode_Getter";
+  mode_Getter_(mthis) => mode_Getter(mthis);
 
-  static abort_Callback(mthis) native "IDBTransaction_abort_Callback";
+  static objectStore_Callback_0(mthis) native "IDBTransaction_objectStore_Callback";
+  objectStore_Callback_0_(mthis) => objectStore_Callback_0(mthis);
 
-  static objectStore_Callback_1(mthis, name) native "IDBTransaction_objectStore_Callback";
+  static objectStore_Callback_1(mthis, __arg_0) native "IDBTransaction_objectStore_Callback";
+  objectStore_Callback_1_(mthis, __arg_0) => objectStore_Callback_1(mthis, __arg_0);
+
+  static objectStore_Callback_2(mthis, __arg_0, __arg_1) native "IDBTransaction_objectStore_Callback";
+  objectStore_Callback_2_(mthis, __arg_0, __arg_1) => objectStore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static objectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "IDBTransaction_objectStore_Callback";
+  objectStore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => objectStore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onabort_Getter(mthis) native "IDBTransaction_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "IDBTransaction_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static oncomplete_Getter(mthis) native "IDBTransaction_oncomplete_Getter";
+  oncomplete_Getter_(mthis) => oncomplete_Getter(mthis);
+
+  static oncomplete_Setter(mthis, __arg_0) native "IDBTransaction_oncomplete_Setter";
+  oncomplete_Setter_(mthis, __arg_0) => oncomplete_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "IDBTransaction_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "IDBTransaction_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
 }
 
-class BlinkIDBVersionChangeEvent {
-  static constructorCallback(type, options) native "IDBVersionChangeEvent_constructorCallback";
+class BlinkIDBVersionChangeEvent extends BlinkEvent {
+  static final instance = new BlinkIDBVersionChangeEvent();
 
-  static dataLoss_Getter(mthis) native "IDBVersionChangeEvent_dataLoss_Getter";
+  static constructorCallback_2(__arg_0, __arg_1) native "IDBVersionChangeEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static dataLossMessage_Getter(mthis) native "IDBVersionChangeEvent_dataLossMessage_Getter";
+  dataLossMessage_Getter_(mthis) => dataLossMessage_Getter(mthis);
+
+  static dataLoss_Getter(mthis) native "IDBVersionChangeEvent_dataLoss_Getter";
+  dataLoss_Getter_(mthis) => dataLoss_Getter(mthis);
 
   static newVersion_Getter(mthis) native "IDBVersionChangeEvent_newVersion_Getter";
+  newVersion_Getter_(mthis) => newVersion_Getter(mthis);
 
   static oldVersion_Getter(mthis) native "IDBVersionChangeEvent_oldVersion_Getter";
+  oldVersion_Getter_(mthis) => oldVersion_Getter(mthis);
+
 }
 
 class BlinkImageBitmap {
+  static final instance = new BlinkImageBitmap();
+
   static height_Getter(mthis) native "ImageBitmap_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static width_Getter(mthis) native "ImageBitmap_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
 }
 
 class BlinkImageData {
-  static constructorCallback_2(data_OR_width, height_OR_width) native "ImageData_constructorCallback";
+  static final instance = new BlinkImageData();
 
-  static constructorCallback_3(data_OR_width, height_OR_width, height) native "ImageData_constructorCallback";
+  static constructorCallback_0() native "ImageData_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "ImageData_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "ImageData_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "ImageData_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "ImageData_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "ImageData_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static data_Getter(mthis) native "ImageData_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
 
   static height_Getter(mthis) native "ImageData_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static width_Getter(mthis) native "ImageData_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
 }
 
 class BlinkInjectedScriptHost {
-  static inspect_Callback_2(mthis, objectId, hints) native "InjectedScriptHost_inspect_Callback";
+  static final instance = new BlinkInjectedScriptHost();
+
+  static callFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_callFunction_Callback";
+  callFunction_Callback_1_(mthis, __arg_0) => callFunction_Callback_1(mthis, __arg_0);
+
+  static callFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_callFunction_Callback";
+  callFunction_Callback_2_(mthis, __arg_0, __arg_1) => callFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static callFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_callFunction_Callback";
+  callFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => callFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static callFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_callFunction_Callback";
+  callFunction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => callFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static callFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_callFunction_Callback";
+  callFunction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => callFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static clearConsoleMessages_Callback_0(mthis) native "InjectedScriptHost_clearConsoleMessages_Callback";
+  clearConsoleMessages_Callback_0_(mthis) => clearConsoleMessages_Callback_0(mthis);
+
+  static clearConsoleMessages_Callback_1(mthis, __arg_0) native "InjectedScriptHost_clearConsoleMessages_Callback";
+  clearConsoleMessages_Callback_1_(mthis, __arg_0) => clearConsoleMessages_Callback_1(mthis, __arg_0);
+
+  static clearConsoleMessages_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_clearConsoleMessages_Callback";
+  clearConsoleMessages_Callback_2_(mthis, __arg_0, __arg_1) => clearConsoleMessages_Callback_2(mthis, __arg_0, __arg_1);
+
+  static debugFunction_Callback_0(mthis) native "InjectedScriptHost_debugFunction_Callback";
+  debugFunction_Callback_0_(mthis) => debugFunction_Callback_0(mthis);
+
+  static debugFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_debugFunction_Callback";
+  debugFunction_Callback_1_(mthis, __arg_0) => debugFunction_Callback_1(mthis, __arg_0);
+
+  static debugFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_debugFunction_Callback";
+  debugFunction_Callback_2_(mthis, __arg_0, __arg_1) => debugFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static debugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_debugFunction_Callback";
+  debugFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => debugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static eval_Callback_0(mthis) native "InjectedScriptHost_eval_Callback";
+  eval_Callback_0_(mthis) => eval_Callback_0(mthis);
+
+  static eval_Callback_1(mthis, __arg_0) native "InjectedScriptHost_eval_Callback";
+  eval_Callback_1_(mthis, __arg_0) => eval_Callback_1(mthis, __arg_0);
+
+  static eval_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_eval_Callback";
+  eval_Callback_2_(mthis, __arg_0, __arg_1) => eval_Callback_2(mthis, __arg_0, __arg_1);
+
+  static eval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_eval_Callback";
+  eval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => eval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static evaluateWithExceptionDetails_Callback_0(mthis) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_0_(mthis) => evaluateWithExceptionDetails_Callback_0(mthis);
+
+  static evaluateWithExceptionDetails_Callback_1(mthis, __arg_0) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => evaluateWithExceptionDetails_Callback_1(mthis, __arg_0);
+
+  static evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_2_(mthis, __arg_0, __arg_1) => evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1);
+
+  static evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static functionDetails_Callback_0(mthis) native "InjectedScriptHost_functionDetails_Callback";
+  functionDetails_Callback_0_(mthis) => functionDetails_Callback_0(mthis);
+
+  static functionDetails_Callback_1(mthis, __arg_0) native "InjectedScriptHost_functionDetails_Callback";
+  functionDetails_Callback_1_(mthis, __arg_0) => functionDetails_Callback_1(mthis, __arg_0);
+
+  static functionDetails_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_functionDetails_Callback";
+  functionDetails_Callback_2_(mthis, __arg_0, __arg_1) => functionDetails_Callback_2(mthis, __arg_0, __arg_1);
+
+  static functionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_functionDetails_Callback";
+  functionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => functionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEventListeners_Callback_0(mthis) native "InjectedScriptHost_getEventListeners_Callback";
+  getEventListeners_Callback_0_(mthis) => getEventListeners_Callback_0(mthis);
+
+  static getEventListeners_Callback_1(mthis, __arg_0) native "InjectedScriptHost_getEventListeners_Callback";
+  getEventListeners_Callback_1_(mthis, __arg_0) => getEventListeners_Callback_1(mthis, __arg_0);
+
+  static getEventListeners_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_getEventListeners_Callback";
+  getEventListeners_Callback_2_(mthis, __arg_0, __arg_1) => getEventListeners_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEventListeners_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_getEventListeners_Callback";
+  getEventListeners_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEventListeners_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getInternalProperties_Callback_0(mthis) native "InjectedScriptHost_getInternalProperties_Callback";
+  getInternalProperties_Callback_0_(mthis) => getInternalProperties_Callback_0(mthis);
+
+  static getInternalProperties_Callback_1(mthis, __arg_0) native "InjectedScriptHost_getInternalProperties_Callback";
+  getInternalProperties_Callback_1_(mthis, __arg_0) => getInternalProperties_Callback_1(mthis, __arg_0);
+
+  static getInternalProperties_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_getInternalProperties_Callback";
+  getInternalProperties_Callback_2_(mthis, __arg_0, __arg_1) => getInternalProperties_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getInternalProperties_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_getInternalProperties_Callback";
+  getInternalProperties_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getInternalProperties_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static inspect_Callback_0(mthis) native "InjectedScriptHost_inspect_Callback";
+  inspect_Callback_0_(mthis) => inspect_Callback_0(mthis);
+
+  static inspect_Callback_1(mthis, __arg_0) native "InjectedScriptHost_inspect_Callback";
+  inspect_Callback_1_(mthis, __arg_0) => inspect_Callback_1(mthis, __arg_0);
+
+  static inspect_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_inspect_Callback";
+  inspect_Callback_2_(mthis, __arg_0, __arg_1) => inspect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static inspect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_inspect_Callback";
+  inspect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => inspect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static inspect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_inspect_Callback";
+  inspect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => inspect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static inspectedObject_Callback_0(mthis) native "InjectedScriptHost_inspectedObject_Callback";
+  inspectedObject_Callback_0_(mthis) => inspectedObject_Callback_0(mthis);
+
+  static inspectedObject_Callback_1(mthis, __arg_0) native "InjectedScriptHost_inspectedObject_Callback";
+  inspectedObject_Callback_1_(mthis, __arg_0) => inspectedObject_Callback_1(mthis, __arg_0);
+
+  static inspectedObject_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_inspectedObject_Callback";
+  inspectedObject_Callback_2_(mthis, __arg_0, __arg_1) => inspectedObject_Callback_2(mthis, __arg_0, __arg_1);
+
+  static inspectedObject_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_inspectedObject_Callback";
+  inspectedObject_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => inspectedObject_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static internalConstructorName_Callback_0(mthis) native "InjectedScriptHost_internalConstructorName_Callback";
+  internalConstructorName_Callback_0_(mthis) => internalConstructorName_Callback_0(mthis);
+
+  static internalConstructorName_Callback_1(mthis, __arg_0) native "InjectedScriptHost_internalConstructorName_Callback";
+  internalConstructorName_Callback_1_(mthis, __arg_0) => internalConstructorName_Callback_1(mthis, __arg_0);
+
+  static internalConstructorName_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_internalConstructorName_Callback";
+  internalConstructorName_Callback_2_(mthis, __arg_0, __arg_1) => internalConstructorName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static internalConstructorName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_internalConstructorName_Callback";
+  internalConstructorName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => internalConstructorName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isHTMLAllCollection_Callback_0(mthis) native "InjectedScriptHost_isHTMLAllCollection_Callback";
+  isHTMLAllCollection_Callback_0_(mthis) => isHTMLAllCollection_Callback_0(mthis);
+
+  static isHTMLAllCollection_Callback_1(mthis, __arg_0) native "InjectedScriptHost_isHTMLAllCollection_Callback";
+  isHTMLAllCollection_Callback_1_(mthis, __arg_0) => isHTMLAllCollection_Callback_1(mthis, __arg_0);
+
+  static isHTMLAllCollection_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_isHTMLAllCollection_Callback";
+  isHTMLAllCollection_Callback_2_(mthis, __arg_0, __arg_1) => isHTMLAllCollection_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isHTMLAllCollection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_isHTMLAllCollection_Callback";
+  isHTMLAllCollection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isHTMLAllCollection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static monitorFunction_Callback_0(mthis) native "InjectedScriptHost_monitorFunction_Callback";
+  monitorFunction_Callback_0_(mthis) => monitorFunction_Callback_0(mthis);
+
+  static monitorFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_monitorFunction_Callback";
+  monitorFunction_Callback_1_(mthis, __arg_0) => monitorFunction_Callback_1(mthis, __arg_0);
+
+  static monitorFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_monitorFunction_Callback";
+  monitorFunction_Callback_2_(mthis, __arg_0, __arg_1) => monitorFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static monitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_monitorFunction_Callback";
+  monitorFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => monitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setFunctionVariableValue_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_setFunctionVariableValue_Callback";
+  setFunctionVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => setFunctionVariableValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setFunctionVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_setFunctionVariableValue_Callback";
+  setFunctionVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFunctionVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setFunctionVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_setFunctionVariableValue_Callback";
+  setFunctionVariableValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFunctionVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setFunctionVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_setFunctionVariableValue_Callback";
+  setFunctionVariableValue_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setFunctionVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setFunctionVariableValue_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "InjectedScriptHost_setFunctionVariableValue_Callback";
+  setFunctionVariableValue_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setFunctionVariableValue_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static suppressWarningsAndCallFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
+  suppressWarningsAndCallFunction_Callback_1_(mthis, __arg_0) => suppressWarningsAndCallFunction_Callback_1(mthis, __arg_0);
+
+  static suppressWarningsAndCallFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
+  suppressWarningsAndCallFunction_Callback_2_(mthis, __arg_0, __arg_1) => suppressWarningsAndCallFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static suppressWarningsAndCallFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
+  suppressWarningsAndCallFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => suppressWarningsAndCallFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static suppressWarningsAndCallFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
+  suppressWarningsAndCallFunction_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => suppressWarningsAndCallFunction_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static suppressWarningsAndCallFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InjectedScriptHost_suppressWarningsAndCallFunction_Callback";
+  suppressWarningsAndCallFunction_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => suppressWarningsAndCallFunction_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static type_Callback_0(mthis) native "InjectedScriptHost_type_Callback";
+  type_Callback_0_(mthis) => type_Callback_0(mthis);
+
+  static type_Callback_1(mthis, __arg_0) native "InjectedScriptHost_type_Callback";
+  type_Callback_1_(mthis, __arg_0) => type_Callback_1(mthis, __arg_0);
+
+  static type_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_type_Callback";
+  type_Callback_2_(mthis, __arg_0, __arg_1) => type_Callback_2(mthis, __arg_0, __arg_1);
+
+  static type_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_type_Callback";
+  type_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => type_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static undebugFunction_Callback_0(mthis) native "InjectedScriptHost_undebugFunction_Callback";
+  undebugFunction_Callback_0_(mthis) => undebugFunction_Callback_0(mthis);
+
+  static undebugFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_undebugFunction_Callback";
+  undebugFunction_Callback_1_(mthis, __arg_0) => undebugFunction_Callback_1(mthis, __arg_0);
+
+  static undebugFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_undebugFunction_Callback";
+  undebugFunction_Callback_2_(mthis, __arg_0, __arg_1) => undebugFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static undebugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_undebugFunction_Callback";
+  undebugFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => undebugFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static unmonitorFunction_Callback_0(mthis) native "InjectedScriptHost_unmonitorFunction_Callback";
+  unmonitorFunction_Callback_0_(mthis) => unmonitorFunction_Callback_0(mthis);
+
+  static unmonitorFunction_Callback_1(mthis, __arg_0) native "InjectedScriptHost_unmonitorFunction_Callback";
+  unmonitorFunction_Callback_1_(mthis, __arg_0) => unmonitorFunction_Callback_1(mthis, __arg_0);
+
+  static unmonitorFunction_Callback_2(mthis, __arg_0, __arg_1) native "InjectedScriptHost_unmonitorFunction_Callback";
+  unmonitorFunction_Callback_2_(mthis, __arg_0, __arg_1) => unmonitorFunction_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unmonitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InjectedScriptHost_unmonitorFunction_Callback";
+  unmonitorFunction_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unmonitorFunction_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkInputMethodContext {
+class BlinkInputMethodContext extends BlinkEventTarget {
+  static final instance = new BlinkInputMethodContext();
+
   static compositionEndOffset_Getter(mthis) native "InputMethodContext_compositionEndOffset_Getter";
+  compositionEndOffset_Getter_(mthis) => compositionEndOffset_Getter(mthis);
 
   static compositionStartOffset_Getter(mthis) native "InputMethodContext_compositionStartOffset_Getter";
+  compositionStartOffset_Getter_(mthis) => compositionStartOffset_Getter(mthis);
+
+  static confirmComposition_Callback_0(mthis) native "InputMethodContext_confirmComposition_Callback";
+  confirmComposition_Callback_0_(mthis) => confirmComposition_Callback_0(mthis);
+
+  static confirmComposition_Callback_1(mthis, __arg_0) native "InputMethodContext_confirmComposition_Callback";
+  confirmComposition_Callback_1_(mthis, __arg_0) => confirmComposition_Callback_1(mthis, __arg_0);
+
+  static confirmComposition_Callback_2(mthis, __arg_0, __arg_1) native "InputMethodContext_confirmComposition_Callback";
+  confirmComposition_Callback_2_(mthis, __arg_0, __arg_1) => confirmComposition_Callback_2(mthis, __arg_0, __arg_1);
 
   static locale_Getter(mthis) native "InputMethodContext_locale_Getter";
+  locale_Getter_(mthis) => locale_Getter(mthis);
+
+  static oncandidatewindowhide_Getter(mthis) native "InputMethodContext_oncandidatewindowhide_Getter";
+  oncandidatewindowhide_Getter_(mthis) => oncandidatewindowhide_Getter(mthis);
+
+  static oncandidatewindowhide_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowhide_Setter";
+  oncandidatewindowhide_Setter_(mthis, __arg_0) => oncandidatewindowhide_Setter(mthis, __arg_0);
+
+  static oncandidatewindowshow_Getter(mthis) native "InputMethodContext_oncandidatewindowshow_Getter";
+  oncandidatewindowshow_Getter_(mthis) => oncandidatewindowshow_Getter(mthis);
+
+  static oncandidatewindowshow_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowshow_Setter";
+  oncandidatewindowshow_Setter_(mthis, __arg_0) => oncandidatewindowshow_Setter(mthis, __arg_0);
+
+  static oncandidatewindowupdate_Getter(mthis) native "InputMethodContext_oncandidatewindowupdate_Getter";
+  oncandidatewindowupdate_Getter_(mthis) => oncandidatewindowupdate_Getter(mthis);
+
+  static oncandidatewindowupdate_Setter(mthis, __arg_0) native "InputMethodContext_oncandidatewindowupdate_Setter";
+  oncandidatewindowupdate_Setter_(mthis, __arg_0) => oncandidatewindowupdate_Setter(mthis, __arg_0);
 
   static target_Getter(mthis) native "InputMethodContext_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
 
-  static confirmComposition_Callback(mthis) native "InputMethodContext_confirmComposition_Callback";
 }
 
-class BlinkInstallPhaseEvent {
-  static waitUntil_Callback_1(mthis, value) native "InstallPhaseEvent_waitUntil_Callback";
+class BlinkInspectorFrontendHost {
+  static final instance = new BlinkInspectorFrontendHost();
+
+  static copyText_Callback_0(mthis) native "InspectorFrontendHost_copyText_Callback";
+  copyText_Callback_0_(mthis) => copyText_Callback_0(mthis);
+
+  static copyText_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_copyText_Callback";
+  copyText_Callback_1_(mthis, __arg_0) => copyText_Callback_1(mthis, __arg_0);
+
+  static copyText_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_copyText_Callback";
+  copyText_Callback_2_(mthis, __arg_0, __arg_1) => copyText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static copyText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_copyText_Callback";
+  copyText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => copyText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getSelectionBackgroundColor_Callback_0(mthis) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
+  getSelectionBackgroundColor_Callback_0_(mthis) => getSelectionBackgroundColor_Callback_0(mthis);
+
+  static getSelectionBackgroundColor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
+  getSelectionBackgroundColor_Callback_1_(mthis, __arg_0) => getSelectionBackgroundColor_Callback_1(mthis, __arg_0);
+
+  static getSelectionBackgroundColor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_getSelectionBackgroundColor_Callback";
+  getSelectionBackgroundColor_Callback_2_(mthis, __arg_0, __arg_1) => getSelectionBackgroundColor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getSelectionForegroundColor_Callback_0(mthis) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
+  getSelectionForegroundColor_Callback_0_(mthis) => getSelectionForegroundColor_Callback_0(mthis);
+
+  static getSelectionForegroundColor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
+  getSelectionForegroundColor_Callback_1_(mthis, __arg_0) => getSelectionForegroundColor_Callback_1(mthis, __arg_0);
+
+  static getSelectionForegroundColor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_getSelectionForegroundColor_Callback";
+  getSelectionForegroundColor_Callback_2_(mthis, __arg_0, __arg_1) => getSelectionForegroundColor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isHostedMode_Callback_0(mthis) native "InspectorFrontendHost_isHostedMode_Callback";
+  isHostedMode_Callback_0_(mthis) => isHostedMode_Callback_0(mthis);
+
+  static isHostedMode_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isHostedMode_Callback";
+  isHostedMode_Callback_1_(mthis, __arg_0) => isHostedMode_Callback_1(mthis, __arg_0);
+
+  static isHostedMode_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isHostedMode_Callback";
+  isHostedMode_Callback_2_(mthis, __arg_0, __arg_1) => isHostedMode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isUnderTest_Callback_0(mthis) native "InspectorFrontendHost_isUnderTest_Callback";
+  isUnderTest_Callback_0_(mthis) => isUnderTest_Callback_0(mthis);
+
+  static isUnderTest_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isUnderTest_Callback";
+  isUnderTest_Callback_1_(mthis, __arg_0) => isUnderTest_Callback_1(mthis, __arg_0);
+
+  static isUnderTest_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isUnderTest_Callback";
+  isUnderTest_Callback_2_(mthis, __arg_0, __arg_1) => isUnderTest_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isolatedFileSystem_Callback_0(mthis) native "InspectorFrontendHost_isolatedFileSystem_Callback";
+  isolatedFileSystem_Callback_0_(mthis) => isolatedFileSystem_Callback_0(mthis);
+
+  static isolatedFileSystem_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_isolatedFileSystem_Callback";
+  isolatedFileSystem_Callback_1_(mthis, __arg_0) => isolatedFileSystem_Callback_1(mthis, __arg_0);
+
+  static isolatedFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_isolatedFileSystem_Callback";
+  isolatedFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => isolatedFileSystem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isolatedFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_isolatedFileSystem_Callback";
+  isolatedFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isolatedFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isolatedFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_isolatedFileSystem_Callback";
+  isolatedFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isolatedFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static platform_Callback_0(mthis) native "InspectorFrontendHost_platform_Callback";
+  platform_Callback_0_(mthis) => platform_Callback_0(mthis);
+
+  static platform_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_platform_Callback";
+  platform_Callback_1_(mthis, __arg_0) => platform_Callback_1(mthis, __arg_0);
+
+  static platform_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_platform_Callback";
+  platform_Callback_2_(mthis, __arg_0, __arg_1) => platform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static port_Callback_0(mthis) native "InspectorFrontendHost_port_Callback";
+  port_Callback_0_(mthis) => port_Callback_0(mthis);
+
+  static port_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_port_Callback";
+  port_Callback_1_(mthis, __arg_0) => port_Callback_1(mthis, __arg_0);
+
+  static port_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_port_Callback";
+  port_Callback_2_(mthis, __arg_0, __arg_1) => port_Callback_2(mthis, __arg_0, __arg_1);
+
+  static recordActionTaken_Callback_0(mthis) native "InspectorFrontendHost_recordActionTaken_Callback";
+  recordActionTaken_Callback_0_(mthis) => recordActionTaken_Callback_0(mthis);
+
+  static recordActionTaken_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_recordActionTaken_Callback";
+  recordActionTaken_Callback_1_(mthis, __arg_0) => recordActionTaken_Callback_1(mthis, __arg_0);
+
+  static recordActionTaken_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_recordActionTaken_Callback";
+  recordActionTaken_Callback_2_(mthis, __arg_0, __arg_1) => recordActionTaken_Callback_2(mthis, __arg_0, __arg_1);
+
+  static recordActionTaken_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_recordActionTaken_Callback";
+  recordActionTaken_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => recordActionTaken_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static recordPanelShown_Callback_0(mthis) native "InspectorFrontendHost_recordPanelShown_Callback";
+  recordPanelShown_Callback_0_(mthis) => recordPanelShown_Callback_0(mthis);
+
+  static recordPanelShown_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_recordPanelShown_Callback";
+  recordPanelShown_Callback_1_(mthis, __arg_0) => recordPanelShown_Callback_1(mthis, __arg_0);
+
+  static recordPanelShown_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_recordPanelShown_Callback";
+  recordPanelShown_Callback_2_(mthis, __arg_0, __arg_1) => recordPanelShown_Callback_2(mthis, __arg_0, __arg_1);
+
+  static recordPanelShown_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_recordPanelShown_Callback";
+  recordPanelShown_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => recordPanelShown_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static sendMessageToBackend_Callback_0(mthis) native "InspectorFrontendHost_sendMessageToBackend_Callback";
+  sendMessageToBackend_Callback_0_(mthis) => sendMessageToBackend_Callback_0(mthis);
+
+  static sendMessageToBackend_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_sendMessageToBackend_Callback";
+  sendMessageToBackend_Callback_1_(mthis, __arg_0) => sendMessageToBackend_Callback_1(mthis, __arg_0);
+
+  static sendMessageToBackend_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_sendMessageToBackend_Callback";
+  sendMessageToBackend_Callback_2_(mthis, __arg_0, __arg_1) => sendMessageToBackend_Callback_2(mthis, __arg_0, __arg_1);
+
+  static sendMessageToBackend_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_sendMessageToBackend_Callback";
+  sendMessageToBackend_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendMessageToBackend_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static sendMessageToEmbedder_Callback_0(mthis) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
+  sendMessageToEmbedder_Callback_0_(mthis) => sendMessageToEmbedder_Callback_0(mthis);
+
+  static sendMessageToEmbedder_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
+  sendMessageToEmbedder_Callback_1_(mthis, __arg_0) => sendMessageToEmbedder_Callback_1(mthis, __arg_0);
+
+  static sendMessageToEmbedder_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
+  sendMessageToEmbedder_Callback_2_(mthis, __arg_0, __arg_1) => sendMessageToEmbedder_Callback_2(mthis, __arg_0, __arg_1);
+
+  static sendMessageToEmbedder_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_sendMessageToEmbedder_Callback";
+  sendMessageToEmbedder_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendMessageToEmbedder_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setInjectedScriptForOrigin_Callback_0(mthis) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
+  setInjectedScriptForOrigin_Callback_0_(mthis) => setInjectedScriptForOrigin_Callback_0(mthis);
+
+  static setInjectedScriptForOrigin_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
+  setInjectedScriptForOrigin_Callback_1_(mthis, __arg_0) => setInjectedScriptForOrigin_Callback_1(mthis, __arg_0);
+
+  static setInjectedScriptForOrigin_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
+  setInjectedScriptForOrigin_Callback_2_(mthis, __arg_0, __arg_1) => setInjectedScriptForOrigin_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setInjectedScriptForOrigin_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
+  setInjectedScriptForOrigin_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInjectedScriptForOrigin_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setInjectedScriptForOrigin_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_setInjectedScriptForOrigin_Callback";
+  setInjectedScriptForOrigin_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInjectedScriptForOrigin_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setZoomFactor_Callback_0(mthis) native "InspectorFrontendHost_setZoomFactor_Callback";
+  setZoomFactor_Callback_0_(mthis) => setZoomFactor_Callback_0(mthis);
+
+  static setZoomFactor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_setZoomFactor_Callback";
+  setZoomFactor_Callback_1_(mthis, __arg_0) => setZoomFactor_Callback_1(mthis, __arg_0);
+
+  static setZoomFactor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_setZoomFactor_Callback";
+  setZoomFactor_Callback_2_(mthis, __arg_0, __arg_1) => setZoomFactor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setZoomFactor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_setZoomFactor_Callback";
+  setZoomFactor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setZoomFactor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static showContextMenuAtPoint_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
+  showContextMenuAtPoint_Callback_1_(mthis, __arg_0) => showContextMenuAtPoint_Callback_1(mthis, __arg_0);
+
+  static showContextMenuAtPoint_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
+  showContextMenuAtPoint_Callback_2_(mthis, __arg_0, __arg_1) => showContextMenuAtPoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static showContextMenuAtPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
+  showContextMenuAtPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showContextMenuAtPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static showContextMenuAtPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
+  showContextMenuAtPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showContextMenuAtPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static showContextMenuAtPoint_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "InspectorFrontendHost_showContextMenuAtPoint_Callback";
+  showContextMenuAtPoint_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => showContextMenuAtPoint_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static showContextMenu_Callback_0(mthis) native "InspectorFrontendHost_showContextMenu_Callback";
+  showContextMenu_Callback_0_(mthis) => showContextMenu_Callback_0(mthis);
+
+  static showContextMenu_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_showContextMenu_Callback";
+  showContextMenu_Callback_1_(mthis, __arg_0) => showContextMenu_Callback_1(mthis, __arg_0);
+
+  static showContextMenu_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_showContextMenu_Callback";
+  showContextMenu_Callback_2_(mthis, __arg_0, __arg_1) => showContextMenu_Callback_2(mthis, __arg_0, __arg_1);
+
+  static showContextMenu_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_showContextMenu_Callback";
+  showContextMenu_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showContextMenu_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static showContextMenu_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "InspectorFrontendHost_showContextMenu_Callback";
+  showContextMenu_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showContextMenu_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static upgradeDraggedFileSystemPermissions_Callback_0(mthis) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
+  upgradeDraggedFileSystemPermissions_Callback_0_(mthis) => upgradeDraggedFileSystemPermissions_Callback_0(mthis);
+
+  static upgradeDraggedFileSystemPermissions_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
+  upgradeDraggedFileSystemPermissions_Callback_1_(mthis, __arg_0) => upgradeDraggedFileSystemPermissions_Callback_1(mthis, __arg_0);
+
+  static upgradeDraggedFileSystemPermissions_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
+  upgradeDraggedFileSystemPermissions_Callback_2_(mthis, __arg_0, __arg_1) => upgradeDraggedFileSystemPermissions_Callback_2(mthis, __arg_0, __arg_1);
+
+  static upgradeDraggedFileSystemPermissions_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InspectorFrontendHost_upgradeDraggedFileSystemPermissions_Callback";
+  upgradeDraggedFileSystemPermissions_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => upgradeDraggedFileSystemPermissions_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static zoomFactor_Callback_0(mthis) native "InspectorFrontendHost_zoomFactor_Callback";
+  zoomFactor_Callback_0_(mthis) => zoomFactor_Callback_0(mthis);
+
+  static zoomFactor_Callback_1(mthis, __arg_0) native "InspectorFrontendHost_zoomFactor_Callback";
+  zoomFactor_Callback_1_(mthis, __arg_0) => zoomFactor_Callback_1(mthis, __arg_0);
+
+  static zoomFactor_Callback_2(mthis, __arg_0, __arg_1) native "InspectorFrontendHost_zoomFactor_Callback";
+  zoomFactor_Callback_2_(mthis, __arg_0, __arg_1) => zoomFactor_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkInstallEvent {
-  static reloadAll_Callback(mthis) native "InstallEvent_reloadAll_Callback";
+class BlinkInspectorOverlayHost {
+  static final instance = new BlinkInspectorOverlayHost();
 
-  static replace_Callback(mthis) native "InstallEvent_replace_Callback";
+  static resume_Callback_0(mthis) native "InspectorOverlayHost_resume_Callback";
+  resume_Callback_0_(mthis) => resume_Callback_0(mthis);
+
+  static resume_Callback_1(mthis, __arg_0) native "InspectorOverlayHost_resume_Callback";
+  resume_Callback_1_(mthis, __arg_0) => resume_Callback_1(mthis, __arg_0);
+
+  static resume_Callback_2(mthis, __arg_0, __arg_1) native "InspectorOverlayHost_resume_Callback";
+  resume_Callback_2_(mthis, __arg_0, __arg_1) => resume_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stepOver_Callback_0(mthis) native "InspectorOverlayHost_stepOver_Callback";
+  stepOver_Callback_0_(mthis) => stepOver_Callback_0(mthis);
+
+  static stepOver_Callback_1(mthis, __arg_0) native "InspectorOverlayHost_stepOver_Callback";
+  stepOver_Callback_1_(mthis, __arg_0) => stepOver_Callback_1(mthis, __arg_0);
+
+  static stepOver_Callback_2(mthis, __arg_0, __arg_1) native "InspectorOverlayHost_stepOver_Callback";
+  stepOver_Callback_2_(mthis, __arg_0, __arg_1) => stepOver_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkKeyboardEvent {
-  static constructorCallback(type, options) native "KeyboardEvent_constructorCallback";
+class BlinkInstallEvent extends BlinkInstallPhaseEvent {
+  static final instance = new BlinkInstallEvent();
+
+  static reloadAll_Callback_0(mthis) native "InstallEvent_reloadAll_Callback";
+  reloadAll_Callback_0_(mthis) => reloadAll_Callback_0(mthis);
+
+  static reloadAll_Callback_1(mthis, __arg_0) native "InstallEvent_reloadAll_Callback";
+  reloadAll_Callback_1_(mthis, __arg_0) => reloadAll_Callback_1(mthis, __arg_0);
+
+  static reloadAll_Callback_2(mthis, __arg_0, __arg_1) native "InstallEvent_reloadAll_Callback";
+  reloadAll_Callback_2_(mthis, __arg_0, __arg_1) => reloadAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replace_Callback_0(mthis) native "InstallEvent_replace_Callback";
+  replace_Callback_0_(mthis) => replace_Callback_0(mthis);
+
+  static replace_Callback_1(mthis, __arg_0) native "InstallEvent_replace_Callback";
+  replace_Callback_1_(mthis, __arg_0) => replace_Callback_1(mthis, __arg_0);
+
+  static replace_Callback_2(mthis, __arg_0, __arg_1) native "InstallEvent_replace_Callback";
+  replace_Callback_2_(mthis, __arg_0, __arg_1) => replace_Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkInstallPhaseEvent extends BlinkEvent {
+  static final instance = new BlinkInstallPhaseEvent();
+
+  static waitUntil_Callback_0(mthis) native "InstallPhaseEvent_waitUntil_Callback";
+  waitUntil_Callback_0_(mthis) => waitUntil_Callback_0(mthis);
+
+  static waitUntil_Callback_1(mthis, __arg_0) native "InstallPhaseEvent_waitUntil_Callback";
+  waitUntil_Callback_1_(mthis, __arg_0) => waitUntil_Callback_1(mthis, __arg_0);
+
+  static waitUntil_Callback_2(mthis, __arg_0, __arg_1) native "InstallPhaseEvent_waitUntil_Callback";
+  waitUntil_Callback_2_(mthis, __arg_0, __arg_1) => waitUntil_Callback_2(mthis, __arg_0, __arg_1);
+
+  static waitUntil_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "InstallPhaseEvent_waitUntil_Callback";
+  waitUntil_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => waitUntil_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkJavaScriptCallFrame {
+  static final instance = new BlinkJavaScriptCallFrame();
+
+  static caller_Getter(mthis) native "JavaScriptCallFrame_caller_Getter";
+  caller_Getter_(mthis) => caller_Getter(mthis);
+
+  static column_Getter(mthis) native "JavaScriptCallFrame_column_Getter";
+  column_Getter_(mthis) => column_Getter(mthis);
+
+  static evaluateWithExceptionDetails_Callback_0(mthis) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_0_(mthis) => evaluateWithExceptionDetails_Callback_0(mthis);
+
+  static evaluateWithExceptionDetails_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_1_(mthis, __arg_0) => evaluateWithExceptionDetails_Callback_1(mthis, __arg_0);
+
+  static evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_2_(mthis, __arg_0, __arg_1) => evaluateWithExceptionDetails_Callback_2(mthis, __arg_0, __arg_1);
+
+  static evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_evaluateWithExceptionDetails_Callback";
+  evaluateWithExceptionDetails_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluateWithExceptionDetails_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static functionName_Getter(mthis) native "JavaScriptCallFrame_functionName_Getter";
+  functionName_Getter_(mthis) => functionName_Getter(mthis);
+
+  static isAtReturn_Getter(mthis) native "JavaScriptCallFrame_isAtReturn_Getter";
+  isAtReturn_Getter_(mthis) => isAtReturn_Getter(mthis);
+
+  static line_Getter(mthis) native "JavaScriptCallFrame_line_Getter";
+  line_Getter_(mthis) => line_Getter(mthis);
+
+  static restart_Callback_0(mthis) native "JavaScriptCallFrame_restart_Callback";
+  restart_Callback_0_(mthis) => restart_Callback_0(mthis);
+
+  static restart_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_restart_Callback";
+  restart_Callback_1_(mthis, __arg_0) => restart_Callback_1(mthis, __arg_0);
+
+  static restart_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_restart_Callback";
+  restart_Callback_2_(mthis, __arg_0, __arg_1) => restart_Callback_2(mthis, __arg_0, __arg_1);
+
+  static returnValue_Getter(mthis) native "JavaScriptCallFrame_returnValue_Getter";
+  returnValue_Getter_(mthis) => returnValue_Getter(mthis);
+
+  static scopeChain_Getter(mthis) native "JavaScriptCallFrame_scopeChain_Getter";
+  scopeChain_Getter_(mthis) => scopeChain_Getter(mthis);
+
+  static scopeType_Callback_0(mthis) native "JavaScriptCallFrame_scopeType_Callback";
+  scopeType_Callback_0_(mthis) => scopeType_Callback_0(mthis);
+
+  static scopeType_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_scopeType_Callback";
+  scopeType_Callback_1_(mthis, __arg_0) => scopeType_Callback_1(mthis, __arg_0);
+
+  static scopeType_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_scopeType_Callback";
+  scopeType_Callback_2_(mthis, __arg_0, __arg_1) => scopeType_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scopeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_scopeType_Callback";
+  scopeType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scopeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setVariableValue_Callback_0(mthis) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_0_(mthis) => setVariableValue_Callback_0(mthis);
+
+  static setVariableValue_Callback_1(mthis, __arg_0) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_1_(mthis, __arg_0) => setVariableValue_Callback_1(mthis, __arg_0);
+
+  static setVariableValue_Callback_2(mthis, __arg_0, __arg_1) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_2_(mthis, __arg_0, __arg_1) => setVariableValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVariableValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVariableValue_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "JavaScriptCallFrame_setVariableValue_Callback";
+  setVariableValue_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVariableValue_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static sourceID_Getter(mthis) native "JavaScriptCallFrame_sourceID_Getter";
+  sourceID_Getter_(mthis) => sourceID_Getter(mthis);
+
+  static stepInPositions_Getter(mthis) native "JavaScriptCallFrame_stepInPositions_Getter";
+  stepInPositions_Getter_(mthis) => stepInPositions_Getter(mthis);
+
+  static thisObject_Getter(mthis) native "JavaScriptCallFrame_thisObject_Getter";
+  thisObject_Getter_(mthis) => thisObject_Getter(mthis);
+
+  static type_Getter(mthis) native "JavaScriptCallFrame_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+}
+
+class BlinkKeyboardEvent extends BlinkUIEvent {
+  static final instance = new BlinkKeyboardEvent();
 
   static altKey_Getter(mthis) native "KeyboardEvent_altKey_Getter";
+  altKey_Getter_(mthis) => altKey_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "KeyboardEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static ctrlKey_Getter(mthis) native "KeyboardEvent_ctrlKey_Getter";
+  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
+
+  static getModifierState_Callback_0(mthis) native "KeyboardEvent_getModifierState_Callback";
+  getModifierState_Callback_0_(mthis) => getModifierState_Callback_0(mthis);
+
+  static getModifierState_Callback_1(mthis, __arg_0) native "KeyboardEvent_getModifierState_Callback";
+  getModifierState_Callback_1_(mthis, __arg_0) => getModifierState_Callback_1(mthis, __arg_0);
+
+  static getModifierState_Callback_2(mthis, __arg_0, __arg_1) native "KeyboardEvent_getModifierState_Callback";
+  getModifierState_Callback_2_(mthis, __arg_0, __arg_1) => getModifierState_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getModifierState_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "KeyboardEvent_getModifierState_Callback";
+  getModifierState_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getModifierState_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initKeyboardEvent_Callback_0(mthis) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_0_(mthis) => initKeyboardEvent_Callback_0(mthis);
+
+  static initKeyboardEvent_Callback_1(mthis, __arg_0) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_1_(mthis, __arg_0) => initKeyboardEvent_Callback_1(mthis, __arg_0);
+
+  static initKeyboardEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initKeyboardEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initKeyboardEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initKeyboardEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static initKeyboardEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initKeyboardEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+
+  static initKeyboardEvent_Callback_2(mthis, __arg_0, __arg_1) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_2_(mthis, __arg_0, __arg_1) => initKeyboardEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initKeyboardEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initKeyboardEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initKeyboardEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initKeyboardEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initKeyboardEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initKeyboardEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initKeyboardEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initKeyboardEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initKeyboardEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initKeyboardEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initKeyboardEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initKeyboardEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initKeyboardEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "KeyboardEvent_initKeyboardEvent_Callback";
+  initKeyboardEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initKeyboardEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static keyIdentifier_Getter(mthis) native "KeyboardEvent_keyIdentifier_Getter";
+  keyIdentifier_Getter_(mthis) => keyIdentifier_Getter(mthis);
 
   static keyLocation_Getter(mthis) native "KeyboardEvent_keyLocation_Getter";
+  keyLocation_Getter_(mthis) => keyLocation_Getter(mthis);
 
   static location_Getter(mthis) native "KeyboardEvent_location_Getter";
+  location_Getter_(mthis) => location_Getter(mthis);
 
   static metaKey_Getter(mthis) native "KeyboardEvent_metaKey_Getter";
+  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
 
   static repeat_Getter(mthis) native "KeyboardEvent_repeat_Getter";
+  repeat_Getter_(mthis) => repeat_Getter(mthis);
 
   static shiftKey_Getter(mthis) native "KeyboardEvent_shiftKey_Getter";
+  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
 
-  static getModifierState_Callback_1(mthis, keyArgument) native "KeyboardEvent_getModifierState_Callback";
-
-  static initKeyboardEvent_Callback_10(mthis, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey) native "KeyboardEvent_initKeyboardEvent_Callback";
 }
 
-class BlinkLocalCredential {
-  static constructorCallback_4(id, name, avatarURL, password) native "LocalCredential_constructorCallback";
+class BlinkLocalCredential extends BlinkCredential {
+  static final instance = new BlinkLocalCredential();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "LocalCredential_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "LocalCredential_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "LocalCredential_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "LocalCredential_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "LocalCredential_constructorCallback";
+  constructorCallback_6_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => constructorCallback_6(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static password_Getter(mthis) native "LocalCredential_password_Getter";
+  password_Getter_(mthis) => password_Getter(mthis);
+
 }
 
 class BlinkLocation {
+  static final instance = new BlinkLocation();
+
   static ancestorOrigins_Getter(mthis) native "Location_ancestorOrigins_Getter";
+  ancestorOrigins_Getter_(mthis) => ancestorOrigins_Getter(mthis);
+
+  static assign_Callback_0(mthis) native "Location_assign_Callback";
+  assign_Callback_0_(mthis) => assign_Callback_0(mthis);
+
+  static assign_Callback_1(mthis, __arg_0) native "Location_assign_Callback";
+  assign_Callback_1_(mthis, __arg_0) => assign_Callback_1(mthis, __arg_0);
+
+  static assign_Callback_2(mthis, __arg_0, __arg_1) native "Location_assign_Callback";
+  assign_Callback_2_(mthis, __arg_0, __arg_1) => assign_Callback_2(mthis, __arg_0, __arg_1);
+
+  static assign_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Location_assign_Callback";
+  assign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => assign_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static hash_Getter(mthis) native "Location_hash_Getter";
+  hash_Getter_(mthis) => hash_Getter(mthis);
 
-  static hash_Setter(mthis, value) native "Location_hash_Setter";
+  static hash_Setter(mthis, __arg_0) native "Location_hash_Setter";
+  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
 
   static host_Getter(mthis) native "Location_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
 
-  static host_Setter(mthis, value) native "Location_host_Setter";
+  static host_Setter(mthis, __arg_0) native "Location_host_Setter";
+  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
 
   static hostname_Getter(mthis) native "Location_hostname_Getter";
+  hostname_Getter_(mthis) => hostname_Getter(mthis);
 
-  static hostname_Setter(mthis, value) native "Location_hostname_Setter";
+  static hostname_Setter(mthis, __arg_0) native "Location_hostname_Setter";
+  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "Location_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "Location_href_Setter";
+  static href_Setter(mthis, __arg_0) native "Location_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
 
   static origin_Getter(mthis) native "Location_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
 
   static pathname_Getter(mthis) native "Location_pathname_Getter";
+  pathname_Getter_(mthis) => pathname_Getter(mthis);
 
-  static pathname_Setter(mthis, value) native "Location_pathname_Setter";
+  static pathname_Setter(mthis, __arg_0) native "Location_pathname_Setter";
+  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
 
   static port_Getter(mthis) native "Location_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
 
-  static port_Setter(mthis, value) native "Location_port_Setter";
+  static port_Setter(mthis, __arg_0) native "Location_port_Setter";
+  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
 
   static protocol_Getter(mthis) native "Location_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
-  static protocol_Setter(mthis, value) native "Location_protocol_Setter";
+  static protocol_Setter(mthis, __arg_0) native "Location_protocol_Setter";
+  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+
+  static reload_Callback_0(mthis) native "Location_reload_Callback";
+  reload_Callback_0_(mthis) => reload_Callback_0(mthis);
+
+  static reload_Callback_1(mthis, __arg_0) native "Location_reload_Callback";
+  reload_Callback_1_(mthis, __arg_0) => reload_Callback_1(mthis, __arg_0);
+
+  static reload_Callback_2(mthis, __arg_0, __arg_1) native "Location_reload_Callback";
+  reload_Callback_2_(mthis, __arg_0, __arg_1) => reload_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replace_Callback_0(mthis) native "Location_replace_Callback";
+  replace_Callback_0_(mthis) => replace_Callback_0(mthis);
+
+  static replace_Callback_1(mthis, __arg_0) native "Location_replace_Callback";
+  replace_Callback_1_(mthis, __arg_0) => replace_Callback_1(mthis, __arg_0);
+
+  static replace_Callback_2(mthis, __arg_0, __arg_1) native "Location_replace_Callback";
+  replace_Callback_2_(mthis, __arg_0, __arg_1) => replace_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Location_replace_Callback";
+  replace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static search_Getter(mthis) native "Location_search_Getter";
+  search_Getter_(mthis) => search_Getter(mthis);
 
-  static search_Setter(mthis, value) native "Location_search_Setter";
+  static search_Setter(mthis, __arg_0) native "Location_search_Setter";
+  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
 
-  static assign_Callback_1(mthis, url) native "Location_assign_Callback";
+  static toString_Callback_0(mthis) native "Location_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
 
-  static reload_Callback(mthis) native "Location_reload_Callback";
+  static toString_Callback_1(mthis, __arg_0) native "Location_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
 
-  static replace_Callback_1(mthis, url) native "Location_replace_Callback";
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "Location_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
 
-  static toString_Callback(mthis) native "Location_toString_Callback";
 }
 
-class BlinkMIDIAccess {
+class BlinkMIDIAccess extends BlinkEventTarget {
+  static final instance = new BlinkMIDIAccess();
+
+  static inputs_Callback_0(mthis) native "MIDIAccess_inputs_Callback";
+  inputs_Callback_0_(mthis) => inputs_Callback_0(mthis);
+
+  static inputs_Callback_1(mthis, __arg_0) native "MIDIAccess_inputs_Callback";
+  inputs_Callback_1_(mthis, __arg_0) => inputs_Callback_1(mthis, __arg_0);
+
+  static inputs_Callback_2(mthis, __arg_0, __arg_1) native "MIDIAccess_inputs_Callback";
+  inputs_Callback_2_(mthis, __arg_0, __arg_1) => inputs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static onconnect_Getter(mthis) native "MIDIAccess_onconnect_Getter";
+  onconnect_Getter_(mthis) => onconnect_Getter(mthis);
+
+  static onconnect_Setter(mthis, __arg_0) native "MIDIAccess_onconnect_Setter";
+  onconnect_Setter_(mthis, __arg_0) => onconnect_Setter(mthis, __arg_0);
+
+  static ondisconnect_Getter(mthis) native "MIDIAccess_ondisconnect_Getter";
+  ondisconnect_Getter_(mthis) => ondisconnect_Getter(mthis);
+
+  static ondisconnect_Setter(mthis, __arg_0) native "MIDIAccess_ondisconnect_Setter";
+  ondisconnect_Setter_(mthis, __arg_0) => ondisconnect_Setter(mthis, __arg_0);
+
+  static outputs_Callback_0(mthis) native "MIDIAccess_outputs_Callback";
+  outputs_Callback_0_(mthis) => outputs_Callback_0(mthis);
+
+  static outputs_Callback_1(mthis, __arg_0) native "MIDIAccess_outputs_Callback";
+  outputs_Callback_1_(mthis, __arg_0) => outputs_Callback_1(mthis, __arg_0);
+
+  static outputs_Callback_2(mthis, __arg_0, __arg_1) native "MIDIAccess_outputs_Callback";
+  outputs_Callback_2_(mthis, __arg_0, __arg_1) => outputs_Callback_2(mthis, __arg_0, __arg_1);
+
   static sysexEnabled_Getter(mthis) native "MIDIAccess_sysexEnabled_Getter";
+  sysexEnabled_Getter_(mthis) => sysexEnabled_Getter(mthis);
 
-  static inputs_Callback(mthis) native "MIDIAccess_inputs_Callback";
-
-  static outputs_Callback(mthis) native "MIDIAccess_outputs_Callback";
 }
 
-class BlinkMIDIConnectionEvent {
-  static constructorCallback(type, options) native "MIDIConnectionEvent_constructorCallback";
+class BlinkMIDIConnectionEvent extends BlinkEvent {
+  static final instance = new BlinkMIDIConnectionEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MIDIConnectionEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static port_Getter(mthis) native "MIDIConnectionEvent_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
+
 }
 
-class BlinkMIDIPort {
-  static id_Getter(mthis) native "MIDIPort_id_Getter";
+class BlinkMIDIInput extends BlinkMIDIPort {
+  static final instance = new BlinkMIDIInput();
 
-  static manufacturer_Getter(mthis) native "MIDIPort_manufacturer_Getter";
+  static onmidimessage_Getter(mthis) native "MIDIInput_onmidimessage_Getter";
+  onmidimessage_Getter_(mthis) => onmidimessage_Getter(mthis);
 
-  static name_Getter(mthis) native "MIDIPort_name_Getter";
+  static onmidimessage_Setter(mthis, __arg_0) native "MIDIInput_onmidimessage_Setter";
+  onmidimessage_Setter_(mthis, __arg_0) => onmidimessage_Setter(mthis, __arg_0);
 
-  static type_Getter(mthis) native "MIDIPort_type_Getter";
-
-  static version_Getter(mthis) native "MIDIPort_version_Getter";
 }
 
-class BlinkMIDIInput {}
+class BlinkMIDIMessageEvent extends BlinkEvent {
+  static final instance = new BlinkMIDIMessageEvent();
 
-class BlinkMIDIMessageEvent {
-  static constructorCallback(type, options) native "MIDIMessageEvent_constructorCallback";
+  static constructorCallback_2(__arg_0, __arg_1) native "MIDIMessageEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static data_Getter(mthis) native "MIDIMessageEvent_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
 
   static receivedTime_Getter(mthis) native "MIDIMessageEvent_receivedTime_Getter";
+  receivedTime_Getter_(mthis) => receivedTime_Getter(mthis);
+
 }
 
-class BlinkMIDIOutput {
-  static send_Callback_2(mthis, data, timestamp) native "MIDIOutput_send_Callback";
+class BlinkMIDIOutput extends BlinkMIDIPort {
+  static final instance = new BlinkMIDIOutput();
 
-  static send_Callback_1(mthis, data) native "MIDIOutput_send_Callback";
+  static send_Callback_0(mthis) native "MIDIOutput_send_Callback";
+  send_Callback_0_(mthis) => send_Callback_0(mthis);
+
+  static send_Callback_1(mthis, __arg_0) native "MIDIOutput_send_Callback";
+  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
+
+  static send_Callback_2(mthis, __arg_0, __arg_1) native "MIDIOutput_send_Callback";
+  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
+
+  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MIDIOutput_send_Callback";
+  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static send_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MIDIOutput_send_Callback";
+  send_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => send_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkMediaController {
-  static constructorCallback() native "MediaController_constructorCallback";
+class BlinkMIDIPort extends BlinkEventTarget {
+  static final instance = new BlinkMIDIPort();
+
+  static id_Getter(mthis) native "MIDIPort_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
+
+  static manufacturer_Getter(mthis) native "MIDIPort_manufacturer_Getter";
+  manufacturer_Getter_(mthis) => manufacturer_Getter(mthis);
+
+  static name_Getter(mthis) native "MIDIPort_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static ondisconnect_Getter(mthis) native "MIDIPort_ondisconnect_Getter";
+  ondisconnect_Getter_(mthis) => ondisconnect_Getter(mthis);
+
+  static ondisconnect_Setter(mthis, __arg_0) native "MIDIPort_ondisconnect_Setter";
+  ondisconnect_Setter_(mthis, __arg_0) => ondisconnect_Setter(mthis, __arg_0);
+
+  static type_Getter(mthis) native "MIDIPort_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static version_Getter(mthis) native "MIDIPort_version_Getter";
+  version_Getter_(mthis) => version_Getter(mthis);
+
+}
+
+class BlinkMediaController extends BlinkEventTarget {
+  static final instance = new BlinkMediaController();
 
   static buffered_Getter(mthis) native "MediaController_buffered_Getter";
+  buffered_Getter_(mthis) => buffered_Getter(mthis);
+
+  static constructorCallback_0() native "MediaController_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "MediaController_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaController_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static currentTime_Getter(mthis) native "MediaController_currentTime_Getter";
+  currentTime_Getter_(mthis) => currentTime_Getter(mthis);
 
-  static currentTime_Setter(mthis, value) native "MediaController_currentTime_Setter";
+  static currentTime_Setter(mthis, __arg_0) native "MediaController_currentTime_Setter";
+  currentTime_Setter_(mthis, __arg_0) => currentTime_Setter(mthis, __arg_0);
 
   static defaultPlaybackRate_Getter(mthis) native "MediaController_defaultPlaybackRate_Getter";
+  defaultPlaybackRate_Getter_(mthis) => defaultPlaybackRate_Getter(mthis);
 
-  static defaultPlaybackRate_Setter(mthis, value) native "MediaController_defaultPlaybackRate_Setter";
+  static defaultPlaybackRate_Setter(mthis, __arg_0) native "MediaController_defaultPlaybackRate_Setter";
+  defaultPlaybackRate_Setter_(mthis, __arg_0) => defaultPlaybackRate_Setter(mthis, __arg_0);
 
   static duration_Getter(mthis) native "MediaController_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
 
   static muted_Getter(mthis) native "MediaController_muted_Getter";
+  muted_Getter_(mthis) => muted_Getter(mthis);
 
-  static muted_Setter(mthis, value) native "MediaController_muted_Setter";
+  static muted_Setter(mthis, __arg_0) native "MediaController_muted_Setter";
+  muted_Setter_(mthis, __arg_0) => muted_Setter(mthis, __arg_0);
+
+  static pause_Callback_0(mthis) native "MediaController_pause_Callback";
+  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+
+  static pause_Callback_1(mthis, __arg_0) native "MediaController_pause_Callback";
+  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+
+  static pause_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_pause_Callback";
+  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
 
   static paused_Getter(mthis) native "MediaController_paused_Getter";
+  paused_Getter_(mthis) => paused_Getter(mthis);
+
+  static play_Callback_0(mthis) native "MediaController_play_Callback";
+  play_Callback_0_(mthis) => play_Callback_0(mthis);
+
+  static play_Callback_1(mthis, __arg_0) native "MediaController_play_Callback";
+  play_Callback_1_(mthis, __arg_0) => play_Callback_1(mthis, __arg_0);
+
+  static play_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_play_Callback";
+  play_Callback_2_(mthis, __arg_0, __arg_1) => play_Callback_2(mthis, __arg_0, __arg_1);
 
   static playbackRate_Getter(mthis) native "MediaController_playbackRate_Getter";
+  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
 
-  static playbackRate_Setter(mthis, value) native "MediaController_playbackRate_Setter";
+  static playbackRate_Setter(mthis, __arg_0) native "MediaController_playbackRate_Setter";
+  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
 
   static playbackState_Getter(mthis) native "MediaController_playbackState_Getter";
+  playbackState_Getter_(mthis) => playbackState_Getter(mthis);
 
   static played_Getter(mthis) native "MediaController_played_Getter";
+  played_Getter_(mthis) => played_Getter(mthis);
 
   static seekable_Getter(mthis) native "MediaController_seekable_Getter";
+  seekable_Getter_(mthis) => seekable_Getter(mthis);
+
+  static unpause_Callback_0(mthis) native "MediaController_unpause_Callback";
+  unpause_Callback_0_(mthis) => unpause_Callback_0(mthis);
+
+  static unpause_Callback_1(mthis, __arg_0) native "MediaController_unpause_Callback";
+  unpause_Callback_1_(mthis, __arg_0) => unpause_Callback_1(mthis, __arg_0);
+
+  static unpause_Callback_2(mthis, __arg_0, __arg_1) native "MediaController_unpause_Callback";
+  unpause_Callback_2_(mthis, __arg_0, __arg_1) => unpause_Callback_2(mthis, __arg_0, __arg_1);
 
   static volume_Getter(mthis) native "MediaController_volume_Getter";
+  volume_Getter_(mthis) => volume_Getter(mthis);
 
-  static volume_Setter(mthis, value) native "MediaController_volume_Setter";
+  static volume_Setter(mthis, __arg_0) native "MediaController_volume_Setter";
+  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
 
-  static pause_Callback(mthis) native "MediaController_pause_Callback";
-
-  static play_Callback(mthis) native "MediaController_play_Callback";
-
-  static unpause_Callback(mthis) native "MediaController_unpause_Callback";
 }
 
 class BlinkMediaDeviceInfo {
+  static final instance = new BlinkMediaDeviceInfo();
+
   static deviceId_Getter(mthis) native "MediaDeviceInfo_deviceId_Getter";
+  deviceId_Getter_(mthis) => deviceId_Getter(mthis);
 
   static groupId_Getter(mthis) native "MediaDeviceInfo_groupId_Getter";
+  groupId_Getter_(mthis) => groupId_Getter(mthis);
 
   static kind_Getter(mthis) native "MediaDeviceInfo_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "MediaDeviceInfo_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
+
 }
 
-class BlinkMediaElementAudioSourceNode {
+class BlinkMediaElementAudioSourceNode extends BlinkAudioSourceNode {
+  static final instance = new BlinkMediaElementAudioSourceNode();
+
   static mediaElement_Getter(mthis) native "MediaElementAudioSourceNode_mediaElement_Getter";
+  mediaElement_Getter_(mthis) => mediaElement_Getter(mthis);
+
 }
 
 class BlinkMediaError {
+  static final instance = new BlinkMediaError();
+
   static code_Getter(mthis) native "MediaError_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
+
 }
 
 class BlinkMediaKeyError {
+  static final instance = new BlinkMediaKeyError();
+
   static code_Getter(mthis) native "MediaKeyError_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
 
   static systemCode_Getter(mthis) native "MediaKeyError_systemCode_Getter";
+  systemCode_Getter_(mthis) => systemCode_Getter(mthis);
+
 }
 
-class BlinkMediaKeyEvent {
-  static constructorCallback(type, options) native "MediaKeyEvent_constructorCallback";
+class BlinkMediaKeyEvent extends BlinkEvent {
+  static final instance = new BlinkMediaKeyEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static defaultURL_Getter(mthis) native "MediaKeyEvent_defaultURL_Getter";
+  defaultURL_Getter_(mthis) => defaultURL_Getter(mthis);
 
   static errorCode_Getter(mthis) native "MediaKeyEvent_errorCode_Getter";
+  errorCode_Getter_(mthis) => errorCode_Getter(mthis);
 
   static initData_Getter(mthis) native "MediaKeyEvent_initData_Getter";
+  initData_Getter_(mthis) => initData_Getter(mthis);
 
   static keySystem_Getter(mthis) native "MediaKeyEvent_keySystem_Getter";
+  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
 
   static message_Getter(mthis) native "MediaKeyEvent_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
 
   static sessionId_Getter(mthis) native "MediaKeyEvent_sessionId_Getter";
+  sessionId_Getter_(mthis) => sessionId_Getter(mthis);
 
   static systemCode_Getter(mthis) native "MediaKeyEvent_systemCode_Getter";
+  systemCode_Getter_(mthis) => systemCode_Getter(mthis);
+
 }
 
-class BlinkMediaKeyMessageEvent {
-  static constructorCallback(type, options) native "MediaKeyMessageEvent_constructorCallback";
+class BlinkMediaKeyMessageEvent extends BlinkEvent {
+  static final instance = new BlinkMediaKeyMessageEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyMessageEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static destinationURL_Getter(mthis) native "MediaKeyMessageEvent_destinationURL_Getter";
+  destinationURL_Getter_(mthis) => destinationURL_Getter(mthis);
 
   static message_Getter(mthis) native "MediaKeyMessageEvent_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
+
 }
 
-class BlinkMediaKeyNeededEvent {
-  static constructorCallback(type, options) native "MediaKeyNeededEvent_constructorCallback";
+class BlinkMediaKeyNeededEvent extends BlinkEvent {
+  static final instance = new BlinkMediaKeyNeededEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaKeyNeededEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static contentType_Getter(mthis) native "MediaKeyNeededEvent_contentType_Getter";
+  contentType_Getter_(mthis) => contentType_Getter(mthis);
 
   static initData_Getter(mthis) native "MediaKeyNeededEvent_initData_Getter";
+  initData_Getter_(mthis) => initData_Getter(mthis);
+
 }
 
-class BlinkMediaKeySession {
+class BlinkMediaKeySession extends BlinkEventTarget {
+  static final instance = new BlinkMediaKeySession();
+
   static closed_Getter(mthis) native "MediaKeySession_closed_Getter";
+  closed_Getter_(mthis) => closed_Getter(mthis);
 
   static error_Getter(mthis) native "MediaKeySession_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
 
   static keySystem_Getter(mthis) native "MediaKeySession_keySystem_Getter";
+  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
+
+  static release_Callback_0(mthis) native "MediaKeySession_release_Callback";
+  release_Callback_0_(mthis) => release_Callback_0(mthis);
+
+  static release_Callback_1(mthis, __arg_0) native "MediaKeySession_release_Callback";
+  release_Callback_1_(mthis, __arg_0) => release_Callback_1(mthis, __arg_0);
+
+  static release_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeySession_release_Callback";
+  release_Callback_2_(mthis, __arg_0, __arg_1) => release_Callback_2(mthis, __arg_0, __arg_1);
 
   static sessionId_Getter(mthis) native "MediaKeySession_sessionId_Getter";
+  sessionId_Getter_(mthis) => sessionId_Getter(mthis);
 
-  static release_Callback(mthis) native "MediaKeySession_release_Callback";
+  static update_Callback_0(mthis) native "MediaKeySession_update_Callback";
+  update_Callback_0_(mthis) => update_Callback_0(mthis);
 
-  static update_Callback_1(mthis, response) native "MediaKeySession_update_Callback";
+  static update_Callback_1(mthis, __arg_0) native "MediaKeySession_update_Callback";
+  update_Callback_1_(mthis, __arg_0) => update_Callback_1(mthis, __arg_0);
+
+  static update_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeySession_update_Callback";
+  update_Callback_2_(mthis, __arg_0, __arg_1) => update_Callback_2(mthis, __arg_0, __arg_1);
+
+  static update_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaKeySession_update_Callback";
+  update_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => update_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkMediaKeys {
+  static final instance = new BlinkMediaKeys();
+
+  static createSession_Callback_0(mthis) native "MediaKeys_createSession_Callback";
+  createSession_Callback_0_(mthis) => createSession_Callback_0(mthis);
+
+  static createSession_Callback_1(mthis, __arg_0) native "MediaKeys_createSession_Callback";
+  createSession_Callback_1_(mthis, __arg_0) => createSession_Callback_1(mthis, __arg_0);
+
+  static createSession_Callback_2(mthis, __arg_0, __arg_1) native "MediaKeys_createSession_Callback";
+  createSession_Callback_2_(mthis, __arg_0, __arg_1) => createSession_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSession_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaKeys_createSession_Callback";
+  createSession_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSession_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSession_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MediaKeys_createSession_Callback";
+  createSession_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSession_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSession_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MediaKeys_createSession_Callback";
+  createSession_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSession_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static create_Callback_0() native "MediaKeys_create_Callback";
+  create_Callback_0_() => create_Callback_0();
+
+  static create_Callback_1(__arg_0) native "MediaKeys_create_Callback";
+  create_Callback_1_(__arg_0) => create_Callback_1(__arg_0);
+
+  static create_Callback_2(__arg_0, __arg_1) native "MediaKeys_create_Callback";
+  create_Callback_2_(__arg_0, __arg_1) => create_Callback_2(__arg_0, __arg_1);
+
+  static create_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaKeys_create_Callback";
+  create_Callback_3_(__arg_0, __arg_1, __arg_2) => create_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static isTypeSupported_Callback_0() native "MediaKeys_isTypeSupported_Callback";
+  isTypeSupported_Callback_0_() => isTypeSupported_Callback_0();
+
+  static isTypeSupported_Callback_1(__arg_0) native "MediaKeys_isTypeSupported_Callback";
+  isTypeSupported_Callback_1_(__arg_0) => isTypeSupported_Callback_1(__arg_0);
+
+  static isTypeSupported_Callback_2(__arg_0, __arg_1) native "MediaKeys_isTypeSupported_Callback";
+  isTypeSupported_Callback_2_(__arg_0, __arg_1) => isTypeSupported_Callback_2(__arg_0, __arg_1);
+
+  static isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaKeys_isTypeSupported_Callback";
+  isTypeSupported_Callback_3_(__arg_0, __arg_1, __arg_2) => isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2);
+
+  static isTypeSupported_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "MediaKeys_isTypeSupported_Callback";
+  isTypeSupported_Callback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => isTypeSupported_Callback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
   static keySystem_Getter(mthis) native "MediaKeys_keySystem_Getter";
+  keySystem_Getter_(mthis) => keySystem_Getter(mthis);
 
-  static create_Callback_1(keySystem) native "MediaKeys_create_Callback";
-
-  static createSession_Callback_2(mthis, initDataType, initData) native "MediaKeys_createSession_Callback";
-
-  static createSession_Callback_3(mthis, initDataType, initData, sessionType) native "MediaKeys_createSession_Callback";
-
-  static isTypeSupported_Callback_2(keySystem, contentType) native "MediaKeys_isTypeSupported_Callback";
 }
 
 class BlinkMediaList {
+  static final instance = new BlinkMediaList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "MediaList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static appendMedium_Callback_0(mthis) native "MediaList_appendMedium_Callback";
+  appendMedium_Callback_0_(mthis) => appendMedium_Callback_0(mthis);
+
+  static appendMedium_Callback_1(mthis, __arg_0) native "MediaList_appendMedium_Callback";
+  appendMedium_Callback_1_(mthis, __arg_0) => appendMedium_Callback_1(mthis, __arg_0);
+
+  static appendMedium_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_appendMedium_Callback";
+  appendMedium_Callback_2_(mthis, __arg_0, __arg_1) => appendMedium_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_appendMedium_Callback";
+  appendMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteMedium_Callback_0(mthis) native "MediaList_deleteMedium_Callback";
+  deleteMedium_Callback_0_(mthis) => deleteMedium_Callback_0(mthis);
+
+  static deleteMedium_Callback_1(mthis, __arg_0) native "MediaList_deleteMedium_Callback";
+  deleteMedium_Callback_1_(mthis, __arg_0) => deleteMedium_Callback_1(mthis, __arg_0);
+
+  static deleteMedium_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_deleteMedium_Callback";
+  deleteMedium_Callback_2_(mthis, __arg_0, __arg_1) => deleteMedium_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_deleteMedium_Callback";
+  deleteMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "MediaList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "MediaList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "MediaList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "MediaList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static mediaText_Getter(mthis) native "MediaList_mediaText_Getter";
+  mediaText_Getter_(mthis) => mediaText_Getter(mthis);
 
-  static mediaText_Setter(mthis, value) native "MediaList_mediaText_Setter";
+  static mediaText_Setter(mthis, __arg_0) native "MediaList_mediaText_Setter";
+  mediaText_Setter_(mthis, __arg_0) => mediaText_Setter(mthis, __arg_0);
 
-  static appendMedium_Callback_1(mthis, newMedium) native "MediaList_appendMedium_Callback";
-
-  static deleteMedium_Callback_1(mthis, oldMedium) native "MediaList_deleteMedium_Callback";
-
-  static item_Callback_1(mthis, index) native "MediaList_item_Callback";
 }
 
 class BlinkMediaQueryList {
+  static final instance = new BlinkMediaQueryList();
+
+  static addListener_Callback_0(mthis) native "MediaQueryList_addListener_Callback";
+  addListener_Callback_0_(mthis) => addListener_Callback_0(mthis);
+
+  static addListener_Callback_1(mthis, __arg_0) native "MediaQueryList_addListener_Callback";
+  addListener_Callback_1_(mthis, __arg_0) => addListener_Callback_1(mthis, __arg_0);
+
+  static addListener_Callback_2(mthis, __arg_0, __arg_1) native "MediaQueryList_addListener_Callback";
+  addListener_Callback_2_(mthis, __arg_0, __arg_1) => addListener_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaQueryList_addListener_Callback";
+  addListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static matches_Getter(mthis) native "MediaQueryList_matches_Getter";
+  matches_Getter_(mthis) => matches_Getter(mthis);
 
   static media_Getter(mthis) native "MediaQueryList_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
+
+  static removeListener_Callback_0(mthis) native "MediaQueryList_removeListener_Callback";
+  removeListener_Callback_0_(mthis) => removeListener_Callback_0(mthis);
+
+  static removeListener_Callback_1(mthis, __arg_0) native "MediaQueryList_removeListener_Callback";
+  removeListener_Callback_1_(mthis, __arg_0) => removeListener_Callback_1(mthis, __arg_0);
+
+  static removeListener_Callback_2(mthis, __arg_0, __arg_1) native "MediaQueryList_removeListener_Callback";
+  removeListener_Callback_2_(mthis, __arg_0, __arg_1) => removeListener_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaQueryList_removeListener_Callback";
+  removeListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkMediaSource {
-  static constructorCallback() native "MediaSource_constructorCallback";
+class BlinkMediaSource extends BlinkEventTarget {
+  static final instance = new BlinkMediaSource();
 
   static activeSourceBuffers_Getter(mthis) native "MediaSource_activeSourceBuffers_Getter";
+  activeSourceBuffers_Getter_(mthis) => activeSourceBuffers_Getter(mthis);
+
+  static addSourceBuffer_Callback_0(mthis) native "MediaSource_addSourceBuffer_Callback";
+  addSourceBuffer_Callback_0_(mthis) => addSourceBuffer_Callback_0(mthis);
+
+  static addSourceBuffer_Callback_1(mthis, __arg_0) native "MediaSource_addSourceBuffer_Callback";
+  addSourceBuffer_Callback_1_(mthis, __arg_0) => addSourceBuffer_Callback_1(mthis, __arg_0);
+
+  static addSourceBuffer_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_addSourceBuffer_Callback";
+  addSourceBuffer_Callback_2_(mthis, __arg_0, __arg_1) => addSourceBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_addSourceBuffer_Callback";
+  addSourceBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_0() native "MediaSource_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "MediaSource_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaSource_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static duration_Getter(mthis) native "MediaSource_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
 
-  static duration_Setter(mthis, value) native "MediaSource_duration_Setter";
+  static duration_Setter(mthis, __arg_0) native "MediaSource_duration_Setter";
+  duration_Setter_(mthis, __arg_0) => duration_Setter(mthis, __arg_0);
+
+  static endOfStream_Callback_0(mthis) native "MediaSource_endOfStream_Callback";
+  endOfStream_Callback_0_(mthis) => endOfStream_Callback_0(mthis);
+
+  static endOfStream_Callback_1(mthis, __arg_0) native "MediaSource_endOfStream_Callback";
+  endOfStream_Callback_1_(mthis, __arg_0) => endOfStream_Callback_1(mthis, __arg_0);
+
+  static endOfStream_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_endOfStream_Callback";
+  endOfStream_Callback_2_(mthis, __arg_0, __arg_1) => endOfStream_Callback_2(mthis, __arg_0, __arg_1);
+
+  static endOfStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_endOfStream_Callback";
+  endOfStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => endOfStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isTypeSupported_Callback_0() native "MediaSource_isTypeSupported_Callback";
+  isTypeSupported_Callback_0_() => isTypeSupported_Callback_0();
+
+  static isTypeSupported_Callback_1(__arg_0) native "MediaSource_isTypeSupported_Callback";
+  isTypeSupported_Callback_1_(__arg_0) => isTypeSupported_Callback_1(__arg_0);
+
+  static isTypeSupported_Callback_2(__arg_0, __arg_1) native "MediaSource_isTypeSupported_Callback";
+  isTypeSupported_Callback_2_(__arg_0, __arg_1) => isTypeSupported_Callback_2(__arg_0, __arg_1);
+
+  static isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaSource_isTypeSupported_Callback";
+  isTypeSupported_Callback_3_(__arg_0, __arg_1, __arg_2) => isTypeSupported_Callback_3(__arg_0, __arg_1, __arg_2);
 
   static readyState_Getter(mthis) native "MediaSource_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
+
+  static removeSourceBuffer_Callback_0(mthis) native "MediaSource_removeSourceBuffer_Callback";
+  removeSourceBuffer_Callback_0_(mthis) => removeSourceBuffer_Callback_0(mthis);
+
+  static removeSourceBuffer_Callback_1(mthis, __arg_0) native "MediaSource_removeSourceBuffer_Callback";
+  removeSourceBuffer_Callback_1_(mthis, __arg_0) => removeSourceBuffer_Callback_1(mthis, __arg_0);
+
+  static removeSourceBuffer_Callback_2(mthis, __arg_0, __arg_1) native "MediaSource_removeSourceBuffer_Callback";
+  removeSourceBuffer_Callback_2_(mthis, __arg_0, __arg_1) => removeSourceBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaSource_removeSourceBuffer_Callback";
+  removeSourceBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeSourceBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static sourceBuffers_Getter(mthis) native "MediaSource_sourceBuffers_Getter";
+  sourceBuffers_Getter_(mthis) => sourceBuffers_Getter(mthis);
 
-  static addSourceBuffer_Callback_1(mthis, type) native "MediaSource_addSourceBuffer_Callback";
-
-  static endOfStream_Callback_1(mthis, error) native "MediaSource_endOfStream_Callback";
-
-  static endOfStream_Callback(mthis) native "MediaSource_endOfStream_Callback";
-
-  static isTypeSupported_Callback_1(type) native "MediaSource_isTypeSupported_Callback";
-
-  static removeSourceBuffer_Callback_1(mthis, buffer) native "MediaSource_removeSourceBuffer_Callback";
 }
 
-class BlinkMediaStream {
-  static constructorCallback() native "MediaStream_constructorCallback";
+class BlinkMediaStream extends BlinkEventTarget {
+  static final instance = new BlinkMediaStream();
 
-  static constructorCallback_1(stream_OR_tracks) native "MediaStream_constructorCallback";
+  static addTrack_Callback_0(mthis) native "MediaStream_addTrack_Callback";
+  addTrack_Callback_0_(mthis) => addTrack_Callback_0(mthis);
+
+  static addTrack_Callback_1(mthis, __arg_0) native "MediaStream_addTrack_Callback";
+  addTrack_Callback_1_(mthis, __arg_0) => addTrack_Callback_1(mthis, __arg_0);
+
+  static addTrack_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_addTrack_Callback";
+  addTrack_Callback_2_(mthis, __arg_0, __arg_1) => addTrack_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_addTrack_Callback";
+  addTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clone_Callback_0(mthis) native "MediaStream_clone_Callback";
+  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+
+  static clone_Callback_1(mthis, __arg_0) native "MediaStream_clone_Callback";
+  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+
+  static clone_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_clone_Callback";
+  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "MediaStream_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "MediaStream_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaStream_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "MediaStream_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
   static ended_Getter(mthis) native "MediaStream_ended_Getter";
+  ended_Getter_(mthis) => ended_Getter(mthis);
+
+  static getAudioTracks_Callback_0(mthis) native "MediaStream_getAudioTracks_Callback";
+  getAudioTracks_Callback_0_(mthis) => getAudioTracks_Callback_0(mthis);
+
+  static getAudioTracks_Callback_1(mthis, __arg_0) native "MediaStream_getAudioTracks_Callback";
+  getAudioTracks_Callback_1_(mthis, __arg_0) => getAudioTracks_Callback_1(mthis, __arg_0);
+
+  static getAudioTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getAudioTracks_Callback";
+  getAudioTracks_Callback_2_(mthis, __arg_0, __arg_1) => getAudioTracks_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTrackById_Callback_0(mthis) native "MediaStream_getTrackById_Callback";
+  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+
+  static getTrackById_Callback_1(mthis, __arg_0) native "MediaStream_getTrackById_Callback";
+  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getTrackById_Callback";
+  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_getTrackById_Callback";
+  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getTracks_Callback_0(mthis) native "MediaStream_getTracks_Callback";
+  getTracks_Callback_0_(mthis) => getTracks_Callback_0(mthis);
+
+  static getTracks_Callback_1(mthis, __arg_0) native "MediaStream_getTracks_Callback";
+  getTracks_Callback_1_(mthis, __arg_0) => getTracks_Callback_1(mthis, __arg_0);
+
+  static getTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getTracks_Callback";
+  getTracks_Callback_2_(mthis, __arg_0, __arg_1) => getTracks_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getVideoTracks_Callback_0(mthis) native "MediaStream_getVideoTracks_Callback";
+  getVideoTracks_Callback_0_(mthis) => getVideoTracks_Callback_0(mthis);
+
+  static getVideoTracks_Callback_1(mthis, __arg_0) native "MediaStream_getVideoTracks_Callback";
+  getVideoTracks_Callback_1_(mthis, __arg_0) => getVideoTracks_Callback_1(mthis, __arg_0);
+
+  static getVideoTracks_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_getVideoTracks_Callback";
+  getVideoTracks_Callback_2_(mthis, __arg_0, __arg_1) => getVideoTracks_Callback_2(mthis, __arg_0, __arg_1);
 
   static id_Getter(mthis) native "MediaStream_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static label_Getter(mthis) native "MediaStream_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
-  static addTrack_Callback_1(mthis, track) native "MediaStream_addTrack_Callback";
+  static onaddtrack_Getter(mthis) native "MediaStream_onaddtrack_Getter";
+  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
 
-  static clone_Callback(mthis) native "MediaStream_clone_Callback";
+  static onaddtrack_Setter(mthis, __arg_0) native "MediaStream_onaddtrack_Setter";
+  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
 
-  static getAudioTracks_Callback(mthis) native "MediaStream_getAudioTracks_Callback";
+  static onended_Getter(mthis) native "MediaStream_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
 
-  static getTrackById_Callback_1(mthis, trackId) native "MediaStream_getTrackById_Callback";
+  static onended_Setter(mthis, __arg_0) native "MediaStream_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
 
-  static getTracks_Callback(mthis) native "MediaStream_getTracks_Callback";
+  static onremovetrack_Getter(mthis) native "MediaStream_onremovetrack_Getter";
+  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
 
-  static getVideoTracks_Callback(mthis) native "MediaStream_getVideoTracks_Callback";
+  static onremovetrack_Setter(mthis, __arg_0) native "MediaStream_onremovetrack_Setter";
+  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
 
-  static removeTrack_Callback_1(mthis, track) native "MediaStream_removeTrack_Callback";
+  static removeTrack_Callback_0(mthis) native "MediaStream_removeTrack_Callback";
+  removeTrack_Callback_0_(mthis) => removeTrack_Callback_0(mthis);
 
-  static stop_Callback(mthis) native "MediaStream_stop_Callback";
+  static removeTrack_Callback_1(mthis, __arg_0) native "MediaStream_removeTrack_Callback";
+  removeTrack_Callback_1_(mthis, __arg_0) => removeTrack_Callback_1(mthis, __arg_0);
+
+  static removeTrack_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_removeTrack_Callback";
+  removeTrack_Callback_2_(mthis, __arg_0, __arg_1) => removeTrack_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MediaStream_removeTrack_Callback";
+  removeTrack_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeTrack_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stop_Callback_0(mthis) native "MediaStream_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+
+  static stop_Callback_1(mthis, __arg_0) native "MediaStream_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "MediaStream_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkMediaStreamAudioDestinationNode {
+class BlinkMediaStreamAudioDestinationNode extends BlinkAudioNode {
+  static final instance = new BlinkMediaStreamAudioDestinationNode();
+
   static stream_Getter(mthis) native "MediaStreamAudioDestinationNode_stream_Getter";
+  stream_Getter_(mthis) => stream_Getter(mthis);
+
 }
 
-class BlinkMediaStreamAudioSourceNode {
+class BlinkMediaStreamAudioSourceNode extends BlinkAudioSourceNode {
+  static final instance = new BlinkMediaStreamAudioSourceNode();
+
   static mediaStream_Getter(mthis) native "MediaStreamAudioSourceNode_mediaStream_Getter";
+  mediaStream_Getter_(mthis) => mediaStream_Getter(mthis);
+
 }
 
-class BlinkMediaStreamEvent {
-  static constructorCallback(type, options) native "MediaStreamEvent_constructorCallback";
+class BlinkMediaStreamEvent extends BlinkEvent {
+  static final instance = new BlinkMediaStreamEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MediaStreamEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static stream_Getter(mthis) native "MediaStreamEvent_stream_Getter";
+  stream_Getter_(mthis) => stream_Getter(mthis);
+
 }
 
-class BlinkMediaStreamTrack {
-  static enabled_Getter(mthis) native "MediaStreamTrack_enabled_Getter";
+class BlinkMediaStreamTrack extends BlinkEventTarget {
+  static final instance = new BlinkMediaStreamTrack();
 
-  static enabled_Setter(mthis, value) native "MediaStreamTrack_enabled_Setter";
+  static clone_Callback_0(mthis) native "MediaStreamTrack_clone_Callback";
+  clone_Callback_0_(mthis) => clone_Callback_0(mthis);
+
+  static clone_Callback_1(mthis, __arg_0) native "MediaStreamTrack_clone_Callback";
+  clone_Callback_1_(mthis, __arg_0) => clone_Callback_1(mthis, __arg_0);
+
+  static clone_Callback_2(mthis, __arg_0, __arg_1) native "MediaStreamTrack_clone_Callback";
+  clone_Callback_2_(mthis, __arg_0, __arg_1) => clone_Callback_2(mthis, __arg_0, __arg_1);
+
+  static enabled_Getter(mthis) native "MediaStreamTrack_enabled_Getter";
+  enabled_Getter_(mthis) => enabled_Getter(mthis);
+
+  static enabled_Setter(mthis, __arg_0) native "MediaStreamTrack_enabled_Setter";
+  enabled_Setter_(mthis, __arg_0) => enabled_Setter(mthis, __arg_0);
+
+  static getSources_Callback_0() native "MediaStreamTrack_getSources_Callback";
+  getSources_Callback_0_() => getSources_Callback_0();
+
+  static getSources_Callback_1(__arg_0) native "MediaStreamTrack_getSources_Callback";
+  getSources_Callback_1_(__arg_0) => getSources_Callback_1(__arg_0);
+
+  static getSources_Callback_2(__arg_0, __arg_1) native "MediaStreamTrack_getSources_Callback";
+  getSources_Callback_2_(__arg_0, __arg_1) => getSources_Callback_2(__arg_0, __arg_1);
+
+  static getSources_Callback_3(__arg_0, __arg_1, __arg_2) native "MediaStreamTrack_getSources_Callback";
+  getSources_Callback_3_(__arg_0, __arg_1, __arg_2) => getSources_Callback_3(__arg_0, __arg_1, __arg_2);
 
   static id_Getter(mthis) native "MediaStreamTrack_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static kind_Getter(mthis) native "MediaStreamTrack_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "MediaStreamTrack_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
   static muted_Getter(mthis) native "MediaStreamTrack_muted_Getter";
+  muted_Getter_(mthis) => muted_Getter(mthis);
+
+  static onended_Getter(mthis) native "MediaStreamTrack_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "MediaStreamTrack_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static onmute_Getter(mthis) native "MediaStreamTrack_onmute_Getter";
+  onmute_Getter_(mthis) => onmute_Getter(mthis);
+
+  static onmute_Setter(mthis, __arg_0) native "MediaStreamTrack_onmute_Setter";
+  onmute_Setter_(mthis, __arg_0) => onmute_Setter(mthis, __arg_0);
+
+  static onunmute_Getter(mthis) native "MediaStreamTrack_onunmute_Getter";
+  onunmute_Getter_(mthis) => onunmute_Getter(mthis);
+
+  static onunmute_Setter(mthis, __arg_0) native "MediaStreamTrack_onunmute_Setter";
+  onunmute_Setter_(mthis, __arg_0) => onunmute_Setter(mthis, __arg_0);
 
   static readyState_Getter(mthis) native "MediaStreamTrack_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
-  static clone_Callback(mthis) native "MediaStreamTrack_clone_Callback";
+  static stop_Callback_0(mthis) native "MediaStreamTrack_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
 
-  static getSources_Callback_1(callback) native "MediaStreamTrack_getSources_Callback";
+  static stop_Callback_1(mthis, __arg_0) native "MediaStreamTrack_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
 
-  static stop_Callback(mthis) native "MediaStreamTrack_stop_Callback";
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "MediaStreamTrack_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkMediaStreamTrackEvent {
+class BlinkMediaStreamTrackEvent extends BlinkEvent {
+  static final instance = new BlinkMediaStreamTrackEvent();
+
   static track_Getter(mthis) native "MediaStreamTrackEvent_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
+
 }
 
 class BlinkMemoryInfo {
+  static final instance = new BlinkMemoryInfo();
+
   static jsHeapSizeLimit_Getter(mthis) native "MemoryInfo_jsHeapSizeLimit_Getter";
+  jsHeapSizeLimit_Getter_(mthis) => jsHeapSizeLimit_Getter(mthis);
 
   static totalJSHeapSize_Getter(mthis) native "MemoryInfo_totalJSHeapSize_Getter";
+  totalJSHeapSize_Getter_(mthis) => totalJSHeapSize_Getter(mthis);
 
   static usedJSHeapSize_Getter(mthis) native "MemoryInfo_usedJSHeapSize_Getter";
+  usedJSHeapSize_Getter_(mthis) => usedJSHeapSize_Getter(mthis);
+
 }
 
 class BlinkMessageChannel {
+  static final instance = new BlinkMessageChannel();
+
+  static constructorCallback_0() native "MessageChannel_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "MessageChannel_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MessageChannel_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
   static port1_Getter(mthis) native "MessageChannel_port1_Getter";
+  port1_Getter_(mthis) => port1_Getter(mthis);
 
   static port2_Getter(mthis) native "MessageChannel_port2_Getter";
+  port2_Getter_(mthis) => port2_Getter(mthis);
+
 }
 
-class BlinkMessageEvent {
-  static constructorCallback(type, options) native "MessageEvent_constructorCallback";
+class BlinkMessageEvent extends BlinkEvent {
+  static final instance = new BlinkMessageEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MessageEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static data_Getter(mthis) native "MessageEvent_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
+
+  static initMessageEvent_Callback_0(mthis) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_0_(mthis) => initMessageEvent_Callback_0(mthis);
+
+  static initMessageEvent_Callback_1(mthis, __arg_0) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_1_(mthis, __arg_0) => initMessageEvent_Callback_1(mthis, __arg_0);
+
+  static initMessageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMessageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initMessageEvent_Callback_2(mthis, __arg_0, __arg_1) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMessageEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initMessageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMessageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initMessageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMessageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initMessageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMessageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initMessageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMessageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initMessageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMessageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initMessageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMessageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initMessageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MessageEvent_initMessageEvent_Callback";
+  initMessageEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMessageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static lastEventId_Getter(mthis) native "MessageEvent_lastEventId_Getter";
+  lastEventId_Getter_(mthis) => lastEventId_Getter(mthis);
 
   static origin_Getter(mthis) native "MessageEvent_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
 
   static source_Getter(mthis) native "MessageEvent_source_Getter";
+  source_Getter_(mthis) => source_Getter(mthis);
 
-  static initMessageEvent_Callback_8(mthis, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts) native "MessageEvent_initMessageEvent_Callback";
 }
 
-class BlinkMessagePort {
-  static close_Callback(mthis) native "MessagePort_close_Callback";
+class BlinkMessagePort extends BlinkEventTarget {
+  static final instance = new BlinkMessagePort();
 
-  static postMessage_Callback_2(mthis, message, transfer) native "MessagePort_postMessage_Callback";
+  static close_Callback_0(mthis) native "MessagePort_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
 
-  static start_Callback(mthis) native "MessagePort_start_Callback";
+  static close_Callback_1(mthis, __arg_0) native "MessagePort_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static onmessage_Getter(mthis) native "MessagePort_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "MessagePort_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static postMessage_Callback_0(mthis) native "MessagePort_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "MessagePort_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MessagePort_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MessagePort_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static start_Callback_0(mthis) native "MessagePort_start_Callback";
+  start_Callback_0_(mthis) => start_Callback_0(mthis);
+
+  static start_Callback_1(mthis, __arg_0) native "MessagePort_start_Callback";
+  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
+
+  static start_Callback_2(mthis, __arg_0, __arg_1) native "MessagePort_start_Callback";
+  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkMetadata {
+  static final instance = new BlinkMetadata();
+
   static modificationTime_Getter(mthis) native "Metadata_modificationTime_Getter";
+  modificationTime_Getter_(mthis) => modificationTime_Getter(mthis);
 
   static size_Getter(mthis) native "Metadata_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
+
 }
 
 class BlinkMimeType {
+  static final instance = new BlinkMimeType();
+
   static description_Getter(mthis) native "MimeType_description_Getter";
+  description_Getter_(mthis) => description_Getter(mthis);
 
   static enabledPlugin_Getter(mthis) native "MimeType_enabledPlugin_Getter";
+  enabledPlugin_Getter_(mthis) => enabledPlugin_Getter(mthis);
 
   static suffixes_Getter(mthis) native "MimeType_suffixes_Getter";
+  suffixes_Getter_(mthis) => suffixes_Getter(mthis);
 
   static type_Getter(mthis) native "MimeType_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
 class BlinkMimeTypeArray {
+  static final instance = new BlinkMimeTypeArray();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "MimeTypeArray___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "MimeTypeArray_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "MimeTypeArray_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "MimeTypeArray_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MimeTypeArray_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "MimeTypeArray_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "MimeTypeArray___getter___Callback";
+  static namedItem_Callback_0(mthis) native "MimeTypeArray_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
 
-  static item_Callback_1(mthis, index) native "MimeTypeArray_item_Callback";
+  static namedItem_Callback_1(mthis, __arg_0) native "MimeTypeArray_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
 
-  static namedItem_Callback_1(mthis, name) native "MimeTypeArray_namedItem_Callback";
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "MimeTypeArray_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MimeTypeArray_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkMouseEvent {
-  static constructorCallback(type, options) native "MouseEvent_constructorCallback";
+class BlinkMouseEvent extends BlinkUIEvent {
+  static final instance = new BlinkMouseEvent();
 
   static altKey_Getter(mthis) native "MouseEvent_altKey_Getter";
+  altKey_Getter_(mthis) => altKey_Getter(mthis);
 
   static button_Getter(mthis) native "MouseEvent_button_Getter";
+  button_Getter_(mthis) => button_Getter(mthis);
 
   static clientX_Getter(mthis) native "MouseEvent_clientX_Getter";
+  clientX_Getter_(mthis) => clientX_Getter(mthis);
 
   static clientY_Getter(mthis) native "MouseEvent_clientY_Getter";
+  clientY_Getter_(mthis) => clientY_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "MouseEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static ctrlKey_Getter(mthis) native "MouseEvent_ctrlKey_Getter";
+  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
 
   static dataTransfer_Getter(mthis) native "MouseEvent_dataTransfer_Getter";
+  dataTransfer_Getter_(mthis) => dataTransfer_Getter(mthis);
 
   static fromElement_Getter(mthis) native "MouseEvent_fromElement_Getter";
+  fromElement_Getter_(mthis) => fromElement_Getter(mthis);
+
+  static initMouseEvent_Callback_0(mthis) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_0_(mthis) => initMouseEvent_Callback_0(mthis);
+
+  static initMouseEvent_Callback_1(mthis, __arg_0) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_1_(mthis, __arg_0) => initMouseEvent_Callback_1(mthis, __arg_0);
+
+  static initMouseEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMouseEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initMouseEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initMouseEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static initMouseEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initMouseEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+
+  static initMouseEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => initMouseEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+
+  static initMouseEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_14_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) => initMouseEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13);
+
+  static initMouseEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_15_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) => initMouseEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14);
+
+  static initMouseEvent_Callback_16(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_16_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15) => initMouseEvent_Callback_16(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15);
+
+  static initMouseEvent_Callback_17(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_17_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16) => initMouseEvent_Callback_17(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14, __arg_15, __arg_16);
+
+  static initMouseEvent_Callback_2(mthis, __arg_0, __arg_1) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMouseEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initMouseEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMouseEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initMouseEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMouseEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initMouseEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMouseEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initMouseEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMouseEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initMouseEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMouseEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initMouseEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMouseEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initMouseEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MouseEvent_initMouseEvent_Callback";
+  initMouseEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMouseEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static metaKey_Getter(mthis) native "MouseEvent_metaKey_Getter";
+  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
 
   static movementX_Getter(mthis) native "MouseEvent_movementX_Getter";
+  movementX_Getter_(mthis) => movementX_Getter(mthis);
 
   static movementY_Getter(mthis) native "MouseEvent_movementY_Getter";
+  movementY_Getter_(mthis) => movementY_Getter(mthis);
 
   static offsetX_Getter(mthis) native "MouseEvent_offsetX_Getter";
+  offsetX_Getter_(mthis) => offsetX_Getter(mthis);
 
   static offsetY_Getter(mthis) native "MouseEvent_offsetY_Getter";
+  offsetY_Getter_(mthis) => offsetY_Getter(mthis);
 
   static region_Getter(mthis) native "MouseEvent_region_Getter";
+  region_Getter_(mthis) => region_Getter(mthis);
 
   static relatedTarget_Getter(mthis) native "MouseEvent_relatedTarget_Getter";
+  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
 
   static screenX_Getter(mthis) native "MouseEvent_screenX_Getter";
+  screenX_Getter_(mthis) => screenX_Getter(mthis);
 
   static screenY_Getter(mthis) native "MouseEvent_screenY_Getter";
+  screenY_Getter_(mthis) => screenY_Getter(mthis);
 
   static shiftKey_Getter(mthis) native "MouseEvent_shiftKey_Getter";
+  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
 
   static toElement_Getter(mthis) native "MouseEvent_toElement_Getter";
+  toElement_Getter_(mthis) => toElement_Getter(mthis);
 
   static webkitMovementX_Getter(mthis) native "MouseEvent_webkitMovementX_Getter";
+  webkitMovementX_Getter_(mthis) => webkitMovementX_Getter(mthis);
 
   static webkitMovementY_Getter(mthis) native "MouseEvent_webkitMovementY_Getter";
+  webkitMovementY_Getter_(mthis) => webkitMovementY_Getter(mthis);
 
-  static initMouseEvent_Callback_15(mthis, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget) native "MouseEvent_initMouseEvent_Callback";
 }
 
-class BlinkMutationEvent {}
+class BlinkMutationEvent extends BlinkEvent {
+  static final instance = new BlinkMutationEvent();
+
+  static attrChange_Getter(mthis) native "MutationEvent_attrChange_Getter";
+  attrChange_Getter_(mthis) => attrChange_Getter(mthis);
+
+  static attrName_Getter(mthis) native "MutationEvent_attrName_Getter";
+  attrName_Getter_(mthis) => attrName_Getter(mthis);
+
+  static initMutationEvent_Callback_0(mthis) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_0_(mthis) => initMutationEvent_Callback_0(mthis);
+
+  static initMutationEvent_Callback_1(mthis, __arg_0) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_1_(mthis, __arg_0) => initMutationEvent_Callback_1(mthis, __arg_0);
+
+  static initMutationEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initMutationEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initMutationEvent_Callback_2(mthis, __arg_0, __arg_1) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_2_(mthis, __arg_0, __arg_1) => initMutationEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initMutationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initMutationEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initMutationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initMutationEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initMutationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initMutationEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initMutationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initMutationEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initMutationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initMutationEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initMutationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initMutationEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initMutationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "MutationEvent_initMutationEvent_Callback";
+  initMutationEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initMutationEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static newValue_Getter(mthis) native "MutationEvent_newValue_Getter";
+  newValue_Getter_(mthis) => newValue_Getter(mthis);
+
+  static prevValue_Getter(mthis) native "MutationEvent_prevValue_Getter";
+  prevValue_Getter_(mthis) => prevValue_Getter(mthis);
+
+  static relatedNode_Getter(mthis) native "MutationEvent_relatedNode_Getter";
+  relatedNode_Getter_(mthis) => relatedNode_Getter(mthis);
+
+}
 
 class BlinkMutationObserver {
-  static constructorCallback_1(callback) native "MutationObserver_constructorCallback";
+  static final instance = new BlinkMutationObserver();
 
-  static disconnect_Callback(mthis) native "MutationObserver_disconnect_Callback";
+  static constructorCallback_0() native "MutationObserver_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static observe_Callback_2(mthis, target, options) native "MutationObserver_observe_Callback";
+  static constructorCallback_1(__arg_0) native "MutationObserver_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
 
-  static takeRecords_Callback(mthis) native "MutationObserver_takeRecords_Callback";
+  static constructorCallback_2(__arg_0, __arg_1) native "MutationObserver_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "MutationObserver_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static disconnect_Callback_0(mthis) native "MutationObserver_disconnect_Callback";
+  disconnect_Callback_0_(mthis) => disconnect_Callback_0(mthis);
+
+  static disconnect_Callback_1(mthis, __arg_0) native "MutationObserver_disconnect_Callback";
+  disconnect_Callback_1_(mthis, __arg_0) => disconnect_Callback_1(mthis, __arg_0);
+
+  static disconnect_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_disconnect_Callback";
+  disconnect_Callback_2_(mthis, __arg_0, __arg_1) => disconnect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static observe_Callback_0(mthis) native "MutationObserver_observe_Callback";
+  observe_Callback_0_(mthis) => observe_Callback_0(mthis);
+
+  static observe_Callback_1(mthis, __arg_0) native "MutationObserver_observe_Callback";
+  observe_Callback_1_(mthis, __arg_0) => observe_Callback_1(mthis, __arg_0);
+
+  static observe_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_observe_Callback";
+  observe_Callback_2_(mthis, __arg_0, __arg_1) => observe_Callback_2(mthis, __arg_0, __arg_1);
+
+  static observe_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "MutationObserver_observe_Callback";
+  observe_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => observe_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static observe_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "MutationObserver_observe_Callback";
+  observe_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => observe_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static takeRecords_Callback_0(mthis) native "MutationObserver_takeRecords_Callback";
+  takeRecords_Callback_0_(mthis) => takeRecords_Callback_0(mthis);
+
+  static takeRecords_Callback_1(mthis, __arg_0) native "MutationObserver_takeRecords_Callback";
+  takeRecords_Callback_1_(mthis, __arg_0) => takeRecords_Callback_1(mthis, __arg_0);
+
+  static takeRecords_Callback_2(mthis, __arg_0, __arg_1) native "MutationObserver_takeRecords_Callback";
+  takeRecords_Callback_2_(mthis, __arg_0, __arg_1) => takeRecords_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkMutationRecord {
+  static final instance = new BlinkMutationRecord();
+
   static addedNodes_Getter(mthis) native "MutationRecord_addedNodes_Getter";
+  addedNodes_Getter_(mthis) => addedNodes_Getter(mthis);
 
   static attributeName_Getter(mthis) native "MutationRecord_attributeName_Getter";
+  attributeName_Getter_(mthis) => attributeName_Getter(mthis);
 
   static attributeNamespace_Getter(mthis) native "MutationRecord_attributeNamespace_Getter";
+  attributeNamespace_Getter_(mthis) => attributeNamespace_Getter(mthis);
 
   static nextSibling_Getter(mthis) native "MutationRecord_nextSibling_Getter";
+  nextSibling_Getter_(mthis) => nextSibling_Getter(mthis);
 
   static oldValue_Getter(mthis) native "MutationRecord_oldValue_Getter";
+  oldValue_Getter_(mthis) => oldValue_Getter(mthis);
 
   static previousSibling_Getter(mthis) native "MutationRecord_previousSibling_Getter";
+  previousSibling_Getter_(mthis) => previousSibling_Getter(mthis);
 
   static removedNodes_Getter(mthis) native "MutationRecord_removedNodes_Getter";
+  removedNodes_Getter_(mthis) => removedNodes_Getter(mthis);
 
   static target_Getter(mthis) native "MutationRecord_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
 
   static type_Getter(mthis) native "MutationRecord_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
 class BlinkNamedNodeMap {
+  static final instance = new BlinkNamedNodeMap();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "NamedNodeMap___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getNamedItemNS_Callback_0(mthis) native "NamedNodeMap_getNamedItemNS_Callback";
+  getNamedItemNS_Callback_0_(mthis) => getNamedItemNS_Callback_0(mthis);
+
+  static getNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_getNamedItemNS_Callback";
+  getNamedItemNS_Callback_1_(mthis, __arg_0) => getNamedItemNS_Callback_1(mthis, __arg_0);
+
+  static getNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_getNamedItemNS_Callback";
+  getNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => getNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_getNamedItemNS_Callback";
+  getNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "NamedNodeMap_getNamedItemNS_Callback";
+  getNamedItemNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getNamedItem_Callback_0(mthis) native "NamedNodeMap_getNamedItem_Callback";
+  getNamedItem_Callback_0_(mthis) => getNamedItem_Callback_0(mthis);
+
+  static getNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_getNamedItem_Callback";
+  getNamedItem_Callback_1_(mthis, __arg_0) => getNamedItem_Callback_1(mthis, __arg_0);
+
+  static getNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_getNamedItem_Callback";
+  getNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => getNamedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_getNamedItem_Callback";
+  getNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "NamedNodeMap_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "NamedNodeMap_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "NamedNodeMap_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "NamedNodeMap___getter___Callback";
+  static removeNamedItemNS_Callback_0(mthis) native "NamedNodeMap_removeNamedItemNS_Callback";
+  removeNamedItemNS_Callback_0_(mthis) => removeNamedItemNS_Callback_0(mthis);
 
-  static getNamedItem_Callback_1(mthis, name) native "NamedNodeMap_getNamedItem_Callback";
+  static removeNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_removeNamedItemNS_Callback";
+  removeNamedItemNS_Callback_1_(mthis, __arg_0) => removeNamedItemNS_Callback_1(mthis, __arg_0);
 
-  static getNamedItemNS_Callback_2(mthis, namespaceURI, localName) native "NamedNodeMap_getNamedItemNS_Callback";
+  static removeNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_removeNamedItemNS_Callback";
+  removeNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => removeNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
 
-  static item_Callback_1(mthis, index) native "NamedNodeMap_item_Callback";
+  static removeNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_removeNamedItemNS_Callback";
+  removeNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static removeNamedItem_Callback_1(mthis, name) native "NamedNodeMap_removeNamedItem_Callback";
+  static removeNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "NamedNodeMap_removeNamedItemNS_Callback";
+  removeNamedItemNS_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeNamedItemNS_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static removeNamedItemNS_Callback_2(mthis, namespaceURI, localName) native "NamedNodeMap_removeNamedItemNS_Callback";
+  static removeNamedItem_Callback_0(mthis) native "NamedNodeMap_removeNamedItem_Callback";
+  removeNamedItem_Callback_0_(mthis) => removeNamedItem_Callback_0(mthis);
 
-  static setNamedItem_Callback_1(mthis, node) native "NamedNodeMap_setNamedItem_Callback";
+  static removeNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_removeNamedItem_Callback";
+  removeNamedItem_Callback_1_(mthis, __arg_0) => removeNamedItem_Callback_1(mthis, __arg_0);
 
-  static setNamedItemNS_Callback_1(mthis, node) native "NamedNodeMap_setNamedItemNS_Callback";
-}
+  static removeNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_removeNamedItem_Callback";
+  removeNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => removeNamedItem_Callback_2(mthis, __arg_0, __arg_1);
 
-class BlinkNavigatorCPU {
-  static hardwareConcurrency_Getter(mthis) native "NavigatorCPU_hardwareConcurrency_Getter";
-}
+  static removeNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_removeNamedItem_Callback";
+  removeNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-class BlinkNavigatorID {
-  static appCodeName_Getter(mthis) native "Navigator_appCodeName_Getter";
+  static setNamedItemNS_Callback_0(mthis) native "NamedNodeMap_setNamedItemNS_Callback";
+  setNamedItemNS_Callback_0_(mthis) => setNamedItemNS_Callback_0(mthis);
 
-  static appName_Getter(mthis) native "Navigator_appName_Getter";
+  static setNamedItemNS_Callback_1(mthis, __arg_0) native "NamedNodeMap_setNamedItemNS_Callback";
+  setNamedItemNS_Callback_1_(mthis, __arg_0) => setNamedItemNS_Callback_1(mthis, __arg_0);
 
-  static appVersion_Getter(mthis) native "Navigator_appVersion_Getter";
+  static setNamedItemNS_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_setNamedItemNS_Callback";
+  setNamedItemNS_Callback_2_(mthis, __arg_0, __arg_1) => setNamedItemNS_Callback_2(mthis, __arg_0, __arg_1);
 
-  static dartEnabled_Getter(mthis) native "Navigator_dartEnabled_Getter";
+  static setNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_setNamedItemNS_Callback";
+  setNamedItemNS_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setNamedItemNS_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static platform_Getter(mthis) native "Navigator_platform_Getter";
+  static setNamedItem_Callback_0(mthis) native "NamedNodeMap_setNamedItem_Callback";
+  setNamedItem_Callback_0_(mthis) => setNamedItem_Callback_0(mthis);
 
-  static product_Getter(mthis) native "Navigator_product_Getter";
+  static setNamedItem_Callback_1(mthis, __arg_0) native "NamedNodeMap_setNamedItem_Callback";
+  setNamedItem_Callback_1_(mthis, __arg_0) => setNamedItem_Callback_1(mthis, __arg_0);
 
-  static userAgent_Getter(mthis) native "Navigator_userAgent_Getter";
-}
+  static setNamedItem_Callback_2(mthis, __arg_0, __arg_1) native "NamedNodeMap_setNamedItem_Callback";
+  setNamedItem_Callback_2_(mthis, __arg_0, __arg_1) => setNamedItem_Callback_2(mthis, __arg_0, __arg_1);
 
-class BlinkNavigatorLanguage {
-  static language_Getter(mthis) native "NavigatorLanguage_language_Getter";
+  static setNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NamedNodeMap_setNamedItem_Callback";
+  setNamedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setNamedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static languages_Getter(mthis) native "NavigatorLanguage_languages_Getter";
-}
-
-class BlinkNavigatorOnLine {
-  static onLine_Getter(mthis) native "NavigatorOnLine_onLine_Getter";
 }
 
 class BlinkNavigator {
-  static connection_Getter(mthis) native "Navigator_connection_Getter";
-
-  static cookieEnabled_Getter(mthis) native "Navigator_cookieEnabled_Getter";
-
-  static credentials_Getter(mthis) native "Navigator_credentials_Getter";
-
-  static doNotTrack_Getter(mthis) native "Navigator_doNotTrack_Getter";
-
-  static geofencing_Getter(mthis) native "Navigator_geofencing_Getter";
-
-  static geolocation_Getter(mthis) native "Navigator_geolocation_Getter";
-
-  static maxTouchPoints_Getter(mthis) native "Navigator_maxTouchPoints_Getter";
-
-  static mimeTypes_Getter(mthis) native "Navigator_mimeTypes_Getter";
-
-  static productSub_Getter(mthis) native "Navigator_productSub_Getter";
-
-  static push_Getter(mthis) native "Navigator_push_Getter";
-
-  static serviceWorker_Getter(mthis) native "Navigator_serviceWorker_Getter";
-
-  static storageQuota_Getter(mthis) native "Navigator_storageQuota_Getter";
-
-  static vendor_Getter(mthis) native "Navigator_vendor_Getter";
-
-  static vendorSub_Getter(mthis) native "Navigator_vendorSub_Getter";
-
-  static webkitPersistentStorage_Getter(mthis) native "Navigator_webkitPersistentStorage_Getter";
-
-  static webkitTemporaryStorage_Getter(mthis) native "Navigator_webkitTemporaryStorage_Getter";
-
-  static getBattery_Callback(mthis) native "Navigator_getBattery_Callback";
-
-  static getGamepads_Callback(mthis) native "Navigator_getGamepads_Callback";
-
-  static getStorageUpdates_Callback(mthis) native "Navigator_getStorageUpdates_Callback";
-
-  static isProtocolHandlerRegistered_Callback_2(mthis, scheme, url) native "Navigator_isProtocolHandlerRegistered_Callback";
-
-  static registerProtocolHandler_Callback_3(mthis, scheme, url, title) native "Navigator_registerProtocolHandler_Callback";
-
-  static sendBeacon_Callback_2(mthis, url, data) native "Navigator_sendBeacon_Callback";
-
-  static unregisterProtocolHandler_Callback_2(mthis, scheme, url) native "Navigator_unregisterProtocolHandler_Callback";
-
-  static webkitGetUserMedia_Callback_3(mthis, options, successCallback, errorCallback) native "Navigator_webkitGetUserMedia_Callback";
+  static final instance = new BlinkNavigator();
 
   static appCodeName_Getter(mthis) native "Navigator_appCodeName_Getter";
+  appCodeName_Getter_(mthis) => appCodeName_Getter(mthis);
 
   static appName_Getter(mthis) native "Navigator_appName_Getter";
+  appName_Getter_(mthis) => appName_Getter(mthis);
 
   static appVersion_Getter(mthis) native "Navigator_appVersion_Getter";
+  appVersion_Getter_(mthis) => appVersion_Getter(mthis);
+
+  static connection_Getter(mthis) native "Navigator_connection_Getter";
+  connection_Getter_(mthis) => connection_Getter(mthis);
+
+  static cookieEnabled_Getter(mthis) native "Navigator_cookieEnabled_Getter";
+  cookieEnabled_Getter_(mthis) => cookieEnabled_Getter(mthis);
+
+  static credentials_Getter(mthis) native "Navigator_credentials_Getter";
+  credentials_Getter_(mthis) => credentials_Getter(mthis);
 
   static dartEnabled_Getter(mthis) native "Navigator_dartEnabled_Getter";
+  dartEnabled_Getter_(mthis) => dartEnabled_Getter(mthis);
 
-  static platform_Getter(mthis) native "Navigator_platform_Getter";
+  static doNotTrack_Getter(mthis) native "Navigator_doNotTrack_Getter";
+  doNotTrack_Getter_(mthis) => doNotTrack_Getter(mthis);
 
-  static product_Getter(mthis) native "Navigator_product_Getter";
+  static geofencing_Getter(mthis) native "Navigator_geofencing_Getter";
+  geofencing_Getter_(mthis) => geofencing_Getter(mthis);
 
-  static userAgent_Getter(mthis) native "Navigator_userAgent_Getter";
+  static geolocation_Getter(mthis) native "Navigator_geolocation_Getter";
+  geolocation_Getter_(mthis) => geolocation_Getter(mthis);
+
+  static getBattery_Callback_0(mthis) native "Navigator_getBattery_Callback";
+  getBattery_Callback_0_(mthis) => getBattery_Callback_0(mthis);
+
+  static getBattery_Callback_1(mthis, __arg_0) native "Navigator_getBattery_Callback";
+  getBattery_Callback_1_(mthis, __arg_0) => getBattery_Callback_1(mthis, __arg_0);
+
+  static getBattery_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getBattery_Callback";
+  getBattery_Callback_2_(mthis, __arg_0, __arg_1) => getBattery_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getGamepads_Callback_0(mthis) native "Navigator_getGamepads_Callback";
+  getGamepads_Callback_0_(mthis) => getGamepads_Callback_0(mthis);
+
+  static getGamepads_Callback_1(mthis, __arg_0) native "Navigator_getGamepads_Callback";
+  getGamepads_Callback_1_(mthis, __arg_0) => getGamepads_Callback_1(mthis, __arg_0);
+
+  static getGamepads_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getGamepads_Callback";
+  getGamepads_Callback_2_(mthis, __arg_0, __arg_1) => getGamepads_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStorageUpdates_Callback_0(mthis) native "Navigator_getStorageUpdates_Callback";
+  getStorageUpdates_Callback_0_(mthis) => getStorageUpdates_Callback_0(mthis);
+
+  static getStorageUpdates_Callback_1(mthis, __arg_0) native "Navigator_getStorageUpdates_Callback";
+  getStorageUpdates_Callback_1_(mthis, __arg_0) => getStorageUpdates_Callback_1(mthis, __arg_0);
+
+  static getStorageUpdates_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_getStorageUpdates_Callback";
+  getStorageUpdates_Callback_2_(mthis, __arg_0, __arg_1) => getStorageUpdates_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hardwareConcurrency_Getter(mthis) native "Navigator_hardwareConcurrency_Getter";
+  hardwareConcurrency_Getter_(mthis) => hardwareConcurrency_Getter(mthis);
+
+  static isProtocolHandlerRegistered_Callback_0(mthis) native "Navigator_isProtocolHandlerRegistered_Callback";
+  isProtocolHandlerRegistered_Callback_0_(mthis) => isProtocolHandlerRegistered_Callback_0(mthis);
+
+  static isProtocolHandlerRegistered_Callback_1(mthis, __arg_0) native "Navigator_isProtocolHandlerRegistered_Callback";
+  isProtocolHandlerRegistered_Callback_1_(mthis, __arg_0) => isProtocolHandlerRegistered_Callback_1(mthis, __arg_0);
+
+  static isProtocolHandlerRegistered_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_isProtocolHandlerRegistered_Callback";
+  isProtocolHandlerRegistered_Callback_2_(mthis, __arg_0, __arg_1) => isProtocolHandlerRegistered_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isProtocolHandlerRegistered_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_isProtocolHandlerRegistered_Callback";
+  isProtocolHandlerRegistered_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isProtocolHandlerRegistered_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isProtocolHandlerRegistered_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_isProtocolHandlerRegistered_Callback";
+  isProtocolHandlerRegistered_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isProtocolHandlerRegistered_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static javaEnabled_Callback_0(mthis) native "Navigator_javaEnabled_Callback";
+  javaEnabled_Callback_0_(mthis) => javaEnabled_Callback_0(mthis);
+
+  static javaEnabled_Callback_1(mthis, __arg_0) native "Navigator_javaEnabled_Callback";
+  javaEnabled_Callback_1_(mthis, __arg_0) => javaEnabled_Callback_1(mthis, __arg_0);
+
+  static javaEnabled_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_javaEnabled_Callback";
+  javaEnabled_Callback_2_(mthis, __arg_0, __arg_1) => javaEnabled_Callback_2(mthis, __arg_0, __arg_1);
 
   static language_Getter(mthis) native "Navigator_language_Getter";
+  language_Getter_(mthis) => language_Getter(mthis);
 
   static languages_Getter(mthis) native "Navigator_languages_Getter";
+  languages_Getter_(mthis) => languages_Getter(mthis);
+
+  static maxTouchPoints_Getter(mthis) native "Navigator_maxTouchPoints_Getter";
+  maxTouchPoints_Getter_(mthis) => maxTouchPoints_Getter(mthis);
+
+  static mimeTypes_Getter(mthis) native "Navigator_mimeTypes_Getter";
+  mimeTypes_Getter_(mthis) => mimeTypes_Getter(mthis);
 
   static onLine_Getter(mthis) native "Navigator_onLine_Getter";
+  onLine_Getter_(mthis) => onLine_Getter(mthis);
+
+  static platform_Getter(mthis) native "Navigator_platform_Getter";
+  platform_Getter_(mthis) => platform_Getter(mthis);
+
+  static plugins_Getter(mthis) native "Navigator_plugins_Getter";
+  plugins_Getter_(mthis) => plugins_Getter(mthis);
+
+  static productSub_Getter(mthis) native "Navigator_productSub_Getter";
+  productSub_Getter_(mthis) => productSub_Getter(mthis);
+
+  static product_Getter(mthis) native "Navigator_product_Getter";
+  product_Getter_(mthis) => product_Getter(mthis);
+
+  static push_Getter(mthis) native "Navigator_push_Getter";
+  push_Getter_(mthis) => push_Getter(mthis);
+
+  static registerProtocolHandler_Callback_1(mthis, __arg_0) native "Navigator_registerProtocolHandler_Callback";
+  registerProtocolHandler_Callback_1_(mthis, __arg_0) => registerProtocolHandler_Callback_1(mthis, __arg_0);
+
+  static registerProtocolHandler_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_registerProtocolHandler_Callback";
+  registerProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => registerProtocolHandler_Callback_2(mthis, __arg_0, __arg_1);
+
+  static registerProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_registerProtocolHandler_Callback";
+  registerProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => registerProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static registerProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_registerProtocolHandler_Callback";
+  registerProtocolHandler_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => registerProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static registerProtocolHandler_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Navigator_registerProtocolHandler_Callback";
+  registerProtocolHandler_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => registerProtocolHandler_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static sendBeacon_Callback_0(mthis) native "Navigator_sendBeacon_Callback";
+  sendBeacon_Callback_0_(mthis) => sendBeacon_Callback_0(mthis);
+
+  static sendBeacon_Callback_1(mthis, __arg_0) native "Navigator_sendBeacon_Callback";
+  sendBeacon_Callback_1_(mthis, __arg_0) => sendBeacon_Callback_1(mthis, __arg_0);
+
+  static sendBeacon_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_sendBeacon_Callback";
+  sendBeacon_Callback_2_(mthis, __arg_0, __arg_1) => sendBeacon_Callback_2(mthis, __arg_0, __arg_1);
+
+  static sendBeacon_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_sendBeacon_Callback";
+  sendBeacon_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sendBeacon_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static sendBeacon_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_sendBeacon_Callback";
+  sendBeacon_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sendBeacon_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static serviceWorker_Getter(mthis) native "Navigator_serviceWorker_Getter";
+  serviceWorker_Getter_(mthis) => serviceWorker_Getter(mthis);
+
+  static storageQuota_Getter(mthis) native "Navigator_storageQuota_Getter";
+  storageQuota_Getter_(mthis) => storageQuota_Getter(mthis);
+
+  static unregisterProtocolHandler_Callback_0(mthis) native "Navigator_unregisterProtocolHandler_Callback";
+  unregisterProtocolHandler_Callback_0_(mthis) => unregisterProtocolHandler_Callback_0(mthis);
+
+  static unregisterProtocolHandler_Callback_1(mthis, __arg_0) native "Navigator_unregisterProtocolHandler_Callback";
+  unregisterProtocolHandler_Callback_1_(mthis, __arg_0) => unregisterProtocolHandler_Callback_1(mthis, __arg_0);
+
+  static unregisterProtocolHandler_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_unregisterProtocolHandler_Callback";
+  unregisterProtocolHandler_Callback_2_(mthis, __arg_0, __arg_1) => unregisterProtocolHandler_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unregisterProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_unregisterProtocolHandler_Callback";
+  unregisterProtocolHandler_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unregisterProtocolHandler_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static unregisterProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_unregisterProtocolHandler_Callback";
+  unregisterProtocolHandler_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => unregisterProtocolHandler_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static userAgent_Getter(mthis) native "Navigator_userAgent_Getter";
+  userAgent_Getter_(mthis) => userAgent_Getter(mthis);
+
+  static vendorSub_Getter(mthis) native "Navigator_vendorSub_Getter";
+  vendorSub_Getter_(mthis) => vendorSub_Getter(mthis);
+
+  static vendor_Getter(mthis) native "Navigator_vendor_Getter";
+  vendor_Getter_(mthis) => vendor_Getter(mthis);
+
+  static vibrate_Callback_0(mthis) native "Navigator_vibrate_Callback";
+  vibrate_Callback_0_(mthis) => vibrate_Callback_0(mthis);
+
+  static vibrate_Callback_1(mthis, __arg_0) native "Navigator_vibrate_Callback";
+  vibrate_Callback_1_(mthis, __arg_0) => vibrate_Callback_1(mthis, __arg_0);
+
+  static vibrate_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_vibrate_Callback";
+  vibrate_Callback_2_(mthis, __arg_0, __arg_1) => vibrate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static vibrate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_vibrate_Callback";
+  vibrate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vibrate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitGetGamepads_Callback_0(mthis) native "Navigator_webkitGetGamepads_Callback";
+  webkitGetGamepads_Callback_0_(mthis) => webkitGetGamepads_Callback_0(mthis);
+
+  static webkitGetGamepads_Callback_1(mthis, __arg_0) native "Navigator_webkitGetGamepads_Callback";
+  webkitGetGamepads_Callback_1_(mthis, __arg_0) => webkitGetGamepads_Callback_1(mthis, __arg_0);
+
+  static webkitGetGamepads_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_webkitGetGamepads_Callback";
+  webkitGetGamepads_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetGamepads_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitGetUserMedia_Callback_1(mthis, __arg_0) native "Navigator_webkitGetUserMedia_Callback";
+  webkitGetUserMedia_Callback_1_(mthis, __arg_0) => webkitGetUserMedia_Callback_1(mthis, __arg_0);
+
+  static webkitGetUserMedia_Callback_2(mthis, __arg_0, __arg_1) native "Navigator_webkitGetUserMedia_Callback";
+  webkitGetUserMedia_Callback_2_(mthis, __arg_0, __arg_1) => webkitGetUserMedia_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitGetUserMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Navigator_webkitGetUserMedia_Callback";
+  webkitGetUserMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitGetUserMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitGetUserMedia_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Navigator_webkitGetUserMedia_Callback";
+  webkitGetUserMedia_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitGetUserMedia_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitGetUserMedia_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Navigator_webkitGetUserMedia_Callback";
+  webkitGetUserMedia_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitGetUserMedia_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static webkitPersistentStorage_Getter(mthis) native "Navigator_webkitPersistentStorage_Getter";
+  webkitPersistentStorage_Getter_(mthis) => webkitPersistentStorage_Getter(mthis);
+
+  static webkitTemporaryStorage_Getter(mthis) native "Navigator_webkitTemporaryStorage_Getter";
+  webkitTemporaryStorage_Getter_(mthis) => webkitTemporaryStorage_Getter(mthis);
+
 }
 
 class BlinkNavigatorUserMediaError {
+  static final instance = new BlinkNavigatorUserMediaError();
+
   static constraintName_Getter(mthis) native "NavigatorUserMediaError_constraintName_Getter";
+  constraintName_Getter_(mthis) => constraintName_Getter(mthis);
 
   static message_Getter(mthis) native "NavigatorUserMediaError_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
 
   static name_Getter(mthis) native "NavigatorUserMediaError_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
 }
 
-class BlinkNetworkInformation {
+class BlinkNetworkInformation extends BlinkEventTarget {
+  static final instance = new BlinkNetworkInformation();
+
+  static ontypechange_Getter(mthis) native "NetworkInformation_ontypechange_Getter";
+  ontypechange_Getter_(mthis) => ontypechange_Getter(mthis);
+
+  static ontypechange_Setter(mthis, __arg_0) native "NetworkInformation_ontypechange_Setter";
+  ontypechange_Setter_(mthis, __arg_0) => ontypechange_Setter(mthis, __arg_0);
+
   static type_Getter(mthis) native "NetworkInformation_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
-class BlinkNodeFilter {}
+class BlinkNode extends BlinkEventTarget {
+  static final instance = new BlinkNode();
+
+  static appendChild_Callback_0(mthis) native "Node_appendChild_Callback";
+  appendChild_Callback_0_(mthis) => appendChild_Callback_0(mthis);
+
+  static appendChild_Callback_1(mthis, __arg_0) native "Node_appendChild_Callback";
+  appendChild_Callback_1_(mthis, __arg_0) => appendChild_Callback_1(mthis, __arg_0);
+
+  static appendChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_appendChild_Callback";
+  appendChild_Callback_2_(mthis, __arg_0, __arg_1) => appendChild_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_appendChild_Callback";
+  appendChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static baseURI_Getter(mthis) native "Node_baseURI_Getter";
+  baseURI_Getter_(mthis) => baseURI_Getter(mthis);
+
+  static childNodes_Getter(mthis) native "Node_childNodes_Getter";
+  childNodes_Getter_(mthis) => childNodes_Getter(mthis);
+
+  static cloneNode_Callback_0(mthis) native "Node_cloneNode_Callback";
+  cloneNode_Callback_0_(mthis) => cloneNode_Callback_0(mthis);
+
+  static cloneNode_Callback_1(mthis, __arg_0) native "Node_cloneNode_Callback";
+  cloneNode_Callback_1_(mthis, __arg_0) => cloneNode_Callback_1(mthis, __arg_0);
+
+  static cloneNode_Callback_2(mthis, __arg_0, __arg_1) native "Node_cloneNode_Callback";
+  cloneNode_Callback_2_(mthis, __arg_0, __arg_1) => cloneNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_cloneNode_Callback";
+  cloneNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static contains_Callback_0(mthis) native "Node_contains_Callback";
+  contains_Callback_0_(mthis) => contains_Callback_0(mthis);
+
+  static contains_Callback_1(mthis, __arg_0) native "Node_contains_Callback";
+  contains_Callback_1_(mthis, __arg_0) => contains_Callback_1(mthis, __arg_0);
+
+  static contains_Callback_2(mthis, __arg_0, __arg_1) native "Node_contains_Callback";
+  contains_Callback_2_(mthis, __arg_0, __arg_1) => contains_Callback_2(mthis, __arg_0, __arg_1);
+
+  static contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_contains_Callback";
+  contains_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => contains_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static firstChild_Getter(mthis) native "Node_firstChild_Getter";
+  firstChild_Getter_(mthis) => firstChild_Getter(mthis);
+
+  static hasChildNodes_Callback_0(mthis) native "Node_hasChildNodes_Callback";
+  hasChildNodes_Callback_0_(mthis) => hasChildNodes_Callback_0(mthis);
+
+  static hasChildNodes_Callback_1(mthis, __arg_0) native "Node_hasChildNodes_Callback";
+  hasChildNodes_Callback_1_(mthis, __arg_0) => hasChildNodes_Callback_1(mthis, __arg_0);
+
+  static hasChildNodes_Callback_2(mthis, __arg_0, __arg_1) native "Node_hasChildNodes_Callback";
+  hasChildNodes_Callback_2_(mthis, __arg_0, __arg_1) => hasChildNodes_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertBefore_Callback_0(mthis) native "Node_insertBefore_Callback";
+  insertBefore_Callback_0_(mthis) => insertBefore_Callback_0(mthis);
+
+  static insertBefore_Callback_1(mthis, __arg_0) native "Node_insertBefore_Callback";
+  insertBefore_Callback_1_(mthis, __arg_0) => insertBefore_Callback_1(mthis, __arg_0);
+
+  static insertBefore_Callback_2(mthis, __arg_0, __arg_1) native "Node_insertBefore_Callback";
+  insertBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_insertBefore_Callback";
+  insertBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Node_insertBefore_Callback";
+  insertBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static lastChild_Getter(mthis) native "Node_lastChild_Getter";
+  lastChild_Getter_(mthis) => lastChild_Getter(mthis);
+
+  static localName_Getter(mthis) native "Node_localName_Getter";
+  localName_Getter_(mthis) => localName_Getter(mthis);
+
+  static namespaceURI_Getter(mthis) native "Node_namespaceURI_Getter";
+  namespaceURI_Getter_(mthis) => namespaceURI_Getter(mthis);
+
+  static nextSibling_Getter(mthis) native "Node_nextSibling_Getter";
+  nextSibling_Getter_(mthis) => nextSibling_Getter(mthis);
+
+  static nodeName_Getter(mthis) native "Node_nodeName_Getter";
+  nodeName_Getter_(mthis) => nodeName_Getter(mthis);
+
+  static nodeType_Getter(mthis) native "Node_nodeType_Getter";
+  nodeType_Getter_(mthis) => nodeType_Getter(mthis);
+
+  static nodeValue_Getter(mthis) native "Node_nodeValue_Getter";
+  nodeValue_Getter_(mthis) => nodeValue_Getter(mthis);
+
+  static nodeValue_Setter(mthis, __arg_0) native "Node_nodeValue_Setter";
+  nodeValue_Setter_(mthis, __arg_0) => nodeValue_Setter(mthis, __arg_0);
+
+  static ownerDocument_Getter(mthis) native "Node_ownerDocument_Getter";
+  ownerDocument_Getter_(mthis) => ownerDocument_Getter(mthis);
+
+  static parentElement_Getter(mthis) native "Node_parentElement_Getter";
+  parentElement_Getter_(mthis) => parentElement_Getter(mthis);
+
+  static parentNode_Getter(mthis) native "Node_parentNode_Getter";
+  parentNode_Getter_(mthis) => parentNode_Getter(mthis);
+
+  static previousSibling_Getter(mthis) native "Node_previousSibling_Getter";
+  previousSibling_Getter_(mthis) => previousSibling_Getter(mthis);
+
+  static removeChild_Callback_0(mthis) native "Node_removeChild_Callback";
+  removeChild_Callback_0_(mthis) => removeChild_Callback_0(mthis);
+
+  static removeChild_Callback_1(mthis, __arg_0) native "Node_removeChild_Callback";
+  removeChild_Callback_1_(mthis, __arg_0) => removeChild_Callback_1(mthis, __arg_0);
+
+  static removeChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_removeChild_Callback";
+  removeChild_Callback_2_(mthis, __arg_0, __arg_1) => removeChild_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_removeChild_Callback";
+  removeChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceChild_Callback_0(mthis) native "Node_replaceChild_Callback";
+  replaceChild_Callback_0_(mthis) => replaceChild_Callback_0(mthis);
+
+  static replaceChild_Callback_1(mthis, __arg_0) native "Node_replaceChild_Callback";
+  replaceChild_Callback_1_(mthis, __arg_0) => replaceChild_Callback_1(mthis, __arg_0);
+
+  static replaceChild_Callback_2(mthis, __arg_0, __arg_1) native "Node_replaceChild_Callback";
+  replaceChild_Callback_2_(mthis, __arg_0, __arg_1) => replaceChild_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replaceChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Node_replaceChild_Callback";
+  replaceChild_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceChild_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceChild_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Node_replaceChild_Callback";
+  replaceChild_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceChild_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static textContent_Getter(mthis) native "Node_textContent_Getter";
+  textContent_Getter_(mthis) => textContent_Getter(mthis);
+
+  static textContent_Setter(mthis, __arg_0) native "Node_textContent_Setter";
+  textContent_Setter_(mthis, __arg_0) => textContent_Setter(mthis, __arg_0);
+
+}
+
+class BlinkNodeFilter {
+  static final instance = new BlinkNodeFilter();
+
+}
 
 class BlinkNodeIterator {
+  static final instance = new BlinkNodeIterator();
+
+  static detach_Callback_0(mthis) native "NodeIterator_detach_Callback";
+  detach_Callback_0_(mthis) => detach_Callback_0(mthis);
+
+  static detach_Callback_1(mthis, __arg_0) native "NodeIterator_detach_Callback";
+  detach_Callback_1_(mthis, __arg_0) => detach_Callback_1(mthis, __arg_0);
+
+  static detach_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_detach_Callback";
+  detach_Callback_2_(mthis, __arg_0, __arg_1) => detach_Callback_2(mthis, __arg_0, __arg_1);
+
+  static nextNode_Callback_0(mthis) native "NodeIterator_nextNode_Callback";
+  nextNode_Callback_0_(mthis) => nextNode_Callback_0(mthis);
+
+  static nextNode_Callback_1(mthis, __arg_0) native "NodeIterator_nextNode_Callback";
+  nextNode_Callback_1_(mthis, __arg_0) => nextNode_Callback_1(mthis, __arg_0);
+
+  static nextNode_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_nextNode_Callback";
+  nextNode_Callback_2_(mthis, __arg_0, __arg_1) => nextNode_Callback_2(mthis, __arg_0, __arg_1);
+
   static pointerBeforeReferenceNode_Getter(mthis) native "NodeIterator_pointerBeforeReferenceNode_Getter";
+  pointerBeforeReferenceNode_Getter_(mthis) => pointerBeforeReferenceNode_Getter(mthis);
+
+  static previousNode_Callback_0(mthis) native "NodeIterator_previousNode_Callback";
+  previousNode_Callback_0_(mthis) => previousNode_Callback_0(mthis);
+
+  static previousNode_Callback_1(mthis, __arg_0) native "NodeIterator_previousNode_Callback";
+  previousNode_Callback_1_(mthis, __arg_0) => previousNode_Callback_1(mthis, __arg_0);
+
+  static previousNode_Callback_2(mthis, __arg_0, __arg_1) native "NodeIterator_previousNode_Callback";
+  previousNode_Callback_2_(mthis, __arg_0, __arg_1) => previousNode_Callback_2(mthis, __arg_0, __arg_1);
 
   static referenceNode_Getter(mthis) native "NodeIterator_referenceNode_Getter";
+  referenceNode_Getter_(mthis) => referenceNode_Getter(mthis);
 
   static root_Getter(mthis) native "NodeIterator_root_Getter";
+  root_Getter_(mthis) => root_Getter(mthis);
 
   static whatToShow_Getter(mthis) native "NodeIterator_whatToShow_Getter";
+  whatToShow_Getter_(mthis) => whatToShow_Getter(mthis);
 
-  static detach_Callback(mthis) native "NodeIterator_detach_Callback";
-
-  static nextNode_Callback(mthis) native "NodeIterator_nextNode_Callback";
-
-  static previousNode_Callback(mthis) native "NodeIterator_previousNode_Callback";
 }
 
 class BlinkNodeList {
-  static length_Getter(mthis) native "NodeList_length_Getter";
+  static final instance = new BlinkNodeList();
 
-  static item_Callback_1(mthis, index) native "NodeList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "NodeList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "NodeList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "NodeList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "NodeList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "NodeList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "NodeList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
-class BlinkNotation {}
+class BlinkNotation extends BlinkNode {
+  static final instance = new BlinkNotation();
 
-class BlinkNotification {
-  static constructorCallback_2(title, options) native "Notification_constructorCallback";
+}
+
+class BlinkNotification extends BlinkEventTarget {
+  static final instance = new BlinkNotification();
 
   static body_Getter(mthis) native "Notification_body_Getter";
+  body_Getter_(mthis) => body_Getter(mthis);
+
+  static close_Callback_0(mthis) native "Notification_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "Notification_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "Notification_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "Notification_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Notification_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Notification_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Notification_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Notification_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static dir_Getter(mthis) native "Notification_dir_Getter";
+  dir_Getter_(mthis) => dir_Getter(mthis);
 
   static icon_Getter(mthis) native "Notification_icon_Getter";
+  icon_Getter_(mthis) => icon_Getter(mthis);
 
   static lang_Getter(mthis) native "Notification_lang_Getter";
+  lang_Getter_(mthis) => lang_Getter(mthis);
 
-  static permission_Getter(mthis) native "Notification_permission_Getter";
+  static onclick_Getter(mthis) native "Notification_onclick_Getter";
+  onclick_Getter_(mthis) => onclick_Getter(mthis);
+
+  static onclick_Setter(mthis, __arg_0) native "Notification_onclick_Setter";
+  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "Notification_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "Notification_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "Notification_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "Notification_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onshow_Getter(mthis) native "Notification_onshow_Getter";
+  onshow_Getter_(mthis) => onshow_Getter(mthis);
+
+  static onshow_Setter(mthis, __arg_0) native "Notification_onshow_Setter";
+  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+
+  static permission_Getter() native "Notification_permission_Getter";
+  permission_Getter_() => permission_Getter();
+
+  static requestPermission_Callback_0() native "Notification_requestPermission_Callback";
+  requestPermission_Callback_0_() => requestPermission_Callback_0();
+
+  static requestPermission_Callback_1(__arg_0) native "Notification_requestPermission_Callback";
+  requestPermission_Callback_1_(__arg_0) => requestPermission_Callback_1(__arg_0);
+
+  static requestPermission_Callback_2(__arg_0, __arg_1) native "Notification_requestPermission_Callback";
+  requestPermission_Callback_2_(__arg_0, __arg_1) => requestPermission_Callback_2(__arg_0, __arg_1);
+
+  static requestPermission_Callback_3(__arg_0, __arg_1, __arg_2) native "Notification_requestPermission_Callback";
+  requestPermission_Callback_3_(__arg_0, __arg_1, __arg_2) => requestPermission_Callback_3(__arg_0, __arg_1, __arg_2);
 
   static tag_Getter(mthis) native "Notification_tag_Getter";
+  tag_Getter_(mthis) => tag_Getter(mthis);
 
   static title_Getter(mthis) native "Notification_title_Getter";
+  title_Getter_(mthis) => title_Getter(mthis);
 
-  static close_Callback(mthis) native "Notification_close_Callback";
-
-  static requestPermission_Callback_1(callback) native "Notification_requestPermission_Callback";
-
-  static requestPermission_Callback() native "Notification_requestPermission_Callback";
 }
 
-class BlinkOESElementIndexUint {}
+class BlinkOESElementIndexUint {
+  static final instance = new BlinkOESElementIndexUint();
 
-class BlinkOESStandardDerivatives {}
+}
 
-class BlinkOESTextureFloat {}
+class BlinkOESStandardDerivatives {
+  static final instance = new BlinkOESStandardDerivatives();
 
-class BlinkOESTextureFloatLinear {}
+}
 
-class BlinkOESTextureHalfFloat {}
+class BlinkOESTextureFloat {
+  static final instance = new BlinkOESTextureFloat();
 
-class BlinkOESTextureHalfFloatLinear {}
+}
+
+class BlinkOESTextureFloatLinear {
+  static final instance = new BlinkOESTextureFloatLinear();
+
+}
+
+class BlinkOESTextureHalfFloat {
+  static final instance = new BlinkOESTextureHalfFloat();
+
+}
+
+class BlinkOESTextureHalfFloatLinear {
+  static final instance = new BlinkOESTextureHalfFloatLinear();
+
+}
 
 class BlinkOESVertexArrayObject {
-  static bindVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
+  static final instance = new BlinkOESVertexArrayObject();
 
-  static createVertexArrayOES_Callback(mthis) native "OESVertexArrayObject_createVertexArrayOES_Callback";
+  static bindVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
+  bindVertexArrayOES_Callback_0_(mthis) => bindVertexArrayOES_Callback_0(mthis);
 
-  static deleteVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
+  static bindVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
+  bindVertexArrayOES_Callback_1_(mthis, __arg_0) => bindVertexArrayOES_Callback_1(mthis, __arg_0);
 
-  static isVertexArrayOES_Callback_1(mthis, arrayObject) native "OESVertexArrayObject_isVertexArrayOES_Callback";
+  static bindVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
+  bindVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => bindVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_bindVertexArrayOES_Callback";
+  bindVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_createVertexArrayOES_Callback";
+  createVertexArrayOES_Callback_0_(mthis) => createVertexArrayOES_Callback_0(mthis);
+
+  static createVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_createVertexArrayOES_Callback";
+  createVertexArrayOES_Callback_1_(mthis, __arg_0) => createVertexArrayOES_Callback_1(mthis, __arg_0);
+
+  static createVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_createVertexArrayOES_Callback";
+  createVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => createVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
+  deleteVertexArrayOES_Callback_0_(mthis) => deleteVertexArrayOES_Callback_0(mthis);
+
+  static deleteVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
+  deleteVertexArrayOES_Callback_1_(mthis, __arg_0) => deleteVertexArrayOES_Callback_1(mthis, __arg_0);
+
+  static deleteVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
+  deleteVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => deleteVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_deleteVertexArrayOES_Callback";
+  deleteVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isVertexArrayOES_Callback_0(mthis) native "OESVertexArrayObject_isVertexArrayOES_Callback";
+  isVertexArrayOES_Callback_0_(mthis) => isVertexArrayOES_Callback_0(mthis);
+
+  static isVertexArrayOES_Callback_1(mthis, __arg_0) native "OESVertexArrayObject_isVertexArrayOES_Callback";
+  isVertexArrayOES_Callback_1_(mthis, __arg_0) => isVertexArrayOES_Callback_1(mthis, __arg_0);
+
+  static isVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1) native "OESVertexArrayObject_isVertexArrayOES_Callback";
+  isVertexArrayOES_Callback_2_(mthis, __arg_0, __arg_1) => isVertexArrayOES_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OESVertexArrayObject_isVertexArrayOES_Callback";
+  isVertexArrayOES_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isVertexArrayOES_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkOfflineAudioCompletionEvent {
+class BlinkOfflineAudioCompletionEvent extends BlinkEvent {
+  static final instance = new BlinkOfflineAudioCompletionEvent();
+
   static renderedBuffer_Getter(mthis) native "OfflineAudioCompletionEvent_renderedBuffer_Getter";
+  renderedBuffer_Getter_(mthis) => renderedBuffer_Getter(mthis);
+
 }
 
-class BlinkOfflineAudioContext {
-  static constructorCallback_3(numberOfChannels, numberOfFrames, sampleRate) native "OfflineAudioContext_constructorCallback";
+class BlinkOfflineAudioContext extends BlinkAudioContext {
+  static final instance = new BlinkOfflineAudioContext();
+
+  static constructorCallback_1(__arg_0) native "OfflineAudioContext_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "OfflineAudioContext_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "OfflineAudioContext_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "OfflineAudioContext_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "OfflineAudioContext_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
-class BlinkOscillatorNode {
+class BlinkOscillatorNode extends BlinkAudioSourceNode {
+  static final instance = new BlinkOscillatorNode();
+
   static detune_Getter(mthis) native "OscillatorNode_detune_Getter";
+  detune_Getter_(mthis) => detune_Getter(mthis);
 
   static frequency_Getter(mthis) native "OscillatorNode_frequency_Getter";
+  frequency_Getter_(mthis) => frequency_Getter(mthis);
+
+  static noteOff_Callback_0(mthis) native "OscillatorNode_noteOff_Callback";
+  noteOff_Callback_0_(mthis) => noteOff_Callback_0(mthis);
+
+  static noteOff_Callback_1(mthis, __arg_0) native "OscillatorNode_noteOff_Callback";
+  noteOff_Callback_1_(mthis, __arg_0) => noteOff_Callback_1(mthis, __arg_0);
+
+  static noteOff_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_noteOff_Callback";
+  noteOff_Callback_2_(mthis, __arg_0, __arg_1) => noteOff_Callback_2(mthis, __arg_0, __arg_1);
+
+  static noteOff_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_noteOff_Callback";
+  noteOff_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => noteOff_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static noteOn_Callback_0(mthis) native "OscillatorNode_noteOn_Callback";
+  noteOn_Callback_0_(mthis) => noteOn_Callback_0(mthis);
+
+  static noteOn_Callback_1(mthis, __arg_0) native "OscillatorNode_noteOn_Callback";
+  noteOn_Callback_1_(mthis, __arg_0) => noteOn_Callback_1(mthis, __arg_0);
+
+  static noteOn_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_noteOn_Callback";
+  noteOn_Callback_2_(mthis, __arg_0, __arg_1) => noteOn_Callback_2(mthis, __arg_0, __arg_1);
+
+  static noteOn_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_noteOn_Callback";
+  noteOn_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => noteOn_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onended_Getter(mthis) native "OscillatorNode_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "OscillatorNode_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static setPeriodicWave_Callback_0(mthis) native "OscillatorNode_setPeriodicWave_Callback";
+  setPeriodicWave_Callback_0_(mthis) => setPeriodicWave_Callback_0(mthis);
+
+  static setPeriodicWave_Callback_1(mthis, __arg_0) native "OscillatorNode_setPeriodicWave_Callback";
+  setPeriodicWave_Callback_1_(mthis, __arg_0) => setPeriodicWave_Callback_1(mthis, __arg_0);
+
+  static setPeriodicWave_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_setPeriodicWave_Callback";
+  setPeriodicWave_Callback_2_(mthis, __arg_0, __arg_1) => setPeriodicWave_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_setPeriodicWave_Callback";
+  setPeriodicWave_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPeriodicWave_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static start_Callback_0(mthis) native "OscillatorNode_start_Callback";
+  start_Callback_0_(mthis) => start_Callback_0(mthis);
+
+  static start_Callback_1(mthis, __arg_0) native "OscillatorNode_start_Callback";
+  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
+
+  static start_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_start_Callback";
+  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+
+  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_start_Callback";
+  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stop_Callback_0(mthis) native "OscillatorNode_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+
+  static stop_Callback_1(mthis, __arg_0) native "OscillatorNode_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "OscillatorNode_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "OscillatorNode_stop_Callback";
+  stop_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stop_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static type_Getter(mthis) native "OscillatorNode_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "OscillatorNode_type_Setter";
+  static type_Setter(mthis, __arg_0) native "OscillatorNode_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
 
-  static noteOff_Callback_1(mthis, when) native "OscillatorNode_noteOff_Callback";
-
-  static noteOn_Callback_1(mthis, when) native "OscillatorNode_noteOn_Callback";
-
-  static setPeriodicWave_Callback_1(mthis, periodicWave) native "OscillatorNode_setPeriodicWave_Callback";
-
-  static start_Callback_1(mthis, when) native "OscillatorNode_start_Callback";
-
-  static start_Callback(mthis) native "OscillatorNode_start_Callback";
-
-  static stop_Callback_1(mthis, when) native "OscillatorNode_stop_Callback";
-
-  static stop_Callback(mthis) native "OscillatorNode_stop_Callback";
 }
 
-class BlinkOverflowEvent {
-  static constructorCallback(type, options) native "OverflowEvent_constructorCallback";
+class BlinkOverflowEvent extends BlinkEvent {
+  static final instance = new BlinkOverflowEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "OverflowEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static horizontalOverflow_Getter(mthis) native "OverflowEvent_horizontalOverflow_Getter";
+  horizontalOverflow_Getter_(mthis) => horizontalOverflow_Getter(mthis);
 
   static orient_Getter(mthis) native "OverflowEvent_orient_Getter";
+  orient_Getter_(mthis) => orient_Getter(mthis);
 
   static verticalOverflow_Getter(mthis) native "OverflowEvent_verticalOverflow_Getter";
+  verticalOverflow_Getter_(mthis) => verticalOverflow_Getter(mthis);
+
 }
 
-class BlinkPagePopupController {}
+class BlinkPagePopupController {
+  static final instance = new BlinkPagePopupController();
 
-class BlinkPageTransitionEvent {
-  static constructorCallback(type, options) native "PageTransitionEvent_constructorCallback";
+  static closePopup_Callback_0(mthis) native "PagePopupController_closePopup_Callback";
+  closePopup_Callback_0_(mthis) => closePopup_Callback_0(mthis);
+
+  static closePopup_Callback_1(mthis, __arg_0) native "PagePopupController_closePopup_Callback";
+  closePopup_Callback_1_(mthis, __arg_0) => closePopup_Callback_1(mthis, __arg_0);
+
+  static closePopup_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_closePopup_Callback";
+  closePopup_Callback_2_(mthis, __arg_0, __arg_1) => closePopup_Callback_2(mthis, __arg_0, __arg_1);
+
+  static formatMonth_Callback_0(mthis) native "PagePopupController_formatMonth_Callback";
+  formatMonth_Callback_0_(mthis) => formatMonth_Callback_0(mthis);
+
+  static formatMonth_Callback_1(mthis, __arg_0) native "PagePopupController_formatMonth_Callback";
+  formatMonth_Callback_1_(mthis, __arg_0) => formatMonth_Callback_1(mthis, __arg_0);
+
+  static formatMonth_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_formatMonth_Callback";
+  formatMonth_Callback_2_(mthis, __arg_0, __arg_1) => formatMonth_Callback_2(mthis, __arg_0, __arg_1);
+
+  static formatMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_formatMonth_Callback";
+  formatMonth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => formatMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static formatMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_formatMonth_Callback";
+  formatMonth_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => formatMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static formatShortMonth_Callback_0(mthis) native "PagePopupController_formatShortMonth_Callback";
+  formatShortMonth_Callback_0_(mthis) => formatShortMonth_Callback_0(mthis);
+
+  static formatShortMonth_Callback_1(mthis, __arg_0) native "PagePopupController_formatShortMonth_Callback";
+  formatShortMonth_Callback_1_(mthis, __arg_0) => formatShortMonth_Callback_1(mthis, __arg_0);
+
+  static formatShortMonth_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_formatShortMonth_Callback";
+  formatShortMonth_Callback_2_(mthis, __arg_0, __arg_1) => formatShortMonth_Callback_2(mthis, __arg_0, __arg_1);
+
+  static formatShortMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_formatShortMonth_Callback";
+  formatShortMonth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => formatShortMonth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static formatShortMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_formatShortMonth_Callback";
+  formatShortMonth_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => formatShortMonth_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static histogramEnumeration_Callback_1(mthis, __arg_0) native "PagePopupController_histogramEnumeration_Callback";
+  histogramEnumeration_Callback_1_(mthis, __arg_0) => histogramEnumeration_Callback_1(mthis, __arg_0);
+
+  static histogramEnumeration_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_histogramEnumeration_Callback";
+  histogramEnumeration_Callback_2_(mthis, __arg_0, __arg_1) => histogramEnumeration_Callback_2(mthis, __arg_0, __arg_1);
+
+  static histogramEnumeration_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_histogramEnumeration_Callback";
+  histogramEnumeration_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => histogramEnumeration_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static histogramEnumeration_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_histogramEnumeration_Callback";
+  histogramEnumeration_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => histogramEnumeration_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static histogramEnumeration_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PagePopupController_histogramEnumeration_Callback";
+  histogramEnumeration_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => histogramEnumeration_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static localizeNumberString_Callback_0(mthis) native "PagePopupController_localizeNumberString_Callback";
+  localizeNumberString_Callback_0_(mthis) => localizeNumberString_Callback_0(mthis);
+
+  static localizeNumberString_Callback_1(mthis, __arg_0) native "PagePopupController_localizeNumberString_Callback";
+  localizeNumberString_Callback_1_(mthis, __arg_0) => localizeNumberString_Callback_1(mthis, __arg_0);
+
+  static localizeNumberString_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_localizeNumberString_Callback";
+  localizeNumberString_Callback_2_(mthis, __arg_0, __arg_1) => localizeNumberString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static localizeNumberString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_localizeNumberString_Callback";
+  localizeNumberString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => localizeNumberString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setValueAndClosePopup_Callback_0(mthis) native "PagePopupController_setValueAndClosePopup_Callback";
+  setValueAndClosePopup_Callback_0_(mthis) => setValueAndClosePopup_Callback_0(mthis);
+
+  static setValueAndClosePopup_Callback_1(mthis, __arg_0) native "PagePopupController_setValueAndClosePopup_Callback";
+  setValueAndClosePopup_Callback_1_(mthis, __arg_0) => setValueAndClosePopup_Callback_1(mthis, __arg_0);
+
+  static setValueAndClosePopup_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_setValueAndClosePopup_Callback";
+  setValueAndClosePopup_Callback_2_(mthis, __arg_0, __arg_1) => setValueAndClosePopup_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setValueAndClosePopup_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_setValueAndClosePopup_Callback";
+  setValueAndClosePopup_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValueAndClosePopup_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setValueAndClosePopup_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PagePopupController_setValueAndClosePopup_Callback";
+  setValueAndClosePopup_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setValueAndClosePopup_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setValue_Callback_0(mthis) native "PagePopupController_setValue_Callback";
+  setValue_Callback_0_(mthis) => setValue_Callback_0(mthis);
+
+  static setValue_Callback_1(mthis, __arg_0) native "PagePopupController_setValue_Callback";
+  setValue_Callback_1_(mthis, __arg_0) => setValue_Callback_1(mthis, __arg_0);
+
+  static setValue_Callback_2(mthis, __arg_0, __arg_1) native "PagePopupController_setValue_Callback";
+  setValue_Callback_2_(mthis, __arg_0, __arg_1) => setValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PagePopupController_setValue_Callback";
+  setValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkPageTransitionEvent extends BlinkEvent {
+  static final instance = new BlinkPageTransitionEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "PageTransitionEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static persisted_Getter(mthis) native "PageTransitionEvent_persisted_Getter";
+  persisted_Getter_(mthis) => persisted_Getter(mthis);
+
 }
 
-class BlinkPannerNode {
-  static coneInnerAngle_Getter(mthis) native "PannerNode_coneInnerAngle_Getter";
+class BlinkPannerNode extends BlinkAudioNode {
+  static final instance = new BlinkPannerNode();
 
-  static coneInnerAngle_Setter(mthis, value) native "PannerNode_coneInnerAngle_Setter";
+  static coneInnerAngle_Getter(mthis) native "PannerNode_coneInnerAngle_Getter";
+  coneInnerAngle_Getter_(mthis) => coneInnerAngle_Getter(mthis);
+
+  static coneInnerAngle_Setter(mthis, __arg_0) native "PannerNode_coneInnerAngle_Setter";
+  coneInnerAngle_Setter_(mthis, __arg_0) => coneInnerAngle_Setter(mthis, __arg_0);
 
   static coneOuterAngle_Getter(mthis) native "PannerNode_coneOuterAngle_Getter";
+  coneOuterAngle_Getter_(mthis) => coneOuterAngle_Getter(mthis);
 
-  static coneOuterAngle_Setter(mthis, value) native "PannerNode_coneOuterAngle_Setter";
+  static coneOuterAngle_Setter(mthis, __arg_0) native "PannerNode_coneOuterAngle_Setter";
+  coneOuterAngle_Setter_(mthis, __arg_0) => coneOuterAngle_Setter(mthis, __arg_0);
 
   static coneOuterGain_Getter(mthis) native "PannerNode_coneOuterGain_Getter";
+  coneOuterGain_Getter_(mthis) => coneOuterGain_Getter(mthis);
 
-  static coneOuterGain_Setter(mthis, value) native "PannerNode_coneOuterGain_Setter";
+  static coneOuterGain_Setter(mthis, __arg_0) native "PannerNode_coneOuterGain_Setter";
+  coneOuterGain_Setter_(mthis, __arg_0) => coneOuterGain_Setter(mthis, __arg_0);
 
   static distanceModel_Getter(mthis) native "PannerNode_distanceModel_Getter";
+  distanceModel_Getter_(mthis) => distanceModel_Getter(mthis);
 
-  static distanceModel_Setter(mthis, value) native "PannerNode_distanceModel_Setter";
+  static distanceModel_Setter(mthis, __arg_0) native "PannerNode_distanceModel_Setter";
+  distanceModel_Setter_(mthis, __arg_0) => distanceModel_Setter(mthis, __arg_0);
 
   static maxDistance_Getter(mthis) native "PannerNode_maxDistance_Getter";
+  maxDistance_Getter_(mthis) => maxDistance_Getter(mthis);
 
-  static maxDistance_Setter(mthis, value) native "PannerNode_maxDistance_Setter";
+  static maxDistance_Setter(mthis, __arg_0) native "PannerNode_maxDistance_Setter";
+  maxDistance_Setter_(mthis, __arg_0) => maxDistance_Setter(mthis, __arg_0);
 
   static panningModel_Getter(mthis) native "PannerNode_panningModel_Getter";
+  panningModel_Getter_(mthis) => panningModel_Getter(mthis);
 
-  static panningModel_Setter(mthis, value) native "PannerNode_panningModel_Setter";
+  static panningModel_Setter(mthis, __arg_0) native "PannerNode_panningModel_Setter";
+  panningModel_Setter_(mthis, __arg_0) => panningModel_Setter(mthis, __arg_0);
 
   static refDistance_Getter(mthis) native "PannerNode_refDistance_Getter";
+  refDistance_Getter_(mthis) => refDistance_Getter(mthis);
 
-  static refDistance_Setter(mthis, value) native "PannerNode_refDistance_Setter";
+  static refDistance_Setter(mthis, __arg_0) native "PannerNode_refDistance_Setter";
+  refDistance_Setter_(mthis, __arg_0) => refDistance_Setter(mthis, __arg_0);
 
   static rolloffFactor_Getter(mthis) native "PannerNode_rolloffFactor_Getter";
+  rolloffFactor_Getter_(mthis) => rolloffFactor_Getter(mthis);
 
-  static rolloffFactor_Setter(mthis, value) native "PannerNode_rolloffFactor_Setter";
+  static rolloffFactor_Setter(mthis, __arg_0) native "PannerNode_rolloffFactor_Setter";
+  rolloffFactor_Setter_(mthis, __arg_0) => rolloffFactor_Setter(mthis, __arg_0);
 
-  static setOrientation_Callback_3(mthis, x, y, z) native "PannerNode_setOrientation_Callback";
+  static setOrientation_Callback_1(mthis, __arg_0) native "PannerNode_setOrientation_Callback";
+  setOrientation_Callback_1_(mthis, __arg_0) => setOrientation_Callback_1(mthis, __arg_0);
 
-  static setPosition_Callback_3(mthis, x, y, z) native "PannerNode_setPosition_Callback";
+  static setOrientation_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setOrientation_Callback";
+  setOrientation_Callback_2_(mthis, __arg_0, __arg_1) => setOrientation_Callback_2(mthis, __arg_0, __arg_1);
 
-  static setVelocity_Callback_3(mthis, x, y, z) native "PannerNode_setVelocity_Callback";
+  static setOrientation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setOrientation_Callback";
+  setOrientation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setOrientation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setOrientation_Callback";
+  setOrientation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setOrientation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setOrientation_Callback";
+  setOrientation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setOrientation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setPosition_Callback_1(mthis, __arg_0) native "PannerNode_setPosition_Callback";
+  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+
+  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setPosition_Callback";
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setPosition_Callback";
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setPosition_Callback";
+  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setPosition_Callback";
+  setPosition_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setPosition_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setVelocity_Callback_1(mthis, __arg_0) native "PannerNode_setVelocity_Callback";
+  setVelocity_Callback_1_(mthis, __arg_0) => setVelocity_Callback_1(mthis, __arg_0);
+
+  static setVelocity_Callback_2(mthis, __arg_0, __arg_1) native "PannerNode_setVelocity_Callback";
+  setVelocity_Callback_2_(mthis, __arg_0, __arg_1) => setVelocity_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PannerNode_setVelocity_Callback";
+  setVelocity_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setVelocity_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "PannerNode_setVelocity_Callback";
+  setVelocity_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setVelocity_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "PannerNode_setVelocity_Callback";
+  setVelocity_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setVelocity_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
 class BlinkPath2D {
-  static constructorCallback() native "Path2D_constructorCallback";
+  static final instance = new BlinkPath2D();
 
-  static constructorCallback_1(path_OR_text) native "Path2D_constructorCallback";
+  static addPath_Callback_0(mthis) native "Path2D_addPath_Callback";
+  addPath_Callback_0_(mthis) => addPath_Callback_0(mthis);
 
-  static addPath_Callback_2(mthis, path, transform) native "Path2D_addPath_Callback";
+  static addPath_Callback_1(mthis, __arg_0) native "Path2D_addPath_Callback";
+  addPath_Callback_1_(mthis, __arg_0) => addPath_Callback_1(mthis, __arg_0);
 
-  static addPath_Callback_1(mthis, path) native "Path2D_addPath_Callback";
+  static addPath_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_addPath_Callback";
+  addPath_Callback_2_(mthis, __arg_0, __arg_1) => addPath_Callback_2(mthis, __arg_0, __arg_1);
 
-  static arc_Callback_6(mthis, x, y, radius, startAngle, endAngle, anticlockwise) native "Path2D_arc_Callback";
+  static addPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_addPath_Callback";
+  addPath_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addPath_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static arcTo_Callback_5(mthis, x1, y1, x2, y2, radius) native "Path2D_arcTo_Callback";
+  static addPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_addPath_Callback";
+  addPath_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addPath_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static bezierCurveTo_Callback_6(mthis, cp1x, cp1y, cp2x, cp2y, x, y) native "Path2D_bezierCurveTo_Callback";
+  static arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_arcTo_Callback";
+  arcTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arcTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static closePath_Callback(mthis) native "Path2D_closePath_Callback";
+  static arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_arcTo_Callback";
+  arcTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arcTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static ellipse_Callback_8(mthis, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) native "Path2D_ellipse_Callback";
+  static arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_arcTo_Callback";
+  arcTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arcTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static lineTo_Callback_2(mthis, x, y) native "Path2D_lineTo_Callback";
+  static arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_arcTo_Callback";
+  arcTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arcTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static moveTo_Callback_2(mthis, x, y) native "Path2D_moveTo_Callback";
+  static arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_arcTo_Callback";
+  arcTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arcTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static quadraticCurveTo_Callback_4(mthis, cpx, cpy, x, y) native "Path2D_quadraticCurveTo_Callback";
+  static arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_arc_Callback";
+  arc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => arc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static rect_Callback_4(mthis, x, y, width, height) native "Path2D_rect_Callback";
+  static arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_arc_Callback";
+  arc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => arc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_arc_Callback";
+  arc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => arc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_arc_Callback";
+  arc_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => arc_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_arc_Callback";
+  arc_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => arc_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_arc_Callback";
+  arc_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => arc_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bezierCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bezierCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => bezierCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => bezierCurveTo_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_bezierCurveTo_Callback";
+  bezierCurveTo_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => bezierCurveTo_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static closePath_Callback_0(mthis) native "Path2D_closePath_Callback";
+  closePath_Callback_0_(mthis) => closePath_Callback_0(mthis);
+
+  static closePath_Callback_1(mthis, __arg_0) native "Path2D_closePath_Callback";
+  closePath_Callback_1_(mthis, __arg_0) => closePath_Callback_1(mthis, __arg_0);
+
+  static closePath_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_closePath_Callback";
+  closePath_Callback_2_(mthis, __arg_0, __arg_1) => closePath_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "Path2D_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Path2D_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Path2D_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Path2D_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "Path2D_ellipse_Callback";
+  ellipse_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => ellipse_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_ellipse_Callback";
+  ellipse_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => ellipse_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_ellipse_Callback";
+  ellipse_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => ellipse_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Path2D_ellipse_Callback";
+  ellipse_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => ellipse_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Path2D_ellipse_Callback";
+  ellipse_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => ellipse_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Path2D_ellipse_Callback";
+  ellipse_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => ellipse_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static lineTo_Callback_0(mthis) native "Path2D_lineTo_Callback";
+  lineTo_Callback_0_(mthis) => lineTo_Callback_0(mthis);
+
+  static lineTo_Callback_1(mthis, __arg_0) native "Path2D_lineTo_Callback";
+  lineTo_Callback_1_(mthis, __arg_0) => lineTo_Callback_1(mthis, __arg_0);
+
+  static lineTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_lineTo_Callback";
+  lineTo_Callback_2_(mthis, __arg_0, __arg_1) => lineTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_lineTo_Callback";
+  lineTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_lineTo_Callback";
+  lineTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => lineTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static moveTo_Callback_0(mthis) native "Path2D_moveTo_Callback";
+  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+
+  static moveTo_Callback_1(mthis, __arg_0) native "Path2D_moveTo_Callback";
+  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+
+  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_moveTo_Callback";
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_moveTo_Callback";
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_moveTo_Callback";
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_2_(mthis, __arg_0, __arg_1) => quadraticCurveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => quadraticCurveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => quadraticCurveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => quadraticCurveTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_quadraticCurveTo_Callback";
+  quadraticCurveTo_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => quadraticCurveTo_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static rect_Callback_2(mthis, __arg_0, __arg_1) native "Path2D_rect_Callback";
+  rect_Callback_2_(mthis, __arg_0, __arg_1) => rect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Path2D_rect_Callback";
+  rect_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rect_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Path2D_rect_Callback";
+  rect_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rect_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Path2D_rect_Callback";
+  rect_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rect_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Path2D_rect_Callback";
+  rect_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rect_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
 }
 
-class BlinkPerformance {
+class BlinkPerformance extends BlinkEventTarget {
+  static final instance = new BlinkPerformance();
+
+  static clearMarks_Callback_0(mthis) native "Performance_clearMarks_Callback";
+  clearMarks_Callback_0_(mthis) => clearMarks_Callback_0(mthis);
+
+  static clearMarks_Callback_1(mthis, __arg_0) native "Performance_clearMarks_Callback";
+  clearMarks_Callback_1_(mthis, __arg_0) => clearMarks_Callback_1(mthis, __arg_0);
+
+  static clearMarks_Callback_2(mthis, __arg_0, __arg_1) native "Performance_clearMarks_Callback";
+  clearMarks_Callback_2_(mthis, __arg_0, __arg_1) => clearMarks_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearMarks_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_clearMarks_Callback";
+  clearMarks_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearMarks_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearMeasures_Callback_0(mthis) native "Performance_clearMeasures_Callback";
+  clearMeasures_Callback_0_(mthis) => clearMeasures_Callback_0(mthis);
+
+  static clearMeasures_Callback_1(mthis, __arg_0) native "Performance_clearMeasures_Callback";
+  clearMeasures_Callback_1_(mthis, __arg_0) => clearMeasures_Callback_1(mthis, __arg_0);
+
+  static clearMeasures_Callback_2(mthis, __arg_0, __arg_1) native "Performance_clearMeasures_Callback";
+  clearMeasures_Callback_2_(mthis, __arg_0, __arg_1) => clearMeasures_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearMeasures_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_clearMeasures_Callback";
+  clearMeasures_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearMeasures_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEntriesByName_Callback_0(mthis) native "Performance_getEntriesByName_Callback";
+  getEntriesByName_Callback_0_(mthis) => getEntriesByName_Callback_0(mthis);
+
+  static getEntriesByName_Callback_1(mthis, __arg_0) native "Performance_getEntriesByName_Callback";
+  getEntriesByName_Callback_1_(mthis, __arg_0) => getEntriesByName_Callback_1(mthis, __arg_0);
+
+  static getEntriesByName_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntriesByName_Callback";
+  getEntriesByName_Callback_2_(mthis, __arg_0, __arg_1) => getEntriesByName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEntriesByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_getEntriesByName_Callback";
+  getEntriesByName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEntriesByName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEntriesByName_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Performance_getEntriesByName_Callback";
+  getEntriesByName_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getEntriesByName_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getEntriesByType_Callback_0(mthis) native "Performance_getEntriesByType_Callback";
+  getEntriesByType_Callback_0_(mthis) => getEntriesByType_Callback_0(mthis);
+
+  static getEntriesByType_Callback_1(mthis, __arg_0) native "Performance_getEntriesByType_Callback";
+  getEntriesByType_Callback_1_(mthis, __arg_0) => getEntriesByType_Callback_1(mthis, __arg_0);
+
+  static getEntriesByType_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntriesByType_Callback";
+  getEntriesByType_Callback_2_(mthis, __arg_0, __arg_1) => getEntriesByType_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEntriesByType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_getEntriesByType_Callback";
+  getEntriesByType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEntriesByType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEntries_Callback_0(mthis) native "Performance_getEntries_Callback";
+  getEntries_Callback_0_(mthis) => getEntries_Callback_0(mthis);
+
+  static getEntries_Callback_1(mthis, __arg_0) native "Performance_getEntries_Callback";
+  getEntries_Callback_1_(mthis, __arg_0) => getEntries_Callback_1(mthis, __arg_0);
+
+  static getEntries_Callback_2(mthis, __arg_0, __arg_1) native "Performance_getEntries_Callback";
+  getEntries_Callback_2_(mthis, __arg_0, __arg_1) => getEntries_Callback_2(mthis, __arg_0, __arg_1);
+
+  static mark_Callback_0(mthis) native "Performance_mark_Callback";
+  mark_Callback_0_(mthis) => mark_Callback_0(mthis);
+
+  static mark_Callback_1(mthis, __arg_0) native "Performance_mark_Callback";
+  mark_Callback_1_(mthis, __arg_0) => mark_Callback_1(mthis, __arg_0);
+
+  static mark_Callback_2(mthis, __arg_0, __arg_1) native "Performance_mark_Callback";
+  mark_Callback_2_(mthis, __arg_0, __arg_1) => mark_Callback_2(mthis, __arg_0, __arg_1);
+
+  static mark_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_mark_Callback";
+  mark_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => mark_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static measure_Callback_0(mthis) native "Performance_measure_Callback";
+  measure_Callback_0_(mthis) => measure_Callback_0(mthis);
+
+  static measure_Callback_1(mthis, __arg_0) native "Performance_measure_Callback";
+  measure_Callback_1_(mthis, __arg_0) => measure_Callback_1(mthis, __arg_0);
+
+  static measure_Callback_2(mthis, __arg_0, __arg_1) native "Performance_measure_Callback";
+  measure_Callback_2_(mthis, __arg_0, __arg_1) => measure_Callback_2(mthis, __arg_0, __arg_1);
+
+  static measure_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_measure_Callback";
+  measure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => measure_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static measure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Performance_measure_Callback";
+  measure_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => measure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static measure_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Performance_measure_Callback";
+  measure_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => measure_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
   static memory_Getter(mthis) native "Performance_memory_Getter";
+  memory_Getter_(mthis) => memory_Getter(mthis);
 
   static navigation_Getter(mthis) native "Performance_navigation_Getter";
+  navigation_Getter_(mthis) => navigation_Getter(mthis);
+
+  static now_Callback_0(mthis) native "Performance_now_Callback";
+  now_Callback_0_(mthis) => now_Callback_0(mthis);
+
+  static now_Callback_1(mthis, __arg_0) native "Performance_now_Callback";
+  now_Callback_1_(mthis, __arg_0) => now_Callback_1(mthis, __arg_0);
+
+  static now_Callback_2(mthis, __arg_0, __arg_1) native "Performance_now_Callback";
+  now_Callback_2_(mthis, __arg_0, __arg_1) => now_Callback_2(mthis, __arg_0, __arg_1);
+
+  static onwebkitresourcetimingbufferfull_Getter(mthis) native "Performance_onwebkitresourcetimingbufferfull_Getter";
+  onwebkitresourcetimingbufferfull_Getter_(mthis) => onwebkitresourcetimingbufferfull_Getter(mthis);
+
+  static onwebkitresourcetimingbufferfull_Setter(mthis, __arg_0) native "Performance_onwebkitresourcetimingbufferfull_Setter";
+  onwebkitresourcetimingbufferfull_Setter_(mthis, __arg_0) => onwebkitresourcetimingbufferfull_Setter(mthis, __arg_0);
 
   static timing_Getter(mthis) native "Performance_timing_Getter";
+  timing_Getter_(mthis) => timing_Getter(mthis);
 
-  static clearMarks_Callback_1(mthis, markName) native "Performance_clearMarks_Callback";
+  static webkitClearResourceTimings_Callback_0(mthis) native "Performance_webkitClearResourceTimings_Callback";
+  webkitClearResourceTimings_Callback_0_(mthis) => webkitClearResourceTimings_Callback_0(mthis);
 
-  static clearMeasures_Callback_1(mthis, measureName) native "Performance_clearMeasures_Callback";
+  static webkitClearResourceTimings_Callback_1(mthis, __arg_0) native "Performance_webkitClearResourceTimings_Callback";
+  webkitClearResourceTimings_Callback_1_(mthis, __arg_0) => webkitClearResourceTimings_Callback_1(mthis, __arg_0);
 
-  static getEntries_Callback(mthis) native "Performance_getEntries_Callback";
+  static webkitClearResourceTimings_Callback_2(mthis, __arg_0, __arg_1) native "Performance_webkitClearResourceTimings_Callback";
+  webkitClearResourceTimings_Callback_2_(mthis, __arg_0, __arg_1) => webkitClearResourceTimings_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getEntriesByName_Callback_2(mthis, name, entryType) native "Performance_getEntriesByName_Callback";
+  static webkitSetResourceTimingBufferSize_Callback_0(mthis) native "Performance_webkitSetResourceTimingBufferSize_Callback";
+  webkitSetResourceTimingBufferSize_Callback_0_(mthis) => webkitSetResourceTimingBufferSize_Callback_0(mthis);
 
-  static getEntriesByType_Callback_1(mthis, entryType) native "Performance_getEntriesByType_Callback";
+  static webkitSetResourceTimingBufferSize_Callback_1(mthis, __arg_0) native "Performance_webkitSetResourceTimingBufferSize_Callback";
+  webkitSetResourceTimingBufferSize_Callback_1_(mthis, __arg_0) => webkitSetResourceTimingBufferSize_Callback_1(mthis, __arg_0);
 
-  static mark_Callback_1(mthis, markName) native "Performance_mark_Callback";
+  static webkitSetResourceTimingBufferSize_Callback_2(mthis, __arg_0, __arg_1) native "Performance_webkitSetResourceTimingBufferSize_Callback";
+  webkitSetResourceTimingBufferSize_Callback_2_(mthis, __arg_0, __arg_1) => webkitSetResourceTimingBufferSize_Callback_2(mthis, __arg_0, __arg_1);
 
-  static measure_Callback_3(mthis, measureName, startMark, endMark) native "Performance_measure_Callback";
+  static webkitSetResourceTimingBufferSize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Performance_webkitSetResourceTimingBufferSize_Callback";
+  webkitSetResourceTimingBufferSize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitSetResourceTimingBufferSize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static now_Callback(mthis) native "Performance_now_Callback";
-
-  static webkitClearResourceTimings_Callback(mthis) native "Performance_webkitClearResourceTimings_Callback";
-
-  static webkitSetResourceTimingBufferSize_Callback_1(mthis, maxSize) native "Performance_webkitSetResourceTimingBufferSize_Callback";
 }
 
 class BlinkPerformanceEntry {
+  static final instance = new BlinkPerformanceEntry();
+
   static duration_Getter(mthis) native "PerformanceEntry_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
 
   static entryType_Getter(mthis) native "PerformanceEntry_entryType_Getter";
+  entryType_Getter_(mthis) => entryType_Getter(mthis);
 
   static name_Getter(mthis) native "PerformanceEntry_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static startTime_Getter(mthis) native "PerformanceEntry_startTime_Getter";
+  startTime_Getter_(mthis) => startTime_Getter(mthis);
+
 }
 
-class BlinkPerformanceMark {}
+class BlinkPerformanceMark extends BlinkPerformanceEntry {
+  static final instance = new BlinkPerformanceMark();
 
-class BlinkPerformanceMeasure {}
+}
+
+class BlinkPerformanceMeasure extends BlinkPerformanceEntry {
+  static final instance = new BlinkPerformanceMeasure();
+
+}
 
 class BlinkPerformanceNavigation {
+  static final instance = new BlinkPerformanceNavigation();
+
   static redirectCount_Getter(mthis) native "PerformanceNavigation_redirectCount_Getter";
+  redirectCount_Getter_(mthis) => redirectCount_Getter(mthis);
 
   static type_Getter(mthis) native "PerformanceNavigation_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
-class BlinkPerformanceResourceTiming {
+class BlinkPerformanceResourceTiming extends BlinkPerformanceEntry {
+  static final instance = new BlinkPerformanceResourceTiming();
+
   static connectEnd_Getter(mthis) native "PerformanceResourceTiming_connectEnd_Getter";
+  connectEnd_Getter_(mthis) => connectEnd_Getter(mthis);
 
   static connectStart_Getter(mthis) native "PerformanceResourceTiming_connectStart_Getter";
+  connectStart_Getter_(mthis) => connectStart_Getter(mthis);
 
   static domainLookupEnd_Getter(mthis) native "PerformanceResourceTiming_domainLookupEnd_Getter";
+  domainLookupEnd_Getter_(mthis) => domainLookupEnd_Getter(mthis);
 
   static domainLookupStart_Getter(mthis) native "PerformanceResourceTiming_domainLookupStart_Getter";
+  domainLookupStart_Getter_(mthis) => domainLookupStart_Getter(mthis);
 
   static fetchStart_Getter(mthis) native "PerformanceResourceTiming_fetchStart_Getter";
+  fetchStart_Getter_(mthis) => fetchStart_Getter(mthis);
 
   static initiatorType_Getter(mthis) native "PerformanceResourceTiming_initiatorType_Getter";
+  initiatorType_Getter_(mthis) => initiatorType_Getter(mthis);
 
   static redirectEnd_Getter(mthis) native "PerformanceResourceTiming_redirectEnd_Getter";
+  redirectEnd_Getter_(mthis) => redirectEnd_Getter(mthis);
 
   static redirectStart_Getter(mthis) native "PerformanceResourceTiming_redirectStart_Getter";
+  redirectStart_Getter_(mthis) => redirectStart_Getter(mthis);
 
   static requestStart_Getter(mthis) native "PerformanceResourceTiming_requestStart_Getter";
+  requestStart_Getter_(mthis) => requestStart_Getter(mthis);
 
   static responseEnd_Getter(mthis) native "PerformanceResourceTiming_responseEnd_Getter";
+  responseEnd_Getter_(mthis) => responseEnd_Getter(mthis);
 
   static responseStart_Getter(mthis) native "PerformanceResourceTiming_responseStart_Getter";
+  responseStart_Getter_(mthis) => responseStart_Getter(mthis);
 
   static secureConnectionStart_Getter(mthis) native "PerformanceResourceTiming_secureConnectionStart_Getter";
+  secureConnectionStart_Getter_(mthis) => secureConnectionStart_Getter(mthis);
+
 }
 
 class BlinkPerformanceTiming {
+  static final instance = new BlinkPerformanceTiming();
+
   static connectEnd_Getter(mthis) native "PerformanceTiming_connectEnd_Getter";
+  connectEnd_Getter_(mthis) => connectEnd_Getter(mthis);
 
   static connectStart_Getter(mthis) native "PerformanceTiming_connectStart_Getter";
+  connectStart_Getter_(mthis) => connectStart_Getter(mthis);
 
   static domComplete_Getter(mthis) native "PerformanceTiming_domComplete_Getter";
+  domComplete_Getter_(mthis) => domComplete_Getter(mthis);
 
   static domContentLoadedEventEnd_Getter(mthis) native "PerformanceTiming_domContentLoadedEventEnd_Getter";
+  domContentLoadedEventEnd_Getter_(mthis) => domContentLoadedEventEnd_Getter(mthis);
 
   static domContentLoadedEventStart_Getter(mthis) native "PerformanceTiming_domContentLoadedEventStart_Getter";
+  domContentLoadedEventStart_Getter_(mthis) => domContentLoadedEventStart_Getter(mthis);
 
   static domInteractive_Getter(mthis) native "PerformanceTiming_domInteractive_Getter";
+  domInteractive_Getter_(mthis) => domInteractive_Getter(mthis);
 
   static domLoading_Getter(mthis) native "PerformanceTiming_domLoading_Getter";
+  domLoading_Getter_(mthis) => domLoading_Getter(mthis);
 
   static domainLookupEnd_Getter(mthis) native "PerformanceTiming_domainLookupEnd_Getter";
+  domainLookupEnd_Getter_(mthis) => domainLookupEnd_Getter(mthis);
 
   static domainLookupStart_Getter(mthis) native "PerformanceTiming_domainLookupStart_Getter";
+  domainLookupStart_Getter_(mthis) => domainLookupStart_Getter(mthis);
 
   static fetchStart_Getter(mthis) native "PerformanceTiming_fetchStart_Getter";
+  fetchStart_Getter_(mthis) => fetchStart_Getter(mthis);
 
   static loadEventEnd_Getter(mthis) native "PerformanceTiming_loadEventEnd_Getter";
+  loadEventEnd_Getter_(mthis) => loadEventEnd_Getter(mthis);
 
   static loadEventStart_Getter(mthis) native "PerformanceTiming_loadEventStart_Getter";
+  loadEventStart_Getter_(mthis) => loadEventStart_Getter(mthis);
 
   static navigationStart_Getter(mthis) native "PerformanceTiming_navigationStart_Getter";
+  navigationStart_Getter_(mthis) => navigationStart_Getter(mthis);
 
   static redirectEnd_Getter(mthis) native "PerformanceTiming_redirectEnd_Getter";
+  redirectEnd_Getter_(mthis) => redirectEnd_Getter(mthis);
 
   static redirectStart_Getter(mthis) native "PerformanceTiming_redirectStart_Getter";
+  redirectStart_Getter_(mthis) => redirectStart_Getter(mthis);
 
   static requestStart_Getter(mthis) native "PerformanceTiming_requestStart_Getter";
+  requestStart_Getter_(mthis) => requestStart_Getter(mthis);
 
   static responseEnd_Getter(mthis) native "PerformanceTiming_responseEnd_Getter";
+  responseEnd_Getter_(mthis) => responseEnd_Getter(mthis);
 
   static responseStart_Getter(mthis) native "PerformanceTiming_responseStart_Getter";
+  responseStart_Getter_(mthis) => responseStart_Getter(mthis);
 
   static secureConnectionStart_Getter(mthis) native "PerformanceTiming_secureConnectionStart_Getter";
+  secureConnectionStart_Getter_(mthis) => secureConnectionStart_Getter(mthis);
 
   static unloadEventEnd_Getter(mthis) native "PerformanceTiming_unloadEventEnd_Getter";
+  unloadEventEnd_Getter_(mthis) => unloadEventEnd_Getter(mthis);
 
   static unloadEventStart_Getter(mthis) native "PerformanceTiming_unloadEventStart_Getter";
+  unloadEventStart_Getter_(mthis) => unloadEventStart_Getter(mthis);
+
 }
 
-class BlinkPeriodicWave {}
+class BlinkPeriodicWave {
+  static final instance = new BlinkPeriodicWave();
+
+}
 
 class BlinkPlugin {
+  static final instance = new BlinkPlugin();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "Plugin___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
   static description_Getter(mthis) native "Plugin_description_Getter";
+  description_Getter_(mthis) => description_Getter(mthis);
 
   static filename_Getter(mthis) native "Plugin_filename_Getter";
+  filename_Getter_(mthis) => filename_Getter(mthis);
+
+  static item_Callback_0(mthis) native "Plugin_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "Plugin_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "Plugin_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Plugin_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static length_Getter(mthis) native "Plugin_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static name_Getter(mthis) native "Plugin_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "Plugin___getter___Callback";
+  static namedItem_Callback_0(mthis) native "Plugin_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
 
-  static item_Callback_1(mthis, index) native "Plugin_item_Callback";
+  static namedItem_Callback_1(mthis, __arg_0) native "Plugin_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
 
-  static namedItem_Callback_1(mthis, name) native "Plugin_namedItem_Callback";
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "Plugin_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Plugin_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkPluginArray {
+  static final instance = new BlinkPluginArray();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "PluginArray___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "PluginArray_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "PluginArray_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "PluginArray_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "PluginArray___getter___Callback";
+  static namedItem_Callback_0(mthis) native "PluginArray_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
 
-  static item_Callback_1(mthis, index) native "PluginArray_item_Callback";
+  static namedItem_Callback_1(mthis, __arg_0) native "PluginArray_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
 
-  static namedItem_Callback_1(mthis, name) native "PluginArray_namedItem_Callback";
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static refresh_Callback_1(mthis, reload) native "PluginArray_refresh_Callback";
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static refresh_Callback_0(mthis) native "PluginArray_refresh_Callback";
+  refresh_Callback_0_(mthis) => refresh_Callback_0(mthis);
+
+  static refresh_Callback_1(mthis, __arg_0) native "PluginArray_refresh_Callback";
+  refresh_Callback_1_(mthis, __arg_0) => refresh_Callback_1(mthis, __arg_0);
+
+  static refresh_Callback_2(mthis, __arg_0, __arg_1) native "PluginArray_refresh_Callback";
+  refresh_Callback_2_(mthis, __arg_0, __arg_1) => refresh_Callback_2(mthis, __arg_0, __arg_1);
+
+  static refresh_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PluginArray_refresh_Callback";
+  refresh_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => refresh_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkPopStateEvent {
-  static constructorCallback(type, options) native "PopStateEvent_constructorCallback";
+class BlinkPopStateEvent extends BlinkEvent {
+  static final instance = new BlinkPopStateEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "PopStateEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static state_Getter(mthis) native "PopStateEvent_state_Getter";
+  state_Getter_(mthis) => state_Getter(mthis);
+
 }
 
 class BlinkPositionError {
+  static final instance = new BlinkPositionError();
+
   static code_Getter(mthis) native "PositionError_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
 
   static message_Getter(mthis) native "PositionError_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
+
 }
 
-class BlinkProcessingInstruction {
+class BlinkProcessingInstruction extends BlinkCharacterData {
+  static final instance = new BlinkProcessingInstruction();
+
   static sheet_Getter(mthis) native "ProcessingInstruction_sheet_Getter";
+  sheet_Getter_(mthis) => sheet_Getter(mthis);
 
   static target_Getter(mthis) native "ProcessingInstruction_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
 }
 
-class BlinkProgressEvent {
-  static constructorCallback(type, options) native "ProgressEvent_constructorCallback";
+class BlinkProgressEvent extends BlinkEvent {
+  static final instance = new BlinkProgressEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "ProgressEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static lengthComputable_Getter(mthis) native "ProgressEvent_lengthComputable_Getter";
+  lengthComputable_Getter_(mthis) => lengthComputable_Getter(mthis);
 
   static loaded_Getter(mthis) native "ProgressEvent_loaded_Getter";
+  loaded_Getter_(mthis) => loaded_Getter(mthis);
 
   static total_Getter(mthis) native "ProgressEvent_total_Getter";
+  total_Getter_(mthis) => total_Getter(mthis);
+
 }
 
-class BlinkPushEvent {
-  static constructorCallback(type, options) native "PushEvent_constructorCallback";
+class BlinkPushEvent extends BlinkEvent {
+  static final instance = new BlinkPushEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "PushEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static data_Getter(mthis) native "PushEvent_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
+
 }
 
 class BlinkPushManager {
-  static register_Callback_1(mthis, senderId) native "PushManager_register_Callback";
+  static final instance = new BlinkPushManager();
+
+  static register_Callback_0(mthis) native "PushManager_register_Callback";
+  register_Callback_0_(mthis) => register_Callback_0(mthis);
+
+  static register_Callback_1(mthis, __arg_0) native "PushManager_register_Callback";
+  register_Callback_1_(mthis, __arg_0) => register_Callback_1(mthis, __arg_0);
+
+  static register_Callback_2(mthis, __arg_0, __arg_1) native "PushManager_register_Callback";
+  register_Callback_2_(mthis, __arg_0, __arg_1) => register_Callback_2(mthis, __arg_0, __arg_1);
+
+  static register_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "PushManager_register_Callback";
+  register_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => register_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkPushRegistration {
+  static final instance = new BlinkPushRegistration();
+
   static pushEndpoint_Getter(mthis) native "PushRegistration_pushEndpoint_Getter";
+  pushEndpoint_Getter_(mthis) => pushEndpoint_Getter(mthis);
 
   static pushRegistrationId_Getter(mthis) native "PushRegistration_pushRegistrationId_Getter";
+  pushRegistrationId_Getter_(mthis) => pushRegistrationId_Getter(mthis);
+
 }
 
-class BlinkRGBColor {}
+class BlinkRGBColor {
+  static final instance = new BlinkRGBColor();
 
-class BlinkRTCDTMFSender {
+  static blue_Getter(mthis) native "RGBColor_blue_Getter";
+  blue_Getter_(mthis) => blue_Getter(mthis);
+
+  static green_Getter(mthis) native "RGBColor_green_Getter";
+  green_Getter_(mthis) => green_Getter(mthis);
+
+  static red_Getter(mthis) native "RGBColor_red_Getter";
+  red_Getter_(mthis) => red_Getter(mthis);
+
+}
+
+class BlinkRTCDTMFSender extends BlinkEventTarget {
+  static final instance = new BlinkRTCDTMFSender();
+
   static canInsertDTMF_Getter(mthis) native "RTCDTMFSender_canInsertDTMF_Getter";
+  canInsertDTMF_Getter_(mthis) => canInsertDTMF_Getter(mthis);
 
   static duration_Getter(mthis) native "RTCDTMFSender_duration_Getter";
+  duration_Getter_(mthis) => duration_Getter(mthis);
+
+  static insertDTMF_Callback_0(mthis) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_0_(mthis) => insertDTMF_Callback_0(mthis);
+
+  static insertDTMF_Callback_1(mthis, __arg_0) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_1_(mthis, __arg_0) => insertDTMF_Callback_1(mthis, __arg_0);
+
+  static insertDTMF_Callback_2(mthis, __arg_0, __arg_1) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_2_(mthis, __arg_0, __arg_1) => insertDTMF_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertDTMF_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertDTMF_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertDTMF_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertDTMF_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static insertDTMF_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCDTMFSender_insertDTMF_Callback";
+  insertDTMF_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => insertDTMF_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static interToneGap_Getter(mthis) native "RTCDTMFSender_interToneGap_Getter";
+  interToneGap_Getter_(mthis) => interToneGap_Getter(mthis);
+
+  static ontonechange_Getter(mthis) native "RTCDTMFSender_ontonechange_Getter";
+  ontonechange_Getter_(mthis) => ontonechange_Getter(mthis);
+
+  static ontonechange_Setter(mthis, __arg_0) native "RTCDTMFSender_ontonechange_Setter";
+  ontonechange_Setter_(mthis, __arg_0) => ontonechange_Setter(mthis, __arg_0);
 
   static toneBuffer_Getter(mthis) native "RTCDTMFSender_toneBuffer_Getter";
+  toneBuffer_Getter_(mthis) => toneBuffer_Getter(mthis);
 
   static track_Getter(mthis) native "RTCDTMFSender_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
 
-  static insertDTMF_Callback_3(mthis, tones, duration, interToneGap) native "RTCDTMFSender_insertDTMF_Callback";
-
-  static insertDTMF_Callback_2(mthis, tones, duration) native "RTCDTMFSender_insertDTMF_Callback";
-
-  static insertDTMF_Callback_1(mthis, tones) native "RTCDTMFSender_insertDTMF_Callback";
 }
 
-class BlinkRTCDTMFToneChangeEvent {
-  static constructorCallback(type, options) native "RTCDTMFToneChangeEvent_constructorCallback";
+class BlinkRTCDTMFToneChangeEvent extends BlinkEvent {
+  static final instance = new BlinkRTCDTMFToneChangeEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "RTCDTMFToneChangeEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static tone_Getter(mthis) native "RTCDTMFToneChangeEvent_tone_Getter";
+  tone_Getter_(mthis) => tone_Getter(mthis);
+
 }
 
-class BlinkRTCDataChannel {
-  static binaryType_Getter(mthis) native "RTCDataChannel_binaryType_Getter";
+class BlinkRTCDataChannel extends BlinkEventTarget {
+  static final instance = new BlinkRTCDataChannel();
 
-  static binaryType_Setter(mthis, value) native "RTCDataChannel_binaryType_Setter";
+  static binaryType_Getter(mthis) native "RTCDataChannel_binaryType_Getter";
+  binaryType_Getter_(mthis) => binaryType_Getter(mthis);
+
+  static binaryType_Setter(mthis, __arg_0) native "RTCDataChannel_binaryType_Setter";
+  binaryType_Setter_(mthis, __arg_0) => binaryType_Setter(mthis, __arg_0);
 
   static bufferedAmount_Getter(mthis) native "RTCDataChannel_bufferedAmount_Getter";
+  bufferedAmount_Getter_(mthis) => bufferedAmount_Getter(mthis);
+
+  static close_Callback_0(mthis) native "RTCDataChannel_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "RTCDataChannel_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "RTCDataChannel_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
 
   static id_Getter(mthis) native "RTCDataChannel_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static label_Getter(mthis) native "RTCDataChannel_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
   static maxRetransmitTime_Getter(mthis) native "RTCDataChannel_maxRetransmitTime_Getter";
+  maxRetransmitTime_Getter_(mthis) => maxRetransmitTime_Getter(mthis);
 
   static maxRetransmits_Getter(mthis) native "RTCDataChannel_maxRetransmits_Getter";
+  maxRetransmits_Getter_(mthis) => maxRetransmits_Getter(mthis);
 
   static negotiated_Getter(mthis) native "RTCDataChannel_negotiated_Getter";
+  negotiated_Getter_(mthis) => negotiated_Getter(mthis);
+
+  static onclose_Getter(mthis) native "RTCDataChannel_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "RTCDataChannel_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "RTCDataChannel_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "RTCDataChannel_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "RTCDataChannel_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "RTCDataChannel_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onopen_Getter(mthis) native "RTCDataChannel_onopen_Getter";
+  onopen_Getter_(mthis) => onopen_Getter(mthis);
+
+  static onopen_Setter(mthis, __arg_0) native "RTCDataChannel_onopen_Setter";
+  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
 
   static ordered_Getter(mthis) native "RTCDataChannel_ordered_Getter";
+  ordered_Getter_(mthis) => ordered_Getter(mthis);
 
   static protocol_Getter(mthis) native "RTCDataChannel_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
   static readyState_Getter(mthis) native "RTCDataChannel_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static reliable_Getter(mthis) native "RTCDataChannel_reliable_Getter";
+  reliable_Getter_(mthis) => reliable_Getter(mthis);
 
-  static close_Callback(mthis) native "RTCDataChannel_close_Callback";
+  static send_Callback_0(mthis) native "RTCDataChannel_send_Callback";
+  send_Callback_0_(mthis) => send_Callback_0(mthis);
 
-  static send_Callback_1(mthis, data) native "RTCDataChannel_send_Callback";
+  static send_Callback_1(mthis, __arg_0) native "RTCDataChannel_send_Callback";
+  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
+
+  static send_Callback_2(mthis, __arg_0, __arg_1) native "RTCDataChannel_send_Callback";
+  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
+
+  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCDataChannel_send_Callback";
+  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkRTCDataChannelEvent {
+class BlinkRTCDataChannelEvent extends BlinkEvent {
+  static final instance = new BlinkRTCDataChannelEvent();
+
   static channel_Getter(mthis) native "RTCDataChannelEvent_channel_Getter";
+  channel_Getter_(mthis) => channel_Getter(mthis);
+
 }
 
 class BlinkRTCIceCandidate {
-  static constructorCallback_1(dictionary) native "RTCIceCandidate_constructorCallback";
+  static final instance = new BlinkRTCIceCandidate();
 
   static candidate_Getter(mthis) native "RTCIceCandidate_candidate_Getter";
+  candidate_Getter_(mthis) => candidate_Getter(mthis);
 
-  static candidate_Setter(mthis, value) native "RTCIceCandidate_candidate_Setter";
+  static candidate_Setter(mthis, __arg_0) native "RTCIceCandidate_candidate_Setter";
+  candidate_Setter_(mthis, __arg_0) => candidate_Setter(mthis, __arg_0);
+
+  static constructorCallback_0() native "RTCIceCandidate_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "RTCIceCandidate_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "RTCIceCandidate_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCIceCandidate_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
   static sdpMLineIndex_Getter(mthis) native "RTCIceCandidate_sdpMLineIndex_Getter";
+  sdpMLineIndex_Getter_(mthis) => sdpMLineIndex_Getter(mthis);
 
-  static sdpMLineIndex_Setter(mthis, value) native "RTCIceCandidate_sdpMLineIndex_Setter";
+  static sdpMLineIndex_Setter(mthis, __arg_0) native "RTCIceCandidate_sdpMLineIndex_Setter";
+  sdpMLineIndex_Setter_(mthis, __arg_0) => sdpMLineIndex_Setter(mthis, __arg_0);
 
   static sdpMid_Getter(mthis) native "RTCIceCandidate_sdpMid_Getter";
+  sdpMid_Getter_(mthis) => sdpMid_Getter(mthis);
 
-  static sdpMid_Setter(mthis, value) native "RTCIceCandidate_sdpMid_Setter";
+  static sdpMid_Setter(mthis, __arg_0) native "RTCIceCandidate_sdpMid_Setter";
+  sdpMid_Setter_(mthis, __arg_0) => sdpMid_Setter(mthis, __arg_0);
+
 }
 
-class BlinkRTCIceCandidateEvent {
+class BlinkRTCIceCandidateEvent extends BlinkEvent {
+  static final instance = new BlinkRTCIceCandidateEvent();
+
   static candidate_Getter(mthis) native "RTCIceCandidateEvent_candidate_Getter";
+  candidate_Getter_(mthis) => candidate_Getter(mthis);
+
 }
 
-class BlinkRTCPeerConnection {
-  static constructorCallback_2(rtcConfiguration, mediaConstraints) native "RTCPeerConnection_constructorCallback";
+class BlinkRTCPeerConnection extends BlinkEventTarget {
+  static final instance = new BlinkRTCPeerConnection();
 
-  static constructorCallback_1(rtcConfiguration) native "RTCPeerConnection_constructorCallback";
+  static addIceCandidate_Callback_1(mthis, __arg_0) native "RTCPeerConnection_addIceCandidate_Callback";
+  addIceCandidate_Callback_1_(mthis, __arg_0) => addIceCandidate_Callback_1(mthis, __arg_0);
+
+  static addIceCandidate_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_addIceCandidate_Callback";
+  addIceCandidate_Callback_2_(mthis, __arg_0, __arg_1) => addIceCandidate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addIceCandidate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_addIceCandidate_Callback";
+  addIceCandidate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addIceCandidate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addIceCandidate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_addIceCandidate_Callback";
+  addIceCandidate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addIceCandidate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static addIceCandidate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_addIceCandidate_Callback";
+  addIceCandidate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => addIceCandidate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static addStream_Callback_0(mthis) native "RTCPeerConnection_addStream_Callback";
+  addStream_Callback_0_(mthis) => addStream_Callback_0(mthis);
+
+  static addStream_Callback_1(mthis, __arg_0) native "RTCPeerConnection_addStream_Callback";
+  addStream_Callback_1_(mthis, __arg_0) => addStream_Callback_1(mthis, __arg_0);
+
+  static addStream_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_addStream_Callback";
+  addStream_Callback_2_(mthis, __arg_0, __arg_1) => addStream_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_addStream_Callback";
+  addStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_addStream_Callback";
+  addStream_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static close_Callback_0(mthis) native "RTCPeerConnection_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "RTCPeerConnection_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "RTCPeerConnection_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "RTCPeerConnection_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "RTCPeerConnection_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCPeerConnection_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createAnswer_Callback_0(mthis) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_0_(mthis) => createAnswer_Callback_0(mthis);
+
+  static createAnswer_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_1_(mthis, __arg_0) => createAnswer_Callback_1(mthis, __arg_0);
+
+  static createAnswer_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_2_(mthis, __arg_0, __arg_1) => createAnswer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createAnswer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createAnswer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createAnswer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createAnswer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createAnswer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_createAnswer_Callback";
+  createAnswer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createAnswer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createDTMFSender_Callback_0(mthis) native "RTCPeerConnection_createDTMFSender_Callback";
+  createDTMFSender_Callback_0_(mthis) => createDTMFSender_Callback_0(mthis);
+
+  static createDTMFSender_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createDTMFSender_Callback";
+  createDTMFSender_Callback_1_(mthis, __arg_0) => createDTMFSender_Callback_1(mthis, __arg_0);
+
+  static createDTMFSender_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createDTMFSender_Callback";
+  createDTMFSender_Callback_2_(mthis, __arg_0, __arg_1) => createDTMFSender_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createDTMFSender_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createDTMFSender_Callback";
+  createDTMFSender_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDTMFSender_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDataChannel_Callback_0(mthis) native "RTCPeerConnection_createDataChannel_Callback";
+  createDataChannel_Callback_0_(mthis) => createDataChannel_Callback_0(mthis);
+
+  static createDataChannel_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createDataChannel_Callback";
+  createDataChannel_Callback_1_(mthis, __arg_0) => createDataChannel_Callback_1(mthis, __arg_0);
+
+  static createDataChannel_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createDataChannel_Callback";
+  createDataChannel_Callback_2_(mthis, __arg_0, __arg_1) => createDataChannel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createDataChannel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createDataChannel_Callback";
+  createDataChannel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createDataChannel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createDataChannel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createDataChannel_Callback";
+  createDataChannel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createDataChannel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createOffer_Callback_0(mthis) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_0_(mthis) => createOffer_Callback_0(mthis);
+
+  static createOffer_Callback_1(mthis, __arg_0) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_1_(mthis, __arg_0) => createOffer_Callback_1(mthis, __arg_0);
+
+  static createOffer_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_2_(mthis, __arg_0, __arg_1) => createOffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createOffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createOffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createOffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createOffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createOffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_createOffer_Callback";
+  createOffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createOffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getLocalStreams_Callback_0(mthis) native "RTCPeerConnection_getLocalStreams_Callback";
+  getLocalStreams_Callback_0_(mthis) => getLocalStreams_Callback_0(mthis);
+
+  static getLocalStreams_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getLocalStreams_Callback";
+  getLocalStreams_Callback_1_(mthis, __arg_0) => getLocalStreams_Callback_1(mthis, __arg_0);
+
+  static getLocalStreams_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getLocalStreams_Callback";
+  getLocalStreams_Callback_2_(mthis, __arg_0, __arg_1) => getLocalStreams_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRemoteStreams_Callback_0(mthis) native "RTCPeerConnection_getRemoteStreams_Callback";
+  getRemoteStreams_Callback_0_(mthis) => getRemoteStreams_Callback_0(mthis);
+
+  static getRemoteStreams_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getRemoteStreams_Callback";
+  getRemoteStreams_Callback_1_(mthis, __arg_0) => getRemoteStreams_Callback_1(mthis, __arg_0);
+
+  static getRemoteStreams_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getRemoteStreams_Callback";
+  getRemoteStreams_Callback_2_(mthis, __arg_0, __arg_1) => getRemoteStreams_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStats_Callback_0(mthis) native "RTCPeerConnection_getStats_Callback";
+  getStats_Callback_0_(mthis) => getStats_Callback_0(mthis);
+
+  static getStats_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getStats_Callback";
+  getStats_Callback_1_(mthis, __arg_0) => getStats_Callback_1(mthis, __arg_0);
+
+  static getStats_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getStats_Callback";
+  getStats_Callback_2_(mthis, __arg_0, __arg_1) => getStats_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStats_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_getStats_Callback";
+  getStats_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStats_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getStats_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_getStats_Callback";
+  getStats_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getStats_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getStreamById_Callback_0(mthis) native "RTCPeerConnection_getStreamById_Callback";
+  getStreamById_Callback_0_(mthis) => getStreamById_Callback_0(mthis);
+
+  static getStreamById_Callback_1(mthis, __arg_0) native "RTCPeerConnection_getStreamById_Callback";
+  getStreamById_Callback_1_(mthis, __arg_0) => getStreamById_Callback_1(mthis, __arg_0);
+
+  static getStreamById_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_getStreamById_Callback";
+  getStreamById_Callback_2_(mthis, __arg_0, __arg_1) => getStreamById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStreamById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_getStreamById_Callback";
+  getStreamById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStreamById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static iceConnectionState_Getter(mthis) native "RTCPeerConnection_iceConnectionState_Getter";
+  iceConnectionState_Getter_(mthis) => iceConnectionState_Getter(mthis);
 
   static iceGatheringState_Getter(mthis) native "RTCPeerConnection_iceGatheringState_Getter";
+  iceGatheringState_Getter_(mthis) => iceGatheringState_Getter(mthis);
 
   static localDescription_Getter(mthis) native "RTCPeerConnection_localDescription_Getter";
+  localDescription_Getter_(mthis) => localDescription_Getter(mthis);
+
+  static onaddstream_Getter(mthis) native "RTCPeerConnection_onaddstream_Getter";
+  onaddstream_Getter_(mthis) => onaddstream_Getter(mthis);
+
+  static onaddstream_Setter(mthis, __arg_0) native "RTCPeerConnection_onaddstream_Setter";
+  onaddstream_Setter_(mthis, __arg_0) => onaddstream_Setter(mthis, __arg_0);
+
+  static ondatachannel_Getter(mthis) native "RTCPeerConnection_ondatachannel_Getter";
+  ondatachannel_Getter_(mthis) => ondatachannel_Getter(mthis);
+
+  static ondatachannel_Setter(mthis, __arg_0) native "RTCPeerConnection_ondatachannel_Setter";
+  ondatachannel_Setter_(mthis, __arg_0) => ondatachannel_Setter(mthis, __arg_0);
+
+  static onicecandidate_Getter(mthis) native "RTCPeerConnection_onicecandidate_Getter";
+  onicecandidate_Getter_(mthis) => onicecandidate_Getter(mthis);
+
+  static onicecandidate_Setter(mthis, __arg_0) native "RTCPeerConnection_onicecandidate_Setter";
+  onicecandidate_Setter_(mthis, __arg_0) => onicecandidate_Setter(mthis, __arg_0);
+
+  static oniceconnectionstatechange_Getter(mthis) native "RTCPeerConnection_oniceconnectionstatechange_Getter";
+  oniceconnectionstatechange_Getter_(mthis) => oniceconnectionstatechange_Getter(mthis);
+
+  static oniceconnectionstatechange_Setter(mthis, __arg_0) native "RTCPeerConnection_oniceconnectionstatechange_Setter";
+  oniceconnectionstatechange_Setter_(mthis, __arg_0) => oniceconnectionstatechange_Setter(mthis, __arg_0);
+
+  static onnegotiationneeded_Getter(mthis) native "RTCPeerConnection_onnegotiationneeded_Getter";
+  onnegotiationneeded_Getter_(mthis) => onnegotiationneeded_Getter(mthis);
+
+  static onnegotiationneeded_Setter(mthis, __arg_0) native "RTCPeerConnection_onnegotiationneeded_Setter";
+  onnegotiationneeded_Setter_(mthis, __arg_0) => onnegotiationneeded_Setter(mthis, __arg_0);
+
+  static onremovestream_Getter(mthis) native "RTCPeerConnection_onremovestream_Getter";
+  onremovestream_Getter_(mthis) => onremovestream_Getter(mthis);
+
+  static onremovestream_Setter(mthis, __arg_0) native "RTCPeerConnection_onremovestream_Setter";
+  onremovestream_Setter_(mthis, __arg_0) => onremovestream_Setter(mthis, __arg_0);
+
+  static onsignalingstatechange_Getter(mthis) native "RTCPeerConnection_onsignalingstatechange_Getter";
+  onsignalingstatechange_Getter_(mthis) => onsignalingstatechange_Getter(mthis);
+
+  static onsignalingstatechange_Setter(mthis, __arg_0) native "RTCPeerConnection_onsignalingstatechange_Setter";
+  onsignalingstatechange_Setter_(mthis, __arg_0) => onsignalingstatechange_Setter(mthis, __arg_0);
 
   static remoteDescription_Getter(mthis) native "RTCPeerConnection_remoteDescription_Getter";
+  remoteDescription_Getter_(mthis) => remoteDescription_Getter(mthis);
+
+  static removeStream_Callback_0(mthis) native "RTCPeerConnection_removeStream_Callback";
+  removeStream_Callback_0_(mthis) => removeStream_Callback_0(mthis);
+
+  static removeStream_Callback_1(mthis, __arg_0) native "RTCPeerConnection_removeStream_Callback";
+  removeStream_Callback_1_(mthis, __arg_0) => removeStream_Callback_1(mthis, __arg_0);
+
+  static removeStream_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_removeStream_Callback";
+  removeStream_Callback_2_(mthis, __arg_0, __arg_1) => removeStream_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_removeStream_Callback";
+  removeStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setLocalDescription_Callback_0(mthis) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_0_(mthis) => setLocalDescription_Callback_0(mthis);
+
+  static setLocalDescription_Callback_1(mthis, __arg_0) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_1_(mthis, __arg_0) => setLocalDescription_Callback_1(mthis, __arg_0);
+
+  static setLocalDescription_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_2_(mthis, __arg_0, __arg_1) => setLocalDescription_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setLocalDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setLocalDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setLocalDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setLocalDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setLocalDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_setLocalDescription_Callback";
+  setLocalDescription_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setLocalDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setRemoteDescription_Callback_0(mthis) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_0_(mthis) => setRemoteDescription_Callback_0(mthis);
+
+  static setRemoteDescription_Callback_1(mthis, __arg_0) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_1_(mthis, __arg_0) => setRemoteDescription_Callback_1(mthis, __arg_0);
+
+  static setRemoteDescription_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_2_(mthis, __arg_0, __arg_1) => setRemoteDescription_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setRemoteDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRemoteDescription_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRemoteDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRemoteDescription_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setRemoteDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "RTCPeerConnection_setRemoteDescription_Callback";
+  setRemoteDescription_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRemoteDescription_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static signalingState_Getter(mthis) native "RTCPeerConnection_signalingState_Getter";
+  signalingState_Getter_(mthis) => signalingState_Getter(mthis);
 
-  static addIceCandidate_Callback_3(mthis, candidate, successCallback, failureCallback) native "RTCPeerConnection_addIceCandidate_Callback";
+  static updateIce_Callback_0(mthis) native "RTCPeerConnection_updateIce_Callback";
+  updateIce_Callback_0_(mthis) => updateIce_Callback_0(mthis);
 
-  static addStream_Callback_2(mthis, stream, mediaConstraints) native "RTCPeerConnection_addStream_Callback";
+  static updateIce_Callback_1(mthis, __arg_0) native "RTCPeerConnection_updateIce_Callback";
+  updateIce_Callback_1_(mthis, __arg_0) => updateIce_Callback_1(mthis, __arg_0);
 
-  static addStream_Callback_1(mthis, stream) native "RTCPeerConnection_addStream_Callback";
+  static updateIce_Callback_2(mthis, __arg_0, __arg_1) native "RTCPeerConnection_updateIce_Callback";
+  updateIce_Callback_2_(mthis, __arg_0, __arg_1) => updateIce_Callback_2(mthis, __arg_0, __arg_1);
 
-  static close_Callback(mthis) native "RTCPeerConnection_close_Callback";
+  static updateIce_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCPeerConnection_updateIce_Callback";
+  updateIce_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => updateIce_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static createAnswer_Callback_3(mthis, successCallback, failureCallback, mediaConstraints) native "RTCPeerConnection_createAnswer_Callback";
+  static updateIce_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "RTCPeerConnection_updateIce_Callback";
+  updateIce_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => updateIce_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static createAnswer_Callback_2(mthis, successCallback, failureCallback) native "RTCPeerConnection_createAnswer_Callback";
-
-  static createDTMFSender_Callback_1(mthis, track) native "RTCPeerConnection_createDTMFSender_Callback";
-
-  static createDataChannel_Callback_2(mthis, label, options) native "RTCPeerConnection_createDataChannel_Callback";
-
-  static createDataChannel_Callback_1(mthis, label) native "RTCPeerConnection_createDataChannel_Callback";
-
-  static createOffer_Callback_3(mthis, successCallback, failureCallback, rtcOfferOptions) native "RTCPeerConnection_createOffer_Callback";
-
-  static createOffer_Callback_2(mthis, successCallback, failureCallback) native "RTCPeerConnection_createOffer_Callback";
-
-  static getLocalStreams_Callback(mthis) native "RTCPeerConnection_getLocalStreams_Callback";
-
-  static getRemoteStreams_Callback(mthis) native "RTCPeerConnection_getRemoteStreams_Callback";
-
-  static getStats_Callback_2(mthis, successCallback, selector) native "RTCPeerConnection_getStats_Callback";
-
-  static getStreamById_Callback_1(mthis, streamId) native "RTCPeerConnection_getStreamById_Callback";
-
-  static removeStream_Callback_1(mthis, stream) native "RTCPeerConnection_removeStream_Callback";
-
-  static setLocalDescription_Callback_3(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setLocalDescription_Callback";
-
-  static setRemoteDescription_Callback_3(mthis, description, successCallback, failureCallback) native "RTCPeerConnection_setRemoteDescription_Callback";
-
-  static updateIce_Callback_2(mthis, configuration, mediaConstraints) native "RTCPeerConnection_updateIce_Callback";
-
-  static updateIce_Callback_1(mthis, configuration) native "RTCPeerConnection_updateIce_Callback";
-
-  static updateIce_Callback(mthis) native "RTCPeerConnection_updateIce_Callback";
 }
 
 class BlinkRTCSessionDescription {
-  static constructorCallback_1(descriptionInitDict) native "RTCSessionDescription_constructorCallback";
+  static final instance = new BlinkRTCSessionDescription();
 
-  static constructorCallback() native "RTCSessionDescription_constructorCallback";
+  static constructorCallback_0() native "RTCSessionDescription_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "RTCSessionDescription_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "RTCSessionDescription_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "RTCSessionDescription_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
   static sdp_Getter(mthis) native "RTCSessionDescription_sdp_Getter";
+  sdp_Getter_(mthis) => sdp_Getter(mthis);
 
-  static sdp_Setter(mthis, value) native "RTCSessionDescription_sdp_Setter";
+  static sdp_Setter(mthis, __arg_0) native "RTCSessionDescription_sdp_Setter";
+  sdp_Setter_(mthis, __arg_0) => sdp_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "RTCSessionDescription_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "RTCSessionDescription_type_Setter";
+  static type_Setter(mthis, __arg_0) native "RTCSessionDescription_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
 class BlinkRTCStatsReport {
+  static final instance = new BlinkRTCStatsReport();
+
   static id_Getter(mthis) native "RTCStatsReport_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static local_Getter(mthis) native "RTCStatsReport_local_Getter";
+  local_Getter_(mthis) => local_Getter(mthis);
+
+  static names_Callback_0(mthis) native "RTCStatsReport_names_Callback";
+  names_Callback_0_(mthis) => names_Callback_0(mthis);
+
+  static names_Callback_1(mthis, __arg_0) native "RTCStatsReport_names_Callback";
+  names_Callback_1_(mthis, __arg_0) => names_Callback_1(mthis, __arg_0);
+
+  static names_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsReport_names_Callback";
+  names_Callback_2_(mthis, __arg_0, __arg_1) => names_Callback_2(mthis, __arg_0, __arg_1);
 
   static remote_Getter(mthis) native "RTCStatsReport_remote_Getter";
+  remote_Getter_(mthis) => remote_Getter(mthis);
+
+  static stat_Callback_0(mthis) native "RTCStatsReport_stat_Callback";
+  stat_Callback_0_(mthis) => stat_Callback_0(mthis);
+
+  static stat_Callback_1(mthis, __arg_0) native "RTCStatsReport_stat_Callback";
+  stat_Callback_1_(mthis, __arg_0) => stat_Callback_1(mthis, __arg_0);
+
+  static stat_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsReport_stat_Callback";
+  stat_Callback_2_(mthis, __arg_0, __arg_1) => stat_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stat_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCStatsReport_stat_Callback";
+  stat_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stat_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static timestamp_Getter(mthis) native "RTCStatsReport_timestamp_Getter";
+  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
 
   static type_Getter(mthis) native "RTCStatsReport_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static names_Callback(mthis) native "RTCStatsReport_names_Callback";
-
-  static stat_Callback_1(mthis, name) native "RTCStatsReport_stat_Callback";
 }
 
 class BlinkRTCStatsResponse {
-  static $__getter___Callback_1(mthis, name) native "RTCStatsResponse___getter___Callback";
+  static final instance = new BlinkRTCStatsResponse();
 
-  static namedItem_Callback_1(mthis, name) native "RTCStatsResponse_namedItem_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "RTCStatsResponse___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
 
-  static result_Callback(mthis) native "RTCStatsResponse_result_Callback";
+  static namedItem_Callback_0(mthis) native "RTCStatsResponse_namedItem_Callback";
+  namedItem_Callback_0_(mthis) => namedItem_Callback_0(mthis);
+
+  static namedItem_Callback_1(mthis, __arg_0) native "RTCStatsResponse_namedItem_Callback";
+  namedItem_Callback_1_(mthis, __arg_0) => namedItem_Callback_1(mthis, __arg_0);
+
+  static namedItem_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsResponse_namedItem_Callback";
+  namedItem_Callback_2_(mthis, __arg_0, __arg_1) => namedItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "RTCStatsResponse_namedItem_Callback";
+  namedItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => namedItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static result_Callback_0(mthis) native "RTCStatsResponse_result_Callback";
+  result_Callback_0_(mthis) => result_Callback_0(mthis);
+
+  static result_Callback_1(mthis, __arg_0) native "RTCStatsResponse_result_Callback";
+  result_Callback_1_(mthis, __arg_0) => result_Callback_1(mthis, __arg_0);
+
+  static result_Callback_2(mthis, __arg_0, __arg_1) native "RTCStatsResponse_result_Callback";
+  result_Callback_2_(mthis, __arg_0, __arg_1) => result_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkRadioNodeList {}
+class BlinkRadioNodeList extends BlinkNodeList {
+  static final instance = new BlinkRadioNodeList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "RadioNodeList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static value_Getter(mthis) native "RadioNodeList_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
+  static value_Setter(mthis, __arg_0) native "RadioNodeList_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
+}
 
 class BlinkRange {
+  static final instance = new BlinkRange();
+
+  static cloneContents_Callback_0(mthis) native "Range_cloneContents_Callback";
+  cloneContents_Callback_0_(mthis) => cloneContents_Callback_0(mthis);
+
+  static cloneContents_Callback_1(mthis, __arg_0) native "Range_cloneContents_Callback";
+  cloneContents_Callback_1_(mthis, __arg_0) => cloneContents_Callback_1(mthis, __arg_0);
+
+  static cloneContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_cloneContents_Callback";
+  cloneContents_Callback_2_(mthis, __arg_0, __arg_1) => cloneContents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cloneRange_Callback_0(mthis) native "Range_cloneRange_Callback";
+  cloneRange_Callback_0_(mthis) => cloneRange_Callback_0(mthis);
+
+  static cloneRange_Callback_1(mthis, __arg_0) native "Range_cloneRange_Callback";
+  cloneRange_Callback_1_(mthis, __arg_0) => cloneRange_Callback_1(mthis, __arg_0);
+
+  static cloneRange_Callback_2(mthis, __arg_0, __arg_1) native "Range_cloneRange_Callback";
+  cloneRange_Callback_2_(mthis, __arg_0, __arg_1) => cloneRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static collapse_Callback_0(mthis) native "Range_collapse_Callback";
+  collapse_Callback_0_(mthis) => collapse_Callback_0(mthis);
+
+  static collapse_Callback_1(mthis, __arg_0) native "Range_collapse_Callback";
+  collapse_Callback_1_(mthis, __arg_0) => collapse_Callback_1(mthis, __arg_0);
+
+  static collapse_Callback_2(mthis, __arg_0, __arg_1) native "Range_collapse_Callback";
+  collapse_Callback_2_(mthis, __arg_0, __arg_1) => collapse_Callback_2(mthis, __arg_0, __arg_1);
+
+  static collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_collapse_Callback";
+  collapse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static collapsed_Getter(mthis) native "Range_collapsed_Getter";
+  collapsed_Getter_(mthis) => collapsed_Getter(mthis);
 
   static commonAncestorContainer_Getter(mthis) native "Range_commonAncestorContainer_Getter";
+  commonAncestorContainer_Getter_(mthis) => commonAncestorContainer_Getter(mthis);
+
+  static compareBoundaryPoints_Callback_0(mthis) native "Range_compareBoundaryPoints_Callback";
+  compareBoundaryPoints_Callback_0_(mthis) => compareBoundaryPoints_Callback_0(mthis);
+
+  static compareBoundaryPoints_Callback_1(mthis, __arg_0) native "Range_compareBoundaryPoints_Callback";
+  compareBoundaryPoints_Callback_1_(mthis, __arg_0) => compareBoundaryPoints_Callback_1(mthis, __arg_0);
+
+  static compareBoundaryPoints_Callback_2(mthis, __arg_0, __arg_1) native "Range_compareBoundaryPoints_Callback";
+  compareBoundaryPoints_Callback_2_(mthis, __arg_0, __arg_1) => compareBoundaryPoints_Callback_2(mthis, __arg_0, __arg_1);
+
+  static compareBoundaryPoints_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_compareBoundaryPoints_Callback";
+  compareBoundaryPoints_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compareBoundaryPoints_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static compareBoundaryPoints_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_compareBoundaryPoints_Callback";
+  compareBoundaryPoints_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => compareBoundaryPoints_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static compareNode_Callback_0(mthis) native "Range_compareNode_Callback";
+  compareNode_Callback_0_(mthis) => compareNode_Callback_0(mthis);
+
+  static compareNode_Callback_1(mthis, __arg_0) native "Range_compareNode_Callback";
+  compareNode_Callback_1_(mthis, __arg_0) => compareNode_Callback_1(mthis, __arg_0);
+
+  static compareNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_compareNode_Callback";
+  compareNode_Callback_2_(mthis, __arg_0, __arg_1) => compareNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static compareNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_compareNode_Callback";
+  compareNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compareNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static comparePoint_Callback_0(mthis) native "Range_comparePoint_Callback";
+  comparePoint_Callback_0_(mthis) => comparePoint_Callback_0(mthis);
+
+  static comparePoint_Callback_1(mthis, __arg_0) native "Range_comparePoint_Callback";
+  comparePoint_Callback_1_(mthis, __arg_0) => comparePoint_Callback_1(mthis, __arg_0);
+
+  static comparePoint_Callback_2(mthis, __arg_0, __arg_1) native "Range_comparePoint_Callback";
+  comparePoint_Callback_2_(mthis, __arg_0, __arg_1) => comparePoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static comparePoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_comparePoint_Callback";
+  comparePoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => comparePoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static comparePoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_comparePoint_Callback";
+  comparePoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => comparePoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_0() native "Range_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Range_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Range_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static createContextualFragment_Callback_0(mthis) native "Range_createContextualFragment_Callback";
+  createContextualFragment_Callback_0_(mthis) => createContextualFragment_Callback_0(mthis);
+
+  static createContextualFragment_Callback_1(mthis, __arg_0) native "Range_createContextualFragment_Callback";
+  createContextualFragment_Callback_1_(mthis, __arg_0) => createContextualFragment_Callback_1(mthis, __arg_0);
+
+  static createContextualFragment_Callback_2(mthis, __arg_0, __arg_1) native "Range_createContextualFragment_Callback";
+  createContextualFragment_Callback_2_(mthis, __arg_0, __arg_1) => createContextualFragment_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createContextualFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_createContextualFragment_Callback";
+  createContextualFragment_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createContextualFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteContents_Callback_0(mthis) native "Range_deleteContents_Callback";
+  deleteContents_Callback_0_(mthis) => deleteContents_Callback_0(mthis);
+
+  static deleteContents_Callback_1(mthis, __arg_0) native "Range_deleteContents_Callback";
+  deleteContents_Callback_1_(mthis, __arg_0) => deleteContents_Callback_1(mthis, __arg_0);
+
+  static deleteContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_deleteContents_Callback";
+  deleteContents_Callback_2_(mthis, __arg_0, __arg_1) => deleteContents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static detach_Callback_0(mthis) native "Range_detach_Callback";
+  detach_Callback_0_(mthis) => detach_Callback_0(mthis);
+
+  static detach_Callback_1(mthis, __arg_0) native "Range_detach_Callback";
+  detach_Callback_1_(mthis, __arg_0) => detach_Callback_1(mthis, __arg_0);
+
+  static detach_Callback_2(mthis, __arg_0, __arg_1) native "Range_detach_Callback";
+  detach_Callback_2_(mthis, __arg_0, __arg_1) => detach_Callback_2(mthis, __arg_0, __arg_1);
 
   static endContainer_Getter(mthis) native "Range_endContainer_Getter";
+  endContainer_Getter_(mthis) => endContainer_Getter(mthis);
 
   static endOffset_Getter(mthis) native "Range_endOffset_Getter";
+  endOffset_Getter_(mthis) => endOffset_Getter(mthis);
+
+  static expand_Callback_0(mthis) native "Range_expand_Callback";
+  expand_Callback_0_(mthis) => expand_Callback_0(mthis);
+
+  static expand_Callback_1(mthis, __arg_0) native "Range_expand_Callback";
+  expand_Callback_1_(mthis, __arg_0) => expand_Callback_1(mthis, __arg_0);
+
+  static expand_Callback_2(mthis, __arg_0, __arg_1) native "Range_expand_Callback";
+  expand_Callback_2_(mthis, __arg_0, __arg_1) => expand_Callback_2(mthis, __arg_0, __arg_1);
+
+  static expand_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_expand_Callback";
+  expand_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => expand_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static extractContents_Callback_0(mthis) native "Range_extractContents_Callback";
+  extractContents_Callback_0_(mthis) => extractContents_Callback_0(mthis);
+
+  static extractContents_Callback_1(mthis, __arg_0) native "Range_extractContents_Callback";
+  extractContents_Callback_1_(mthis, __arg_0) => extractContents_Callback_1(mthis, __arg_0);
+
+  static extractContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_extractContents_Callback";
+  extractContents_Callback_2_(mthis, __arg_0, __arg_1) => extractContents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getBoundingClientRect_Callback_0(mthis) native "Range_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_0_(mthis) => getBoundingClientRect_Callback_0(mthis);
+
+  static getBoundingClientRect_Callback_1(mthis, __arg_0) native "Range_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_1_(mthis, __arg_0) => getBoundingClientRect_Callback_1(mthis, __arg_0);
+
+  static getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1) native "Range_getBoundingClientRect_Callback";
+  getBoundingClientRect_Callback_2_(mthis, __arg_0, __arg_1) => getBoundingClientRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getClientRects_Callback_0(mthis) native "Range_getClientRects_Callback";
+  getClientRects_Callback_0_(mthis) => getClientRects_Callback_0(mthis);
+
+  static getClientRects_Callback_1(mthis, __arg_0) native "Range_getClientRects_Callback";
+  getClientRects_Callback_1_(mthis, __arg_0) => getClientRects_Callback_1(mthis, __arg_0);
+
+  static getClientRects_Callback_2(mthis, __arg_0, __arg_1) native "Range_getClientRects_Callback";
+  getClientRects_Callback_2_(mthis, __arg_0, __arg_1) => getClientRects_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertNode_Callback_0(mthis) native "Range_insertNode_Callback";
+  insertNode_Callback_0_(mthis) => insertNode_Callback_0(mthis);
+
+  static insertNode_Callback_1(mthis, __arg_0) native "Range_insertNode_Callback";
+  insertNode_Callback_1_(mthis, __arg_0) => insertNode_Callback_1(mthis, __arg_0);
+
+  static insertNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_insertNode_Callback";
+  insertNode_Callback_2_(mthis, __arg_0, __arg_1) => insertNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_insertNode_Callback";
+  insertNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static intersectsNode_Callback_0(mthis) native "Range_intersectsNode_Callback";
+  intersectsNode_Callback_0_(mthis) => intersectsNode_Callback_0(mthis);
+
+  static intersectsNode_Callback_1(mthis, __arg_0) native "Range_intersectsNode_Callback";
+  intersectsNode_Callback_1_(mthis, __arg_0) => intersectsNode_Callback_1(mthis, __arg_0);
+
+  static intersectsNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_intersectsNode_Callback";
+  intersectsNode_Callback_2_(mthis, __arg_0, __arg_1) => intersectsNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static intersectsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_intersectsNode_Callback";
+  intersectsNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => intersectsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isPointInRange_Callback_0(mthis) native "Range_isPointInRange_Callback";
+  isPointInRange_Callback_0_(mthis) => isPointInRange_Callback_0(mthis);
+
+  static isPointInRange_Callback_1(mthis, __arg_0) native "Range_isPointInRange_Callback";
+  isPointInRange_Callback_1_(mthis, __arg_0) => isPointInRange_Callback_1(mthis, __arg_0);
+
+  static isPointInRange_Callback_2(mthis, __arg_0, __arg_1) native "Range_isPointInRange_Callback";
+  isPointInRange_Callback_2_(mthis, __arg_0, __arg_1) => isPointInRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_isPointInRange_Callback";
+  isPointInRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isPointInRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_isPointInRange_Callback";
+  isPointInRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => isPointInRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static selectNodeContents_Callback_0(mthis) native "Range_selectNodeContents_Callback";
+  selectNodeContents_Callback_0_(mthis) => selectNodeContents_Callback_0(mthis);
+
+  static selectNodeContents_Callback_1(mthis, __arg_0) native "Range_selectNodeContents_Callback";
+  selectNodeContents_Callback_1_(mthis, __arg_0) => selectNodeContents_Callback_1(mthis, __arg_0);
+
+  static selectNodeContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_selectNodeContents_Callback";
+  selectNodeContents_Callback_2_(mthis, __arg_0, __arg_1) => selectNodeContents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static selectNodeContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_selectNodeContents_Callback";
+  selectNodeContents_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectNodeContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static selectNode_Callback_0(mthis) native "Range_selectNode_Callback";
+  selectNode_Callback_0_(mthis) => selectNode_Callback_0(mthis);
+
+  static selectNode_Callback_1(mthis, __arg_0) native "Range_selectNode_Callback";
+  selectNode_Callback_1_(mthis, __arg_0) => selectNode_Callback_1(mthis, __arg_0);
+
+  static selectNode_Callback_2(mthis, __arg_0, __arg_1) native "Range_selectNode_Callback";
+  selectNode_Callback_2_(mthis, __arg_0, __arg_1) => selectNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static selectNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_selectNode_Callback";
+  selectNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setEndAfter_Callback_0(mthis) native "Range_setEndAfter_Callback";
+  setEndAfter_Callback_0_(mthis) => setEndAfter_Callback_0(mthis);
+
+  static setEndAfter_Callback_1(mthis, __arg_0) native "Range_setEndAfter_Callback";
+  setEndAfter_Callback_1_(mthis, __arg_0) => setEndAfter_Callback_1(mthis, __arg_0);
+
+  static setEndAfter_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEndAfter_Callback";
+  setEndAfter_Callback_2_(mthis, __arg_0, __arg_1) => setEndAfter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setEndAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEndAfter_Callback";
+  setEndAfter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEndAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setEndBefore_Callback_0(mthis) native "Range_setEndBefore_Callback";
+  setEndBefore_Callback_0_(mthis) => setEndBefore_Callback_0(mthis);
+
+  static setEndBefore_Callback_1(mthis, __arg_0) native "Range_setEndBefore_Callback";
+  setEndBefore_Callback_1_(mthis, __arg_0) => setEndBefore_Callback_1(mthis, __arg_0);
+
+  static setEndBefore_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEndBefore_Callback";
+  setEndBefore_Callback_2_(mthis, __arg_0, __arg_1) => setEndBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setEndBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEndBefore_Callback";
+  setEndBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEndBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setEnd_Callback_0(mthis) native "Range_setEnd_Callback";
+  setEnd_Callback_0_(mthis) => setEnd_Callback_0(mthis);
+
+  static setEnd_Callback_1(mthis, __arg_0) native "Range_setEnd_Callback";
+  setEnd_Callback_1_(mthis, __arg_0) => setEnd_Callback_1(mthis, __arg_0);
+
+  static setEnd_Callback_2(mthis, __arg_0, __arg_1) native "Range_setEnd_Callback";
+  setEnd_Callback_2_(mthis, __arg_0, __arg_1) => setEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setEnd_Callback";
+  setEnd_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEnd_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setEnd_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_setEnd_Callback";
+  setEnd_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setEnd_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setStartAfter_Callback_0(mthis) native "Range_setStartAfter_Callback";
+  setStartAfter_Callback_0_(mthis) => setStartAfter_Callback_0(mthis);
+
+  static setStartAfter_Callback_1(mthis, __arg_0) native "Range_setStartAfter_Callback";
+  setStartAfter_Callback_1_(mthis, __arg_0) => setStartAfter_Callback_1(mthis, __arg_0);
+
+  static setStartAfter_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStartAfter_Callback";
+  setStartAfter_Callback_2_(mthis, __arg_0, __arg_1) => setStartAfter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStartAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStartAfter_Callback";
+  setStartAfter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStartAfter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStartBefore_Callback_0(mthis) native "Range_setStartBefore_Callback";
+  setStartBefore_Callback_0_(mthis) => setStartBefore_Callback_0(mthis);
+
+  static setStartBefore_Callback_1(mthis, __arg_0) native "Range_setStartBefore_Callback";
+  setStartBefore_Callback_1_(mthis, __arg_0) => setStartBefore_Callback_1(mthis, __arg_0);
+
+  static setStartBefore_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStartBefore_Callback";
+  setStartBefore_Callback_2_(mthis, __arg_0, __arg_1) => setStartBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStartBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStartBefore_Callback";
+  setStartBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStartBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStart_Callback_0(mthis) native "Range_setStart_Callback";
+  setStart_Callback_0_(mthis) => setStart_Callback_0(mthis);
+
+  static setStart_Callback_1(mthis, __arg_0) native "Range_setStart_Callback";
+  setStart_Callback_1_(mthis, __arg_0) => setStart_Callback_1(mthis, __arg_0);
+
+  static setStart_Callback_2(mthis, __arg_0, __arg_1) native "Range_setStart_Callback";
+  setStart_Callback_2_(mthis, __arg_0, __arg_1) => setStart_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStart_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_setStart_Callback";
+  setStart_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStart_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStart_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Range_setStart_Callback";
+  setStart_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStart_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static startContainer_Getter(mthis) native "Range_startContainer_Getter";
+  startContainer_Getter_(mthis) => startContainer_Getter(mthis);
 
   static startOffset_Getter(mthis) native "Range_startOffset_Getter";
+  startOffset_Getter_(mthis) => startOffset_Getter(mthis);
 
-  static cloneContents_Callback(mthis) native "Range_cloneContents_Callback";
+  static surroundContents_Callback_0(mthis) native "Range_surroundContents_Callback";
+  surroundContents_Callback_0_(mthis) => surroundContents_Callback_0(mthis);
 
-  static cloneRange_Callback(mthis) native "Range_cloneRange_Callback";
+  static surroundContents_Callback_1(mthis, __arg_0) native "Range_surroundContents_Callback";
+  surroundContents_Callback_1_(mthis, __arg_0) => surroundContents_Callback_1(mthis, __arg_0);
 
-  static collapse_Callback_1(mthis, toStart) native "Range_collapse_Callback";
+  static surroundContents_Callback_2(mthis, __arg_0, __arg_1) native "Range_surroundContents_Callback";
+  surroundContents_Callback_2_(mthis, __arg_0, __arg_1) => surroundContents_Callback_2(mthis, __arg_0, __arg_1);
 
-  static collapse_Callback(mthis) native "Range_collapse_Callback";
+  static surroundContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Range_surroundContents_Callback";
+  surroundContents_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => surroundContents_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static comparePoint_Callback_2(mthis, refNode, offset) native "Range_comparePoint_Callback";
-
-  static createContextualFragment_Callback_1(mthis, html) native "Range_createContextualFragment_Callback";
-
-  static deleteContents_Callback(mthis) native "Range_deleteContents_Callback";
-
-  static detach_Callback(mthis) native "Range_detach_Callback";
-
-  static expand_Callback_1(mthis, unit) native "Range_expand_Callback";
-
-  static extractContents_Callback(mthis) native "Range_extractContents_Callback";
-
-  static getBoundingClientRect_Callback(mthis) native "Range_getBoundingClientRect_Callback";
-
-  static getClientRects_Callback(mthis) native "Range_getClientRects_Callback";
-
-  static insertNode_Callback_1(mthis, newNode) native "Range_insertNode_Callback";
-
-  static isPointInRange_Callback_2(mthis, refNode, offset) native "Range_isPointInRange_Callback";
-
-  static selectNode_Callback_1(mthis, refNode) native "Range_selectNode_Callback";
-
-  static selectNodeContents_Callback_1(mthis, refNode) native "Range_selectNodeContents_Callback";
-
-  static setEnd_Callback_2(mthis, refNode, offset) native "Range_setEnd_Callback";
-
-  static setEndAfter_Callback_1(mthis, refNode) native "Range_setEndAfter_Callback";
-
-  static setEndBefore_Callback_1(mthis, refNode) native "Range_setEndBefore_Callback";
-
-  static setStart_Callback_2(mthis, refNode, offset) native "Range_setStart_Callback";
-
-  static setStartAfter_Callback_1(mthis, refNode) native "Range_setStartAfter_Callback";
-
-  static setStartBefore_Callback_1(mthis, refNode) native "Range_setStartBefore_Callback";
-
-  static surroundContents_Callback_1(mthis, newParent) native "Range_surroundContents_Callback";
 }
 
-class BlinkReadableStream {}
+class BlinkReadableStream {
+  static final instance = new BlinkReadableStream();
 
-class BlinkRect {}
+}
 
-class BlinkRelatedEvent {
-  static constructorCallback(type, options) native "RelatedEvent_constructorCallback";
+class BlinkRect {
+  static final instance = new BlinkRect();
+
+  static bottom_Getter(mthis) native "Rect_bottom_Getter";
+  bottom_Getter_(mthis) => bottom_Getter(mthis);
+
+  static left_Getter(mthis) native "Rect_left_Getter";
+  left_Getter_(mthis) => left_Getter(mthis);
+
+  static right_Getter(mthis) native "Rect_right_Getter";
+  right_Getter_(mthis) => right_Getter(mthis);
+
+  static top_Getter(mthis) native "Rect_top_Getter";
+  top_Getter_(mthis) => top_Getter(mthis);
+
+}
+
+class BlinkRelatedEvent extends BlinkEvent {
+  static final instance = new BlinkRelatedEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "RelatedEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static relatedTarget_Getter(mthis) native "RelatedEvent_relatedTarget_Getter";
+  relatedTarget_Getter_(mthis) => relatedTarget_Getter(mthis);
+
 }
 
 class BlinkRequest {
-  static constructorCallback_1(input) native "Request_constructorCallback";
+  static final instance = new BlinkRequest();
 
-  static constructorCallback_2(input, requestInitDict) native "Request_constructorCallback";
+  static constructorCallback_0() native "Request_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Request_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Request_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Request_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Request_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static credentials_Getter(mthis) native "Request_credentials_Getter";
+  credentials_Getter_(mthis) => credentials_Getter(mthis);
 
   static headers_Getter(mthis) native "Request_headers_Getter";
+  headers_Getter_(mthis) => headers_Getter(mthis);
+
+  static method_Getter(mthis) native "Request_method_Getter";
+  method_Getter_(mthis) => method_Getter(mthis);
 
   static mode_Getter(mthis) native "Request_mode_Getter";
+  mode_Getter_(mthis) => mode_Getter(mthis);
 
   static referrer_Getter(mthis) native "Request_referrer_Getter";
+  referrer_Getter_(mthis) => referrer_Getter(mthis);
 
   static url_Getter(mthis) native "Request_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
+
 }
 
-class BlinkResourceProgressEvent {
+class BlinkResourceProgressEvent extends BlinkProgressEvent {
+  static final instance = new BlinkResourceProgressEvent();
+
   static url_Getter(mthis) native "ResourceProgressEvent_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
+
 }
 
 class BlinkResponse {
-  static constructorCallback_1(body) native "Response_constructorCallback";
+  static final instance = new BlinkResponse();
 
-  static constructorCallback_2(body, responseInitDict) native "Response_constructorCallback";
+  static body_Getter(mthis) native "Response_body_Getter";
+  body_Getter_(mthis) => body_Getter(mthis);
+
+  static constructorCallback_0() native "Response_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Response_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Response_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Response_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "Response_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static headers_Getter(mthis) native "Response_headers_Getter";
+  headers_Getter_(mthis) => headers_Getter(mthis);
+
+  static statusText_Getter(mthis) native "Response_statusText_Getter";
+  statusText_Getter_(mthis) => statusText_Getter(mthis);
+
+  static status_Getter(mthis) native "Response_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
+
+  static type_Getter(mthis) native "Response_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static url_Getter(mthis) native "Response_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
+
 }
 
 class BlinkSQLError {
+  static final instance = new BlinkSQLError();
+
   static code_Getter(mthis) native "SQLError_code_Getter";
+  code_Getter_(mthis) => code_Getter(mthis);
 
   static message_Getter(mthis) native "SQLError_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
+
 }
 
 class BlinkSQLResultSet {
-  static insertId_Getter(mthis) native "SQLResultSet_insertId_Getter";
+  static final instance = new BlinkSQLResultSet();
 
-  static rows_Getter(mthis) native "SQLResultSet_rows_Getter";
+  static insertId_Getter(mthis) native "SQLResultSet_insertId_Getter";
+  insertId_Getter_(mthis) => insertId_Getter(mthis);
 
   static rowsAffected_Getter(mthis) native "SQLResultSet_rowsAffected_Getter";
+  rowsAffected_Getter_(mthis) => rowsAffected_Getter(mthis);
+
+  static rows_Getter(mthis) native "SQLResultSet_rows_Getter";
+  rows_Getter_(mthis) => rows_Getter(mthis);
+
 }
 
 class BlinkSQLResultSetRowList {
-  static length_Getter(mthis) native "SQLResultSetRowList_length_Getter";
+  static final instance = new BlinkSQLResultSetRowList();
 
-  static item_Callback_1(mthis, index) native "SQLResultSetRowList_item_Callback";
+  static item_Callback_0(mthis) native "SQLResultSetRowList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "SQLResultSetRowList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "SQLResultSetRowList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SQLResultSetRowList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "SQLResultSetRowList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
 class BlinkSQLTransaction {
-  static executeSql_Callback_4(mthis, sqlStatement, arguments, callback, errorCallback) native "SQLTransaction_executeSql_Callback";
+  static final instance = new BlinkSQLTransaction();
+
+  static executeSql_Callback_0(mthis) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_0_(mthis) => executeSql_Callback_0(mthis);
+
+  static executeSql_Callback_1(mthis, __arg_0) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_1_(mthis, __arg_0) => executeSql_Callback_1(mthis, __arg_0);
+
+  static executeSql_Callback_2(mthis, __arg_0, __arg_1) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => executeSql_Callback_2(mthis, __arg_0, __arg_1);
+
+  static executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static executeSql_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => executeSql_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static executeSql_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SQLTransaction_executeSql_Callback";
+  executeSql_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => executeSql_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
 }
 
-class BlinkSQLTransactionSync {}
+class BlinkSQLTransactionSync {
+  static final instance = new BlinkSQLTransactionSync();
 
-class BlinkSVGElement {
-  static className_Getter(mthis) native "SVGElement_className_Getter";
+  static executeSql_Callback_0(mthis) native "SQLTransactionSync_executeSql_Callback";
+  executeSql_Callback_0_(mthis) => executeSql_Callback_0(mthis);
 
-  static ownerSVGElement_Getter(mthis) native "SVGElement_ownerSVGElement_Getter";
+  static executeSql_Callback_1(mthis, __arg_0) native "SQLTransactionSync_executeSql_Callback";
+  executeSql_Callback_1_(mthis, __arg_0) => executeSql_Callback_1(mthis, __arg_0);
 
-  static style_Getter(mthis) native "SVGElement_style_Getter";
+  static executeSql_Callback_2(mthis, __arg_0, __arg_1) native "SQLTransactionSync_executeSql_Callback";
+  executeSql_Callback_2_(mthis, __arg_0, __arg_1) => executeSql_Callback_2(mthis, __arg_0, __arg_1);
 
-  static tabIndex_Getter(mthis) native "SVGElement_tabIndex_Getter";
+  static executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SQLTransactionSync_executeSql_Callback";
+  executeSql_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => executeSql_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static tabIndex_Setter(mthis, value) native "SVGElement_tabIndex_Setter";
+  static executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SQLTransactionSync_executeSql_Callback";
+  executeSql_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => executeSql_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static viewportElement_Getter(mthis) native "SVGElement_viewportElement_Getter";
-
-  static xmlbase_Getter(mthis) native "SVGElement_xmlbase_Getter";
-
-  static xmlbase_Setter(mthis, value) native "SVGElement_xmlbase_Setter";
-
-  static xmllang_Getter(mthis) native "SVGElement_xmllang_Getter";
-
-  static xmllang_Setter(mthis, value) native "SVGElement_xmllang_Setter";
-
-  static xmlspace_Getter(mthis) native "SVGElement_xmlspace_Getter";
-
-  static xmlspace_Setter(mthis, value) native "SVGElement_xmlspace_Setter";
 }
 
-class BlinkSVGTests {
-  static requiredExtensions_Getter(mthis) native "SVGTests_requiredExtensions_Getter";
-
-  static requiredFeatures_Getter(mthis) native "SVGTests_requiredFeatures_Getter";
-
-  static systemLanguage_Getter(mthis) native "SVGTests_systemLanguage_Getter";
-
-  static hasExtension_Callback_1(mthis, extension) native "SVGTests_hasExtension_Callback";
-}
-
-class BlinkSVGGraphicsElement {
-  static farthestViewportElement_Getter(mthis) native "SVGGraphicsElement_farthestViewportElement_Getter";
-
-  static nearestViewportElement_Getter(mthis) native "SVGGraphicsElement_nearestViewportElement_Getter";
-
-  static transform_Getter(mthis) native "SVGGraphicsElement_transform_Getter";
-
-  static getBBox_Callback(mthis) native "SVGGraphicsElement_getBBox_Callback";
-
-  static getCTM_Callback(mthis) native "SVGGraphicsElement_getCTM_Callback";
-
-  static getScreenCTM_Callback(mthis) native "SVGGraphicsElement_getScreenCTM_Callback";
-
-  static getTransformToElement_Callback_1(mthis, element) native "SVGGraphicsElement_getTransformToElement_Callback";
-
-  static requiredExtensions_Getter(mthis) native "SVGGraphicsElement_requiredExtensions_Getter";
-
-  static requiredFeatures_Getter(mthis) native "SVGGraphicsElement_requiredFeatures_Getter";
-
-  static systemLanguage_Getter(mthis) native "SVGGraphicsElement_systemLanguage_Getter";
-
-  static hasExtension_Callback_1(mthis, extension) native "SVGGraphicsElement_hasExtension_Callback";
-}
-
-class BlinkSVGURIReference {
-  static href_Getter(mthis) native "SVGURIReference_href_Getter";
-}
-
-class BlinkSVGAElement {
-  static target_Getter(mthis) native "SVGAElement_target_Getter";
+class BlinkSVGAElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGAElement();
 
   static href_Getter(mthis) native "SVGAElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static target_Getter(mthis) native "SVGAElement_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
 }
 
-class BlinkSVGAltGlyphDefElement {}
+class BlinkSVGAltGlyphDefElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGAltGlyphDefElement();
 
-class BlinkSVGTextContentElement {
-  static lengthAdjust_Getter(mthis) native "SVGTextContentElement_lengthAdjust_Getter";
-
-  static textLength_Getter(mthis) native "SVGTextContentElement_textLength_Getter";
-
-  static getCharNumAtPosition_Callback_1(mthis, point) native "SVGTextContentElement_getCharNumAtPosition_Callback";
-
-  static getComputedTextLength_Callback(mthis) native "SVGTextContentElement_getComputedTextLength_Callback";
-
-  static getEndPositionOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getEndPositionOfChar_Callback";
-
-  static getExtentOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getExtentOfChar_Callback";
-
-  static getNumberOfChars_Callback(mthis) native "SVGTextContentElement_getNumberOfChars_Callback";
-
-  static getRotationOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getRotationOfChar_Callback";
-
-  static getStartPositionOfChar_Callback_1(mthis, offset) native "SVGTextContentElement_getStartPositionOfChar_Callback";
-
-  static getSubStringLength_Callback_2(mthis, offset, length) native "SVGTextContentElement_getSubStringLength_Callback";
-
-  static selectSubString_Callback_2(mthis, offset, length) native "SVGTextContentElement_selectSubString_Callback";
 }
 
-class BlinkSVGTextPositioningElement {
-  static dx_Getter(mthis) native "SVGTextPositioningElement_dx_Getter";
+class BlinkSVGAltGlyphElement extends BlinkSVGTextPositioningElement {
+  static final instance = new BlinkSVGAltGlyphElement();
 
-  static dy_Getter(mthis) native "SVGTextPositioningElement_dy_Getter";
-
-  static rotate_Getter(mthis) native "SVGTextPositioningElement_rotate_Getter";
-
-  static x_Getter(mthis) native "SVGTextPositioningElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGTextPositioningElement_y_Getter";
-}
-
-class BlinkSVGAltGlyphElement {
   static format_Getter(mthis) native "SVGAltGlyphElement_format_Getter";
+  format_Getter_(mthis) => format_Getter(mthis);
 
-  static format_Setter(mthis, value) native "SVGAltGlyphElement_format_Setter";
+  static format_Setter(mthis, __arg_0) native "SVGAltGlyphElement_format_Setter";
+  format_Setter_(mthis, __arg_0) => format_Setter(mthis, __arg_0);
 
   static glyphRef_Getter(mthis) native "SVGAltGlyphElement_glyphRef_Getter";
+  glyphRef_Getter_(mthis) => glyphRef_Getter(mthis);
 
-  static glyphRef_Setter(mthis, value) native "SVGAltGlyphElement_glyphRef_Setter";
+  static glyphRef_Setter(mthis, __arg_0) native "SVGAltGlyphElement_glyphRef_Setter";
+  glyphRef_Setter_(mthis, __arg_0) => glyphRef_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "SVGAltGlyphElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
 }
 
-class BlinkSVGAltGlyphItemElement {}
+class BlinkSVGAltGlyphItemElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGAltGlyphItemElement();
+
+}
 
 class BlinkSVGAngle {
+  static final instance = new BlinkSVGAngle();
+
+  static convertToSpecifiedUnits_Callback_0(mthis) native "SVGAngle_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_0_(mthis) => convertToSpecifiedUnits_Callback_0(mthis);
+
+  static convertToSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGAngle_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => convertToSpecifiedUnits_Callback_1(mthis, __arg_0);
+
+  static convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGAngle_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+
+  static convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAngle_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static newValueSpecifiedUnits_Callback_0(mthis) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_0_(mthis) => newValueSpecifiedUnits_Callback_0(mthis);
+
+  static newValueSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => newValueSpecifiedUnits_Callback_1(mthis, __arg_0);
+
+  static newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+
+  static newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static unitType_Getter(mthis) native "SVGAngle_unitType_Getter";
-
-  static value_Getter(mthis) native "SVGAngle_value_Getter";
-
-  static value_Setter(mthis, value) native "SVGAngle_value_Setter";
+  unitType_Getter_(mthis) => unitType_Getter(mthis);
 
   static valueAsString_Getter(mthis) native "SVGAngle_valueAsString_Getter";
+  valueAsString_Getter_(mthis) => valueAsString_Getter(mthis);
 
-  static valueAsString_Setter(mthis, value) native "SVGAngle_valueAsString_Setter";
+  static valueAsString_Setter(mthis, __arg_0) native "SVGAngle_valueAsString_Setter";
+  valueAsString_Setter_(mthis, __arg_0) => valueAsString_Setter(mthis, __arg_0);
 
   static valueInSpecifiedUnits_Getter(mthis) native "SVGAngle_valueInSpecifiedUnits_Getter";
+  valueInSpecifiedUnits_Getter_(mthis) => valueInSpecifiedUnits_Getter(mthis);
 
-  static valueInSpecifiedUnits_Setter(mthis, value) native "SVGAngle_valueInSpecifiedUnits_Setter";
+  static valueInSpecifiedUnits_Setter(mthis, __arg_0) native "SVGAngle_valueInSpecifiedUnits_Setter";
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => valueInSpecifiedUnits_Setter(mthis, __arg_0);
 
-  static convertToSpecifiedUnits_Callback_1(mthis, unitType) native "SVGAngle_convertToSpecifiedUnits_Callback";
+  static value_Getter(mthis) native "SVGAngle_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static newValueSpecifiedUnits_Callback_2(mthis, unitType, valueInSpecifiedUnits) native "SVGAngle_newValueSpecifiedUnits_Callback";
+  static value_Setter(mthis, __arg_0) native "SVGAngle_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGAnimationElement {
-  static targetElement_Getter(mthis) native "SVGAnimationElement_targetElement_Getter";
+class BlinkSVGAnimateElement extends BlinkSVGAnimationElement {
+  static final instance = new BlinkSVGAnimateElement();
 
-  static beginElement_Callback(mthis) native "SVGAnimationElement_beginElement_Callback";
-
-  static beginElementAt_Callback_1(mthis, offset) native "SVGAnimationElement_beginElementAt_Callback";
-
-  static endElement_Callback(mthis) native "SVGAnimationElement_endElement_Callback";
-
-  static endElementAt_Callback_1(mthis, offset) native "SVGAnimationElement_endElementAt_Callback";
-
-  static getCurrentTime_Callback(mthis) native "SVGAnimationElement_getCurrentTime_Callback";
-
-  static getSimpleDuration_Callback(mthis) native "SVGAnimationElement_getSimpleDuration_Callback";
-
-  static getStartTime_Callback(mthis) native "SVGAnimationElement_getStartTime_Callback";
-
-  static requiredExtensions_Getter(mthis) native "SVGAnimationElement_requiredExtensions_Getter";
-
-  static requiredFeatures_Getter(mthis) native "SVGAnimationElement_requiredFeatures_Getter";
-
-  static systemLanguage_Getter(mthis) native "SVGAnimationElement_systemLanguage_Getter";
-
-  static hasExtension_Callback_1(mthis, extension) native "SVGAnimationElement_hasExtension_Callback";
 }
 
-class BlinkSVGAnimateElement {}
+class BlinkSVGAnimateMotionElement extends BlinkSVGAnimationElement {
+  static final instance = new BlinkSVGAnimateMotionElement();
 
-class BlinkSVGAnimateMotionElement {}
+}
 
-class BlinkSVGAnimateTransformElement {}
+class BlinkSVGAnimateTransformElement extends BlinkSVGAnimationElement {
+  static final instance = new BlinkSVGAnimateTransformElement();
+
+}
 
 class BlinkSVGAnimatedAngle {
+  static final instance = new BlinkSVGAnimatedAngle();
+
   static animVal_Getter(mthis) native "SVGAnimatedAngle_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedAngle_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedBoolean {
+  static final instance = new BlinkSVGAnimatedBoolean();
+
   static animVal_Getter(mthis) native "SVGAnimatedBoolean_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedBoolean_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
 
-  static baseVal_Setter(mthis, value) native "SVGAnimatedBoolean_baseVal_Setter";
+  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedBoolean_baseVal_Setter";
+  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGAnimatedEnumeration {
+  static final instance = new BlinkSVGAnimatedEnumeration();
+
   static animVal_Getter(mthis) native "SVGAnimatedEnumeration_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedEnumeration_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
 
-  static baseVal_Setter(mthis, value) native "SVGAnimatedEnumeration_baseVal_Setter";
+  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedEnumeration_baseVal_Setter";
+  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGAnimatedInteger {
+  static final instance = new BlinkSVGAnimatedInteger();
+
   static animVal_Getter(mthis) native "SVGAnimatedInteger_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedInteger_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
 
-  static baseVal_Setter(mthis, value) native "SVGAnimatedInteger_baseVal_Setter";
+  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedInteger_baseVal_Setter";
+  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGAnimatedLength {
+  static final instance = new BlinkSVGAnimatedLength();
+
   static animVal_Getter(mthis) native "SVGAnimatedLength_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedLength_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedLengthList {
+  static final instance = new BlinkSVGAnimatedLengthList();
+
   static animVal_Getter(mthis) native "SVGAnimatedLengthList_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedLengthList_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedNumber {
+  static final instance = new BlinkSVGAnimatedNumber();
+
   static animVal_Getter(mthis) native "SVGAnimatedNumber_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedNumber_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
 
-  static baseVal_Setter(mthis, value) native "SVGAnimatedNumber_baseVal_Setter";
+  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedNumber_baseVal_Setter";
+  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGAnimatedNumberList {
+  static final instance = new BlinkSVGAnimatedNumberList();
+
   static animVal_Getter(mthis) native "SVGAnimatedNumberList_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedNumberList_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedPreserveAspectRatio {
+  static final instance = new BlinkSVGAnimatedPreserveAspectRatio();
+
   static animVal_Getter(mthis) native "SVGAnimatedPreserveAspectRatio_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedPreserveAspectRatio_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedRect {
+  static final instance = new BlinkSVGAnimatedRect();
+
   static animVal_Getter(mthis) native "SVGAnimatedRect_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedRect_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
 class BlinkSVGAnimatedString {
+  static final instance = new BlinkSVGAnimatedString();
+
   static animVal_Getter(mthis) native "SVGAnimatedString_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedString_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
 
-  static baseVal_Setter(mthis, value) native "SVGAnimatedString_baseVal_Setter";
+  static baseVal_Setter(mthis, __arg_0) native "SVGAnimatedString_baseVal_Setter";
+  baseVal_Setter_(mthis, __arg_0) => baseVal_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGAnimatedTransformList {
+  static final instance = new BlinkSVGAnimatedTransformList();
+
   static animVal_Getter(mthis) native "SVGAnimatedTransformList_animVal_Getter";
+  animVal_Getter_(mthis) => animVal_Getter(mthis);
 
   static baseVal_Getter(mthis) native "SVGAnimatedTransformList_baseVal_Getter";
+  baseVal_Getter_(mthis) => baseVal_Getter(mthis);
+
 }
 
-class BlinkSVGGeometryElement {
-  static isPointInFill_Callback_1(mthis, point) native "SVGGeometryElement_isPointInFill_Callback";
+class BlinkSVGAnimationElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGAnimationElement();
 
-  static isPointInStroke_Callback_1(mthis, point) native "SVGGeometryElement_isPointInStroke_Callback";
+  static beginElementAt_Callback_0(mthis) native "SVGAnimationElement_beginElementAt_Callback";
+  beginElementAt_Callback_0_(mthis) => beginElementAt_Callback_0(mthis);
+
+  static beginElementAt_Callback_1(mthis, __arg_0) native "SVGAnimationElement_beginElementAt_Callback";
+  beginElementAt_Callback_1_(mthis, __arg_0) => beginElementAt_Callback_1(mthis, __arg_0);
+
+  static beginElementAt_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_beginElementAt_Callback";
+  beginElementAt_Callback_2_(mthis, __arg_0, __arg_1) => beginElementAt_Callback_2(mthis, __arg_0, __arg_1);
+
+  static beginElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_beginElementAt_Callback";
+  beginElementAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => beginElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static beginElement_Callback_0(mthis) native "SVGAnimationElement_beginElement_Callback";
+  beginElement_Callback_0_(mthis) => beginElement_Callback_0(mthis);
+
+  static beginElement_Callback_1(mthis, __arg_0) native "SVGAnimationElement_beginElement_Callback";
+  beginElement_Callback_1_(mthis, __arg_0) => beginElement_Callback_1(mthis, __arg_0);
+
+  static beginElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_beginElement_Callback";
+  beginElement_Callback_2_(mthis, __arg_0, __arg_1) => beginElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static endElementAt_Callback_0(mthis) native "SVGAnimationElement_endElementAt_Callback";
+  endElementAt_Callback_0_(mthis) => endElementAt_Callback_0(mthis);
+
+  static endElementAt_Callback_1(mthis, __arg_0) native "SVGAnimationElement_endElementAt_Callback";
+  endElementAt_Callback_1_(mthis, __arg_0) => endElementAt_Callback_1(mthis, __arg_0);
+
+  static endElementAt_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_endElementAt_Callback";
+  endElementAt_Callback_2_(mthis, __arg_0, __arg_1) => endElementAt_Callback_2(mthis, __arg_0, __arg_1);
+
+  static endElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_endElementAt_Callback";
+  endElementAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => endElementAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static endElement_Callback_0(mthis) native "SVGAnimationElement_endElement_Callback";
+  endElement_Callback_0_(mthis) => endElement_Callback_0(mthis);
+
+  static endElement_Callback_1(mthis, __arg_0) native "SVGAnimationElement_endElement_Callback";
+  endElement_Callback_1_(mthis, __arg_0) => endElement_Callback_1(mthis, __arg_0);
+
+  static endElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_endElement_Callback";
+  endElement_Callback_2_(mthis, __arg_0, __arg_1) => endElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCurrentTime_Callback_0(mthis) native "SVGAnimationElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_0_(mthis) => getCurrentTime_Callback_0(mthis);
+
+  static getCurrentTime_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_1_(mthis, __arg_0) => getCurrentTime_Callback_1(mthis, __arg_0);
+
+  static getCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getSimpleDuration_Callback_0(mthis) native "SVGAnimationElement_getSimpleDuration_Callback";
+  getSimpleDuration_Callback_0_(mthis) => getSimpleDuration_Callback_0(mthis);
+
+  static getSimpleDuration_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getSimpleDuration_Callback";
+  getSimpleDuration_Callback_1_(mthis, __arg_0) => getSimpleDuration_Callback_1(mthis, __arg_0);
+
+  static getSimpleDuration_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getSimpleDuration_Callback";
+  getSimpleDuration_Callback_2_(mthis, __arg_0, __arg_1) => getSimpleDuration_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStartTime_Callback_0(mthis) native "SVGAnimationElement_getStartTime_Callback";
+  getStartTime_Callback_0_(mthis) => getStartTime_Callback_0(mthis);
+
+  static getStartTime_Callback_1(mthis, __arg_0) native "SVGAnimationElement_getStartTime_Callback";
+  getStartTime_Callback_1_(mthis, __arg_0) => getStartTime_Callback_1(mthis, __arg_0);
+
+  static getStartTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_getStartTime_Callback";
+  getStartTime_Callback_2_(mthis, __arg_0, __arg_1) => getStartTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_0(mthis) native "SVGAnimationElement_hasExtension_Callback";
+  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+
+  static hasExtension_Callback_1(mthis, __arg_0) native "SVGAnimationElement_hasExtension_Callback";
+  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+
+  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGAnimationElement_hasExtension_Callback";
+  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGAnimationElement_hasExtension_Callback";
+  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onbegin_Getter(mthis) native "SVGAnimationElement_onbegin_Getter";
+  onbegin_Getter_(mthis) => onbegin_Getter(mthis);
+
+  static onbegin_Setter(mthis, __arg_0) native "SVGAnimationElement_onbegin_Setter";
+  onbegin_Setter_(mthis, __arg_0) => onbegin_Setter(mthis, __arg_0);
+
+  static onend_Getter(mthis) native "SVGAnimationElement_onend_Getter";
+  onend_Getter_(mthis) => onend_Getter(mthis);
+
+  static onend_Setter(mthis, __arg_0) native "SVGAnimationElement_onend_Setter";
+  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
+
+  static onrepeat_Getter(mthis) native "SVGAnimationElement_onrepeat_Getter";
+  onrepeat_Getter_(mthis) => onrepeat_Getter(mthis);
+
+  static onrepeat_Setter(mthis, __arg_0) native "SVGAnimationElement_onrepeat_Setter";
+  onrepeat_Setter_(mthis, __arg_0) => onrepeat_Setter(mthis, __arg_0);
+
+  static requiredExtensions_Getter(mthis) native "SVGAnimationElement_requiredExtensions_Getter";
+  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+
+  static requiredFeatures_Getter(mthis) native "SVGAnimationElement_requiredFeatures_Getter";
+  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+
+  static systemLanguage_Getter(mthis) native "SVGAnimationElement_systemLanguage_Getter";
+  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+
+  static targetElement_Getter(mthis) native "SVGAnimationElement_targetElement_Getter";
+  targetElement_Getter_(mthis) => targetElement_Getter(mthis);
+
 }
 
-class BlinkSVGCircleElement {
+class BlinkSVGCircleElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGCircleElement();
+
   static cx_Getter(mthis) native "SVGCircleElement_cx_Getter";
+  cx_Getter_(mthis) => cx_Getter(mthis);
 
   static cy_Getter(mthis) native "SVGCircleElement_cy_Getter";
+  cy_Getter_(mthis) => cy_Getter(mthis);
 
   static r_Getter(mthis) native "SVGCircleElement_r_Getter";
+  r_Getter_(mthis) => r_Getter(mthis);
+
 }
 
-class BlinkSVGClipPathElement {
+class BlinkSVGClipPathElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGClipPathElement();
+
   static clipPathUnits_Getter(mthis) native "SVGClipPathElement_clipPathUnits_Getter";
+  clipPathUnits_Getter_(mthis) => clipPathUnits_Getter(mthis);
+
 }
 
-class BlinkSVGComponentTransferFunctionElement {}
+class BlinkSVGComponentTransferFunctionElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGComponentTransferFunctionElement();
 
-class BlinkSVGCursorElement {}
+  static amplitude_Getter(mthis) native "SVGComponentTransferFunctionElement_amplitude_Getter";
+  amplitude_Getter_(mthis) => amplitude_Getter(mthis);
 
-class BlinkSVGDefsElement {}
+  static exponent_Getter(mthis) native "SVGComponentTransferFunctionElement_exponent_Getter";
+  exponent_Getter_(mthis) => exponent_Getter(mthis);
 
-class BlinkSVGDescElement {}
+  static intercept_Getter(mthis) native "SVGComponentTransferFunctionElement_intercept_Getter";
+  intercept_Getter_(mthis) => intercept_Getter(mthis);
 
-class BlinkSVGDiscardElement {}
+  static offset_Getter(mthis) native "SVGComponentTransferFunctionElement_offset_Getter";
+  offset_Getter_(mthis) => offset_Getter(mthis);
 
-class BlinkSVGEllipseElement {
+  static slope_Getter(mthis) native "SVGComponentTransferFunctionElement_slope_Getter";
+  slope_Getter_(mthis) => slope_Getter(mthis);
+
+  static tableValues_Getter(mthis) native "SVGComponentTransferFunctionElement_tableValues_Getter";
+  tableValues_Getter_(mthis) => tableValues_Getter(mthis);
+
+  static type_Getter(mthis) native "SVGComponentTransferFunctionElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+}
+
+class BlinkSVGCursorElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGCursorElement();
+
+  static hasExtension_Callback_0(mthis) native "SVGCursorElement_hasExtension_Callback";
+  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+
+  static hasExtension_Callback_1(mthis, __arg_0) native "SVGCursorElement_hasExtension_Callback";
+  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+
+  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGCursorElement_hasExtension_Callback";
+  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGCursorElement_hasExtension_Callback";
+  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static href_Getter(mthis) native "SVGCursorElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static requiredExtensions_Getter(mthis) native "SVGCursorElement_requiredExtensions_Getter";
+  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+
+  static requiredFeatures_Getter(mthis) native "SVGCursorElement_requiredFeatures_Getter";
+  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+
+  static systemLanguage_Getter(mthis) native "SVGCursorElement_systemLanguage_Getter";
+  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGCursorElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGCursorElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+}
+
+class BlinkSVGDefsElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGDefsElement();
+
+}
+
+class BlinkSVGDescElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGDescElement();
+
+}
+
+class BlinkSVGDiscardElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGDiscardElement();
+
+}
+
+class BlinkSVGElement extends BlinkElement {
+  static final instance = new BlinkSVGElement();
+
+  static className_Getter(mthis) native "SVGElement_className_Getter";
+  className_Getter_(mthis) => className_Getter(mthis);
+
+  static onabort_Getter(mthis) native "SVGElement_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "SVGElement_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onautocomplete_Getter(mthis) native "SVGElement_onautocomplete_Getter";
+  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+
+  static onautocomplete_Setter(mthis, __arg_0) native "SVGElement_onautocomplete_Setter";
+  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+
+  static onautocompleteerror_Getter(mthis) native "SVGElement_onautocompleteerror_Getter";
+  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+
+  static onautocompleteerror_Setter(mthis, __arg_0) native "SVGElement_onautocompleteerror_Setter";
+  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+
+  static onblur_Getter(mthis) native "SVGElement_onblur_Getter";
+  onblur_Getter_(mthis) => onblur_Getter(mthis);
+
+  static onblur_Setter(mthis, __arg_0) native "SVGElement_onblur_Setter";
+  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+
+  static oncancel_Getter(mthis) native "SVGElement_oncancel_Getter";
+  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+
+  static oncancel_Setter(mthis, __arg_0) native "SVGElement_oncancel_Setter";
+  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+
+  static oncanplay_Getter(mthis) native "SVGElement_oncanplay_Getter";
+  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+
+  static oncanplay_Setter(mthis, __arg_0) native "SVGElement_oncanplay_Setter";
+  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+
+  static oncanplaythrough_Getter(mthis) native "SVGElement_oncanplaythrough_Getter";
+  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+
+  static oncanplaythrough_Setter(mthis, __arg_0) native "SVGElement_oncanplaythrough_Setter";
+  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "SVGElement_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "SVGElement_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onclick_Getter(mthis) native "SVGElement_onclick_Getter";
+  onclick_Getter_(mthis) => onclick_Getter(mthis);
+
+  static onclick_Setter(mthis, __arg_0) native "SVGElement_onclick_Setter";
+  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "SVGElement_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "SVGElement_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static oncontextmenu_Getter(mthis) native "SVGElement_oncontextmenu_Getter";
+  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+
+  static oncontextmenu_Setter(mthis, __arg_0) native "SVGElement_oncontextmenu_Setter";
+  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+
+  static oncuechange_Getter(mthis) native "SVGElement_oncuechange_Getter";
+  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+
+  static oncuechange_Setter(mthis, __arg_0) native "SVGElement_oncuechange_Setter";
+  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+
+  static ondblclick_Getter(mthis) native "SVGElement_ondblclick_Getter";
+  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+
+  static ondblclick_Setter(mthis, __arg_0) native "SVGElement_ondblclick_Setter";
+  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+
+  static ondrag_Getter(mthis) native "SVGElement_ondrag_Getter";
+  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+
+  static ondrag_Setter(mthis, __arg_0) native "SVGElement_ondrag_Setter";
+  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+
+  static ondragend_Getter(mthis) native "SVGElement_ondragend_Getter";
+  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+
+  static ondragend_Setter(mthis, __arg_0) native "SVGElement_ondragend_Setter";
+  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+
+  static ondragenter_Getter(mthis) native "SVGElement_ondragenter_Getter";
+  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+
+  static ondragenter_Setter(mthis, __arg_0) native "SVGElement_ondragenter_Setter";
+  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+
+  static ondragleave_Getter(mthis) native "SVGElement_ondragleave_Getter";
+  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+
+  static ondragleave_Setter(mthis, __arg_0) native "SVGElement_ondragleave_Setter";
+  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+
+  static ondragover_Getter(mthis) native "SVGElement_ondragover_Getter";
+  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+
+  static ondragover_Setter(mthis, __arg_0) native "SVGElement_ondragover_Setter";
+  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+
+  static ondragstart_Getter(mthis) native "SVGElement_ondragstart_Getter";
+  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+
+  static ondragstart_Setter(mthis, __arg_0) native "SVGElement_ondragstart_Setter";
+  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+
+  static ondrop_Getter(mthis) native "SVGElement_ondrop_Getter";
+  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+
+  static ondrop_Setter(mthis, __arg_0) native "SVGElement_ondrop_Setter";
+  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+
+  static ondurationchange_Getter(mthis) native "SVGElement_ondurationchange_Getter";
+  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+
+  static ondurationchange_Setter(mthis, __arg_0) native "SVGElement_ondurationchange_Setter";
+  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+
+  static onemptied_Getter(mthis) native "SVGElement_onemptied_Getter";
+  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+
+  static onemptied_Setter(mthis, __arg_0) native "SVGElement_onemptied_Setter";
+  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+
+  static onended_Getter(mthis) native "SVGElement_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "SVGElement_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "SVGElement_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "SVGElement_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onfocus_Getter(mthis) native "SVGElement_onfocus_Getter";
+  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+
+  static onfocus_Setter(mthis, __arg_0) native "SVGElement_onfocus_Setter";
+  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+
+  static oninput_Getter(mthis) native "SVGElement_oninput_Getter";
+  oninput_Getter_(mthis) => oninput_Getter(mthis);
+
+  static oninput_Setter(mthis, __arg_0) native "SVGElement_oninput_Setter";
+  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+
+  static oninvalid_Getter(mthis) native "SVGElement_oninvalid_Getter";
+  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+
+  static oninvalid_Setter(mthis, __arg_0) native "SVGElement_oninvalid_Setter";
+  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+
+  static onkeydown_Getter(mthis) native "SVGElement_onkeydown_Getter";
+  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+
+  static onkeydown_Setter(mthis, __arg_0) native "SVGElement_onkeydown_Setter";
+  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+
+  static onkeypress_Getter(mthis) native "SVGElement_onkeypress_Getter";
+  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+
+  static onkeypress_Setter(mthis, __arg_0) native "SVGElement_onkeypress_Setter";
+  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+
+  static onkeyup_Getter(mthis) native "SVGElement_onkeyup_Getter";
+  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+
+  static onkeyup_Setter(mthis, __arg_0) native "SVGElement_onkeyup_Setter";
+  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "SVGElement_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "SVGElement_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadeddata_Getter(mthis) native "SVGElement_onloadeddata_Getter";
+  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+
+  static onloadeddata_Setter(mthis, __arg_0) native "SVGElement_onloadeddata_Setter";
+  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+
+  static onloadedmetadata_Getter(mthis) native "SVGElement_onloadedmetadata_Getter";
+  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+
+  static onloadedmetadata_Setter(mthis, __arg_0) native "SVGElement_onloadedmetadata_Setter";
+  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "SVGElement_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "SVGElement_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onmousedown_Getter(mthis) native "SVGElement_onmousedown_Getter";
+  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+
+  static onmousedown_Setter(mthis, __arg_0) native "SVGElement_onmousedown_Setter";
+  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+
+  static onmouseenter_Getter(mthis) native "SVGElement_onmouseenter_Getter";
+  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+
+  static onmouseenter_Setter(mthis, __arg_0) native "SVGElement_onmouseenter_Setter";
+  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+
+  static onmouseleave_Getter(mthis) native "SVGElement_onmouseleave_Getter";
+  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+
+  static onmouseleave_Setter(mthis, __arg_0) native "SVGElement_onmouseleave_Setter";
+  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+
+  static onmousemove_Getter(mthis) native "SVGElement_onmousemove_Getter";
+  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+
+  static onmousemove_Setter(mthis, __arg_0) native "SVGElement_onmousemove_Setter";
+  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+
+  static onmouseout_Getter(mthis) native "SVGElement_onmouseout_Getter";
+  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+
+  static onmouseout_Setter(mthis, __arg_0) native "SVGElement_onmouseout_Setter";
+  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+
+  static onmouseover_Getter(mthis) native "SVGElement_onmouseover_Getter";
+  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+
+  static onmouseover_Setter(mthis, __arg_0) native "SVGElement_onmouseover_Setter";
+  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+
+  static onmouseup_Getter(mthis) native "SVGElement_onmouseup_Getter";
+  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+
+  static onmouseup_Setter(mthis, __arg_0) native "SVGElement_onmouseup_Setter";
+  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+
+  static onmousewheel_Getter(mthis) native "SVGElement_onmousewheel_Getter";
+  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+
+  static onmousewheel_Setter(mthis, __arg_0) native "SVGElement_onmousewheel_Setter";
+  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+
+  static onpause_Getter(mthis) native "SVGElement_onpause_Getter";
+  onpause_Getter_(mthis) => onpause_Getter(mthis);
+
+  static onpause_Setter(mthis, __arg_0) native "SVGElement_onpause_Setter";
+  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+
+  static onplay_Getter(mthis) native "SVGElement_onplay_Getter";
+  onplay_Getter_(mthis) => onplay_Getter(mthis);
+
+  static onplay_Setter(mthis, __arg_0) native "SVGElement_onplay_Setter";
+  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+
+  static onplaying_Getter(mthis) native "SVGElement_onplaying_Getter";
+  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+
+  static onplaying_Setter(mthis, __arg_0) native "SVGElement_onplaying_Setter";
+  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "SVGElement_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "SVGElement_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onratechange_Getter(mthis) native "SVGElement_onratechange_Getter";
+  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+
+  static onratechange_Setter(mthis, __arg_0) native "SVGElement_onratechange_Setter";
+  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+
+  static onreset_Getter(mthis) native "SVGElement_onreset_Getter";
+  onreset_Getter_(mthis) => onreset_Getter(mthis);
+
+  static onreset_Setter(mthis, __arg_0) native "SVGElement_onreset_Setter";
+  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+
+  static onresize_Getter(mthis) native "SVGElement_onresize_Getter";
+  onresize_Getter_(mthis) => onresize_Getter(mthis);
+
+  static onresize_Setter(mthis, __arg_0) native "SVGElement_onresize_Setter";
+  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+
+  static onscroll_Getter(mthis) native "SVGElement_onscroll_Getter";
+  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+
+  static onscroll_Setter(mthis, __arg_0) native "SVGElement_onscroll_Setter";
+  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+
+  static onseeked_Getter(mthis) native "SVGElement_onseeked_Getter";
+  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+
+  static onseeked_Setter(mthis, __arg_0) native "SVGElement_onseeked_Setter";
+  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+
+  static onseeking_Getter(mthis) native "SVGElement_onseeking_Getter";
+  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+
+  static onseeking_Setter(mthis, __arg_0) native "SVGElement_onseeking_Setter";
+  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+
+  static onselect_Getter(mthis) native "SVGElement_onselect_Getter";
+  onselect_Getter_(mthis) => onselect_Getter(mthis);
+
+  static onselect_Setter(mthis, __arg_0) native "SVGElement_onselect_Setter";
+  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+
+  static onshow_Getter(mthis) native "SVGElement_onshow_Getter";
+  onshow_Getter_(mthis) => onshow_Getter(mthis);
+
+  static onshow_Setter(mthis, __arg_0) native "SVGElement_onshow_Setter";
+  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+
+  static onstalled_Getter(mthis) native "SVGElement_onstalled_Getter";
+  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+
+  static onstalled_Setter(mthis, __arg_0) native "SVGElement_onstalled_Setter";
+  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+
+  static onsubmit_Getter(mthis) native "SVGElement_onsubmit_Getter";
+  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+
+  static onsubmit_Setter(mthis, __arg_0) native "SVGElement_onsubmit_Setter";
+  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+
+  static onsuspend_Getter(mthis) native "SVGElement_onsuspend_Getter";
+  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+
+  static onsuspend_Setter(mthis, __arg_0) native "SVGElement_onsuspend_Setter";
+  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+
+  static ontimeupdate_Getter(mthis) native "SVGElement_ontimeupdate_Getter";
+  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+
+  static ontimeupdate_Setter(mthis, __arg_0) native "SVGElement_ontimeupdate_Setter";
+  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+
+  static ontoggle_Getter(mthis) native "SVGElement_ontoggle_Getter";
+  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+
+  static ontoggle_Setter(mthis, __arg_0) native "SVGElement_ontoggle_Setter";
+  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+
+  static onvolumechange_Getter(mthis) native "SVGElement_onvolumechange_Getter";
+  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+
+  static onvolumechange_Setter(mthis, __arg_0) native "SVGElement_onvolumechange_Setter";
+  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+
+  static onwaiting_Getter(mthis) native "SVGElement_onwaiting_Getter";
+  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+
+  static onwaiting_Setter(mthis, __arg_0) native "SVGElement_onwaiting_Setter";
+  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+
+  static ownerSVGElement_Getter(mthis) native "SVGElement_ownerSVGElement_Getter";
+  ownerSVGElement_Getter_(mthis) => ownerSVGElement_Getter(mthis);
+
+  static style_Getter(mthis) native "SVGElement_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
+  static tabIndex_Getter(mthis) native "SVGElement_tabIndex_Getter";
+  tabIndex_Getter_(mthis) => tabIndex_Getter(mthis);
+
+  static tabIndex_Setter(mthis, __arg_0) native "SVGElement_tabIndex_Setter";
+  tabIndex_Setter_(mthis, __arg_0) => tabIndex_Setter(mthis, __arg_0);
+
+  static viewportElement_Getter(mthis) native "SVGElement_viewportElement_Getter";
+  viewportElement_Getter_(mthis) => viewportElement_Getter(mthis);
+
+  static xmlbase_Getter(mthis) native "SVGElement_xmlbase_Getter";
+  xmlbase_Getter_(mthis) => xmlbase_Getter(mthis);
+
+  static xmlbase_Setter(mthis, __arg_0) native "SVGElement_xmlbase_Setter";
+  xmlbase_Setter_(mthis, __arg_0) => xmlbase_Setter(mthis, __arg_0);
+
+  static xmllang_Getter(mthis) native "SVGElement_xmllang_Getter";
+  xmllang_Getter_(mthis) => xmllang_Getter(mthis);
+
+  static xmllang_Setter(mthis, __arg_0) native "SVGElement_xmllang_Setter";
+  xmllang_Setter_(mthis, __arg_0) => xmllang_Setter(mthis, __arg_0);
+
+  static xmlspace_Getter(mthis) native "SVGElement_xmlspace_Getter";
+  xmlspace_Getter_(mthis) => xmlspace_Getter(mthis);
+
+  static xmlspace_Setter(mthis, __arg_0) native "SVGElement_xmlspace_Setter";
+  xmlspace_Setter_(mthis, __arg_0) => xmlspace_Setter(mthis, __arg_0);
+
+}
+
+class BlinkSVGEllipseElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGEllipseElement();
+
   static cx_Getter(mthis) native "SVGEllipseElement_cx_Getter";
+  cx_Getter_(mthis) => cx_Getter(mthis);
 
   static cy_Getter(mthis) native "SVGEllipseElement_cy_Getter";
+  cy_Getter_(mthis) => cy_Getter(mthis);
 
   static rx_Getter(mthis) native "SVGEllipseElement_rx_Getter";
+  rx_Getter_(mthis) => rx_Getter(mthis);
 
   static ry_Getter(mthis) native "SVGEllipseElement_ry_Getter";
+  ry_Getter_(mthis) => ry_Getter(mthis);
+
 }
 
-class BlinkSVGFilterPrimitiveStandardAttributes {
-  static height_Getter(mthis) native "SVGFilterPrimitiveStandardAttributes_height_Getter";
-
-  static result_Getter(mthis) native "SVGFilterPrimitiveStandardAttributes_result_Getter";
-
-  static width_Getter(mthis) native "SVGFilterPrimitiveStandardAttributes_width_Getter";
-
-  static x_Getter(mthis) native "SVGFilterPrimitiveStandardAttributes_x_Getter";
-
-  static y_Getter(mthis) native "SVGFilterPrimitiveStandardAttributes_y_Getter";
-}
-
-class BlinkSVGFEBlendElement {
-  static in1_Getter(mthis) native "SVGFEBlendElement_in1_Getter";
-
-  static in2_Getter(mthis) native "SVGFEBlendElement_in2_Getter";
-
-  static mode_Getter(mthis) native "SVGFEBlendElement_mode_Getter";
+class BlinkSVGFEBlendElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEBlendElement();
 
   static height_Getter(mthis) native "SVGFEBlendElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEBlendElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static in2_Getter(mthis) native "SVGFEBlendElement_in2_Getter";
+  in2_Getter_(mthis) => in2_Getter(mthis);
+
+  static mode_Getter(mthis) native "SVGFEBlendElement_mode_Getter";
+  mode_Getter_(mthis) => mode_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEBlendElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEBlendElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEBlendElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEBlendElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEColorMatrixElement {
-  static in1_Getter(mthis) native "SVGFEColorMatrixElement_in1_Getter";
-
-  static type_Getter(mthis) native "SVGFEColorMatrixElement_type_Getter";
-
-  static values_Getter(mthis) native "SVGFEColorMatrixElement_values_Getter";
+class BlinkSVGFEColorMatrixElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEColorMatrixElement();
 
   static height_Getter(mthis) native "SVGFEColorMatrixElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEColorMatrixElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEColorMatrixElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static type_Getter(mthis) native "SVGFEColorMatrixElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static values_Getter(mthis) native "SVGFEColorMatrixElement_values_Getter";
+  values_Getter_(mthis) => values_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEColorMatrixElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEColorMatrixElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEColorMatrixElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEComponentTransferElement {
-  static in1_Getter(mthis) native "SVGFEComponentTransferElement_in1_Getter";
+class BlinkSVGFEComponentTransferElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEComponentTransferElement();
 
   static height_Getter(mthis) native "SVGFEComponentTransferElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEComponentTransferElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEComponentTransferElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEComponentTransferElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEComponentTransferElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEComponentTransferElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFECompositeElement {
-  static in1_Getter(mthis) native "SVGFECompositeElement_in1_Getter";
-
-  static in2_Getter(mthis) native "SVGFECompositeElement_in2_Getter";
-
-  static k1_Getter(mthis) native "SVGFECompositeElement_k1_Getter";
-
-  static k2_Getter(mthis) native "SVGFECompositeElement_k2_Getter";
-
-  static k3_Getter(mthis) native "SVGFECompositeElement_k3_Getter";
-
-  static k4_Getter(mthis) native "SVGFECompositeElement_k4_Getter";
-
-  static operator_Getter(mthis) native "SVGFECompositeElement_operator_Getter";
+class BlinkSVGFECompositeElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFECompositeElement();
 
   static height_Getter(mthis) native "SVGFECompositeElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFECompositeElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static in2_Getter(mthis) native "SVGFECompositeElement_in2_Getter";
+  in2_Getter_(mthis) => in2_Getter(mthis);
+
+  static k1_Getter(mthis) native "SVGFECompositeElement_k1_Getter";
+  k1_Getter_(mthis) => k1_Getter(mthis);
+
+  static k2_Getter(mthis) native "SVGFECompositeElement_k2_Getter";
+  k2_Getter_(mthis) => k2_Getter(mthis);
+
+  static k3_Getter(mthis) native "SVGFECompositeElement_k3_Getter";
+  k3_Getter_(mthis) => k3_Getter(mthis);
+
+  static k4_Getter(mthis) native "SVGFECompositeElement_k4_Getter";
+  k4_Getter_(mthis) => k4_Getter(mthis);
+
+  static operator_Getter(mthis) native "SVGFECompositeElement_operator_Getter";
+  operator_Getter_(mthis) => operator_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFECompositeElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFECompositeElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFECompositeElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFECompositeElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEConvolveMatrixElement {
+class BlinkSVGFEConvolveMatrixElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEConvolveMatrixElement();
+
   static bias_Getter(mthis) native "SVGFEConvolveMatrixElement_bias_Getter";
+  bias_Getter_(mthis) => bias_Getter(mthis);
 
   static divisor_Getter(mthis) native "SVGFEConvolveMatrixElement_divisor_Getter";
+  divisor_Getter_(mthis) => divisor_Getter(mthis);
 
   static edgeMode_Getter(mthis) native "SVGFEConvolveMatrixElement_edgeMode_Getter";
-
-  static in1_Getter(mthis) native "SVGFEConvolveMatrixElement_in1_Getter";
-
-  static kernelMatrix_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelMatrix_Getter";
-
-  static kernelUnitLengthX_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthX_Getter";
-
-  static kernelUnitLengthY_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthY_Getter";
-
-  static orderX_Getter(mthis) native "SVGFEConvolveMatrixElement_orderX_Getter";
-
-  static orderY_Getter(mthis) native "SVGFEConvolveMatrixElement_orderY_Getter";
-
-  static preserveAlpha_Getter(mthis) native "SVGFEConvolveMatrixElement_preserveAlpha_Getter";
-
-  static targetX_Getter(mthis) native "SVGFEConvolveMatrixElement_targetX_Getter";
-
-  static targetY_Getter(mthis) native "SVGFEConvolveMatrixElement_targetY_Getter";
+  edgeMode_Getter_(mthis) => edgeMode_Getter(mthis);
 
   static height_Getter(mthis) native "SVGFEConvolveMatrixElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEConvolveMatrixElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static kernelMatrix_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelMatrix_Getter";
+  kernelMatrix_Getter_(mthis) => kernelMatrix_Getter(mthis);
+
+  static kernelUnitLengthX_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthX_Getter";
+  kernelUnitLengthX_Getter_(mthis) => kernelUnitLengthX_Getter(mthis);
+
+  static kernelUnitLengthY_Getter(mthis) native "SVGFEConvolveMatrixElement_kernelUnitLengthY_Getter";
+  kernelUnitLengthY_Getter_(mthis) => kernelUnitLengthY_Getter(mthis);
+
+  static orderX_Getter(mthis) native "SVGFEConvolveMatrixElement_orderX_Getter";
+  orderX_Getter_(mthis) => orderX_Getter(mthis);
+
+  static orderY_Getter(mthis) native "SVGFEConvolveMatrixElement_orderY_Getter";
+  orderY_Getter_(mthis) => orderY_Getter(mthis);
+
+  static preserveAlpha_Getter(mthis) native "SVGFEConvolveMatrixElement_preserveAlpha_Getter";
+  preserveAlpha_Getter_(mthis) => preserveAlpha_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEConvolveMatrixElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static targetX_Getter(mthis) native "SVGFEConvolveMatrixElement_targetX_Getter";
+  targetX_Getter_(mthis) => targetX_Getter(mthis);
+
+  static targetY_Getter(mthis) native "SVGFEConvolveMatrixElement_targetY_Getter";
+  targetY_Getter_(mthis) => targetY_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEConvolveMatrixElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEConvolveMatrixElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEConvolveMatrixElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEDiffuseLightingElement {
+class BlinkSVGFEDiffuseLightingElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEDiffuseLightingElement();
+
   static diffuseConstant_Getter(mthis) native "SVGFEDiffuseLightingElement_diffuseConstant_Getter";
-
-  static in1_Getter(mthis) native "SVGFEDiffuseLightingElement_in1_Getter";
-
-  static kernelUnitLengthX_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthX_Getter";
-
-  static kernelUnitLengthY_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthY_Getter";
-
-  static surfaceScale_Getter(mthis) native "SVGFEDiffuseLightingElement_surfaceScale_Getter";
+  diffuseConstant_Getter_(mthis) => diffuseConstant_Getter(mthis);
 
   static height_Getter(mthis) native "SVGFEDiffuseLightingElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEDiffuseLightingElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static kernelUnitLengthX_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthX_Getter";
+  kernelUnitLengthX_Getter_(mthis) => kernelUnitLengthX_Getter(mthis);
+
+  static kernelUnitLengthY_Getter(mthis) native "SVGFEDiffuseLightingElement_kernelUnitLengthY_Getter";
+  kernelUnitLengthY_Getter_(mthis) => kernelUnitLengthY_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEDiffuseLightingElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static surfaceScale_Getter(mthis) native "SVGFEDiffuseLightingElement_surfaceScale_Getter";
+  surfaceScale_Getter_(mthis) => surfaceScale_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEDiffuseLightingElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEDiffuseLightingElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEDiffuseLightingElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEDisplacementMapElement {
-  static in1_Getter(mthis) native "SVGFEDisplacementMapElement_in1_Getter";
-
-  static in2_Getter(mthis) native "SVGFEDisplacementMapElement_in2_Getter";
-
-  static scale_Getter(mthis) native "SVGFEDisplacementMapElement_scale_Getter";
-
-  static xChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_xChannelSelector_Getter";
-
-  static yChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_yChannelSelector_Getter";
+class BlinkSVGFEDisplacementMapElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEDisplacementMapElement();
 
   static height_Getter(mthis) native "SVGFEDisplacementMapElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEDisplacementMapElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static in2_Getter(mthis) native "SVGFEDisplacementMapElement_in2_Getter";
+  in2_Getter_(mthis) => in2_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEDisplacementMapElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static scale_Getter(mthis) native "SVGFEDisplacementMapElement_scale_Getter";
+  scale_Getter_(mthis) => scale_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEDisplacementMapElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static xChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_xChannelSelector_Getter";
+  xChannelSelector_Getter_(mthis) => xChannelSelector_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEDisplacementMapElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static yChannelSelector_Getter(mthis) native "SVGFEDisplacementMapElement_yChannelSelector_Getter";
+  yChannelSelector_Getter_(mthis) => yChannelSelector_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEDisplacementMapElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEDistantLightElement {
+class BlinkSVGFEDistantLightElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEDistantLightElement();
+
   static azimuth_Getter(mthis) native "SVGFEDistantLightElement_azimuth_Getter";
+  azimuth_Getter_(mthis) => azimuth_Getter(mthis);
 
   static elevation_Getter(mthis) native "SVGFEDistantLightElement_elevation_Getter";
+  elevation_Getter_(mthis) => elevation_Getter(mthis);
+
 }
 
-class BlinkSVGFEDropShadowElement {}
+class BlinkSVGFEDropShadowElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEDropShadowElement();
 
-class BlinkSVGFEFloodElement {
+  static dx_Getter(mthis) native "SVGFEDropShadowElement_dx_Getter";
+  dx_Getter_(mthis) => dx_Getter(mthis);
+
+  static dy_Getter(mthis) native "SVGFEDropShadowElement_dy_Getter";
+  dy_Getter_(mthis) => dy_Getter(mthis);
+
+  static height_Getter(mthis) native "SVGFEDropShadowElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEDropShadowElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static result_Getter(mthis) native "SVGFEDropShadowElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static setStdDeviation_Callback_0(mthis) native "SVGFEDropShadowElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_0_(mthis) => setStdDeviation_Callback_0(mthis);
+
+  static setStdDeviation_Callback_1(mthis, __arg_0) native "SVGFEDropShadowElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_1_(mthis, __arg_0) => setStdDeviation_Callback_1(mthis, __arg_0);
+
+  static setStdDeviation_Callback_2(mthis, __arg_0, __arg_1) native "SVGFEDropShadowElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => setStdDeviation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFEDropShadowElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFEDropShadowElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stdDeviationX_Getter(mthis) native "SVGFEDropShadowElement_stdDeviationX_Getter";
+  stdDeviationX_Getter_(mthis) => stdDeviationX_Getter(mthis);
+
+  static stdDeviationY_Getter(mthis) native "SVGFEDropShadowElement_stdDeviationY_Getter";
+  stdDeviationY_Getter_(mthis) => stdDeviationY_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGFEDropShadowElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGFEDropShadowElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGFEDropShadowElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+}
+
+class BlinkSVGFEFloodElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEFloodElement();
+
   static height_Getter(mthis) native "SVGFEFloodElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEFloodElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEFloodElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEFloodElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEFloodElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEFuncAElement {}
+class BlinkSVGFEFuncAElement extends BlinkSVGComponentTransferFunctionElement {
+  static final instance = new BlinkSVGFEFuncAElement();
 
-class BlinkSVGFEFuncBElement {}
+}
 
-class BlinkSVGFEFuncGElement {}
+class BlinkSVGFEFuncBElement extends BlinkSVGComponentTransferFunctionElement {
+  static final instance = new BlinkSVGFEFuncBElement();
 
-class BlinkSVGFEFuncRElement {}
+}
 
-class BlinkSVGFEGaussianBlurElement {
-  static in1_Getter(mthis) native "SVGFEGaussianBlurElement_in1_Getter";
+class BlinkSVGFEFuncGElement extends BlinkSVGComponentTransferFunctionElement {
+  static final instance = new BlinkSVGFEFuncGElement();
 
-  static stdDeviationX_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationX_Getter";
+}
 
-  static stdDeviationY_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationY_Getter";
+class BlinkSVGFEFuncRElement extends BlinkSVGComponentTransferFunctionElement {
+  static final instance = new BlinkSVGFEFuncRElement();
 
-  static setStdDeviation_Callback_2(mthis, stdDeviationX, stdDeviationY) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+}
+
+class BlinkSVGFEGaussianBlurElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEGaussianBlurElement();
 
   static height_Getter(mthis) native "SVGFEGaussianBlurElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEGaussianBlurElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEGaussianBlurElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static setStdDeviation_Callback_0(mthis) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_0_(mthis) => setStdDeviation_Callback_0(mthis);
+
+  static setStdDeviation_Callback_1(mthis, __arg_0) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_1_(mthis, __arg_0) => setStdDeviation_Callback_1(mthis, __arg_0);
+
+  static setStdDeviation_Callback_2(mthis, __arg_0, __arg_1) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_2_(mthis, __arg_0, __arg_1) => setStdDeviation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setStdDeviation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFEGaussianBlurElement_setStdDeviation_Callback";
+  setStdDeviation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setStdDeviation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stdDeviationX_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationX_Getter";
+  stdDeviationX_Getter_(mthis) => stdDeviationX_Getter(mthis);
+
+  static stdDeviationY_Getter(mthis) native "SVGFEGaussianBlurElement_stdDeviationY_Getter";
+  stdDeviationY_Getter_(mthis) => stdDeviationY_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEGaussianBlurElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEGaussianBlurElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEGaussianBlurElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEImageElement {
-  static preserveAspectRatio_Getter(mthis) native "SVGFEImageElement_preserveAspectRatio_Getter";
+class BlinkSVGFEImageElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEImageElement();
 
   static height_Getter(mthis) native "SVGFEImageElement_height_Getter";
-
-  static result_Getter(mthis) native "SVGFEImageElement_result_Getter";
-
-  static width_Getter(mthis) native "SVGFEImageElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGFEImageElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGFEImageElement_y_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static href_Getter(mthis) native "SVGFEImageElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static preserveAspectRatio_Getter(mthis) native "SVGFEImageElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static result_Getter(mthis) native "SVGFEImageElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGFEImageElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGFEImageElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGFEImageElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEMergeElement {
+class BlinkSVGFEMergeElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEMergeElement();
+
   static height_Getter(mthis) native "SVGFEMergeElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEMergeElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEMergeElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEMergeElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEMergeElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEMergeNodeElement {
+class BlinkSVGFEMergeNodeElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEMergeNodeElement();
+
   static in1_Getter(mthis) native "SVGFEMergeNodeElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
 }
 
-class BlinkSVGFEMorphologyElement {
-  static in1_Getter(mthis) native "SVGFEMorphologyElement_in1_Getter";
-
-  static operator_Getter(mthis) native "SVGFEMorphologyElement_operator_Getter";
-
-  static radiusX_Getter(mthis) native "SVGFEMorphologyElement_radiusX_Getter";
-
-  static radiusY_Getter(mthis) native "SVGFEMorphologyElement_radiusY_Getter";
+class BlinkSVGFEMorphologyElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEMorphologyElement();
 
   static height_Getter(mthis) native "SVGFEMorphologyElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEMorphologyElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
+
+  static operator_Getter(mthis) native "SVGFEMorphologyElement_operator_Getter";
+  operator_Getter_(mthis) => operator_Getter(mthis);
+
+  static radiusX_Getter(mthis) native "SVGFEMorphologyElement_radiusX_Getter";
+  radiusX_Getter_(mthis) => radiusX_Getter(mthis);
+
+  static radiusY_Getter(mthis) native "SVGFEMorphologyElement_radiusY_Getter";
+  radiusY_Getter_(mthis) => radiusY_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEMorphologyElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEMorphologyElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEMorphologyElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEMorphologyElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEOffsetElement {
+class BlinkSVGFEOffsetElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEOffsetElement();
+
   static dx_Getter(mthis) native "SVGFEOffsetElement_dx_Getter";
+  dx_Getter_(mthis) => dx_Getter(mthis);
 
   static dy_Getter(mthis) native "SVGFEOffsetElement_dy_Getter";
-
-  static in1_Getter(mthis) native "SVGFEOffsetElement_in1_Getter";
+  dy_Getter_(mthis) => dy_Getter(mthis);
 
   static height_Getter(mthis) native "SVGFEOffsetElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFEOffsetElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFEOffsetElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFEOffsetElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFEOffsetElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEOffsetElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFEPointLightElement {
+class BlinkSVGFEPointLightElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFEPointLightElement();
+
   static x_Getter(mthis) native "SVGFEPointLightElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFEPointLightElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
   static z_Getter(mthis) native "SVGFEPointLightElement_z_Getter";
+  z_Getter_(mthis) => z_Getter(mthis);
+
 }
 
-class BlinkSVGFESpecularLightingElement {
-  static in1_Getter(mthis) native "SVGFESpecularLightingElement_in1_Getter";
-
-  static specularConstant_Getter(mthis) native "SVGFESpecularLightingElement_specularConstant_Getter";
-
-  static specularExponent_Getter(mthis) native "SVGFESpecularLightingElement_specularExponent_Getter";
-
-  static surfaceScale_Getter(mthis) native "SVGFESpecularLightingElement_surfaceScale_Getter";
+class BlinkSVGFESpecularLightingElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFESpecularLightingElement();
 
   static height_Getter(mthis) native "SVGFESpecularLightingElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFESpecularLightingElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFESpecularLightingElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static specularConstant_Getter(mthis) native "SVGFESpecularLightingElement_specularConstant_Getter";
+  specularConstant_Getter_(mthis) => specularConstant_Getter(mthis);
+
+  static specularExponent_Getter(mthis) native "SVGFESpecularLightingElement_specularExponent_Getter";
+  specularExponent_Getter_(mthis) => specularExponent_Getter(mthis);
+
+  static surfaceScale_Getter(mthis) native "SVGFESpecularLightingElement_surfaceScale_Getter";
+  surfaceScale_Getter_(mthis) => surfaceScale_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFESpecularLightingElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFESpecularLightingElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFESpecularLightingElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFESpotLightElement {
+class BlinkSVGFESpotLightElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFESpotLightElement();
+
   static limitingConeAngle_Getter(mthis) native "SVGFESpotLightElement_limitingConeAngle_Getter";
+  limitingConeAngle_Getter_(mthis) => limitingConeAngle_Getter(mthis);
 
   static pointsAtX_Getter(mthis) native "SVGFESpotLightElement_pointsAtX_Getter";
+  pointsAtX_Getter_(mthis) => pointsAtX_Getter(mthis);
 
   static pointsAtY_Getter(mthis) native "SVGFESpotLightElement_pointsAtY_Getter";
+  pointsAtY_Getter_(mthis) => pointsAtY_Getter(mthis);
 
   static pointsAtZ_Getter(mthis) native "SVGFESpotLightElement_pointsAtZ_Getter";
+  pointsAtZ_Getter_(mthis) => pointsAtZ_Getter(mthis);
 
   static specularExponent_Getter(mthis) native "SVGFESpotLightElement_specularExponent_Getter";
+  specularExponent_Getter_(mthis) => specularExponent_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFESpotLightElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFESpotLightElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
   static z_Getter(mthis) native "SVGFESpotLightElement_z_Getter";
+  z_Getter_(mthis) => z_Getter(mthis);
+
 }
 
-class BlinkSVGFETileElement {
-  static in1_Getter(mthis) native "SVGFETileElement_in1_Getter";
+class BlinkSVGFETileElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFETileElement();
 
   static height_Getter(mthis) native "SVGFETileElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static in1_Getter(mthis) native "SVGFETileElement_in1_Getter";
+  in1_Getter_(mthis) => in1_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFETileElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFETileElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFETileElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFETileElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFETurbulenceElement {
+class BlinkSVGFETurbulenceElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFETurbulenceElement();
+
   static baseFrequencyX_Getter(mthis) native "SVGFETurbulenceElement_baseFrequencyX_Getter";
+  baseFrequencyX_Getter_(mthis) => baseFrequencyX_Getter(mthis);
 
   static baseFrequencyY_Getter(mthis) native "SVGFETurbulenceElement_baseFrequencyY_Getter";
-
-  static numOctaves_Getter(mthis) native "SVGFETurbulenceElement_numOctaves_Getter";
-
-  static seed_Getter(mthis) native "SVGFETurbulenceElement_seed_Getter";
-
-  static stitchTiles_Getter(mthis) native "SVGFETurbulenceElement_stitchTiles_Getter";
-
-  static type_Getter(mthis) native "SVGFETurbulenceElement_type_Getter";
+  baseFrequencyY_Getter_(mthis) => baseFrequencyY_Getter(mthis);
 
   static height_Getter(mthis) native "SVGFETurbulenceElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static numOctaves_Getter(mthis) native "SVGFETurbulenceElement_numOctaves_Getter";
+  numOctaves_Getter_(mthis) => numOctaves_Getter(mthis);
 
   static result_Getter(mthis) native "SVGFETurbulenceElement_result_Getter";
+  result_Getter_(mthis) => result_Getter(mthis);
+
+  static seed_Getter(mthis) native "SVGFETurbulenceElement_seed_Getter";
+  seed_Getter_(mthis) => seed_Getter(mthis);
+
+  static stitchTiles_Getter(mthis) native "SVGFETurbulenceElement_stitchTiles_Getter";
+  stitchTiles_Getter_(mthis) => stitchTiles_Getter(mthis);
+
+  static type_Getter(mthis) native "SVGFETurbulenceElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
   static width_Getter(mthis) native "SVGFETurbulenceElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGFETurbulenceElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGFETurbulenceElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFilterElement {
+class BlinkSVGFilterElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFilterElement();
+
   static filterResX_Getter(mthis) native "SVGFilterElement_filterResX_Getter";
+  filterResX_Getter_(mthis) => filterResX_Getter(mthis);
 
   static filterResY_Getter(mthis) native "SVGFilterElement_filterResY_Getter";
+  filterResY_Getter_(mthis) => filterResY_Getter(mthis);
 
   static filterUnits_Getter(mthis) native "SVGFilterElement_filterUnits_Getter";
+  filterUnits_Getter_(mthis) => filterUnits_Getter(mthis);
 
   static height_Getter(mthis) native "SVGFilterElement_height_Getter";
-
-  static primitiveUnits_Getter(mthis) native "SVGFilterElement_primitiveUnits_Getter";
-
-  static width_Getter(mthis) native "SVGFilterElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGFilterElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGFilterElement_y_Getter";
-
-  static setFilterRes_Callback_2(mthis, filterResX, filterResY) native "SVGFilterElement_setFilterRes_Callback";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static href_Getter(mthis) native "SVGFilterElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static primitiveUnits_Getter(mthis) native "SVGFilterElement_primitiveUnits_Getter";
+  primitiveUnits_Getter_(mthis) => primitiveUnits_Getter(mthis);
+
+  static setFilterRes_Callback_0(mthis) native "SVGFilterElement_setFilterRes_Callback";
+  setFilterRes_Callback_0_(mthis) => setFilterRes_Callback_0(mthis);
+
+  static setFilterRes_Callback_1(mthis, __arg_0) native "SVGFilterElement_setFilterRes_Callback";
+  setFilterRes_Callback_1_(mthis, __arg_0) => setFilterRes_Callback_1(mthis, __arg_0);
+
+  static setFilterRes_Callback_2(mthis, __arg_0, __arg_1) native "SVGFilterElement_setFilterRes_Callback";
+  setFilterRes_Callback_2_(mthis, __arg_0, __arg_1) => setFilterRes_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setFilterRes_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGFilterElement_setFilterRes_Callback";
+  setFilterRes_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setFilterRes_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setFilterRes_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGFilterElement_setFilterRes_Callback";
+  setFilterRes_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setFilterRes_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static width_Getter(mthis) native "SVGFilterElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGFilterElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGFilterElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGFitToViewBox {
-  static preserveAspectRatio_Getter(mthis) native "SVGFitToViewBox_preserveAspectRatio_Getter";
+class BlinkSVGFontElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontElement();
 
-  static viewBox_Getter(mthis) native "SVGFitToViewBox_viewBox_Getter";
 }
 
-class BlinkSVGFontElement {}
+class BlinkSVGFontFaceElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontFaceElement();
 
-class BlinkSVGFontFaceElement {}
+}
 
-class BlinkSVGFontFaceFormatElement {}
+class BlinkSVGFontFaceFormatElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontFaceFormatElement();
 
-class BlinkSVGFontFaceNameElement {}
+}
 
-class BlinkSVGFontFaceSrcElement {}
+class BlinkSVGFontFaceNameElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontFaceNameElement();
 
-class BlinkSVGFontFaceUriElement {}
+}
 
-class BlinkSVGForeignObjectElement {
+class BlinkSVGFontFaceSrcElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontFaceSrcElement();
+
+}
+
+class BlinkSVGFontFaceUriElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGFontFaceUriElement();
+
+}
+
+class BlinkSVGForeignObjectElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGForeignObjectElement();
+
   static height_Getter(mthis) native "SVGForeignObjectElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static width_Getter(mthis) native "SVGForeignObjectElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGForeignObjectElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGForeignObjectElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGGElement {}
+class BlinkSVGGElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGGElement();
 
-class BlinkSVGGlyphElement {}
+}
 
-class BlinkSVGGlyphRefElement {}
+class BlinkSVGGeometryElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGGeometryElement();
 
-class BlinkSVGGradientElement {
+  static isPointInFill_Callback_0(mthis) native "SVGGeometryElement_isPointInFill_Callback";
+  isPointInFill_Callback_0_(mthis) => isPointInFill_Callback_0(mthis);
+
+  static isPointInFill_Callback_1(mthis, __arg_0) native "SVGGeometryElement_isPointInFill_Callback";
+  isPointInFill_Callback_1_(mthis, __arg_0) => isPointInFill_Callback_1(mthis, __arg_0);
+
+  static isPointInFill_Callback_2(mthis, __arg_0, __arg_1) native "SVGGeometryElement_isPointInFill_Callback";
+  isPointInFill_Callback_2_(mthis, __arg_0, __arg_1) => isPointInFill_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInFill_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGeometryElement_isPointInFill_Callback";
+  isPointInFill_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInFill_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isPointInStroke_Callback_0(mthis) native "SVGGeometryElement_isPointInStroke_Callback";
+  isPointInStroke_Callback_0_(mthis) => isPointInStroke_Callback_0(mthis);
+
+  static isPointInStroke_Callback_1(mthis, __arg_0) native "SVGGeometryElement_isPointInStroke_Callback";
+  isPointInStroke_Callback_1_(mthis, __arg_0) => isPointInStroke_Callback_1(mthis, __arg_0);
+
+  static isPointInStroke_Callback_2(mthis, __arg_0, __arg_1) native "SVGGeometryElement_isPointInStroke_Callback";
+  isPointInStroke_Callback_2_(mthis, __arg_0, __arg_1) => isPointInStroke_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGeometryElement_isPointInStroke_Callback";
+  isPointInStroke_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isPointInStroke_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+}
+
+class BlinkSVGGlyphElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGGlyphElement();
+
+}
+
+class BlinkSVGGlyphRefElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGGlyphRefElement();
+
+  static dx_Getter(mthis) native "SVGGlyphRefElement_dx_Getter";
+  dx_Getter_(mthis) => dx_Getter(mthis);
+
+  static dx_Setter(mthis, __arg_0) native "SVGGlyphRefElement_dx_Setter";
+  dx_Setter_(mthis, __arg_0) => dx_Setter(mthis, __arg_0);
+
+  static dy_Getter(mthis) native "SVGGlyphRefElement_dy_Getter";
+  dy_Getter_(mthis) => dy_Getter(mthis);
+
+  static dy_Setter(mthis, __arg_0) native "SVGGlyphRefElement_dy_Setter";
+  dy_Setter_(mthis, __arg_0) => dy_Setter(mthis, __arg_0);
+
+  static format_Getter(mthis) native "SVGGlyphRefElement_format_Getter";
+  format_Getter_(mthis) => format_Getter(mthis);
+
+  static format_Setter(mthis, __arg_0) native "SVGGlyphRefElement_format_Setter";
+  format_Setter_(mthis, __arg_0) => format_Setter(mthis, __arg_0);
+
+  static glyphRef_Getter(mthis) native "SVGGlyphRefElement_glyphRef_Getter";
+  glyphRef_Getter_(mthis) => glyphRef_Getter(mthis);
+
+  static glyphRef_Setter(mthis, __arg_0) native "SVGGlyphRefElement_glyphRef_Setter";
+  glyphRef_Setter_(mthis, __arg_0) => glyphRef_Setter(mthis, __arg_0);
+
+  static href_Getter(mthis) native "SVGGlyphRefElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGGlyphRefElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGGlyphRefElement_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGGlyphRefElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGGlyphRefElement_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
+}
+
+class BlinkSVGGradientElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGGradientElement();
+
   static gradientTransform_Getter(mthis) native "SVGGradientElement_gradientTransform_Getter";
+  gradientTransform_Getter_(mthis) => gradientTransform_Getter(mthis);
 
   static gradientUnits_Getter(mthis) native "SVGGradientElement_gradientUnits_Getter";
-
-  static spreadMethod_Getter(mthis) native "SVGGradientElement_spreadMethod_Getter";
+  gradientUnits_Getter_(mthis) => gradientUnits_Getter(mthis);
 
   static href_Getter(mthis) native "SVGGradientElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static spreadMethod_Getter(mthis) native "SVGGradientElement_spreadMethod_Getter";
+  spreadMethod_Getter_(mthis) => spreadMethod_Getter(mthis);
+
 }
 
-class BlinkSVGHKernElement {}
+class BlinkSVGGraphicsElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGGraphicsElement();
 
-class BlinkSVGImageElement {
+  static farthestViewportElement_Getter(mthis) native "SVGGraphicsElement_farthestViewportElement_Getter";
+  farthestViewportElement_Getter_(mthis) => farthestViewportElement_Getter(mthis);
+
+  static getBBox_Callback_0(mthis) native "SVGGraphicsElement_getBBox_Callback";
+  getBBox_Callback_0_(mthis) => getBBox_Callback_0(mthis);
+
+  static getBBox_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getBBox_Callback";
+  getBBox_Callback_1_(mthis, __arg_0) => getBBox_Callback_1(mthis, __arg_0);
+
+  static getBBox_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getBBox_Callback";
+  getBBox_Callback_2_(mthis, __arg_0, __arg_1) => getBBox_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCTM_Callback_0(mthis) native "SVGGraphicsElement_getCTM_Callback";
+  getCTM_Callback_0_(mthis) => getCTM_Callback_0(mthis);
+
+  static getCTM_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getCTM_Callback";
+  getCTM_Callback_1_(mthis, __arg_0) => getCTM_Callback_1(mthis, __arg_0);
+
+  static getCTM_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getCTM_Callback";
+  getCTM_Callback_2_(mthis, __arg_0, __arg_1) => getCTM_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getScreenCTM_Callback_0(mthis) native "SVGGraphicsElement_getScreenCTM_Callback";
+  getScreenCTM_Callback_0_(mthis) => getScreenCTM_Callback_0(mthis);
+
+  static getScreenCTM_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getScreenCTM_Callback";
+  getScreenCTM_Callback_1_(mthis, __arg_0) => getScreenCTM_Callback_1(mthis, __arg_0);
+
+  static getScreenCTM_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getScreenCTM_Callback";
+  getScreenCTM_Callback_2_(mthis, __arg_0, __arg_1) => getScreenCTM_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTransformToElement_Callback_0(mthis) native "SVGGraphicsElement_getTransformToElement_Callback";
+  getTransformToElement_Callback_0_(mthis) => getTransformToElement_Callback_0(mthis);
+
+  static getTransformToElement_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_getTransformToElement_Callback";
+  getTransformToElement_Callback_1_(mthis, __arg_0) => getTransformToElement_Callback_1(mthis, __arg_0);
+
+  static getTransformToElement_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_getTransformToElement_Callback";
+  getTransformToElement_Callback_2_(mthis, __arg_0, __arg_1) => getTransformToElement_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTransformToElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGraphicsElement_getTransformToElement_Callback";
+  getTransformToElement_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTransformToElement_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hasExtension_Callback_0(mthis) native "SVGGraphicsElement_hasExtension_Callback";
+  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+
+  static hasExtension_Callback_1(mthis, __arg_0) native "SVGGraphicsElement_hasExtension_Callback";
+  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+
+  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGGraphicsElement_hasExtension_Callback";
+  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGGraphicsElement_hasExtension_Callback";
+  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static nearestViewportElement_Getter(mthis) native "SVGGraphicsElement_nearestViewportElement_Getter";
+  nearestViewportElement_Getter_(mthis) => nearestViewportElement_Getter(mthis);
+
+  static requiredExtensions_Getter(mthis) native "SVGGraphicsElement_requiredExtensions_Getter";
+  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+
+  static requiredFeatures_Getter(mthis) native "SVGGraphicsElement_requiredFeatures_Getter";
+  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+
+  static systemLanguage_Getter(mthis) native "SVGGraphicsElement_systemLanguage_Getter";
+  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+
+  static transform_Getter(mthis) native "SVGGraphicsElement_transform_Getter";
+  transform_Getter_(mthis) => transform_Getter(mthis);
+
+}
+
+class BlinkSVGHKernElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGHKernElement();
+
+}
+
+class BlinkSVGImageElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGImageElement();
+
   static height_Getter(mthis) native "SVGImageElement_height_Getter";
-
-  static preserveAspectRatio_Getter(mthis) native "SVGImageElement_preserveAspectRatio_Getter";
-
-  static width_Getter(mthis) native "SVGImageElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGImageElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGImageElement_y_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static href_Getter(mthis) native "SVGImageElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static preserveAspectRatio_Getter(mthis) native "SVGImageElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGImageElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGImageElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGImageElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
 class BlinkSVGLength {
+  static final instance = new BlinkSVGLength();
+
+  static convertToSpecifiedUnits_Callback_0(mthis) native "SVGLength_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_0_(mthis) => convertToSpecifiedUnits_Callback_0(mthis);
+
+  static convertToSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGLength_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_1_(mthis, __arg_0) => convertToSpecifiedUnits_Callback_1(mthis, __arg_0);
+
+  static convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGLength_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => convertToSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+
+  static convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLength_convertToSpecifiedUnits_Callback";
+  convertToSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => convertToSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static newValueSpecifiedUnits_Callback_0(mthis) native "SVGLength_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_0_(mthis) => newValueSpecifiedUnits_Callback_0(mthis);
+
+  static newValueSpecifiedUnits_Callback_1(mthis, __arg_0) native "SVGLength_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_1_(mthis, __arg_0) => newValueSpecifiedUnits_Callback_1(mthis, __arg_0);
+
+  static newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1) native "SVGLength_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_2_(mthis, __arg_0, __arg_1) => newValueSpecifiedUnits_Callback_2(mthis, __arg_0, __arg_1);
+
+  static newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLength_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => newValueSpecifiedUnits_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLength_newValueSpecifiedUnits_Callback";
+  newValueSpecifiedUnits_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => newValueSpecifiedUnits_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static unitType_Getter(mthis) native "SVGLength_unitType_Getter";
-
-  static value_Getter(mthis) native "SVGLength_value_Getter";
-
-  static value_Setter(mthis, value) native "SVGLength_value_Setter";
+  unitType_Getter_(mthis) => unitType_Getter(mthis);
 
   static valueAsString_Getter(mthis) native "SVGLength_valueAsString_Getter";
+  valueAsString_Getter_(mthis) => valueAsString_Getter(mthis);
 
-  static valueAsString_Setter(mthis, value) native "SVGLength_valueAsString_Setter";
+  static valueAsString_Setter(mthis, __arg_0) native "SVGLength_valueAsString_Setter";
+  valueAsString_Setter_(mthis, __arg_0) => valueAsString_Setter(mthis, __arg_0);
 
   static valueInSpecifiedUnits_Getter(mthis) native "SVGLength_valueInSpecifiedUnits_Getter";
+  valueInSpecifiedUnits_Getter_(mthis) => valueInSpecifiedUnits_Getter(mthis);
 
-  static valueInSpecifiedUnits_Setter(mthis, value) native "SVGLength_valueInSpecifiedUnits_Setter";
+  static valueInSpecifiedUnits_Setter(mthis, __arg_0) native "SVGLength_valueInSpecifiedUnits_Setter";
+  valueInSpecifiedUnits_Setter_(mthis, __arg_0) => valueInSpecifiedUnits_Setter(mthis, __arg_0);
 
-  static convertToSpecifiedUnits_Callback_1(mthis, unitType) native "SVGLength_convertToSpecifiedUnits_Callback";
+  static value_Getter(mthis) native "SVGLength_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
 
-  static newValueSpecifiedUnits_Callback_2(mthis, unitType, valueInSpecifiedUnits) native "SVGLength_newValueSpecifiedUnits_Callback";
+  static value_Setter(mthis, __arg_0) native "SVGLength_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGLengthList {
+  static final instance = new BlinkSVGLengthList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGLengthList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGLengthList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGLengthList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGLengthList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGLengthList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "SVGLengthList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGLengthList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGLengthList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGLengthList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGLengthList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGLengthList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLengthList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGLengthList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGLengthList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGLengthList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGLengthList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, item) native "SVGLengthList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGLengthList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGLengthList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getItem_Callback_1(mthis, index) native "SVGLengthList_getItem_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static initialize_Callback_1(mthis, item) native "SVGLengthList_initialize_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGLengthList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static insertItemBefore_Callback_2(mthis, item, index) native "SVGLengthList_insertItemBefore_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGLengthList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, index) native "SVGLengthList_removeItem_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGLengthList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static replaceItem_Callback_2(mthis, item, index) native "SVGLengthList_replaceItem_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGLengthList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGLengthList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGLineElement {
+class BlinkSVGLineElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGLineElement();
+
   static x1_Getter(mthis) native "SVGLineElement_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
   static x2_Getter(mthis) native "SVGLineElement_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
   static y1_Getter(mthis) native "SVGLineElement_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
   static y2_Getter(mthis) native "SVGLineElement_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
+
 }
 
-class BlinkSVGLinearGradientElement {
+class BlinkSVGLinearGradientElement extends BlinkSVGGradientElement {
+  static final instance = new BlinkSVGLinearGradientElement();
+
   static x1_Getter(mthis) native "SVGLinearGradientElement_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
   static x2_Getter(mthis) native "SVGLinearGradientElement_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
   static y1_Getter(mthis) native "SVGLinearGradientElement_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
   static y2_Getter(mthis) native "SVGLinearGradientElement_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
+
 }
 
-class BlinkSVGMPathElement {}
+class BlinkSVGMPathElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGMPathElement();
 
-class BlinkSVGMarkerElement {
+  static href_Getter(mthis) native "SVGMPathElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+}
+
+class BlinkSVGMarkerElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGMarkerElement();
+
   static markerHeight_Getter(mthis) native "SVGMarkerElement_markerHeight_Getter";
+  markerHeight_Getter_(mthis) => markerHeight_Getter(mthis);
 
   static markerUnits_Getter(mthis) native "SVGMarkerElement_markerUnits_Getter";
+  markerUnits_Getter_(mthis) => markerUnits_Getter(mthis);
 
   static markerWidth_Getter(mthis) native "SVGMarkerElement_markerWidth_Getter";
+  markerWidth_Getter_(mthis) => markerWidth_Getter(mthis);
 
   static orientAngle_Getter(mthis) native "SVGMarkerElement_orientAngle_Getter";
+  orientAngle_Getter_(mthis) => orientAngle_Getter(mthis);
 
   static orientType_Getter(mthis) native "SVGMarkerElement_orientType_Getter";
-
-  static refX_Getter(mthis) native "SVGMarkerElement_refX_Getter";
-
-  static refY_Getter(mthis) native "SVGMarkerElement_refY_Getter";
-
-  static setOrientToAngle_Callback_1(mthis, angle) native "SVGMarkerElement_setOrientToAngle_Callback";
-
-  static setOrientToAuto_Callback(mthis) native "SVGMarkerElement_setOrientToAuto_Callback";
+  orientType_Getter_(mthis) => orientType_Getter(mthis);
 
   static preserveAspectRatio_Getter(mthis) native "SVGMarkerElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static refX_Getter(mthis) native "SVGMarkerElement_refX_Getter";
+  refX_Getter_(mthis) => refX_Getter(mthis);
+
+  static refY_Getter(mthis) native "SVGMarkerElement_refY_Getter";
+  refY_Getter_(mthis) => refY_Getter(mthis);
+
+  static setOrientToAngle_Callback_0(mthis) native "SVGMarkerElement_setOrientToAngle_Callback";
+  setOrientToAngle_Callback_0_(mthis) => setOrientToAngle_Callback_0(mthis);
+
+  static setOrientToAngle_Callback_1(mthis, __arg_0) native "SVGMarkerElement_setOrientToAngle_Callback";
+  setOrientToAngle_Callback_1_(mthis, __arg_0) => setOrientToAngle_Callback_1(mthis, __arg_0);
+
+  static setOrientToAngle_Callback_2(mthis, __arg_0, __arg_1) native "SVGMarkerElement_setOrientToAngle_Callback";
+  setOrientToAngle_Callback_2_(mthis, __arg_0, __arg_1) => setOrientToAngle_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setOrientToAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMarkerElement_setOrientToAngle_Callback";
+  setOrientToAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setOrientToAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setOrientToAuto_Callback_0(mthis) native "SVGMarkerElement_setOrientToAuto_Callback";
+  setOrientToAuto_Callback_0_(mthis) => setOrientToAuto_Callback_0(mthis);
+
+  static setOrientToAuto_Callback_1(mthis, __arg_0) native "SVGMarkerElement_setOrientToAuto_Callback";
+  setOrientToAuto_Callback_1_(mthis, __arg_0) => setOrientToAuto_Callback_1(mthis, __arg_0);
+
+  static setOrientToAuto_Callback_2(mthis, __arg_0, __arg_1) native "SVGMarkerElement_setOrientToAuto_Callback";
+  setOrientToAuto_Callback_2_(mthis, __arg_0, __arg_1) => setOrientToAuto_Callback_2(mthis, __arg_0, __arg_1);
 
   static viewBox_Getter(mthis) native "SVGMarkerElement_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
 }
 
-class BlinkSVGMaskElement {
+class BlinkSVGMaskElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGMaskElement();
+
+  static hasExtension_Callback_0(mthis) native "SVGMaskElement_hasExtension_Callback";
+  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+
+  static hasExtension_Callback_1(mthis, __arg_0) native "SVGMaskElement_hasExtension_Callback";
+  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+
+  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGMaskElement_hasExtension_Callback";
+  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMaskElement_hasExtension_Callback";
+  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static height_Getter(mthis) native "SVGMaskElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static maskContentUnits_Getter(mthis) native "SVGMaskElement_maskContentUnits_Getter";
+  maskContentUnits_Getter_(mthis) => maskContentUnits_Getter(mthis);
 
   static maskUnits_Getter(mthis) native "SVGMaskElement_maskUnits_Getter";
-
-  static width_Getter(mthis) native "SVGMaskElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGMaskElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGMaskElement_y_Getter";
+  maskUnits_Getter_(mthis) => maskUnits_Getter(mthis);
 
   static requiredExtensions_Getter(mthis) native "SVGMaskElement_requiredExtensions_Getter";
+  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
 
   static requiredFeatures_Getter(mthis) native "SVGMaskElement_requiredFeatures_Getter";
+  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
 
   static systemLanguage_Getter(mthis) native "SVGMaskElement_systemLanguage_Getter";
+  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
 
-  static hasExtension_Callback_1(mthis, extension) native "SVGMaskElement_hasExtension_Callback";
+  static width_Getter(mthis) native "SVGMaskElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGMaskElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGMaskElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
 class BlinkSVGMatrix {
-  static a_Getter(mthis) native "SVGMatrix_a_Getter";
+  static final instance = new BlinkSVGMatrix();
 
-  static a_Setter(mthis, value) native "SVGMatrix_a_Setter";
+  static a_Getter(mthis) native "SVGMatrix_a_Getter";
+  a_Getter_(mthis) => a_Getter(mthis);
+
+  static a_Setter(mthis, __arg_0) native "SVGMatrix_a_Setter";
+  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
 
   static b_Getter(mthis) native "SVGMatrix_b_Getter";
+  b_Getter_(mthis) => b_Getter(mthis);
 
-  static b_Setter(mthis, value) native "SVGMatrix_b_Setter";
+  static b_Setter(mthis, __arg_0) native "SVGMatrix_b_Setter";
+  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
 
   static c_Getter(mthis) native "SVGMatrix_c_Getter";
+  c_Getter_(mthis) => c_Getter(mthis);
 
-  static c_Setter(mthis, value) native "SVGMatrix_c_Setter";
+  static c_Setter(mthis, __arg_0) native "SVGMatrix_c_Setter";
+  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
 
   static d_Getter(mthis) native "SVGMatrix_d_Getter";
+  d_Getter_(mthis) => d_Getter(mthis);
 
-  static d_Setter(mthis, value) native "SVGMatrix_d_Setter";
+  static d_Setter(mthis, __arg_0) native "SVGMatrix_d_Setter";
+  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
 
   static e_Getter(mthis) native "SVGMatrix_e_Getter";
+  e_Getter_(mthis) => e_Getter(mthis);
 
-  static e_Setter(mthis, value) native "SVGMatrix_e_Setter";
+  static e_Setter(mthis, __arg_0) native "SVGMatrix_e_Setter";
+  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
 
   static f_Getter(mthis) native "SVGMatrix_f_Getter";
+  f_Getter_(mthis) => f_Getter(mthis);
 
-  static f_Setter(mthis, value) native "SVGMatrix_f_Setter";
+  static f_Setter(mthis, __arg_0) native "SVGMatrix_f_Setter";
+  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
 
-  static flipX_Callback(mthis) native "SVGMatrix_flipX_Callback";
+  static flipX_Callback_0(mthis) native "SVGMatrix_flipX_Callback";
+  flipX_Callback_0_(mthis) => flipX_Callback_0(mthis);
 
-  static flipY_Callback(mthis) native "SVGMatrix_flipY_Callback";
+  static flipX_Callback_1(mthis, __arg_0) native "SVGMatrix_flipX_Callback";
+  flipX_Callback_1_(mthis, __arg_0) => flipX_Callback_1(mthis, __arg_0);
 
-  static inverse_Callback(mthis) native "SVGMatrix_inverse_Callback";
+  static flipX_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_flipX_Callback";
+  flipX_Callback_2_(mthis, __arg_0, __arg_1) => flipX_Callback_2(mthis, __arg_0, __arg_1);
 
-  static multiply_Callback_1(mthis, secondMatrix) native "SVGMatrix_multiply_Callback";
+  static flipY_Callback_0(mthis) native "SVGMatrix_flipY_Callback";
+  flipY_Callback_0_(mthis) => flipY_Callback_0(mthis);
 
-  static rotate_Callback_1(mthis, angle) native "SVGMatrix_rotate_Callback";
+  static flipY_Callback_1(mthis, __arg_0) native "SVGMatrix_flipY_Callback";
+  flipY_Callback_1_(mthis, __arg_0) => flipY_Callback_1(mthis, __arg_0);
 
-  static rotateFromVector_Callback_2(mthis, x, y) native "SVGMatrix_rotateFromVector_Callback";
+  static flipY_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_flipY_Callback";
+  flipY_Callback_2_(mthis, __arg_0, __arg_1) => flipY_Callback_2(mthis, __arg_0, __arg_1);
 
-  static scale_Callback_1(mthis, scaleFactor) native "SVGMatrix_scale_Callback";
+  static inverse_Callback_0(mthis) native "SVGMatrix_inverse_Callback";
+  inverse_Callback_0_(mthis) => inverse_Callback_0(mthis);
 
-  static scaleNonUniform_Callback_2(mthis, scaleFactorX, scaleFactorY) native "SVGMatrix_scaleNonUniform_Callback";
+  static inverse_Callback_1(mthis, __arg_0) native "SVGMatrix_inverse_Callback";
+  inverse_Callback_1_(mthis, __arg_0) => inverse_Callback_1(mthis, __arg_0);
 
-  static skewX_Callback_1(mthis, angle) native "SVGMatrix_skewX_Callback";
+  static inverse_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_inverse_Callback";
+  inverse_Callback_2_(mthis, __arg_0, __arg_1) => inverse_Callback_2(mthis, __arg_0, __arg_1);
 
-  static skewY_Callback_1(mthis, angle) native "SVGMatrix_skewY_Callback";
+  static multiply_Callback_0(mthis) native "SVGMatrix_multiply_Callback";
+  multiply_Callback_0_(mthis) => multiply_Callback_0(mthis);
 
-  static translate_Callback_2(mthis, x, y) native "SVGMatrix_translate_Callback";
+  static multiply_Callback_1(mthis, __arg_0) native "SVGMatrix_multiply_Callback";
+  multiply_Callback_1_(mthis, __arg_0) => multiply_Callback_1(mthis, __arg_0);
+
+  static multiply_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_multiply_Callback";
+  multiply_Callback_2_(mthis, __arg_0, __arg_1) => multiply_Callback_2(mthis, __arg_0, __arg_1);
+
+  static multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_multiply_Callback";
+  multiply_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rotateFromVector_Callback_0(mthis) native "SVGMatrix_rotateFromVector_Callback";
+  rotateFromVector_Callback_0_(mthis) => rotateFromVector_Callback_0(mthis);
+
+  static rotateFromVector_Callback_1(mthis, __arg_0) native "SVGMatrix_rotateFromVector_Callback";
+  rotateFromVector_Callback_1_(mthis, __arg_0) => rotateFromVector_Callback_1(mthis, __arg_0);
+
+  static rotateFromVector_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_rotateFromVector_Callback";
+  rotateFromVector_Callback_2_(mthis, __arg_0, __arg_1) => rotateFromVector_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotateFromVector_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_rotateFromVector_Callback";
+  rotateFromVector_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotateFromVector_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rotateFromVector_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_rotateFromVector_Callback";
+  rotateFromVector_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotateFromVector_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rotate_Callback_0(mthis) native "SVGMatrix_rotate_Callback";
+  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
+
+  static rotate_Callback_1(mthis, __arg_0) native "SVGMatrix_rotate_Callback";
+  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
+
+  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_rotate_Callback";
+  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_rotate_Callback";
+  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scaleNonUniform_Callback_0(mthis) native "SVGMatrix_scaleNonUniform_Callback";
+  scaleNonUniform_Callback_0_(mthis) => scaleNonUniform_Callback_0(mthis);
+
+  static scaleNonUniform_Callback_1(mthis, __arg_0) native "SVGMatrix_scaleNonUniform_Callback";
+  scaleNonUniform_Callback_1_(mthis, __arg_0) => scaleNonUniform_Callback_1(mthis, __arg_0);
+
+  static scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_scaleNonUniform_Callback";
+  scaleNonUniform_Callback_2_(mthis, __arg_0, __arg_1) => scaleNonUniform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_scaleNonUniform_Callback";
+  scaleNonUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scaleNonUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_scaleNonUniform_Callback";
+  scaleNonUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scaleNonUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scale_Callback_0(mthis) native "SVGMatrix_scale_Callback";
+  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
+
+  static scale_Callback_1(mthis, __arg_0) native "SVGMatrix_scale_Callback";
+  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
+
+  static scale_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_scale_Callback";
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_scale_Callback";
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static skewX_Callback_0(mthis) native "SVGMatrix_skewX_Callback";
+  skewX_Callback_0_(mthis) => skewX_Callback_0(mthis);
+
+  static skewX_Callback_1(mthis, __arg_0) native "SVGMatrix_skewX_Callback";
+  skewX_Callback_1_(mthis, __arg_0) => skewX_Callback_1(mthis, __arg_0);
+
+  static skewX_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_skewX_Callback";
+  skewX_Callback_2_(mthis, __arg_0, __arg_1) => skewX_Callback_2(mthis, __arg_0, __arg_1);
+
+  static skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_skewX_Callback";
+  skewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static skewY_Callback_0(mthis) native "SVGMatrix_skewY_Callback";
+  skewY_Callback_0_(mthis) => skewY_Callback_0(mthis);
+
+  static skewY_Callback_1(mthis, __arg_0) native "SVGMatrix_skewY_Callback";
+  skewY_Callback_1_(mthis, __arg_0) => skewY_Callback_1(mthis, __arg_0);
+
+  static skewY_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_skewY_Callback";
+  skewY_Callback_2_(mthis, __arg_0, __arg_1) => skewY_Callback_2(mthis, __arg_0, __arg_1);
+
+  static skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_skewY_Callback";
+  skewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static translate_Callback_0(mthis) native "SVGMatrix_translate_Callback";
+  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
+
+  static translate_Callback_1(mthis, __arg_0) native "SVGMatrix_translate_Callback";
+  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
+
+  static translate_Callback_2(mthis, __arg_0, __arg_1) native "SVGMatrix_translate_Callback";
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGMatrix_translate_Callback";
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGMatrix_translate_Callback";
+  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGMetadataElement {}
+class BlinkSVGMetadataElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGMetadataElement();
 
-class BlinkSVGMissingGlyphElement {}
+}
+
+class BlinkSVGMissingGlyphElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGMissingGlyphElement();
+
+}
 
 class BlinkSVGNumber {
-  static value_Getter(mthis) native "SVGNumber_value_Getter";
+  static final instance = new BlinkSVGNumber();
 
-  static value_Setter(mthis, value) native "SVGNumber_value_Setter";
+  static value_Getter(mthis) native "SVGNumber_value_Getter";
+  value_Getter_(mthis) => value_Getter(mthis);
+
+  static value_Setter(mthis, __arg_0) native "SVGNumber_value_Setter";
+  value_Setter_(mthis, __arg_0) => value_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGNumberList {
+  static final instance = new BlinkSVGNumberList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGNumberList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGNumberList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGNumberList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGNumberList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGNumberList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "SVGNumberList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGNumberList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGNumberList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGNumberList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGNumberList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGNumberList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGNumberList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGNumberList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGNumberList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGNumberList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGNumberList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, item) native "SVGNumberList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGNumberList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGNumberList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getItem_Callback_1(mthis, index) native "SVGNumberList_getItem_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static initialize_Callback_1(mthis, item) native "SVGNumberList_initialize_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGNumberList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static insertItemBefore_Callback_2(mthis, item, index) native "SVGNumberList_insertItemBefore_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGNumberList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, index) native "SVGNumberList_removeItem_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGNumberList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static replaceItem_Callback_2(mthis, item, index) native "SVGNumberList_replaceItem_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGNumberList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGNumberList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGPathElement {
+class BlinkSVGPathElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGPathElement();
+
   static animatedNormalizedPathSegList_Getter(mthis) native "SVGPathElement_animatedNormalizedPathSegList_Getter";
+  animatedNormalizedPathSegList_Getter_(mthis) => animatedNormalizedPathSegList_Getter(mthis);
 
   static animatedPathSegList_Getter(mthis) native "SVGPathElement_animatedPathSegList_Getter";
+  animatedPathSegList_Getter_(mthis) => animatedPathSegList_Getter(mthis);
+
+  static createSVGPathSegArcAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+  createSVGPathSegArcAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegArcAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegArcAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+  createSVGPathSegArcAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegArcAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegArcAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+  createSVGPathSegArcAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegArcAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createSVGPathSegArcAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+  createSVGPathSegArcAbs_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegArcAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static createSVGPathSegArcAbs_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
+  createSVGPathSegArcAbs_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createSVGPathSegArcAbs_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static createSVGPathSegArcRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+  createSVGPathSegArcRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegArcRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegArcRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+  createSVGPathSegArcRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegArcRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegArcRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+  createSVGPathSegArcRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegArcRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createSVGPathSegArcRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+  createSVGPathSegArcRel_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegArcRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static createSVGPathSegArcRel_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SVGPathElement_createSVGPathSegArcRel_Callback";
+  createSVGPathSegArcRel_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => createSVGPathSegArcRel_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static createSVGPathSegClosePath_Callback_0(mthis) native "SVGPathElement_createSVGPathSegClosePath_Callback";
+  createSVGPathSegClosePath_Callback_0_(mthis) => createSVGPathSegClosePath_Callback_0(mthis);
+
+  static createSVGPathSegClosePath_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegClosePath_Callback";
+  createSVGPathSegClosePath_Callback_1_(mthis, __arg_0) => createSVGPathSegClosePath_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegClosePath_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegClosePath_Callback";
+  createSVGPathSegClosePath_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegClosePath_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoCubicAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+  createSVGPathSegCurvetoCubicAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoCubicAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+  createSVGPathSegCurvetoCubicAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+  createSVGPathSegCurvetoCubicAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoCubicAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+  createSVGPathSegCurvetoCubicAbs_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegCurvetoCubicAbs_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createSVGPathSegCurvetoCubicAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
+  createSVGPathSegCurvetoCubicAbs_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegCurvetoCubicAbs_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static createSVGPathSegCurvetoCubicRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+  createSVGPathSegCurvetoCubicRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoCubicRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+  createSVGPathSegCurvetoCubicRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoCubicRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+  createSVGPathSegCurvetoCubicRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoCubicRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+  createSVGPathSegCurvetoCubicRel_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createSVGPathSegCurvetoCubicRel_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static createSVGPathSegCurvetoCubicRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
+  createSVGPathSegCurvetoCubicRel_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => createSVGPathSegCurvetoCubicRel_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
+  createSVGPathSegCurvetoCubicSmoothAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicSmoothAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoCubicSmoothRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoCubicSmoothRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoCubicSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoCubicSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoCubicSmoothRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoCubicSmoothRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoCubicSmoothRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
+  createSVGPathSegCurvetoCubicSmoothRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoCubicSmoothRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoQuadraticAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+  createSVGPathSegCurvetoQuadraticAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoQuadraticAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+  createSVGPathSegCurvetoQuadraticAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+  createSVGPathSegCurvetoQuadraticAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoQuadraticAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+  createSVGPathSegCurvetoQuadraticAbs_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoQuadraticAbs_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoQuadraticAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
+  createSVGPathSegCurvetoQuadraticAbs_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoQuadraticAbs_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoQuadraticRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+  createSVGPathSegCurvetoQuadraticRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoQuadraticRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+  createSVGPathSegCurvetoQuadraticRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+  createSVGPathSegCurvetoQuadraticRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoQuadraticRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+  createSVGPathSegCurvetoQuadraticRel_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createSVGPathSegCurvetoQuadraticRel_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createSVGPathSegCurvetoQuadraticRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
+  createSVGPathSegCurvetoQuadraticRel_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createSVGPathSegCurvetoQuadraticRel_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0_(mthis) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_0(mthis);
+
+  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0_(mthis) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_0(mthis);
+
+  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1_(mthis, __arg_0) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
+  createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegCurvetoQuadraticSmoothRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegLinetoAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+  createSVGPathSegLinetoAbs_Callback_0_(mthis) => createSVGPathSegLinetoAbs_Callback_0(mthis);
+
+  static createSVGPathSegLinetoAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+  createSVGPathSegLinetoAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoAbs_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+  createSVGPathSegLinetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+  createSVGPathSegLinetoAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegLinetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
+  createSVGPathSegLinetoAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegLinetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegLinetoHorizontalAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
+  createSVGPathSegLinetoHorizontalAbs_Callback_0_(mthis) => createSVGPathSegLinetoHorizontalAbs_Callback_0(mthis);
+
+  static createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
+  createSVGPathSegLinetoHorizontalAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoHorizontalAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
+  createSVGPathSegLinetoHorizontalAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoHorizontalAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoHorizontalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
+  createSVGPathSegLinetoHorizontalAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoHorizontalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegLinetoHorizontalRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
+  createSVGPathSegLinetoHorizontalRel_Callback_0_(mthis) => createSVGPathSegLinetoHorizontalRel_Callback_0(mthis);
+
+  static createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
+  createSVGPathSegLinetoHorizontalRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoHorizontalRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
+  createSVGPathSegLinetoHorizontalRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoHorizontalRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoHorizontalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
+  createSVGPathSegLinetoHorizontalRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoHorizontalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegLinetoRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+  createSVGPathSegLinetoRel_Callback_0_(mthis) => createSVGPathSegLinetoRel_Callback_0(mthis);
+
+  static createSVGPathSegLinetoRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+  createSVGPathSegLinetoRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoRel_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+  createSVGPathSegLinetoRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+  createSVGPathSegLinetoRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegLinetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
+  createSVGPathSegLinetoRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegLinetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegLinetoVerticalAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
+  createSVGPathSegLinetoVerticalAbs_Callback_0_(mthis) => createSVGPathSegLinetoVerticalAbs_Callback_0(mthis);
+
+  static createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
+  createSVGPathSegLinetoVerticalAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoVerticalAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
+  createSVGPathSegLinetoVerticalAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoVerticalAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoVerticalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
+  createSVGPathSegLinetoVerticalAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoVerticalAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegLinetoVerticalRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
+  createSVGPathSegLinetoVerticalRel_Callback_0_(mthis) => createSVGPathSegLinetoVerticalRel_Callback_0(mthis);
+
+  static createSVGPathSegLinetoVerticalRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
+  createSVGPathSegLinetoVerticalRel_Callback_1_(mthis, __arg_0) => createSVGPathSegLinetoVerticalRel_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegLinetoVerticalRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
+  createSVGPathSegLinetoVerticalRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegLinetoVerticalRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegLinetoVerticalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
+  createSVGPathSegLinetoVerticalRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegLinetoVerticalRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegMovetoAbs_Callback_0(mthis) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+  createSVGPathSegMovetoAbs_Callback_0_(mthis) => createSVGPathSegMovetoAbs_Callback_0(mthis);
+
+  static createSVGPathSegMovetoAbs_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+  createSVGPathSegMovetoAbs_Callback_1_(mthis, __arg_0) => createSVGPathSegMovetoAbs_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegMovetoAbs_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+  createSVGPathSegMovetoAbs_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegMovetoAbs_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegMovetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+  createSVGPathSegMovetoAbs_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegMovetoAbs_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegMovetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
+  createSVGPathSegMovetoAbs_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegMovetoAbs_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGPathSegMovetoRel_Callback_0(mthis) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+  createSVGPathSegMovetoRel_Callback_0_(mthis) => createSVGPathSegMovetoRel_Callback_0(mthis);
+
+  static createSVGPathSegMovetoRel_Callback_1(mthis, __arg_0) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+  createSVGPathSegMovetoRel_Callback_1_(mthis, __arg_0) => createSVGPathSegMovetoRel_Callback_1(mthis, __arg_0);
+
+  static createSVGPathSegMovetoRel_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+  createSVGPathSegMovetoRel_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPathSegMovetoRel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPathSegMovetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+  createSVGPathSegMovetoRel_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGPathSegMovetoRel_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGPathSegMovetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
+  createSVGPathSegMovetoRel_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createSVGPathSegMovetoRel_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getPathSegAtLength_Callback_0(mthis) native "SVGPathElement_getPathSegAtLength_Callback";
+  getPathSegAtLength_Callback_0_(mthis) => getPathSegAtLength_Callback_0(mthis);
+
+  static getPathSegAtLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getPathSegAtLength_Callback";
+  getPathSegAtLength_Callback_1_(mthis, __arg_0) => getPathSegAtLength_Callback_1(mthis, __arg_0);
+
+  static getPathSegAtLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getPathSegAtLength_Callback";
+  getPathSegAtLength_Callback_2_(mthis, __arg_0, __arg_1) => getPathSegAtLength_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getPathSegAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_getPathSegAtLength_Callback";
+  getPathSegAtLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPathSegAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getPointAtLength_Callback_0(mthis) native "SVGPathElement_getPointAtLength_Callback";
+  getPointAtLength_Callback_0_(mthis) => getPointAtLength_Callback_0(mthis);
+
+  static getPointAtLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getPointAtLength_Callback";
+  getPointAtLength_Callback_1_(mthis, __arg_0) => getPointAtLength_Callback_1(mthis, __arg_0);
+
+  static getPointAtLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getPointAtLength_Callback";
+  getPointAtLength_Callback_2_(mthis, __arg_0, __arg_1) => getPointAtLength_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getPointAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathElement_getPointAtLength_Callback";
+  getPointAtLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getPointAtLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getTotalLength_Callback_0(mthis) native "SVGPathElement_getTotalLength_Callback";
+  getTotalLength_Callback_0_(mthis) => getTotalLength_Callback_0(mthis);
+
+  static getTotalLength_Callback_1(mthis, __arg_0) native "SVGPathElement_getTotalLength_Callback";
+  getTotalLength_Callback_1_(mthis, __arg_0) => getTotalLength_Callback_1(mthis, __arg_0);
+
+  static getTotalLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathElement_getTotalLength_Callback";
+  getTotalLength_Callback_2_(mthis, __arg_0, __arg_1) => getTotalLength_Callback_2(mthis, __arg_0, __arg_1);
 
   static normalizedPathSegList_Getter(mthis) native "SVGPathElement_normalizedPathSegList_Getter";
+  normalizedPathSegList_Getter_(mthis) => normalizedPathSegList_Getter(mthis);
 
   static pathLength_Getter(mthis) native "SVGPathElement_pathLength_Getter";
+  pathLength_Getter_(mthis) => pathLength_Getter(mthis);
 
   static pathSegList_Getter(mthis) native "SVGPathElement_pathSegList_Getter";
+  pathSegList_Getter_(mthis) => pathSegList_Getter(mthis);
 
-  static createSVGPathSegArcAbs_Callback_7(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcAbs_Callback";
-
-  static createSVGPathSegArcRel_Callback_7(mthis, x, y, r1, r2, angle, largeArcFlag, sweepFlag) native "SVGPathElement_createSVGPathSegArcRel_Callback";
-
-  static createSVGPathSegClosePath_Callback(mthis) native "SVGPathElement_createSVGPathSegClosePath_Callback";
-
-  static createSVGPathSegCurvetoCubicAbs_Callback_6(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicAbs_Callback";
-
-  static createSVGPathSegCurvetoCubicRel_Callback_6(mthis, x, y, x1, y1, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicRel_Callback";
-
-  static createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothAbs_Callback";
-
-  static createSVGPathSegCurvetoCubicSmoothRel_Callback_4(mthis, x, y, x2, y2) native "SVGPathElement_createSVGPathSegCurvetoCubicSmoothRel_Callback";
-
-  static createSVGPathSegCurvetoQuadraticAbs_Callback_4(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticAbs_Callback";
-
-  static createSVGPathSegCurvetoQuadraticRel_Callback_4(mthis, x, y, x1, y1) native "SVGPathElement_createSVGPathSegCurvetoQuadraticRel_Callback";
-
-  static createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothAbs_Callback";
-
-  static createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegCurvetoQuadraticSmoothRel_Callback";
-
-  static createSVGPathSegLinetoAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoAbs_Callback";
-
-  static createSVGPathSegLinetoHorizontalAbs_Callback_1(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalAbs_Callback";
-
-  static createSVGPathSegLinetoHorizontalRel_Callback_1(mthis, x) native "SVGPathElement_createSVGPathSegLinetoHorizontalRel_Callback";
-
-  static createSVGPathSegLinetoRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegLinetoRel_Callback";
-
-  static createSVGPathSegLinetoVerticalAbs_Callback_1(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalAbs_Callback";
-
-  static createSVGPathSegLinetoVerticalRel_Callback_1(mthis, y) native "SVGPathElement_createSVGPathSegLinetoVerticalRel_Callback";
-
-  static createSVGPathSegMovetoAbs_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoAbs_Callback";
-
-  static createSVGPathSegMovetoRel_Callback_2(mthis, x, y) native "SVGPathElement_createSVGPathSegMovetoRel_Callback";
-
-  static getPathSegAtLength_Callback_1(mthis, distance) native "SVGPathElement_getPathSegAtLength_Callback";
-
-  static getPointAtLength_Callback_1(mthis, distance) native "SVGPathElement_getPointAtLength_Callback";
-
-  static getTotalLength_Callback(mthis) native "SVGPathElement_getTotalLength_Callback";
 }
 
 class BlinkSVGPathSeg {
-  static pathSegType_Getter(mthis) native "SVGPathSeg_pathSegType_Getter";
+  static final instance = new BlinkSVGPathSeg();
 
   static pathSegTypeAsLetter_Getter(mthis) native "SVGPathSeg_pathSegTypeAsLetter_Getter";
+  pathSegTypeAsLetter_Getter_(mthis) => pathSegTypeAsLetter_Getter(mthis);
+
+  static pathSegType_Getter(mthis) native "SVGPathSeg_pathSegType_Getter";
+  pathSegType_Getter_(mthis) => pathSegType_Getter(mthis);
+
 }
 
-class BlinkSVGPathSegArcAbs {
-  static angle_Getter(mthis) native "SVGPathSegArcAbs_angle_Getter";
+class BlinkSVGPathSegArcAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegArcAbs();
 
-  static angle_Setter(mthis, value) native "SVGPathSegArcAbs_angle_Setter";
+  static angle_Getter(mthis) native "SVGPathSegArcAbs_angle_Getter";
+  angle_Getter_(mthis) => angle_Getter(mthis);
+
+  static angle_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_angle_Setter";
+  angle_Setter_(mthis, __arg_0) => angle_Setter(mthis, __arg_0);
 
   static largeArcFlag_Getter(mthis) native "SVGPathSegArcAbs_largeArcFlag_Getter";
+  largeArcFlag_Getter_(mthis) => largeArcFlag_Getter(mthis);
 
-  static largeArcFlag_Setter(mthis, value) native "SVGPathSegArcAbs_largeArcFlag_Setter";
+  static largeArcFlag_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_largeArcFlag_Setter";
+  largeArcFlag_Setter_(mthis, __arg_0) => largeArcFlag_Setter(mthis, __arg_0);
 
   static r1_Getter(mthis) native "SVGPathSegArcAbs_r1_Getter";
+  r1_Getter_(mthis) => r1_Getter(mthis);
 
-  static r1_Setter(mthis, value) native "SVGPathSegArcAbs_r1_Setter";
+  static r1_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_r1_Setter";
+  r1_Setter_(mthis, __arg_0) => r1_Setter(mthis, __arg_0);
 
   static r2_Getter(mthis) native "SVGPathSegArcAbs_r2_Getter";
+  r2_Getter_(mthis) => r2_Getter(mthis);
 
-  static r2_Setter(mthis, value) native "SVGPathSegArcAbs_r2_Setter";
+  static r2_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_r2_Setter";
+  r2_Setter_(mthis, __arg_0) => r2_Setter(mthis, __arg_0);
 
   static sweepFlag_Getter(mthis) native "SVGPathSegArcAbs_sweepFlag_Getter";
+  sweepFlag_Getter_(mthis) => sweepFlag_Getter(mthis);
 
-  static sweepFlag_Setter(mthis, value) native "SVGPathSegArcAbs_sweepFlag_Setter";
+  static sweepFlag_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_sweepFlag_Setter";
+  sweepFlag_Setter_(mthis, __arg_0) => sweepFlag_Setter(mthis, __arg_0);
 
   static x_Getter(mthis) native "SVGPathSegArcAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "SVGPathSegArcAbs_x_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegArcAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegArcAbs_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegArcAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegArcRel {
-  static angle_Getter(mthis) native "SVGPathSegArcRel_angle_Getter";
+class BlinkSVGPathSegArcRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegArcRel();
 
-  static angle_Setter(mthis, value) native "SVGPathSegArcRel_angle_Setter";
+  static angle_Getter(mthis) native "SVGPathSegArcRel_angle_Getter";
+  angle_Getter_(mthis) => angle_Getter(mthis);
+
+  static angle_Setter(mthis, __arg_0) native "SVGPathSegArcRel_angle_Setter";
+  angle_Setter_(mthis, __arg_0) => angle_Setter(mthis, __arg_0);
 
   static largeArcFlag_Getter(mthis) native "SVGPathSegArcRel_largeArcFlag_Getter";
+  largeArcFlag_Getter_(mthis) => largeArcFlag_Getter(mthis);
 
-  static largeArcFlag_Setter(mthis, value) native "SVGPathSegArcRel_largeArcFlag_Setter";
+  static largeArcFlag_Setter(mthis, __arg_0) native "SVGPathSegArcRel_largeArcFlag_Setter";
+  largeArcFlag_Setter_(mthis, __arg_0) => largeArcFlag_Setter(mthis, __arg_0);
 
   static r1_Getter(mthis) native "SVGPathSegArcRel_r1_Getter";
+  r1_Getter_(mthis) => r1_Getter(mthis);
 
-  static r1_Setter(mthis, value) native "SVGPathSegArcRel_r1_Setter";
+  static r1_Setter(mthis, __arg_0) native "SVGPathSegArcRel_r1_Setter";
+  r1_Setter_(mthis, __arg_0) => r1_Setter(mthis, __arg_0);
 
   static r2_Getter(mthis) native "SVGPathSegArcRel_r2_Getter";
+  r2_Getter_(mthis) => r2_Getter(mthis);
 
-  static r2_Setter(mthis, value) native "SVGPathSegArcRel_r2_Setter";
+  static r2_Setter(mthis, __arg_0) native "SVGPathSegArcRel_r2_Setter";
+  r2_Setter_(mthis, __arg_0) => r2_Setter(mthis, __arg_0);
 
   static sweepFlag_Getter(mthis) native "SVGPathSegArcRel_sweepFlag_Getter";
+  sweepFlag_Getter_(mthis) => sweepFlag_Getter(mthis);
 
-  static sweepFlag_Setter(mthis, value) native "SVGPathSegArcRel_sweepFlag_Setter";
+  static sweepFlag_Setter(mthis, __arg_0) native "SVGPathSegArcRel_sweepFlag_Setter";
+  sweepFlag_Setter_(mthis, __arg_0) => sweepFlag_Setter(mthis, __arg_0);
 
   static x_Getter(mthis) native "SVGPathSegArcRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "SVGPathSegArcRel_x_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegArcRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegArcRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegArcRel_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegArcRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegClosePath {}
+class BlinkSVGPathSegClosePath extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegClosePath();
 
-class BlinkSVGPathSegCurvetoCubicAbs {
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x_Getter";
+}
 
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x_Setter";
+class BlinkSVGPathSegCurvetoCubicAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoCubicAbs();
 
   static x1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
-  static x1_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x1_Setter";
+  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x1_Setter";
+  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
 
   static x2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
-  static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_x2_Setter";
+  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x2_Setter";
+  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y1_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
-  static y1_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y1_Setter";
+  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y1_Setter";
+  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
 
   static y2_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
 
-  static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicAbs_y2_Setter";
+  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y2_Setter";
+  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoCubicAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoCubicRel {
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x_Getter";
-
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x_Setter";
+class BlinkSVGPathSegCurvetoCubicRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoCubicRel();
 
   static x1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
-  static x1_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x1_Setter";
+  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x1_Setter";
+  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
 
   static x2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
-  static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_x2_Setter";
+  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x2_Setter";
+  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoCubicRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y1_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
-  static y1_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y1_Setter";
+  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y1_Setter";
+  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
 
   static y2_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
 
-  static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicRel_y2_Setter";
+  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y2_Setter";
+  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoCubicRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoCubicSmoothAbs {
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x_Getter";
-
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x_Setter";
+class BlinkSVGPathSegCurvetoCubicSmoothAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoCubicSmoothAbs();
 
   static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
-  static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Setter";
+  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_x2_Setter";
+  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
 
-  static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Setter";
+  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_y2_Setter";
+  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoCubicSmoothRel {
-  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x_Getter";
-
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x_Setter";
+class BlinkSVGPathSegCurvetoCubicSmoothRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoCubicSmoothRel();
 
   static x2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x2_Getter";
+  x2_Getter_(mthis) => x2_Getter(mthis);
 
-  static x2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_x2_Setter";
+  static x2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_x2_Setter";
+  x2_Setter_(mthis, __arg_0) => x2_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y2_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y2_Getter";
+  y2_Getter_(mthis) => y2_Getter(mthis);
 
-  static y2_Setter(mthis, value) native "SVGPathSegCurvetoCubicSmoothRel_y2_Setter";
+  static y2_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_y2_Setter";
+  y2_Setter_(mthis, __arg_0) => y2_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoCubicSmoothRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoCubicSmoothRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoQuadraticAbs {
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x_Getter";
-
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x_Setter";
+class BlinkSVGPathSegCurvetoQuadraticAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoQuadraticAbs();
 
   static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
-  static x1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_x1_Setter";
+  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_x1_Setter";
+  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
-  static y1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticAbs_y1_Setter";
+  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_y1_Setter";
+  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoQuadraticRel {
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x_Getter";
-
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x_Setter";
+class BlinkSVGPathSegCurvetoQuadraticRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoQuadraticRel();
 
   static x1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x1_Getter";
+  x1_Getter_(mthis) => x1_Getter(mthis);
 
-  static x1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_x1_Setter";
+  static x1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_x1_Setter";
+  x1_Setter_(mthis, __arg_0) => x1_Setter(mthis, __arg_0);
 
-  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y_Getter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y1_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y1_Getter";
+  y1_Getter_(mthis) => y1_Getter(mthis);
 
-  static y1_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticRel_y1_Setter";
+  static y1_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_y1_Setter";
+  y1_Setter_(mthis, __arg_0) => y1_Setter(mthis, __arg_0);
+
+  static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoQuadraticSmoothAbs {
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Getter";
+class BlinkSVGPathSegCurvetoQuadraticSmoothAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothAbs();
 
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegCurvetoQuadraticSmoothRel {
-  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Getter";
+class BlinkSVGPathSegCurvetoQuadraticSmoothRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegCurvetoQuadraticSmoothRel();
 
-  static x_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegCurvetoQuadraticSmoothRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoAbs {
-  static x_Getter(mthis) native "SVGPathSegLinetoAbs_x_Getter";
+class BlinkSVGPathSegLinetoAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoAbs();
 
-  static x_Setter(mthis, value) native "SVGPathSegLinetoAbs_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegLinetoAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegLinetoAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegLinetoAbs_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoHorizontalAbs {
+class BlinkSVGPathSegLinetoHorizontalAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoHorizontalAbs();
+
   static x_Getter(mthis) native "SVGPathSegLinetoHorizontalAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "SVGPathSegLinetoHorizontalAbs_x_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoHorizontalAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoHorizontalRel {
+class BlinkSVGPathSegLinetoHorizontalRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoHorizontalRel();
+
   static x_Getter(mthis) native "SVGPathSegLinetoHorizontalRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "SVGPathSegLinetoHorizontalRel_x_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoHorizontalRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoRel {
-  static x_Getter(mthis) native "SVGPathSegLinetoRel_x_Getter";
+class BlinkSVGPathSegLinetoRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoRel();
 
-  static x_Setter(mthis, value) native "SVGPathSegLinetoRel_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegLinetoRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegLinetoRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegLinetoRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegLinetoRel_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoVerticalAbs {
+class BlinkSVGPathSegLinetoVerticalAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoVerticalAbs();
+
   static y_Getter(mthis) native "SVGPathSegLinetoVerticalAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegLinetoVerticalAbs_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoVerticalAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegLinetoVerticalRel {
-  static y_Getter(mthis) native "SVGPathSegLinetoVerticalRel_y_Getter";
+class BlinkSVGPathSegLinetoVerticalRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegLinetoVerticalRel();
 
-  static y_Setter(mthis, value) native "SVGPathSegLinetoVerticalRel_y_Setter";
+  static y_Getter(mthis) native "SVGPathSegLinetoVerticalRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+  static y_Setter(mthis, __arg_0) native "SVGPathSegLinetoVerticalRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGPathSegList {
+  static final instance = new BlinkSVGPathSegList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGPathSegList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGPathSegList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGPathSegList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGPathSegList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "SVGPathSegList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGPathSegList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGPathSegList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGPathSegList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGPathSegList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathSegList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGPathSegList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGPathSegList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGPathSegList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGPathSegList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, newItem) native "SVGPathSegList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGPathSegList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getItem_Callback_1(mthis, index) native "SVGPathSegList_getItem_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static initialize_Callback_1(mthis, newItem) native "SVGPathSegList_initialize_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGPathSegList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static insertItemBefore_Callback_2(mthis, newItem, index) native "SVGPathSegList_insertItemBefore_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGPathSegList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, index) native "SVGPathSegList_removeItem_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPathSegList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static replaceItem_Callback_2(mthis, newItem, index) native "SVGPathSegList_replaceItem_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPathSegList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPathSegList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGPathSegMovetoAbs {
-  static x_Getter(mthis) native "SVGPathSegMovetoAbs_x_Getter";
+class BlinkSVGPathSegMovetoAbs extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegMovetoAbs();
 
-  static x_Setter(mthis, value) native "SVGPathSegMovetoAbs_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegMovetoAbs_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegMovetoAbs_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegMovetoAbs_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegMovetoAbs_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegMovetoAbs_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPathSegMovetoRel {
-  static x_Getter(mthis) native "SVGPathSegMovetoRel_x_Getter";
+class BlinkSVGPathSegMovetoRel extends BlinkSVGPathSeg {
+  static final instance = new BlinkSVGPathSegMovetoRel();
 
-  static x_Setter(mthis, value) native "SVGPathSegMovetoRel_x_Setter";
+  static x_Getter(mthis) native "SVGPathSegMovetoRel_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPathSegMovetoRel_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPathSegMovetoRel_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPathSegMovetoRel_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPathSegMovetoRel_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGPatternElement {
+class BlinkSVGPatternElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGPatternElement();
+
+  static hasExtension_Callback_0(mthis) native "SVGPatternElement_hasExtension_Callback";
+  hasExtension_Callback_0_(mthis) => hasExtension_Callback_0(mthis);
+
+  static hasExtension_Callback_1(mthis, __arg_0) native "SVGPatternElement_hasExtension_Callback";
+  hasExtension_Callback_1_(mthis, __arg_0) => hasExtension_Callback_1(mthis, __arg_0);
+
+  static hasExtension_Callback_2(mthis, __arg_0, __arg_1) native "SVGPatternElement_hasExtension_Callback";
+  hasExtension_Callback_2_(mthis, __arg_0, __arg_1) => hasExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPatternElement_hasExtension_Callback";
+  hasExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hasExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static height_Getter(mthis) native "SVGPatternElement_height_Getter";
-
-  static patternContentUnits_Getter(mthis) native "SVGPatternElement_patternContentUnits_Getter";
-
-  static patternTransform_Getter(mthis) native "SVGPatternElement_patternTransform_Getter";
-
-  static patternUnits_Getter(mthis) native "SVGPatternElement_patternUnits_Getter";
-
-  static width_Getter(mthis) native "SVGPatternElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGPatternElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGPatternElement_y_Getter";
-
-  static preserveAspectRatio_Getter(mthis) native "SVGPatternElement_preserveAspectRatio_Getter";
-
-  static viewBox_Getter(mthis) native "SVGPatternElement_viewBox_Getter";
-
-  static requiredExtensions_Getter(mthis) native "SVGPatternElement_requiredExtensions_Getter";
-
-  static requiredFeatures_Getter(mthis) native "SVGPatternElement_requiredFeatures_Getter";
-
-  static systemLanguage_Getter(mthis) native "SVGPatternElement_systemLanguage_Getter";
-
-  static hasExtension_Callback_1(mthis, extension) native "SVGPatternElement_hasExtension_Callback";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static href_Getter(mthis) native "SVGPatternElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static patternContentUnits_Getter(mthis) native "SVGPatternElement_patternContentUnits_Getter";
+  patternContentUnits_Getter_(mthis) => patternContentUnits_Getter(mthis);
+
+  static patternTransform_Getter(mthis) native "SVGPatternElement_patternTransform_Getter";
+  patternTransform_Getter_(mthis) => patternTransform_Getter(mthis);
+
+  static patternUnits_Getter(mthis) native "SVGPatternElement_patternUnits_Getter";
+  patternUnits_Getter_(mthis) => patternUnits_Getter(mthis);
+
+  static preserveAspectRatio_Getter(mthis) native "SVGPatternElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static requiredExtensions_Getter(mthis) native "SVGPatternElement_requiredExtensions_Getter";
+  requiredExtensions_Getter_(mthis) => requiredExtensions_Getter(mthis);
+
+  static requiredFeatures_Getter(mthis) native "SVGPatternElement_requiredFeatures_Getter";
+  requiredFeatures_Getter_(mthis) => requiredFeatures_Getter(mthis);
+
+  static systemLanguage_Getter(mthis) native "SVGPatternElement_systemLanguage_Getter";
+  systemLanguage_Getter_(mthis) => systemLanguage_Getter(mthis);
+
+  static viewBox_Getter(mthis) native "SVGPatternElement_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGPatternElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGPatternElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGPatternElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
 class BlinkSVGPoint {
-  static x_Getter(mthis) native "SVGPoint_x_Getter";
+  static final instance = new BlinkSVGPoint();
 
-  static x_Setter(mthis, value) native "SVGPoint_x_Setter";
+  static matrixTransform_Callback_0(mthis) native "SVGPoint_matrixTransform_Callback";
+  matrixTransform_Callback_0_(mthis) => matrixTransform_Callback_0(mthis);
+
+  static matrixTransform_Callback_1(mthis, __arg_0) native "SVGPoint_matrixTransform_Callback";
+  matrixTransform_Callback_1_(mthis, __arg_0) => matrixTransform_Callback_1(mthis, __arg_0);
+
+  static matrixTransform_Callback_2(mthis, __arg_0, __arg_1) native "SVGPoint_matrixTransform_Callback";
+  matrixTransform_Callback_2_(mthis, __arg_0, __arg_1) => matrixTransform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static matrixTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPoint_matrixTransform_Callback";
+  matrixTransform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matrixTransform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static x_Getter(mthis) native "SVGPoint_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static x_Setter(mthis, __arg_0) native "SVGPoint_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGPoint_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGPoint_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGPoint_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
 
-  static matrixTransform_Callback_1(mthis, matrix) native "SVGPoint_matrixTransform_Callback";
 }
 
 class BlinkSVGPointList {
+  static final instance = new BlinkSVGPointList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGPointList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGPointList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGPointList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGPointList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGPointList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "SVGPointList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGPointList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGPointList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGPointList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGPointList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGPointList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPointList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGPointList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGPointList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGPointList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGPointList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, item) native "SVGPointList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGPointList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGPointList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getItem_Callback_1(mthis, index) native "SVGPointList_getItem_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static initialize_Callback_1(mthis, item) native "SVGPointList_initialize_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGPointList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static insertItemBefore_Callback_2(mthis, item, index) native "SVGPointList_insertItemBefore_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGPointList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, index) native "SVGPointList_removeItem_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGPointList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static replaceItem_Callback_2(mthis, item, index) native "SVGPointList_replaceItem_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGPointList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGPointList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGPolygonElement {
+class BlinkSVGPolygonElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGPolygonElement();
+
   static animatedPoints_Getter(mthis) native "SVGPolygonElement_animatedPoints_Getter";
+  animatedPoints_Getter_(mthis) => animatedPoints_Getter(mthis);
 
   static points_Getter(mthis) native "SVGPolygonElement_points_Getter";
+  points_Getter_(mthis) => points_Getter(mthis);
+
 }
 
-class BlinkSVGPolylineElement {
+class BlinkSVGPolylineElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGPolylineElement();
+
   static animatedPoints_Getter(mthis) native "SVGPolylineElement_animatedPoints_Getter";
+  animatedPoints_Getter_(mthis) => animatedPoints_Getter(mthis);
 
   static points_Getter(mthis) native "SVGPolylineElement_points_Getter";
+  points_Getter_(mthis) => points_Getter(mthis);
+
 }
 
 class BlinkSVGPreserveAspectRatio {
-  static align_Getter(mthis) native "SVGPreserveAspectRatio_align_Getter";
+  static final instance = new BlinkSVGPreserveAspectRatio();
 
-  static align_Setter(mthis, value) native "SVGPreserveAspectRatio_align_Setter";
+  static align_Getter(mthis) native "SVGPreserveAspectRatio_align_Getter";
+  align_Getter_(mthis) => align_Getter(mthis);
+
+  static align_Setter(mthis, __arg_0) native "SVGPreserveAspectRatio_align_Setter";
+  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
 
   static meetOrSlice_Getter(mthis) native "SVGPreserveAspectRatio_meetOrSlice_Getter";
+  meetOrSlice_Getter_(mthis) => meetOrSlice_Getter(mthis);
 
-  static meetOrSlice_Setter(mthis, value) native "SVGPreserveAspectRatio_meetOrSlice_Setter";
+  static meetOrSlice_Setter(mthis, __arg_0) native "SVGPreserveAspectRatio_meetOrSlice_Setter";
+  meetOrSlice_Setter_(mthis, __arg_0) => meetOrSlice_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGRadialGradientElement {
+class BlinkSVGRadialGradientElement extends BlinkSVGGradientElement {
+  static final instance = new BlinkSVGRadialGradientElement();
+
   static cx_Getter(mthis) native "SVGRadialGradientElement_cx_Getter";
+  cx_Getter_(mthis) => cx_Getter(mthis);
 
   static cy_Getter(mthis) native "SVGRadialGradientElement_cy_Getter";
+  cy_Getter_(mthis) => cy_Getter(mthis);
 
   static fr_Getter(mthis) native "SVGRadialGradientElement_fr_Getter";
+  fr_Getter_(mthis) => fr_Getter(mthis);
 
   static fx_Getter(mthis) native "SVGRadialGradientElement_fx_Getter";
+  fx_Getter_(mthis) => fx_Getter(mthis);
 
   static fy_Getter(mthis) native "SVGRadialGradientElement_fy_Getter";
+  fy_Getter_(mthis) => fy_Getter(mthis);
 
   static r_Getter(mthis) native "SVGRadialGradientElement_r_Getter";
+  r_Getter_(mthis) => r_Getter(mthis);
+
 }
 
 class BlinkSVGRect {
-  static height_Getter(mthis) native "SVGRect_height_Getter";
+  static final instance = new BlinkSVGRect();
 
-  static height_Setter(mthis, value) native "SVGRect_height_Setter";
+  static height_Getter(mthis) native "SVGRect_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static height_Setter(mthis, __arg_0) native "SVGRect_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "SVGRect_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "SVGRect_width_Setter";
+  static width_Setter(mthis, __arg_0) native "SVGRect_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
 
   static x_Getter(mthis) native "SVGRect_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "SVGRect_x_Setter";
+  static x_Setter(mthis, __arg_0) native "SVGRect_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "SVGRect_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "SVGRect_y_Setter";
+  static y_Setter(mthis, __arg_0) native "SVGRect_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGRectElement {
+class BlinkSVGRectElement extends BlinkSVGGeometryElement {
+  static final instance = new BlinkSVGRectElement();
+
   static height_Getter(mthis) native "SVGRectElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static rx_Getter(mthis) native "SVGRectElement_rx_Getter";
+  rx_Getter_(mthis) => rx_Getter(mthis);
 
   static ry_Getter(mthis) native "SVGRectElement_ry_Getter";
+  ry_Getter_(mthis) => ry_Getter(mthis);
 
   static width_Getter(mthis) native "SVGRectElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
   static x_Getter(mthis) native "SVGRectElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
   static y_Getter(mthis) native "SVGRectElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGRenderingIntent {}
+class BlinkSVGRenderingIntent {
+  static final instance = new BlinkSVGRenderingIntent();
 
-class BlinkSVGZoomAndPan {
-  static zoomAndPan_Getter(mthis) native "SVGZoomAndPan_zoomAndPan_Getter";
-
-  static zoomAndPan_Setter(mthis, value) native "SVGZoomAndPan_zoomAndPan_Setter";
 }
 
-class BlinkSVGSVGElement {
+class BlinkSVGSVGElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGSVGElement();
+
+  static animationsPaused_Callback_0(mthis) native "SVGSVGElement_animationsPaused_Callback";
+  animationsPaused_Callback_0_(mthis) => animationsPaused_Callback_0(mthis);
+
+  static animationsPaused_Callback_1(mthis, __arg_0) native "SVGSVGElement_animationsPaused_Callback";
+  animationsPaused_Callback_1_(mthis, __arg_0) => animationsPaused_Callback_1(mthis, __arg_0);
+
+  static animationsPaused_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_animationsPaused_Callback";
+  animationsPaused_Callback_2_(mthis, __arg_0, __arg_1) => animationsPaused_Callback_2(mthis, __arg_0, __arg_1);
+
+  static checkEnclosure_Callback_0(mthis) native "SVGSVGElement_checkEnclosure_Callback";
+  checkEnclosure_Callback_0_(mthis) => checkEnclosure_Callback_0(mthis);
+
+  static checkEnclosure_Callback_1(mthis, __arg_0) native "SVGSVGElement_checkEnclosure_Callback";
+  checkEnclosure_Callback_1_(mthis, __arg_0) => checkEnclosure_Callback_1(mthis, __arg_0);
+
+  static checkEnclosure_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_checkEnclosure_Callback";
+  checkEnclosure_Callback_2_(mthis, __arg_0, __arg_1) => checkEnclosure_Callback_2(mthis, __arg_0, __arg_1);
+
+  static checkEnclosure_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_checkEnclosure_Callback";
+  checkEnclosure_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkEnclosure_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static checkEnclosure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_checkEnclosure_Callback";
+  checkEnclosure_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => checkEnclosure_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static checkIntersection_Callback_0(mthis) native "SVGSVGElement_checkIntersection_Callback";
+  checkIntersection_Callback_0_(mthis) => checkIntersection_Callback_0(mthis);
+
+  static checkIntersection_Callback_1(mthis, __arg_0) native "SVGSVGElement_checkIntersection_Callback";
+  checkIntersection_Callback_1_(mthis, __arg_0) => checkIntersection_Callback_1(mthis, __arg_0);
+
+  static checkIntersection_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_checkIntersection_Callback";
+  checkIntersection_Callback_2_(mthis, __arg_0, __arg_1) => checkIntersection_Callback_2(mthis, __arg_0, __arg_1);
+
+  static checkIntersection_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_checkIntersection_Callback";
+  checkIntersection_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkIntersection_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static checkIntersection_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_checkIntersection_Callback";
+  checkIntersection_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => checkIntersection_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createSVGAngle_Callback_0(mthis) native "SVGSVGElement_createSVGAngle_Callback";
+  createSVGAngle_Callback_0_(mthis) => createSVGAngle_Callback_0(mthis);
+
+  static createSVGAngle_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGAngle_Callback";
+  createSVGAngle_Callback_1_(mthis, __arg_0) => createSVGAngle_Callback_1(mthis, __arg_0);
+
+  static createSVGAngle_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGAngle_Callback";
+  createSVGAngle_Callback_2_(mthis, __arg_0, __arg_1) => createSVGAngle_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGLength_Callback_0(mthis) native "SVGSVGElement_createSVGLength_Callback";
+  createSVGLength_Callback_0_(mthis) => createSVGLength_Callback_0(mthis);
+
+  static createSVGLength_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGLength_Callback";
+  createSVGLength_Callback_1_(mthis, __arg_0) => createSVGLength_Callback_1(mthis, __arg_0);
+
+  static createSVGLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGLength_Callback";
+  createSVGLength_Callback_2_(mthis, __arg_0, __arg_1) => createSVGLength_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGMatrix_Callback_0(mthis) native "SVGSVGElement_createSVGMatrix_Callback";
+  createSVGMatrix_Callback_0_(mthis) => createSVGMatrix_Callback_0(mthis);
+
+  static createSVGMatrix_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGMatrix_Callback";
+  createSVGMatrix_Callback_1_(mthis, __arg_0) => createSVGMatrix_Callback_1(mthis, __arg_0);
+
+  static createSVGMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGMatrix_Callback";
+  createSVGMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGMatrix_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGNumber_Callback_0(mthis) native "SVGSVGElement_createSVGNumber_Callback";
+  createSVGNumber_Callback_0_(mthis) => createSVGNumber_Callback_0(mthis);
+
+  static createSVGNumber_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGNumber_Callback";
+  createSVGNumber_Callback_1_(mthis, __arg_0) => createSVGNumber_Callback_1(mthis, __arg_0);
+
+  static createSVGNumber_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGNumber_Callback";
+  createSVGNumber_Callback_2_(mthis, __arg_0, __arg_1) => createSVGNumber_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGPoint_Callback_0(mthis) native "SVGSVGElement_createSVGPoint_Callback";
+  createSVGPoint_Callback_0_(mthis) => createSVGPoint_Callback_0(mthis);
+
+  static createSVGPoint_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGPoint_Callback";
+  createSVGPoint_Callback_1_(mthis, __arg_0) => createSVGPoint_Callback_1(mthis, __arg_0);
+
+  static createSVGPoint_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGPoint_Callback";
+  createSVGPoint_Callback_2_(mthis, __arg_0, __arg_1) => createSVGPoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGRect_Callback_0(mthis) native "SVGSVGElement_createSVGRect_Callback";
+  createSVGRect_Callback_0_(mthis) => createSVGRect_Callback_0(mthis);
+
+  static createSVGRect_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGRect_Callback";
+  createSVGRect_Callback_1_(mthis, __arg_0) => createSVGRect_Callback_1(mthis, __arg_0);
+
+  static createSVGRect_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGRect_Callback";
+  createSVGRect_Callback_2_(mthis, __arg_0, __arg_1) => createSVGRect_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGTransformFromMatrix_Callback_0(mthis) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_0_(mthis) => createSVGTransformFromMatrix_Callback_0(mthis);
+
+  static createSVGTransformFromMatrix_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => createSVGTransformFromMatrix_Callback_1(mthis, __arg_0);
+
+  static createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createSVGTransform_Callback_0(mthis) native "SVGSVGElement_createSVGTransform_Callback";
+  createSVGTransform_Callback_0_(mthis) => createSVGTransform_Callback_0(mthis);
+
+  static createSVGTransform_Callback_1(mthis, __arg_0) native "SVGSVGElement_createSVGTransform_Callback";
+  createSVGTransform_Callback_1_(mthis, __arg_0) => createSVGTransform_Callback_1(mthis, __arg_0);
+
+  static createSVGTransform_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_createSVGTransform_Callback";
+  createSVGTransform_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransform_Callback_2(mthis, __arg_0, __arg_1);
+
   static currentScale_Getter(mthis) native "SVGSVGElement_currentScale_Getter";
+  currentScale_Getter_(mthis) => currentScale_Getter(mthis);
 
-  static currentScale_Setter(mthis, value) native "SVGSVGElement_currentScale_Setter";
+  static currentScale_Setter(mthis, __arg_0) native "SVGSVGElement_currentScale_Setter";
+  currentScale_Setter_(mthis, __arg_0) => currentScale_Setter(mthis, __arg_0);
 
   static currentTranslate_Getter(mthis) native "SVGSVGElement_currentTranslate_Getter";
+  currentTranslate_Getter_(mthis) => currentTranslate_Getter(mthis);
 
   static currentView_Getter(mthis) native "SVGSVGElement_currentView_Getter";
+  currentView_Getter_(mthis) => currentView_Getter(mthis);
+
+  static deselectAll_Callback_0(mthis) native "SVGSVGElement_deselectAll_Callback";
+  deselectAll_Callback_0_(mthis) => deselectAll_Callback_0(mthis);
+
+  static deselectAll_Callback_1(mthis, __arg_0) native "SVGSVGElement_deselectAll_Callback";
+  deselectAll_Callback_1_(mthis, __arg_0) => deselectAll_Callback_1(mthis, __arg_0);
+
+  static deselectAll_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_deselectAll_Callback";
+  deselectAll_Callback_2_(mthis, __arg_0, __arg_1) => deselectAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static forceRedraw_Callback_0(mthis) native "SVGSVGElement_forceRedraw_Callback";
+  forceRedraw_Callback_0_(mthis) => forceRedraw_Callback_0(mthis);
+
+  static forceRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_forceRedraw_Callback";
+  forceRedraw_Callback_1_(mthis, __arg_0) => forceRedraw_Callback_1(mthis, __arg_0);
+
+  static forceRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_forceRedraw_Callback";
+  forceRedraw_Callback_2_(mthis, __arg_0, __arg_1) => forceRedraw_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCurrentTime_Callback_0(mthis) native "SVGSVGElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_0_(mthis) => getCurrentTime_Callback_0(mthis);
+
+  static getCurrentTime_Callback_1(mthis, __arg_0) native "SVGSVGElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_1_(mthis, __arg_0) => getCurrentTime_Callback_1(mthis, __arg_0);
+
+  static getCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getCurrentTime_Callback";
+  getCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => getCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementById_Callback_0(mthis) native "SVGSVGElement_getElementById_Callback";
+  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+
+  static getElementById_Callback_1(mthis, __arg_0) native "SVGSVGElement_getElementById_Callback";
+  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+
+  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getElementById_Callback";
+  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getElementById_Callback";
+  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEnclosureList_Callback_0(mthis) native "SVGSVGElement_getEnclosureList_Callback";
+  getEnclosureList_Callback_0_(mthis) => getEnclosureList_Callback_0(mthis);
+
+  static getEnclosureList_Callback_1(mthis, __arg_0) native "SVGSVGElement_getEnclosureList_Callback";
+  getEnclosureList_Callback_1_(mthis, __arg_0) => getEnclosureList_Callback_1(mthis, __arg_0);
+
+  static getEnclosureList_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getEnclosureList_Callback";
+  getEnclosureList_Callback_2_(mthis, __arg_0, __arg_1) => getEnclosureList_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEnclosureList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getEnclosureList_Callback";
+  getEnclosureList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEnclosureList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getEnclosureList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_getEnclosureList_Callback";
+  getEnclosureList_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getEnclosureList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getIntersectionList_Callback_0(mthis) native "SVGSVGElement_getIntersectionList_Callback";
+  getIntersectionList_Callback_0_(mthis) => getIntersectionList_Callback_0(mthis);
+
+  static getIntersectionList_Callback_1(mthis, __arg_0) native "SVGSVGElement_getIntersectionList_Callback";
+  getIntersectionList_Callback_1_(mthis, __arg_0) => getIntersectionList_Callback_1(mthis, __arg_0);
+
+  static getIntersectionList_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_getIntersectionList_Callback";
+  getIntersectionList_Callback_2_(mthis, __arg_0, __arg_1) => getIntersectionList_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getIntersectionList_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_getIntersectionList_Callback";
+  getIntersectionList_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getIntersectionList_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getIntersectionList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGSVGElement_getIntersectionList_Callback";
+  getIntersectionList_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getIntersectionList_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static height_Getter(mthis) native "SVGSVGElement_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
+
+  static pauseAnimations_Callback_0(mthis) native "SVGSVGElement_pauseAnimations_Callback";
+  pauseAnimations_Callback_0_(mthis) => pauseAnimations_Callback_0(mthis);
+
+  static pauseAnimations_Callback_1(mthis, __arg_0) native "SVGSVGElement_pauseAnimations_Callback";
+  pauseAnimations_Callback_1_(mthis, __arg_0) => pauseAnimations_Callback_1(mthis, __arg_0);
+
+  static pauseAnimations_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_pauseAnimations_Callback";
+  pauseAnimations_Callback_2_(mthis, __arg_0, __arg_1) => pauseAnimations_Callback_2(mthis, __arg_0, __arg_1);
 
   static pixelUnitToMillimeterX_Getter(mthis) native "SVGSVGElement_pixelUnitToMillimeterX_Getter";
+  pixelUnitToMillimeterX_Getter_(mthis) => pixelUnitToMillimeterX_Getter(mthis);
 
   static pixelUnitToMillimeterY_Getter(mthis) native "SVGSVGElement_pixelUnitToMillimeterY_Getter";
-
-  static screenPixelToMillimeterX_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterX_Getter";
-
-  static screenPixelToMillimeterY_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterY_Getter";
-
-  static useCurrentView_Getter(mthis) native "SVGSVGElement_useCurrentView_Getter";
-
-  static viewport_Getter(mthis) native "SVGSVGElement_viewport_Getter";
-
-  static width_Getter(mthis) native "SVGSVGElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGSVGElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGSVGElement_y_Getter";
-
-  static animationsPaused_Callback(mthis) native "SVGSVGElement_animationsPaused_Callback";
-
-  static checkEnclosure_Callback_2(mthis, element, rect) native "SVGSVGElement_checkEnclosure_Callback";
-
-  static checkIntersection_Callback_2(mthis, element, rect) native "SVGSVGElement_checkIntersection_Callback";
-
-  static createSVGAngle_Callback(mthis) native "SVGSVGElement_createSVGAngle_Callback";
-
-  static createSVGLength_Callback(mthis) native "SVGSVGElement_createSVGLength_Callback";
-
-  static createSVGMatrix_Callback(mthis) native "SVGSVGElement_createSVGMatrix_Callback";
-
-  static createSVGNumber_Callback(mthis) native "SVGSVGElement_createSVGNumber_Callback";
-
-  static createSVGPoint_Callback(mthis) native "SVGSVGElement_createSVGPoint_Callback";
-
-  static createSVGRect_Callback(mthis) native "SVGSVGElement_createSVGRect_Callback";
-
-  static createSVGTransform_Callback(mthis) native "SVGSVGElement_createSVGTransform_Callback";
-
-  static createSVGTransformFromMatrix_Callback_1(mthis, matrix) native "SVGSVGElement_createSVGTransformFromMatrix_Callback";
-
-  static deselectAll_Callback(mthis) native "SVGSVGElement_deselectAll_Callback";
-
-  static forceRedraw_Callback(mthis) native "SVGSVGElement_forceRedraw_Callback";
-
-  static getCurrentTime_Callback(mthis) native "SVGSVGElement_getCurrentTime_Callback";
-
-  static getElementById_Callback_1(mthis, elementId) native "SVGSVGElement_getElementById_Callback";
-
-  static getEnclosureList_Callback_2(mthis, rect, referenceElement) native "SVGSVGElement_getEnclosureList_Callback";
-
-  static getIntersectionList_Callback_2(mthis, rect, referenceElement) native "SVGSVGElement_getIntersectionList_Callback";
-
-  static pauseAnimations_Callback(mthis) native "SVGSVGElement_pauseAnimations_Callback";
-
-  static setCurrentTime_Callback_1(mthis, seconds) native "SVGSVGElement_setCurrentTime_Callback";
-
-  static suspendRedraw_Callback_1(mthis, maxWaitMilliseconds) native "SVGSVGElement_suspendRedraw_Callback";
-
-  static unpauseAnimations_Callback(mthis) native "SVGSVGElement_unpauseAnimations_Callback";
-
-  static unsuspendRedraw_Callback_1(mthis, suspendHandleId) native "SVGSVGElement_unsuspendRedraw_Callback";
-
-  static unsuspendRedrawAll_Callback(mthis) native "SVGSVGElement_unsuspendRedrawAll_Callback";
+  pixelUnitToMillimeterY_Getter_(mthis) => pixelUnitToMillimeterY_Getter(mthis);
 
   static preserveAspectRatio_Getter(mthis) native "SVGSVGElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static screenPixelToMillimeterX_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterX_Getter";
+  screenPixelToMillimeterX_Getter_(mthis) => screenPixelToMillimeterX_Getter(mthis);
+
+  static screenPixelToMillimeterY_Getter(mthis) native "SVGSVGElement_screenPixelToMillimeterY_Getter";
+  screenPixelToMillimeterY_Getter_(mthis) => screenPixelToMillimeterY_Getter(mthis);
+
+  static setCurrentTime_Callback_0(mthis) native "SVGSVGElement_setCurrentTime_Callback";
+  setCurrentTime_Callback_0_(mthis) => setCurrentTime_Callback_0(mthis);
+
+  static setCurrentTime_Callback_1(mthis, __arg_0) native "SVGSVGElement_setCurrentTime_Callback";
+  setCurrentTime_Callback_1_(mthis, __arg_0) => setCurrentTime_Callback_1(mthis, __arg_0);
+
+  static setCurrentTime_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_setCurrentTime_Callback";
+  setCurrentTime_Callback_2_(mthis, __arg_0, __arg_1) => setCurrentTime_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setCurrentTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_setCurrentTime_Callback";
+  setCurrentTime_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setCurrentTime_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static suspendRedraw_Callback_0(mthis) native "SVGSVGElement_suspendRedraw_Callback";
+  suspendRedraw_Callback_0_(mthis) => suspendRedraw_Callback_0(mthis);
+
+  static suspendRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_suspendRedraw_Callback";
+  suspendRedraw_Callback_1_(mthis, __arg_0) => suspendRedraw_Callback_1(mthis, __arg_0);
+
+  static suspendRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_suspendRedraw_Callback";
+  suspendRedraw_Callback_2_(mthis, __arg_0, __arg_1) => suspendRedraw_Callback_2(mthis, __arg_0, __arg_1);
+
+  static suspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_suspendRedraw_Callback";
+  suspendRedraw_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => suspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static unpauseAnimations_Callback_0(mthis) native "SVGSVGElement_unpauseAnimations_Callback";
+  unpauseAnimations_Callback_0_(mthis) => unpauseAnimations_Callback_0(mthis);
+
+  static unpauseAnimations_Callback_1(mthis, __arg_0) native "SVGSVGElement_unpauseAnimations_Callback";
+  unpauseAnimations_Callback_1_(mthis, __arg_0) => unpauseAnimations_Callback_1(mthis, __arg_0);
+
+  static unpauseAnimations_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unpauseAnimations_Callback";
+  unpauseAnimations_Callback_2_(mthis, __arg_0, __arg_1) => unpauseAnimations_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unsuspendRedrawAll_Callback_0(mthis) native "SVGSVGElement_unsuspendRedrawAll_Callback";
+  unsuspendRedrawAll_Callback_0_(mthis) => unsuspendRedrawAll_Callback_0(mthis);
+
+  static unsuspendRedrawAll_Callback_1(mthis, __arg_0) native "SVGSVGElement_unsuspendRedrawAll_Callback";
+  unsuspendRedrawAll_Callback_1_(mthis, __arg_0) => unsuspendRedrawAll_Callback_1(mthis, __arg_0);
+
+  static unsuspendRedrawAll_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unsuspendRedrawAll_Callback";
+  unsuspendRedrawAll_Callback_2_(mthis, __arg_0, __arg_1) => unsuspendRedrawAll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unsuspendRedraw_Callback_0(mthis) native "SVGSVGElement_unsuspendRedraw_Callback";
+  unsuspendRedraw_Callback_0_(mthis) => unsuspendRedraw_Callback_0(mthis);
+
+  static unsuspendRedraw_Callback_1(mthis, __arg_0) native "SVGSVGElement_unsuspendRedraw_Callback";
+  unsuspendRedraw_Callback_1_(mthis, __arg_0) => unsuspendRedraw_Callback_1(mthis, __arg_0);
+
+  static unsuspendRedraw_Callback_2(mthis, __arg_0, __arg_1) native "SVGSVGElement_unsuspendRedraw_Callback";
+  unsuspendRedraw_Callback_2_(mthis, __arg_0, __arg_1) => unsuspendRedraw_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unsuspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGSVGElement_unsuspendRedraw_Callback";
+  unsuspendRedraw_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unsuspendRedraw_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static useCurrentView_Getter(mthis) native "SVGSVGElement_useCurrentView_Getter";
+  useCurrentView_Getter_(mthis) => useCurrentView_Getter(mthis);
 
   static viewBox_Getter(mthis) native "SVGSVGElement_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
+  static viewport_Getter(mthis) native "SVGSVGElement_viewport_Getter";
+  viewport_Getter_(mthis) => viewport_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGSVGElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGSVGElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGSVGElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
   static zoomAndPan_Getter(mthis) native "SVGSVGElement_zoomAndPan_Getter";
+  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
 
-  static zoomAndPan_Setter(mthis, value) native "SVGSVGElement_zoomAndPan_Setter";
+  static zoomAndPan_Setter(mthis, __arg_0) native "SVGSVGElement_zoomAndPan_Setter";
+  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGScriptElement {
-  static type_Getter(mthis) native "SVGScriptElement_type_Getter";
-
-  static type_Setter(mthis, value) native "SVGScriptElement_type_Setter";
+class BlinkSVGScriptElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGScriptElement();
 
   static href_Getter(mthis) native "SVGScriptElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static type_Getter(mthis) native "SVGScriptElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+  static type_Setter(mthis, __arg_0) native "SVGScriptElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGSetElement {}
+class BlinkSVGSetElement extends BlinkSVGAnimationElement {
+  static final instance = new BlinkSVGSetElement();
 
-class BlinkSVGStopElement {
+}
+
+class BlinkSVGStopElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGStopElement();
+
   static offset_Getter(mthis) native "SVGStopElement_offset_Getter";
+  offset_Getter_(mthis) => offset_Getter(mthis);
+
 }
 
 class BlinkSVGStringList {
+  static final instance = new BlinkSVGStringList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGStringList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGStringList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGStringList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGStringList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGStringList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "SVGStringList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGStringList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGStringList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGStringList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGStringList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGStringList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGStringList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGStringList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGStringList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGStringList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGStringList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, item) native "SVGStringList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGStringList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGStringList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getItem_Callback_1(mthis, index) native "SVGStringList_getItem_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static initialize_Callback_1(mthis, item) native "SVGStringList_initialize_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGStringList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static insertItemBefore_Callback_2(mthis, item, index) native "SVGStringList_insertItemBefore_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGStringList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, index) native "SVGStringList_removeItem_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGStringList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static replaceItem_Callback_2(mthis, item, index) native "SVGStringList_replaceItem_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGStringList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGStringList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkSVGStyleElement {
-  static disabled_Getter(mthis) native "SVGStyleElement_disabled_Getter";
+class BlinkSVGStyleElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGStyleElement();
 
-  static disabled_Setter(mthis, value) native "SVGStyleElement_disabled_Setter";
+  static disabled_Getter(mthis) native "SVGStyleElement_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
+
+  static disabled_Setter(mthis, __arg_0) native "SVGStyleElement_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
 
   static media_Getter(mthis) native "SVGStyleElement_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
 
-  static media_Setter(mthis, value) native "SVGStyleElement_media_Setter";
+  static media_Setter(mthis, __arg_0) native "SVGStyleElement_media_Setter";
+  media_Setter_(mthis, __arg_0) => media_Setter(mthis, __arg_0);
 
   static sheet_Getter(mthis) native "SVGStyleElement_sheet_Getter";
+  sheet_Getter_(mthis) => sheet_Getter(mthis);
 
   static title_Getter(mthis) native "SVGStyleElement_title_Getter";
+  title_Getter_(mthis) => title_Getter(mthis);
 
-  static title_Setter(mthis, value) native "SVGStyleElement_title_Setter";
+  static title_Setter(mthis, __arg_0) native "SVGStyleElement_title_Setter";
+  title_Setter_(mthis, __arg_0) => title_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "SVGStyleElement_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static type_Setter(mthis, value) native "SVGStyleElement_type_Setter";
+  static type_Setter(mthis, __arg_0) native "SVGStyleElement_type_Setter";
+  type_Setter_(mthis, __arg_0) => type_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGSwitchElement {}
+class BlinkSVGSwitchElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGSwitchElement();
 
-class BlinkSVGSymbolElement {
+}
+
+class BlinkSVGSymbolElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGSymbolElement();
+
   static preserveAspectRatio_Getter(mthis) native "SVGSymbolElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
 
   static viewBox_Getter(mthis) native "SVGSymbolElement_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
 }
 
-class BlinkSVGTSpanElement {}
+class BlinkSVGTSpanElement extends BlinkSVGTextPositioningElement {
+  static final instance = new BlinkSVGTSpanElement();
 
-class BlinkSVGTextElement {}
+}
 
-class BlinkSVGTextPathElement {
-  static method_Getter(mthis) native "SVGTextPathElement_method_Getter";
+class BlinkSVGTextContentElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGTextContentElement();
 
-  static spacing_Getter(mthis) native "SVGTextPathElement_spacing_Getter";
+  static getCharNumAtPosition_Callback_0(mthis) native "SVGTextContentElement_getCharNumAtPosition_Callback";
+  getCharNumAtPosition_Callback_0_(mthis) => getCharNumAtPosition_Callback_0(mthis);
 
-  static startOffset_Getter(mthis) native "SVGTextPathElement_startOffset_Getter";
+  static getCharNumAtPosition_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getCharNumAtPosition_Callback";
+  getCharNumAtPosition_Callback_1_(mthis, __arg_0) => getCharNumAtPosition_Callback_1(mthis, __arg_0);
+
+  static getCharNumAtPosition_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getCharNumAtPosition_Callback";
+  getCharNumAtPosition_Callback_2_(mthis, __arg_0, __arg_1) => getCharNumAtPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCharNumAtPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getCharNumAtPosition_Callback";
+  getCharNumAtPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCharNumAtPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getComputedTextLength_Callback_0(mthis) native "SVGTextContentElement_getComputedTextLength_Callback";
+  getComputedTextLength_Callback_0_(mthis) => getComputedTextLength_Callback_0(mthis);
+
+  static getComputedTextLength_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getComputedTextLength_Callback";
+  getComputedTextLength_Callback_1_(mthis, __arg_0) => getComputedTextLength_Callback_1(mthis, __arg_0);
+
+  static getComputedTextLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getComputedTextLength_Callback";
+  getComputedTextLength_Callback_2_(mthis, __arg_0, __arg_1) => getComputedTextLength_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEndPositionOfChar_Callback_0(mthis) native "SVGTextContentElement_getEndPositionOfChar_Callback";
+  getEndPositionOfChar_Callback_0_(mthis) => getEndPositionOfChar_Callback_0(mthis);
+
+  static getEndPositionOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getEndPositionOfChar_Callback";
+  getEndPositionOfChar_Callback_1_(mthis, __arg_0) => getEndPositionOfChar_Callback_1(mthis, __arg_0);
+
+  static getEndPositionOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getEndPositionOfChar_Callback";
+  getEndPositionOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getEndPositionOfChar_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getEndPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getEndPositionOfChar_Callback";
+  getEndPositionOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getEndPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getExtentOfChar_Callback_0(mthis) native "SVGTextContentElement_getExtentOfChar_Callback";
+  getExtentOfChar_Callback_0_(mthis) => getExtentOfChar_Callback_0(mthis);
+
+  static getExtentOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getExtentOfChar_Callback";
+  getExtentOfChar_Callback_1_(mthis, __arg_0) => getExtentOfChar_Callback_1(mthis, __arg_0);
+
+  static getExtentOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getExtentOfChar_Callback";
+  getExtentOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getExtentOfChar_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getExtentOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getExtentOfChar_Callback";
+  getExtentOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getExtentOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getNumberOfChars_Callback_0(mthis) native "SVGTextContentElement_getNumberOfChars_Callback";
+  getNumberOfChars_Callback_0_(mthis) => getNumberOfChars_Callback_0(mthis);
+
+  static getNumberOfChars_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getNumberOfChars_Callback";
+  getNumberOfChars_Callback_1_(mthis, __arg_0) => getNumberOfChars_Callback_1(mthis, __arg_0);
+
+  static getNumberOfChars_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getNumberOfChars_Callback";
+  getNumberOfChars_Callback_2_(mthis, __arg_0, __arg_1) => getNumberOfChars_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRotationOfChar_Callback_0(mthis) native "SVGTextContentElement_getRotationOfChar_Callback";
+  getRotationOfChar_Callback_0_(mthis) => getRotationOfChar_Callback_0(mthis);
+
+  static getRotationOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getRotationOfChar_Callback";
+  getRotationOfChar_Callback_1_(mthis, __arg_0) => getRotationOfChar_Callback_1(mthis, __arg_0);
+
+  static getRotationOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getRotationOfChar_Callback";
+  getRotationOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getRotationOfChar_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRotationOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getRotationOfChar_Callback";
+  getRotationOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRotationOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getStartPositionOfChar_Callback_0(mthis) native "SVGTextContentElement_getStartPositionOfChar_Callback";
+  getStartPositionOfChar_Callback_0_(mthis) => getStartPositionOfChar_Callback_0(mthis);
+
+  static getStartPositionOfChar_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getStartPositionOfChar_Callback";
+  getStartPositionOfChar_Callback_1_(mthis, __arg_0) => getStartPositionOfChar_Callback_1(mthis, __arg_0);
+
+  static getStartPositionOfChar_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getStartPositionOfChar_Callback";
+  getStartPositionOfChar_Callback_2_(mthis, __arg_0, __arg_1) => getStartPositionOfChar_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getStartPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getStartPositionOfChar_Callback";
+  getStartPositionOfChar_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getStartPositionOfChar_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getSubStringLength_Callback_0(mthis) native "SVGTextContentElement_getSubStringLength_Callback";
+  getSubStringLength_Callback_0_(mthis) => getSubStringLength_Callback_0(mthis);
+
+  static getSubStringLength_Callback_1(mthis, __arg_0) native "SVGTextContentElement_getSubStringLength_Callback";
+  getSubStringLength_Callback_1_(mthis, __arg_0) => getSubStringLength_Callback_1(mthis, __arg_0);
+
+  static getSubStringLength_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_getSubStringLength_Callback";
+  getSubStringLength_Callback_2_(mthis, __arg_0, __arg_1) => getSubStringLength_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getSubStringLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_getSubStringLength_Callback";
+  getSubStringLength_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getSubStringLength_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getSubStringLength_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTextContentElement_getSubStringLength_Callback";
+  getSubStringLength_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getSubStringLength_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static lengthAdjust_Getter(mthis) native "SVGTextContentElement_lengthAdjust_Getter";
+  lengthAdjust_Getter_(mthis) => lengthAdjust_Getter(mthis);
+
+  static selectSubString_Callback_0(mthis) native "SVGTextContentElement_selectSubString_Callback";
+  selectSubString_Callback_0_(mthis) => selectSubString_Callback_0(mthis);
+
+  static selectSubString_Callback_1(mthis, __arg_0) native "SVGTextContentElement_selectSubString_Callback";
+  selectSubString_Callback_1_(mthis, __arg_0) => selectSubString_Callback_1(mthis, __arg_0);
+
+  static selectSubString_Callback_2(mthis, __arg_0, __arg_1) native "SVGTextContentElement_selectSubString_Callback";
+  selectSubString_Callback_2_(mthis, __arg_0, __arg_1) => selectSubString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static selectSubString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTextContentElement_selectSubString_Callback";
+  selectSubString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectSubString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static selectSubString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTextContentElement_selectSubString_Callback";
+  selectSubString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => selectSubString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static textLength_Getter(mthis) native "SVGTextContentElement_textLength_Getter";
+  textLength_Getter_(mthis) => textLength_Getter(mthis);
+
+}
+
+class BlinkSVGTextElement extends BlinkSVGTextPositioningElement {
+  static final instance = new BlinkSVGTextElement();
+
+}
+
+class BlinkSVGTextPathElement extends BlinkSVGTextContentElement {
+  static final instance = new BlinkSVGTextPathElement();
 
   static href_Getter(mthis) native "SVGTextPathElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static method_Getter(mthis) native "SVGTextPathElement_method_Getter";
+  method_Getter_(mthis) => method_Getter(mthis);
+
+  static spacing_Getter(mthis) native "SVGTextPathElement_spacing_Getter";
+  spacing_Getter_(mthis) => spacing_Getter(mthis);
+
+  static startOffset_Getter(mthis) native "SVGTextPathElement_startOffset_Getter";
+  startOffset_Getter_(mthis) => startOffset_Getter(mthis);
+
 }
 
-class BlinkSVGTitleElement {}
+class BlinkSVGTextPositioningElement extends BlinkSVGTextContentElement {
+  static final instance = new BlinkSVGTextPositioningElement();
+
+  static dx_Getter(mthis) native "SVGTextPositioningElement_dx_Getter";
+  dx_Getter_(mthis) => dx_Getter(mthis);
+
+  static dy_Getter(mthis) native "SVGTextPositioningElement_dy_Getter";
+  dy_Getter_(mthis) => dy_Getter(mthis);
+
+  static rotate_Getter(mthis) native "SVGTextPositioningElement_rotate_Getter";
+  rotate_Getter_(mthis) => rotate_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGTextPositioningElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGTextPositioningElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
+}
+
+class BlinkSVGTitleElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGTitleElement();
+
+}
 
 class BlinkSVGTransform {
+  static final instance = new BlinkSVGTransform();
+
   static angle_Getter(mthis) native "SVGTransform_angle_Getter";
+  angle_Getter_(mthis) => angle_Getter(mthis);
 
   static matrix_Getter(mthis) native "SVGTransform_matrix_Getter";
+  matrix_Getter_(mthis) => matrix_Getter(mthis);
+
+  static setMatrix_Callback_0(mthis) native "SVGTransform_setMatrix_Callback";
+  setMatrix_Callback_0_(mthis) => setMatrix_Callback_0(mthis);
+
+  static setMatrix_Callback_1(mthis, __arg_0) native "SVGTransform_setMatrix_Callback";
+  setMatrix_Callback_1_(mthis, __arg_0) => setMatrix_Callback_1(mthis, __arg_0);
+
+  static setMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setMatrix_Callback";
+  setMatrix_Callback_2_(mthis, __arg_0, __arg_1) => setMatrix_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setMatrix_Callback";
+  setMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRotate_Callback_1(mthis, __arg_0) native "SVGTransform_setRotate_Callback";
+  setRotate_Callback_1_(mthis, __arg_0) => setRotate_Callback_1(mthis, __arg_0);
+
+  static setRotate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setRotate_Callback";
+  setRotate_Callback_2_(mthis, __arg_0, __arg_1) => setRotate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setRotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setRotate_Callback";
+  setRotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setRotate_Callback";
+  setRotate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setRotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SVGTransform_setRotate_Callback";
+  setRotate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setRotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setScale_Callback_0(mthis) native "SVGTransform_setScale_Callback";
+  setScale_Callback_0_(mthis) => setScale_Callback_0(mthis);
+
+  static setScale_Callback_1(mthis, __arg_0) native "SVGTransform_setScale_Callback";
+  setScale_Callback_1_(mthis, __arg_0) => setScale_Callback_1(mthis, __arg_0);
+
+  static setScale_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setScale_Callback";
+  setScale_Callback_2_(mthis, __arg_0, __arg_1) => setScale_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setScale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setScale_Callback";
+  setScale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setScale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setScale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setScale_Callback";
+  setScale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setScale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setSkewX_Callback_0(mthis) native "SVGTransform_setSkewX_Callback";
+  setSkewX_Callback_0_(mthis) => setSkewX_Callback_0(mthis);
+
+  static setSkewX_Callback_1(mthis, __arg_0) native "SVGTransform_setSkewX_Callback";
+  setSkewX_Callback_1_(mthis, __arg_0) => setSkewX_Callback_1(mthis, __arg_0);
+
+  static setSkewX_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setSkewX_Callback";
+  setSkewX_Callback_2_(mthis, __arg_0, __arg_1) => setSkewX_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setSkewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setSkewX_Callback";
+  setSkewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSkewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setSkewY_Callback_0(mthis) native "SVGTransform_setSkewY_Callback";
+  setSkewY_Callback_0_(mthis) => setSkewY_Callback_0(mthis);
+
+  static setSkewY_Callback_1(mthis, __arg_0) native "SVGTransform_setSkewY_Callback";
+  setSkewY_Callback_1_(mthis, __arg_0) => setSkewY_Callback_1(mthis, __arg_0);
+
+  static setSkewY_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setSkewY_Callback";
+  setSkewY_Callback_2_(mthis, __arg_0, __arg_1) => setSkewY_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setSkewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setSkewY_Callback";
+  setSkewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setSkewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTranslate_Callback_0(mthis) native "SVGTransform_setTranslate_Callback";
+  setTranslate_Callback_0_(mthis) => setTranslate_Callback_0(mthis);
+
+  static setTranslate_Callback_1(mthis, __arg_0) native "SVGTransform_setTranslate_Callback";
+  setTranslate_Callback_1_(mthis, __arg_0) => setTranslate_Callback_1(mthis, __arg_0);
+
+  static setTranslate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransform_setTranslate_Callback";
+  setTranslate_Callback_2_(mthis, __arg_0, __arg_1) => setTranslate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setTranslate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransform_setTranslate_Callback";
+  setTranslate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTranslate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTranslate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransform_setTranslate_Callback";
+  setTranslate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTranslate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static type_Getter(mthis) native "SVGTransform_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static setMatrix_Callback_1(mthis, matrix) native "SVGTransform_setMatrix_Callback";
-
-  static setRotate_Callback_3(mthis, angle, cx, cy) native "SVGTransform_setRotate_Callback";
-
-  static setScale_Callback_2(mthis, sx, sy) native "SVGTransform_setScale_Callback";
-
-  static setSkewX_Callback_1(mthis, angle) native "SVGTransform_setSkewX_Callback";
-
-  static setSkewY_Callback_1(mthis, angle) native "SVGTransform_setSkewY_Callback";
-
-  static setTranslate_Callback_2(mthis, tx, ty) native "SVGTransform_setTranslate_Callback";
 }
 
 class BlinkSVGTransformList {
+  static final instance = new BlinkSVGTransformList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SVGTransformList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_0(mthis) native "SVGTransformList_appendItem_Callback";
+  appendItem_Callback_0_(mthis) => appendItem_Callback_0(mthis);
+
+  static appendItem_Callback_1(mthis, __arg_0) native "SVGTransformList_appendItem_Callback";
+  appendItem_Callback_1_(mthis, __arg_0) => appendItem_Callback_1(mthis, __arg_0);
+
+  static appendItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_appendItem_Callback";
+  appendItem_Callback_2_(mthis, __arg_0, __arg_1) => appendItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_appendItem_Callback";
+  appendItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "SVGTransformList_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "SVGTransformList_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static consolidate_Callback_0(mthis) native "SVGTransformList_consolidate_Callback";
+  consolidate_Callback_0_(mthis) => consolidate_Callback_0(mthis);
+
+  static consolidate_Callback_1(mthis, __arg_0) native "SVGTransformList_consolidate_Callback";
+  consolidate_Callback_1_(mthis, __arg_0) => consolidate_Callback_1(mthis, __arg_0);
+
+  static consolidate_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_consolidate_Callback";
+  consolidate_Callback_2_(mthis, __arg_0, __arg_1) => consolidate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGTransformFromMatrix_Callback_0(mthis) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_0_(mthis) => createSVGTransformFromMatrix_Callback_0(mthis);
+
+  static createSVGTransformFromMatrix_Callback_1(mthis, __arg_0) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_1_(mthis, __arg_0) => createSVGTransformFromMatrix_Callback_1(mthis, __arg_0);
+
+  static createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_2_(mthis, __arg_0, __arg_1) => createSVGTransformFromMatrix_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+  createSVGTransformFromMatrix_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createSVGTransformFromMatrix_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getItem_Callback_0(mthis) native "SVGTransformList_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "SVGTransformList_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initialize_Callback_0(mthis) native "SVGTransformList_initialize_Callback";
+  initialize_Callback_0_(mthis) => initialize_Callback_0(mthis);
+
+  static initialize_Callback_1(mthis, __arg_0) native "SVGTransformList_initialize_Callback";
+  initialize_Callback_1_(mthis, __arg_0) => initialize_Callback_1(mthis, __arg_0);
+
+  static initialize_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_initialize_Callback";
+  initialize_Callback_2_(mthis, __arg_0, __arg_1) => initialize_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_initialize_Callback";
+  initialize_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initialize_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_0(mthis) native "SVGTransformList_insertItemBefore_Callback";
+  insertItemBefore_Callback_0_(mthis) => insertItemBefore_Callback_0(mthis);
+
+  static insertItemBefore_Callback_1(mthis, __arg_0) native "SVGTransformList_insertItemBefore_Callback";
+  insertItemBefore_Callback_1_(mthis, __arg_0) => insertItemBefore_Callback_1(mthis, __arg_0);
+
+  static insertItemBefore_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_insertItemBefore_Callback";
+  insertItemBefore_Callback_2_(mthis, __arg_0, __arg_1) => insertItemBefore_Callback_2(mthis, __arg_0, __arg_1);
+
+  static insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_insertItemBefore_Callback";
+  insertItemBefore_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => insertItemBefore_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransformList_insertItemBefore_Callback";
+  insertItemBefore_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => insertItemBefore_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
   static length_Getter(mthis) native "SVGTransformList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static numberOfItems_Getter(mthis) native "SVGTransformList_numberOfItems_Getter";
+  numberOfItems_Getter_(mthis) => numberOfItems_Getter(mthis);
 
-  static $__setter___Callback_2(mthis, index, value) native "SVGTransformList___setter___Callback";
+  static removeItem_Callback_0(mthis) native "SVGTransformList_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static appendItem_Callback_1(mthis, item) native "SVGTransformList_appendItem_Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "SVGTransformList_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static clear_Callback(mthis) native "SVGTransformList_clear_Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static consolidate_Callback(mthis) native "SVGTransformList_consolidate_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static createSVGTransformFromMatrix_Callback_1(mthis, matrix) native "SVGTransformList_createSVGTransformFromMatrix_Callback";
+  static replaceItem_Callback_0(mthis) native "SVGTransformList_replaceItem_Callback";
+  replaceItem_Callback_0_(mthis) => replaceItem_Callback_0(mthis);
 
-  static getItem_Callback_1(mthis, index) native "SVGTransformList_getItem_Callback";
+  static replaceItem_Callback_1(mthis, __arg_0) native "SVGTransformList_replaceItem_Callback";
+  replaceItem_Callback_1_(mthis, __arg_0) => replaceItem_Callback_1(mthis, __arg_0);
 
-  static initialize_Callback_1(mthis, item) native "SVGTransformList_initialize_Callback";
+  static replaceItem_Callback_2(mthis, __arg_0, __arg_1) native "SVGTransformList_replaceItem_Callback";
+  replaceItem_Callback_2_(mthis, __arg_0, __arg_1) => replaceItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static insertItemBefore_Callback_2(mthis, item, index) native "SVGTransformList_insertItemBefore_Callback";
+  static replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SVGTransformList_replaceItem_Callback";
+  replaceItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static removeItem_Callback_1(mthis, index) native "SVGTransformList_removeItem_Callback";
+  static replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SVGTransformList_replaceItem_Callback";
+  replaceItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => replaceItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static replaceItem_Callback_2(mthis, item, index) native "SVGTransformList_replaceItem_Callback";
 }
 
-class BlinkSVGUnitTypes {}
+class BlinkSVGUnitTypes {
+  static final instance = new BlinkSVGUnitTypes();
 
-class BlinkSVGUseElement {
+}
+
+class BlinkSVGUseElement extends BlinkSVGGraphicsElement {
+  static final instance = new BlinkSVGUseElement();
+
   static height_Getter(mthis) native "SVGUseElement_height_Getter";
-
-  static width_Getter(mthis) native "SVGUseElement_width_Getter";
-
-  static x_Getter(mthis) native "SVGUseElement_x_Getter";
-
-  static y_Getter(mthis) native "SVGUseElement_y_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static href_Getter(mthis) native "SVGUseElement_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static width_Getter(mthis) native "SVGUseElement_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
+  static x_Getter(mthis) native "SVGUseElement_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
+
+  static y_Getter(mthis) native "SVGUseElement_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
+
 }
 
-class BlinkSVGVKernElement {}
+class BlinkSVGVKernElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGVKernElement();
 
-class BlinkSVGViewElement {
-  static viewTarget_Getter(mthis) native "SVGViewElement_viewTarget_Getter";
+}
+
+class BlinkSVGViewElement extends BlinkSVGElement {
+  static final instance = new BlinkSVGViewElement();
 
   static preserveAspectRatio_Getter(mthis) native "SVGViewElement_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
 
   static viewBox_Getter(mthis) native "SVGViewElement_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
+  static viewTarget_Getter(mthis) native "SVGViewElement_viewTarget_Getter";
+  viewTarget_Getter_(mthis) => viewTarget_Getter(mthis);
 
   static zoomAndPan_Getter(mthis) native "SVGViewElement_zoomAndPan_Getter";
+  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
 
-  static zoomAndPan_Setter(mthis, value) native "SVGViewElement_zoomAndPan_Setter";
+  static zoomAndPan_Setter(mthis, __arg_0) native "SVGViewElement_zoomAndPan_Setter";
+  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSVGViewSpec {
+  static final instance = new BlinkSVGViewSpec();
+
   static preserveAspectRatioString_Getter(mthis) native "SVGViewSpec_preserveAspectRatioString_Getter";
-
-  static transform_Getter(mthis) native "SVGViewSpec_transform_Getter";
-
-  static transformString_Getter(mthis) native "SVGViewSpec_transformString_Getter";
-
-  static viewBoxString_Getter(mthis) native "SVGViewSpec_viewBoxString_Getter";
-
-  static viewTarget_Getter(mthis) native "SVGViewSpec_viewTarget_Getter";
-
-  static viewTargetString_Getter(mthis) native "SVGViewSpec_viewTargetString_Getter";
+  preserveAspectRatioString_Getter_(mthis) => preserveAspectRatioString_Getter(mthis);
 
   static preserveAspectRatio_Getter(mthis) native "SVGViewSpec_preserveAspectRatio_Getter";
+  preserveAspectRatio_Getter_(mthis) => preserveAspectRatio_Getter(mthis);
+
+  static transformString_Getter(mthis) native "SVGViewSpec_transformString_Getter";
+  transformString_Getter_(mthis) => transformString_Getter(mthis);
+
+  static transform_Getter(mthis) native "SVGViewSpec_transform_Getter";
+  transform_Getter_(mthis) => transform_Getter(mthis);
+
+  static viewBoxString_Getter(mthis) native "SVGViewSpec_viewBoxString_Getter";
+  viewBoxString_Getter_(mthis) => viewBoxString_Getter(mthis);
 
   static viewBox_Getter(mthis) native "SVGViewSpec_viewBox_Getter";
+  viewBox_Getter_(mthis) => viewBox_Getter(mthis);
+
+  static viewTargetString_Getter(mthis) native "SVGViewSpec_viewTargetString_Getter";
+  viewTargetString_Getter_(mthis) => viewTargetString_Getter(mthis);
+
+  static viewTarget_Getter(mthis) native "SVGViewSpec_viewTarget_Getter";
+  viewTarget_Getter_(mthis) => viewTarget_Getter(mthis);
 
   static zoomAndPan_Getter(mthis) native "SVGViewSpec_zoomAndPan_Getter";
+  zoomAndPan_Getter_(mthis) => zoomAndPan_Getter(mthis);
 
-  static zoomAndPan_Setter(mthis, value) native "SVGViewSpec_zoomAndPan_Setter";
+  static zoomAndPan_Setter(mthis, __arg_0) native "SVGViewSpec_zoomAndPan_Setter";
+  zoomAndPan_Setter_(mthis, __arg_0) => zoomAndPan_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSVGZoomEvent {
+class BlinkSVGZoomEvent extends BlinkUIEvent {
+  static final instance = new BlinkSVGZoomEvent();
+
   static newScale_Getter(mthis) native "SVGZoomEvent_newScale_Getter";
+  newScale_Getter_(mthis) => newScale_Getter(mthis);
 
   static newTranslate_Getter(mthis) native "SVGZoomEvent_newTranslate_Getter";
+  newTranslate_Getter_(mthis) => newTranslate_Getter(mthis);
 
   static previousScale_Getter(mthis) native "SVGZoomEvent_previousScale_Getter";
+  previousScale_Getter_(mthis) => previousScale_Getter(mthis);
 
   static previousTranslate_Getter(mthis) native "SVGZoomEvent_previousTranslate_Getter";
+  previousTranslate_Getter_(mthis) => previousTranslate_Getter(mthis);
 
   static zoomRectScreen_Getter(mthis) native "SVGZoomEvent_zoomRectScreen_Getter";
+  zoomRectScreen_Getter_(mthis) => zoomRectScreen_Getter(mthis);
+
 }
 
 class BlinkScreen {
+  static final instance = new BlinkScreen();
+
   static availHeight_Getter(mthis) native "Screen_availHeight_Getter";
+  availHeight_Getter_(mthis) => availHeight_Getter(mthis);
 
   static availLeft_Getter(mthis) native "Screen_availLeft_Getter";
+  availLeft_Getter_(mthis) => availLeft_Getter(mthis);
 
   static availTop_Getter(mthis) native "Screen_availTop_Getter";
+  availTop_Getter_(mthis) => availTop_Getter(mthis);
 
   static availWidth_Getter(mthis) native "Screen_availWidth_Getter";
+  availWidth_Getter_(mthis) => availWidth_Getter(mthis);
 
   static colorDepth_Getter(mthis) native "Screen_colorDepth_Getter";
+  colorDepth_Getter_(mthis) => colorDepth_Getter(mthis);
 
   static height_Getter(mthis) native "Screen_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
   static orientation_Getter(mthis) native "Screen_orientation_Getter";
+  orientation_Getter_(mthis) => orientation_Getter(mthis);
 
   static pixelDepth_Getter(mthis) native "Screen_pixelDepth_Getter";
+  pixelDepth_Getter_(mthis) => pixelDepth_Getter(mthis);
 
   static width_Getter(mthis) native "Screen_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
 }
 
-class BlinkScreenOrientation {
+class BlinkScreenOrientation extends BlinkEventTarget {
+  static final instance = new BlinkScreenOrientation();
+
   static angle_Getter(mthis) native "ScreenOrientation_angle_Getter";
+  angle_Getter_(mthis) => angle_Getter(mthis);
+
+  static lock_Callback_0(mthis) native "ScreenOrientation_lock_Callback";
+  lock_Callback_0_(mthis) => lock_Callback_0(mthis);
+
+  static lock_Callback_1(mthis, __arg_0) native "ScreenOrientation_lock_Callback";
+  lock_Callback_1_(mthis, __arg_0) => lock_Callback_1(mthis, __arg_0);
+
+  static lock_Callback_2(mthis, __arg_0, __arg_1) native "ScreenOrientation_lock_Callback";
+  lock_Callback_2_(mthis, __arg_0, __arg_1) => lock_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lock_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ScreenOrientation_lock_Callback";
+  lock_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lock_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onchange_Getter(mthis) native "ScreenOrientation_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "ScreenOrientation_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
 
   static type_Getter(mthis) native "ScreenOrientation_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static lock_Callback_1(mthis, orientation) native "ScreenOrientation_lock_Callback";
+  static unlock_Callback_0(mthis) native "ScreenOrientation_unlock_Callback";
+  unlock_Callback_0_(mthis) => unlock_Callback_0(mthis);
 
-  static unlock_Callback(mthis) native "ScreenOrientation_unlock_Callback";
+  static unlock_Callback_1(mthis, __arg_0) native "ScreenOrientation_unlock_Callback";
+  unlock_Callback_1_(mthis, __arg_0) => unlock_Callback_1(mthis, __arg_0);
+
+  static unlock_Callback_2(mthis, __arg_0, __arg_1) native "ScreenOrientation_unlock_Callback";
+  unlock_Callback_2_(mthis, __arg_0, __arg_1) => unlock_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkScriptProcessorNode {
+class BlinkScriptProcessorNode extends BlinkAudioNode {
+  static final instance = new BlinkScriptProcessorNode();
+
   static bufferSize_Getter(mthis) native "ScriptProcessorNode_bufferSize_Getter";
+  bufferSize_Getter_(mthis) => bufferSize_Getter(mthis);
 
-  static setEventListener_Callback_1(mthis, eventListener) native "ScriptProcessorNode_setEventListener_Callback";
+  static setEventListener_Callback_0(mthis) native "ScriptProcessorNode_setEventListener_Callback";
+  setEventListener_Callback_0_(mthis) => setEventListener_Callback_0(mthis);
+
+  static setEventListener_Callback_1(mthis, __arg_0) native "ScriptProcessorNode_setEventListener_Callback";
+  setEventListener_Callback_1_(mthis, __arg_0) => setEventListener_Callback_1(mthis, __arg_0);
+
+  static setEventListener_Callback_2(mthis, __arg_0, __arg_1) native "ScriptProcessorNode_setEventListener_Callback";
+  setEventListener_Callback_2_(mthis, __arg_0, __arg_1) => setEventListener_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ScriptProcessorNode_setEventListener_Callback";
+  setEventListener_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setEventListener_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkSecurityPolicyViolationEvent {
-  static constructorCallback(type, options) native "SecurityPolicyViolationEvent_constructorCallback";
+class BlinkSecurityPolicyViolationEvent extends BlinkEvent {
+  static final instance = new BlinkSecurityPolicyViolationEvent();
 
   static blockedURI_Getter(mthis) native "SecurityPolicyViolationEvent_blockedURI_Getter";
+  blockedURI_Getter_(mthis) => blockedURI_Getter(mthis);
 
   static columnNumber_Getter(mthis) native "SecurityPolicyViolationEvent_columnNumber_Getter";
+  columnNumber_Getter_(mthis) => columnNumber_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SecurityPolicyViolationEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static documentURI_Getter(mthis) native "SecurityPolicyViolationEvent_documentURI_Getter";
+  documentURI_Getter_(mthis) => documentURI_Getter(mthis);
 
   static effectiveDirective_Getter(mthis) native "SecurityPolicyViolationEvent_effectiveDirective_Getter";
+  effectiveDirective_Getter_(mthis) => effectiveDirective_Getter(mthis);
 
   static lineNumber_Getter(mthis) native "SecurityPolicyViolationEvent_lineNumber_Getter";
+  lineNumber_Getter_(mthis) => lineNumber_Getter(mthis);
 
   static originalPolicy_Getter(mthis) native "SecurityPolicyViolationEvent_originalPolicy_Getter";
+  originalPolicy_Getter_(mthis) => originalPolicy_Getter(mthis);
 
   static referrer_Getter(mthis) native "SecurityPolicyViolationEvent_referrer_Getter";
+  referrer_Getter_(mthis) => referrer_Getter(mthis);
 
   static sourceFile_Getter(mthis) native "SecurityPolicyViolationEvent_sourceFile_Getter";
+  sourceFile_Getter_(mthis) => sourceFile_Getter(mthis);
 
   static statusCode_Getter(mthis) native "SecurityPolicyViolationEvent_statusCode_Getter";
+  statusCode_Getter_(mthis) => statusCode_Getter(mthis);
 
   static violatedDirective_Getter(mthis) native "SecurityPolicyViolationEvent_violatedDirective_Getter";
+  violatedDirective_Getter_(mthis) => violatedDirective_Getter(mthis);
+
 }
 
 class BlinkSelection {
+  static final instance = new BlinkSelection();
+
+  static addRange_Callback_0(mthis) native "Selection_addRange_Callback";
+  addRange_Callback_0_(mthis) => addRange_Callback_0(mthis);
+
+  static addRange_Callback_1(mthis, __arg_0) native "Selection_addRange_Callback";
+  addRange_Callback_1_(mthis, __arg_0) => addRange_Callback_1(mthis, __arg_0);
+
+  static addRange_Callback_2(mthis, __arg_0, __arg_1) native "Selection_addRange_Callback";
+  addRange_Callback_2_(mthis, __arg_0, __arg_1) => addRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_addRange_Callback";
+  addRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static anchorNode_Getter(mthis) native "Selection_anchorNode_Getter";
+  anchorNode_Getter_(mthis) => anchorNode_Getter(mthis);
 
   static anchorOffset_Getter(mthis) native "Selection_anchorOffset_Getter";
+  anchorOffset_Getter_(mthis) => anchorOffset_Getter(mthis);
 
   static baseNode_Getter(mthis) native "Selection_baseNode_Getter";
+  baseNode_Getter_(mthis) => baseNode_Getter(mthis);
 
   static baseOffset_Getter(mthis) native "Selection_baseOffset_Getter";
+  baseOffset_Getter_(mthis) => baseOffset_Getter(mthis);
+
+  static collapseToEnd_Callback_0(mthis) native "Selection_collapseToEnd_Callback";
+  collapseToEnd_Callback_0_(mthis) => collapseToEnd_Callback_0(mthis);
+
+  static collapseToEnd_Callback_1(mthis, __arg_0) native "Selection_collapseToEnd_Callback";
+  collapseToEnd_Callback_1_(mthis, __arg_0) => collapseToEnd_Callback_1(mthis, __arg_0);
+
+  static collapseToEnd_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapseToEnd_Callback";
+  collapseToEnd_Callback_2_(mthis, __arg_0, __arg_1) => collapseToEnd_Callback_2(mthis, __arg_0, __arg_1);
+
+  static collapseToStart_Callback_0(mthis) native "Selection_collapseToStart_Callback";
+  collapseToStart_Callback_0_(mthis) => collapseToStart_Callback_0(mthis);
+
+  static collapseToStart_Callback_1(mthis, __arg_0) native "Selection_collapseToStart_Callback";
+  collapseToStart_Callback_1_(mthis, __arg_0) => collapseToStart_Callback_1(mthis, __arg_0);
+
+  static collapseToStart_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapseToStart_Callback";
+  collapseToStart_Callback_2_(mthis, __arg_0, __arg_1) => collapseToStart_Callback_2(mthis, __arg_0, __arg_1);
+
+  static collapse_Callback_0(mthis) native "Selection_collapse_Callback";
+  collapse_Callback_0_(mthis) => collapse_Callback_0(mthis);
+
+  static collapse_Callback_1(mthis, __arg_0) native "Selection_collapse_Callback";
+  collapse_Callback_1_(mthis, __arg_0) => collapse_Callback_1(mthis, __arg_0);
+
+  static collapse_Callback_2(mthis, __arg_0, __arg_1) native "Selection_collapse_Callback";
+  collapse_Callback_2_(mthis, __arg_0, __arg_1) => collapse_Callback_2(mthis, __arg_0, __arg_1);
+
+  static collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_collapse_Callback";
+  collapse_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => collapse_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static collapse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_collapse_Callback";
+  collapse_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => collapse_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static containsNode_Callback_0(mthis) native "Selection_containsNode_Callback";
+  containsNode_Callback_0_(mthis) => containsNode_Callback_0(mthis);
+
+  static containsNode_Callback_1(mthis, __arg_0) native "Selection_containsNode_Callback";
+  containsNode_Callback_1_(mthis, __arg_0) => containsNode_Callback_1(mthis, __arg_0);
+
+  static containsNode_Callback_2(mthis, __arg_0, __arg_1) native "Selection_containsNode_Callback";
+  containsNode_Callback_2_(mthis, __arg_0, __arg_1) => containsNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static containsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_containsNode_Callback";
+  containsNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => containsNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static containsNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_containsNode_Callback";
+  containsNode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => containsNode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static deleteFromDocument_Callback_0(mthis) native "Selection_deleteFromDocument_Callback";
+  deleteFromDocument_Callback_0_(mthis) => deleteFromDocument_Callback_0(mthis);
+
+  static deleteFromDocument_Callback_1(mthis, __arg_0) native "Selection_deleteFromDocument_Callback";
+  deleteFromDocument_Callback_1_(mthis, __arg_0) => deleteFromDocument_Callback_1(mthis, __arg_0);
+
+  static deleteFromDocument_Callback_2(mthis, __arg_0, __arg_1) native "Selection_deleteFromDocument_Callback";
+  deleteFromDocument_Callback_2_(mthis, __arg_0, __arg_1) => deleteFromDocument_Callback_2(mthis, __arg_0, __arg_1);
+
+  static empty_Callback_0(mthis) native "Selection_empty_Callback";
+  empty_Callback_0_(mthis) => empty_Callback_0(mthis);
+
+  static empty_Callback_1(mthis, __arg_0) native "Selection_empty_Callback";
+  empty_Callback_1_(mthis, __arg_0) => empty_Callback_1(mthis, __arg_0);
+
+  static empty_Callback_2(mthis, __arg_0, __arg_1) native "Selection_empty_Callback";
+  empty_Callback_2_(mthis, __arg_0, __arg_1) => empty_Callback_2(mthis, __arg_0, __arg_1);
+
+  static extend_Callback_0(mthis) native "Selection_extend_Callback";
+  extend_Callback_0_(mthis) => extend_Callback_0(mthis);
+
+  static extend_Callback_1(mthis, __arg_0) native "Selection_extend_Callback";
+  extend_Callback_1_(mthis, __arg_0) => extend_Callback_1(mthis, __arg_0);
+
+  static extend_Callback_2(mthis, __arg_0, __arg_1) native "Selection_extend_Callback";
+  extend_Callback_2_(mthis, __arg_0, __arg_1) => extend_Callback_2(mthis, __arg_0, __arg_1);
+
+  static extend_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_extend_Callback";
+  extend_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => extend_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static extend_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_extend_Callback";
+  extend_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => extend_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static extentNode_Getter(mthis) native "Selection_extentNode_Getter";
+  extentNode_Getter_(mthis) => extentNode_Getter(mthis);
 
   static extentOffset_Getter(mthis) native "Selection_extentOffset_Getter";
+  extentOffset_Getter_(mthis) => extentOffset_Getter(mthis);
 
   static focusNode_Getter(mthis) native "Selection_focusNode_Getter";
+  focusNode_Getter_(mthis) => focusNode_Getter(mthis);
 
   static focusOffset_Getter(mthis) native "Selection_focusOffset_Getter";
+  focusOffset_Getter_(mthis) => focusOffset_Getter(mthis);
+
+  static getRangeAt_Callback_0(mthis) native "Selection_getRangeAt_Callback";
+  getRangeAt_Callback_0_(mthis) => getRangeAt_Callback_0(mthis);
+
+  static getRangeAt_Callback_1(mthis, __arg_0) native "Selection_getRangeAt_Callback";
+  getRangeAt_Callback_1_(mthis, __arg_0) => getRangeAt_Callback_1(mthis, __arg_0);
+
+  static getRangeAt_Callback_2(mthis, __arg_0, __arg_1) native "Selection_getRangeAt_Callback";
+  getRangeAt_Callback_2_(mthis, __arg_0, __arg_1) => getRangeAt_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRangeAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_getRangeAt_Callback";
+  getRangeAt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRangeAt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static isCollapsed_Getter(mthis) native "Selection_isCollapsed_Getter";
+  isCollapsed_Getter_(mthis) => isCollapsed_Getter(mthis);
+
+  static modify_Callback_0(mthis) native "Selection_modify_Callback";
+  modify_Callback_0_(mthis) => modify_Callback_0(mthis);
+
+  static modify_Callback_1(mthis, __arg_0) native "Selection_modify_Callback";
+  modify_Callback_1_(mthis, __arg_0) => modify_Callback_1(mthis, __arg_0);
+
+  static modify_Callback_2(mthis, __arg_0, __arg_1) native "Selection_modify_Callback";
+  modify_Callback_2_(mthis, __arg_0, __arg_1) => modify_Callback_2(mthis, __arg_0, __arg_1);
+
+  static modify_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_modify_Callback";
+  modify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => modify_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static modify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_modify_Callback";
+  modify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => modify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static modify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Selection_modify_Callback";
+  modify_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => modify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static rangeCount_Getter(mthis) native "Selection_rangeCount_Getter";
+  rangeCount_Getter_(mthis) => rangeCount_Getter(mthis);
+
+  static removeAllRanges_Callback_0(mthis) native "Selection_removeAllRanges_Callback";
+  removeAllRanges_Callback_0_(mthis) => removeAllRanges_Callback_0(mthis);
+
+  static removeAllRanges_Callback_1(mthis, __arg_0) native "Selection_removeAllRanges_Callback";
+  removeAllRanges_Callback_1_(mthis, __arg_0) => removeAllRanges_Callback_1(mthis, __arg_0);
+
+  static removeAllRanges_Callback_2(mthis, __arg_0, __arg_1) native "Selection_removeAllRanges_Callback";
+  removeAllRanges_Callback_2_(mthis, __arg_0, __arg_1) => removeAllRanges_Callback_2(mthis, __arg_0, __arg_1);
+
+  static selectAllChildren_Callback_0(mthis) native "Selection_selectAllChildren_Callback";
+  selectAllChildren_Callback_0_(mthis) => selectAllChildren_Callback_0(mthis);
+
+  static selectAllChildren_Callback_1(mthis, __arg_0) native "Selection_selectAllChildren_Callback";
+  selectAllChildren_Callback_1_(mthis, __arg_0) => selectAllChildren_Callback_1(mthis, __arg_0);
+
+  static selectAllChildren_Callback_2(mthis, __arg_0, __arg_1) native "Selection_selectAllChildren_Callback";
+  selectAllChildren_Callback_2_(mthis, __arg_0, __arg_1) => selectAllChildren_Callback_2(mthis, __arg_0, __arg_1);
+
+  static selectAllChildren_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_selectAllChildren_Callback";
+  selectAllChildren_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => selectAllChildren_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setBaseAndExtent_Callback_0(mthis) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_0_(mthis) => setBaseAndExtent_Callback_0(mthis);
+
+  static setBaseAndExtent_Callback_1(mthis, __arg_0) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_1_(mthis, __arg_0) => setBaseAndExtent_Callback_1(mthis, __arg_0);
+
+  static setBaseAndExtent_Callback_2(mthis, __arg_0, __arg_1) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_2_(mthis, __arg_0, __arg_1) => setBaseAndExtent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setBaseAndExtent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setBaseAndExtent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setBaseAndExtent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setBaseAndExtent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setBaseAndExtent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setBaseAndExtent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setBaseAndExtent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Selection_setBaseAndExtent_Callback";
+  setBaseAndExtent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => setBaseAndExtent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static setPosition_Callback_0(mthis) native "Selection_setPosition_Callback";
+  setPosition_Callback_0_(mthis) => setPosition_Callback_0(mthis);
+
+  static setPosition_Callback_1(mthis, __arg_0) native "Selection_setPosition_Callback";
+  setPosition_Callback_1_(mthis, __arg_0) => setPosition_Callback_1(mthis, __arg_0);
+
+  static setPosition_Callback_2(mthis, __arg_0, __arg_1) native "Selection_setPosition_Callback";
+  setPosition_Callback_2_(mthis, __arg_0, __arg_1) => setPosition_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Selection_setPosition_Callback";
+  setPosition_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setPosition_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Selection_setPosition_Callback";
+  setPosition_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setPosition_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static type_Getter(mthis) native "Selection_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
 
-  static addRange_Callback_1(mthis, range) native "Selection_addRange_Callback";
-
-  static collapse_Callback_2(mthis, node, offset) native "Selection_collapse_Callback";
-
-  static collapse_Callback_1(mthis, node) native "Selection_collapse_Callback";
-
-  static collapseToEnd_Callback(mthis) native "Selection_collapseToEnd_Callback";
-
-  static collapseToStart_Callback(mthis) native "Selection_collapseToStart_Callback";
-
-  static containsNode_Callback_2(mthis, node, allowPartial) native "Selection_containsNode_Callback";
-
-  static deleteFromDocument_Callback(mthis) native "Selection_deleteFromDocument_Callback";
-
-  static empty_Callback(mthis) native "Selection_empty_Callback";
-
-  static extend_Callback_2(mthis, node, offset) native "Selection_extend_Callback";
-
-  static extend_Callback_1(mthis, node) native "Selection_extend_Callback";
-
-  static getRangeAt_Callback_1(mthis, index) native "Selection_getRangeAt_Callback";
-
-  static modify_Callback_3(mthis, alter, direction, granularity) native "Selection_modify_Callback";
-
-  static removeAllRanges_Callback(mthis) native "Selection_removeAllRanges_Callback";
-
-  static selectAllChildren_Callback_1(mthis, node) native "Selection_selectAllChildren_Callback";
-
-  static setBaseAndExtent_Callback_4(mthis, baseNode, baseOffset, extentNode, extentOffset) native "Selection_setBaseAndExtent_Callback";
-
-  static setPosition_Callback_2(mthis, node, offset) native "Selection_setPosition_Callback";
-
-  static setPosition_Callback_1(mthis, node) native "Selection_setPosition_Callback";
 }
 
-class BlinkServiceWorker {}
+class BlinkServiceWorker extends BlinkEventTarget {
+  static final instance = new BlinkServiceWorker();
+
+  static onerror_Getter(mthis) native "ServiceWorker_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "ServiceWorker_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onstatechange_Getter(mthis) native "ServiceWorker_onstatechange_Getter";
+  onstatechange_Getter_(mthis) => onstatechange_Getter(mthis);
+
+  static onstatechange_Setter(mthis, __arg_0) native "ServiceWorker_onstatechange_Setter";
+  onstatechange_Setter_(mthis, __arg_0) => onstatechange_Setter(mthis, __arg_0);
+
+  static postMessage_Callback_0(mthis) native "ServiceWorker_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "ServiceWorker_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorker_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorker_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorker_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scriptURL_Getter(mthis) native "ServiceWorker_scriptURL_Getter";
+  scriptURL_Getter_(mthis) => scriptURL_Getter(mthis);
+
+  static state_Getter(mthis) native "ServiceWorker_state_Getter";
+  state_Getter_(mthis) => state_Getter(mthis);
+
+}
 
 class BlinkServiceWorkerClient {
-  static id_Getter(mthis) native "ServiceWorkerClient_id_Getter";
+  static final instance = new BlinkServiceWorkerClient();
 
-  static postMessage_Callback_2(mthis, message, transfer) native "ServiceWorkerClient_postMessage_Callback";
+  static id_Getter(mthis) native "ServiceWorkerClient_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
+
+  static postMessage_Callback_0(mthis) native "ServiceWorkerClient_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "ServiceWorkerClient_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerClient_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerClient_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerClient_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
 class BlinkServiceWorkerClients {
-  static getServiced_Callback(mthis) native "ServiceWorkerClients_getServiced_Callback";
+  static final instance = new BlinkServiceWorkerClients();
+
+  static getServiced_Callback_0(mthis) native "ServiceWorkerClients_getServiced_Callback";
+  getServiced_Callback_0_(mthis) => getServiced_Callback_0(mthis);
+
+  static getServiced_Callback_1(mthis, __arg_0) native "ServiceWorkerClients_getServiced_Callback";
+  getServiced_Callback_1_(mthis, __arg_0) => getServiced_Callback_1(mthis, __arg_0);
+
+  static getServiced_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerClients_getServiced_Callback";
+  getServiced_Callback_2_(mthis, __arg_0, __arg_1) => getServiced_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkServiceWorkerContainer {
+  static final instance = new BlinkServiceWorkerContainer();
+
   static active_Getter(mthis) native "ServiceWorkerContainer_active_Getter";
+  active_Getter_(mthis) => active_Getter(mthis);
 
   static controller_Getter(mthis) native "ServiceWorkerContainer_controller_Getter";
+  controller_Getter_(mthis) => controller_Getter(mthis);
 
   static installing_Getter(mthis) native "ServiceWorkerContainer_installing_Getter";
+  installing_Getter_(mthis) => installing_Getter(mthis);
 
   static ready_Getter(mthis) native "ServiceWorkerContainer_ready_Getter";
+  ready_Getter_(mthis) => ready_Getter(mthis);
+
+  static register_Callback_0(mthis) native "ServiceWorkerContainer_register_Callback";
+  register_Callback_0_(mthis) => register_Callback_0(mthis);
+
+  static register_Callback_1(mthis, __arg_0) native "ServiceWorkerContainer_register_Callback";
+  register_Callback_1_(mthis, __arg_0) => register_Callback_1(mthis, __arg_0);
+
+  static register_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerContainer_register_Callback";
+  register_Callback_2_(mthis, __arg_0, __arg_1) => register_Callback_2(mthis, __arg_0, __arg_1);
+
+  static register_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerContainer_register_Callback";
+  register_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => register_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static register_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerContainer_register_Callback";
+  register_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => register_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static unregister_Callback_0(mthis) native "ServiceWorkerContainer_unregister_Callback";
+  unregister_Callback_0_(mthis) => unregister_Callback_0(mthis);
+
+  static unregister_Callback_1(mthis, __arg_0) native "ServiceWorkerContainer_unregister_Callback";
+  unregister_Callback_1_(mthis, __arg_0) => unregister_Callback_1(mthis, __arg_0);
+
+  static unregister_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerContainer_unregister_Callback";
+  unregister_Callback_2_(mthis, __arg_0, __arg_1) => unregister_Callback_2(mthis, __arg_0, __arg_1);
+
+  static unregister_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerContainer_unregister_Callback";
+  unregister_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => unregister_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static waiting_Getter(mthis) native "ServiceWorkerContainer_waiting_Getter";
+  waiting_Getter_(mthis) => waiting_Getter(mthis);
 
-  static register_Callback_2(mthis, url, options) native "ServiceWorkerContainer_register_Callback";
-
-  static register_Callback_1(mthis, url) native "ServiceWorkerContainer_register_Callback";
-
-  static unregister_Callback_1(mthis, scope) native "ServiceWorkerContainer_unregister_Callback";
-
-  static unregister_Callback(mthis) native "ServiceWorkerContainer_unregister_Callback";
 }
 
-class BlinkServiceWorkerGlobalScope {
+class BlinkServiceWorkerGlobalScope extends BlinkWorkerGlobalScope {
+  static final instance = new BlinkServiceWorkerGlobalScope();
+
   static clients_Getter(mthis) native "ServiceWorkerGlobalScope_clients_Getter";
+  clients_Getter_(mthis) => clients_Getter(mthis);
+
+  static fetch_Callback_0(mthis) native "ServiceWorkerGlobalScope_fetch_Callback";
+  fetch_Callback_0_(mthis) => fetch_Callback_0(mthis);
+
+  static fetch_Callback_1(mthis, __arg_0) native "ServiceWorkerGlobalScope_fetch_Callback";
+  fetch_Callback_1_(mthis, __arg_0) => fetch_Callback_1(mthis, __arg_0);
+
+  static fetch_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerGlobalScope_fetch_Callback";
+  fetch_Callback_2_(mthis, __arg_0, __arg_1) => fetch_Callback_2(mthis, __arg_0, __arg_1);
+
+  static fetch_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ServiceWorkerGlobalScope_fetch_Callback";
+  fetch_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => fetch_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static fetch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ServiceWorkerGlobalScope_fetch_Callback";
+  fetch_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => fetch_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static nativeCaches_Getter(mthis) native "ServiceWorkerGlobalScope_nativeCaches_Getter";
+  nativeCaches_Getter_(mthis) => nativeCaches_Getter(mthis);
+
+  static onactivate_Getter(mthis) native "ServiceWorkerGlobalScope_onactivate_Getter";
+  onactivate_Getter_(mthis) => onactivate_Getter(mthis);
+
+  static onactivate_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onactivate_Setter";
+  onactivate_Setter_(mthis, __arg_0) => onactivate_Setter(mthis, __arg_0);
+
+  static onfetch_Getter(mthis) native "ServiceWorkerGlobalScope_onfetch_Getter";
+  onfetch_Getter_(mthis) => onfetch_Getter(mthis);
+
+  static onfetch_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onfetch_Setter";
+  onfetch_Setter_(mthis, __arg_0) => onfetch_Setter(mthis, __arg_0);
+
+  static oninstall_Getter(mthis) native "ServiceWorkerGlobalScope_oninstall_Getter";
+  oninstall_Getter_(mthis) => oninstall_Getter(mthis);
+
+  static oninstall_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_oninstall_Setter";
+  oninstall_Setter_(mthis, __arg_0) => oninstall_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "ServiceWorkerGlobalScope_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onpush_Getter(mthis) native "ServiceWorkerGlobalScope_onpush_Getter";
+  onpush_Getter_(mthis) => onpush_Getter(mthis);
+
+  static onpush_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onpush_Setter";
+  onpush_Setter_(mthis, __arg_0) => onpush_Setter(mthis, __arg_0);
+
+  static onsync_Getter(mthis) native "ServiceWorkerGlobalScope_onsync_Getter";
+  onsync_Getter_(mthis) => onsync_Getter(mthis);
+
+  static onsync_Setter(mthis, __arg_0) native "ServiceWorkerGlobalScope_onsync_Setter";
+  onsync_Setter_(mthis, __arg_0) => onsync_Setter(mthis, __arg_0);
 
   static scope_Getter(mthis) native "ServiceWorkerGlobalScope_scope_Getter";
+  scope_Getter_(mthis) => scope_Getter(mthis);
 
-  static fetch_Callback_1(mthis, request) native "ServiceWorkerGlobalScope_fetch_Callback";
-
-  static fetch_Callback_2(mthis, request, requestInitDict) native "ServiceWorkerGlobalScope_fetch_Callback";
 }
 
-class BlinkServiceWorkerRegistration {
+class BlinkServiceWorkerRegistration extends BlinkEventTarget {
+  static final instance = new BlinkServiceWorkerRegistration();
+
   static active_Getter(mthis) native "ServiceWorkerRegistration_active_Getter";
+  active_Getter_(mthis) => active_Getter(mthis);
 
   static installing_Getter(mthis) native "ServiceWorkerRegistration_installing_Getter";
+  installing_Getter_(mthis) => installing_Getter(mthis);
+
+  static onupdatefound_Getter(mthis) native "ServiceWorkerRegistration_onupdatefound_Getter";
+  onupdatefound_Getter_(mthis) => onupdatefound_Getter(mthis);
+
+  static onupdatefound_Setter(mthis, __arg_0) native "ServiceWorkerRegistration_onupdatefound_Setter";
+  onupdatefound_Setter_(mthis, __arg_0) => onupdatefound_Setter(mthis, __arg_0);
 
   static scope_Getter(mthis) native "ServiceWorkerRegistration_scope_Getter";
+  scope_Getter_(mthis) => scope_Getter(mthis);
+
+  static unregister_Callback_0(mthis) native "ServiceWorkerRegistration_unregister_Callback";
+  unregister_Callback_0_(mthis) => unregister_Callback_0(mthis);
+
+  static unregister_Callback_1(mthis, __arg_0) native "ServiceWorkerRegistration_unregister_Callback";
+  unregister_Callback_1_(mthis, __arg_0) => unregister_Callback_1(mthis, __arg_0);
+
+  static unregister_Callback_2(mthis, __arg_0, __arg_1) native "ServiceWorkerRegistration_unregister_Callback";
+  unregister_Callback_2_(mthis, __arg_0, __arg_1) => unregister_Callback_2(mthis, __arg_0, __arg_1);
 
   static waiting_Getter(mthis) native "ServiceWorkerRegistration_waiting_Getter";
+  waiting_Getter_(mthis) => waiting_Getter(mthis);
 
-  static unregister_Callback(mthis) native "ServiceWorkerRegistration_unregister_Callback";
 }
 
-class BlinkShadowRoot {
+class BlinkShadowRoot extends BlinkDocumentFragment {
+  static final instance = new BlinkShadowRoot();
+
   static activeElement_Getter(mthis) native "ShadowRoot_activeElement_Getter";
+  activeElement_Getter_(mthis) => activeElement_Getter(mthis);
+
+  static cloneNode_Callback_0(mthis) native "ShadowRoot_cloneNode_Callback";
+  cloneNode_Callback_0_(mthis) => cloneNode_Callback_0(mthis);
+
+  static cloneNode_Callback_1(mthis, __arg_0) native "ShadowRoot_cloneNode_Callback";
+  cloneNode_Callback_1_(mthis, __arg_0) => cloneNode_Callback_1(mthis, __arg_0);
+
+  static cloneNode_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_cloneNode_Callback";
+  cloneNode_Callback_2_(mthis, __arg_0, __arg_1) => cloneNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_cloneNode_Callback";
+  cloneNode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cloneNode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static elementFromPoint_Callback_0(mthis) native "ShadowRoot_elementFromPoint_Callback";
+  elementFromPoint_Callback_0_(mthis) => elementFromPoint_Callback_0(mthis);
+
+  static elementFromPoint_Callback_1(mthis, __arg_0) native "ShadowRoot_elementFromPoint_Callback";
+  elementFromPoint_Callback_1_(mthis, __arg_0) => elementFromPoint_Callback_1(mthis, __arg_0);
+
+  static elementFromPoint_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_elementFromPoint_Callback";
+  elementFromPoint_Callback_2_(mthis, __arg_0, __arg_1) => elementFromPoint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_elementFromPoint_Callback";
+  elementFromPoint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => elementFromPoint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "ShadowRoot_elementFromPoint_Callback";
+  elementFromPoint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => elementFromPoint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getElementById_Callback_0(mthis) native "ShadowRoot_getElementById_Callback";
+  getElementById_Callback_0_(mthis) => getElementById_Callback_0(mthis);
+
+  static getElementById_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementById_Callback";
+  getElementById_Callback_1_(mthis, __arg_0) => getElementById_Callback_1(mthis, __arg_0);
+
+  static getElementById_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementById_Callback";
+  getElementById_Callback_2_(mthis, __arg_0, __arg_1) => getElementById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementById_Callback";
+  getElementById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByClassName_Callback_0(mthis) native "ShadowRoot_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_0_(mthis) => getElementsByClassName_Callback_0(mthis);
+
+  static getElementsByClassName_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_1_(mthis, __arg_0) => getElementsByClassName_Callback_1(mthis, __arg_0);
+
+  static getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByClassName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementsByClassName_Callback";
+  getElementsByClassName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByClassName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getElementsByTagName_Callback_0(mthis) native "ShadowRoot_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_0_(mthis) => getElementsByTagName_Callback_0(mthis);
+
+  static getElementsByTagName_Callback_1(mthis, __arg_0) native "ShadowRoot_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_1_(mthis, __arg_0) => getElementsByTagName_Callback_1(mthis, __arg_0);
+
+  static getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_2_(mthis, __arg_0, __arg_1) => getElementsByTagName_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "ShadowRoot_getElementsByTagName_Callback";
+  getElementsByTagName_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getElementsByTagName_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getSelection_Callback_0(mthis) native "ShadowRoot_getSelection_Callback";
+  getSelection_Callback_0_(mthis) => getSelection_Callback_0(mthis);
+
+  static getSelection_Callback_1(mthis, __arg_0) native "ShadowRoot_getSelection_Callback";
+  getSelection_Callback_1_(mthis, __arg_0) => getSelection_Callback_1(mthis, __arg_0);
+
+  static getSelection_Callback_2(mthis, __arg_0, __arg_1) native "ShadowRoot_getSelection_Callback";
+  getSelection_Callback_2_(mthis, __arg_0, __arg_1) => getSelection_Callback_2(mthis, __arg_0, __arg_1);
 
   static host_Getter(mthis) native "ShadowRoot_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
 
   static innerHTML_Getter(mthis) native "ShadowRoot_innerHTML_Getter";
+  innerHTML_Getter_(mthis) => innerHTML_Getter(mthis);
 
-  static innerHTML_Setter(mthis, value) native "ShadowRoot_innerHTML_Setter";
+  static innerHTML_Setter(mthis, __arg_0) native "ShadowRoot_innerHTML_Setter";
+  innerHTML_Setter_(mthis, __arg_0) => innerHTML_Setter(mthis, __arg_0);
 
   static olderShadowRoot_Getter(mthis) native "ShadowRoot_olderShadowRoot_Getter";
+  olderShadowRoot_Getter_(mthis) => olderShadowRoot_Getter(mthis);
 
   static styleSheets_Getter(mthis) native "ShadowRoot_styleSheets_Getter";
+  styleSheets_Getter_(mthis) => styleSheets_Getter(mthis);
 
-  static cloneNode_Callback_1(mthis, deep) native "ShadowRoot_cloneNode_Callback";
-
-  static elementFromPoint_Callback_2(mthis, x, y) native "ShadowRoot_elementFromPoint_Callback";
-
-  static getElementById_Callback_1(mthis, elementId) native "ShadowRoot_getElementById_Callback";
-
-  static getElementsByClassName_Callback_1(mthis, className) native "ShadowRoot_getElementsByClassName_Callback";
-
-  static getElementsByTagName_Callback_1(mthis, tagName) native "ShadowRoot_getElementsByTagName_Callback";
-
-  static getSelection_Callback(mthis) native "ShadowRoot_getSelection_Callback";
 }
 
-class BlinkSharedWorker {
-  static constructorCallback_2(scriptURL, name) native "SharedWorker_constructorCallback";
+class BlinkSharedWorker extends BlinkEventTarget {
+  static final instance = new BlinkSharedWorker();
+
+  static constructorCallback_0() native "SharedWorker_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "SharedWorker_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SharedWorker_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "SharedWorker_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "SharedWorker_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static onerror_Getter(mthis) native "SharedWorker_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "SharedWorker_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
 
   static port_Getter(mthis) native "SharedWorker_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
 
   static workerStart_Getter(mthis) native "SharedWorker_workerStart_Getter";
+  workerStart_Getter_(mthis) => workerStart_Getter(mthis);
+
 }
 
-class BlinkSharedWorkerGlobalScope {
+class BlinkSharedWorkerGlobalScope extends BlinkWorkerGlobalScope {
+  static final instance = new BlinkSharedWorkerGlobalScope();
+
   static name_Getter(mthis) native "SharedWorkerGlobalScope_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
+  static onconnect_Getter(mthis) native "SharedWorkerGlobalScope_onconnect_Getter";
+  onconnect_Getter_(mthis) => onconnect_Getter(mthis);
+
+  static onconnect_Setter(mthis, __arg_0) native "SharedWorkerGlobalScope_onconnect_Setter";
+  onconnect_Setter_(mthis, __arg_0) => onconnect_Setter(mthis, __arg_0);
+
 }
 
-class BlinkSourceBuffer {
-  static appendWindowEnd_Getter(mthis) native "SourceBuffer_appendWindowEnd_Getter";
+class BlinkSourceBuffer extends BlinkEventTarget {
+  static final instance = new BlinkSourceBuffer();
 
-  static appendWindowEnd_Setter(mthis, value) native "SourceBuffer_appendWindowEnd_Setter";
+  static abort_Callback_0(mthis) native "SourceBuffer_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "SourceBuffer_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendBuffer_Callback_0(mthis) native "SourceBuffer_appendBuffer_Callback";
+  appendBuffer_Callback_0_(mthis) => appendBuffer_Callback_0(mthis);
+
+  static appendBuffer_Callback_1(mthis, __arg_0) native "SourceBuffer_appendBuffer_Callback";
+  appendBuffer_Callback_1_(mthis, __arg_0) => appendBuffer_Callback_1(mthis, __arg_0);
+
+  static appendBuffer_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_appendBuffer_Callback";
+  appendBuffer_Callback_2_(mthis, __arg_0, __arg_1) => appendBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_appendBuffer_Callback";
+  appendBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static appendStream_Callback_0(mthis) native "SourceBuffer_appendStream_Callback";
+  appendStream_Callback_0_(mthis) => appendStream_Callback_0(mthis);
+
+  static appendStream_Callback_1(mthis, __arg_0) native "SourceBuffer_appendStream_Callback";
+  appendStream_Callback_1_(mthis, __arg_0) => appendStream_Callback_1(mthis, __arg_0);
+
+  static appendStream_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_appendStream_Callback";
+  appendStream_Callback_2_(mthis, __arg_0, __arg_1) => appendStream_Callback_2(mthis, __arg_0, __arg_1);
+
+  static appendStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_appendStream_Callback";
+  appendStream_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => appendStream_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static appendStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SourceBuffer_appendStream_Callback";
+  appendStream_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => appendStream_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static appendWindowEnd_Getter(mthis) native "SourceBuffer_appendWindowEnd_Getter";
+  appendWindowEnd_Getter_(mthis) => appendWindowEnd_Getter(mthis);
+
+  static appendWindowEnd_Setter(mthis, __arg_0) native "SourceBuffer_appendWindowEnd_Setter";
+  appendWindowEnd_Setter_(mthis, __arg_0) => appendWindowEnd_Setter(mthis, __arg_0);
 
   static appendWindowStart_Getter(mthis) native "SourceBuffer_appendWindowStart_Getter";
+  appendWindowStart_Getter_(mthis) => appendWindowStart_Getter(mthis);
 
-  static appendWindowStart_Setter(mthis, value) native "SourceBuffer_appendWindowStart_Setter";
+  static appendWindowStart_Setter(mthis, __arg_0) native "SourceBuffer_appendWindowStart_Setter";
+  appendWindowStart_Setter_(mthis, __arg_0) => appendWindowStart_Setter(mthis, __arg_0);
 
   static buffered_Getter(mthis) native "SourceBuffer_buffered_Getter";
+  buffered_Getter_(mthis) => buffered_Getter(mthis);
 
   static mode_Getter(mthis) native "SourceBuffer_mode_Getter";
+  mode_Getter_(mthis) => mode_Getter(mthis);
 
-  static mode_Setter(mthis, value) native "SourceBuffer_mode_Setter";
+  static mode_Setter(mthis, __arg_0) native "SourceBuffer_mode_Setter";
+  mode_Setter_(mthis, __arg_0) => mode_Setter(mthis, __arg_0);
+
+  static remove_Callback_0(mthis) native "SourceBuffer_remove_Callback";
+  remove_Callback_0_(mthis) => remove_Callback_0(mthis);
+
+  static remove_Callback_1(mthis, __arg_0) native "SourceBuffer_remove_Callback";
+  remove_Callback_1_(mthis, __arg_0) => remove_Callback_1(mthis, __arg_0);
+
+  static remove_Callback_2(mthis, __arg_0, __arg_1) native "SourceBuffer_remove_Callback";
+  remove_Callback_2_(mthis, __arg_0, __arg_1) => remove_Callback_2(mthis, __arg_0, __arg_1);
+
+  static remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBuffer_remove_Callback";
+  remove_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => remove_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SourceBuffer_remove_Callback";
+  remove_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => remove_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static timestampOffset_Getter(mthis) native "SourceBuffer_timestampOffset_Getter";
+  timestampOffset_Getter_(mthis) => timestampOffset_Getter(mthis);
 
-  static timestampOffset_Setter(mthis, value) native "SourceBuffer_timestampOffset_Setter";
+  static timestampOffset_Setter(mthis, __arg_0) native "SourceBuffer_timestampOffset_Setter";
+  timestampOffset_Setter_(mthis, __arg_0) => timestampOffset_Setter(mthis, __arg_0);
 
   static updating_Getter(mthis) native "SourceBuffer_updating_Getter";
+  updating_Getter_(mthis) => updating_Getter(mthis);
 
-  static abort_Callback(mthis) native "SourceBuffer_abort_Callback";
-
-  static appendBuffer_Callback_1(mthis, data) native "SourceBuffer_appendBuffer_Callback";
-
-  static appendStream_Callback_2(mthis, stream, maxSize) native "SourceBuffer_appendStream_Callback";
-
-  static appendStream_Callback_1(mthis, stream) native "SourceBuffer_appendStream_Callback";
-
-  static remove_Callback_2(mthis, start, end) native "SourceBuffer_remove_Callback";
 }
 
-class BlinkSourceBufferList {
-  static length_Getter(mthis) native "SourceBufferList_length_Getter";
+class BlinkSourceBufferList extends BlinkEventTarget {
+  static final instance = new BlinkSourceBufferList();
 
-  static item_Callback_1(mthis, index) native "SourceBufferList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "SourceBufferList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "SourceBufferList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "SourceBufferList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "SourceBufferList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SourceBufferList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "SourceBufferList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
 class BlinkSourceInfo {
+  static final instance = new BlinkSourceInfo();
+
   static facing_Getter(mthis) native "SourceInfo_facing_Getter";
+  facing_Getter_(mthis) => facing_Getter(mthis);
 
   static id_Getter(mthis) native "SourceInfo_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static kind_Getter(mthis) native "SourceInfo_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "SourceInfo_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
+
 }
 
 class BlinkSpeechGrammar {
-  static constructorCallback() native "SpeechGrammar_constructorCallback";
+  static final instance = new BlinkSpeechGrammar();
+
+  static constructorCallback_0() native "SpeechGrammar_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "SpeechGrammar_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechGrammar_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static src_Getter(mthis) native "SpeechGrammar_src_Getter";
+  src_Getter_(mthis) => src_Getter(mthis);
 
-  static src_Setter(mthis, value) native "SpeechGrammar_src_Setter";
+  static src_Setter(mthis, __arg_0) native "SpeechGrammar_src_Setter";
+  src_Setter_(mthis, __arg_0) => src_Setter(mthis, __arg_0);
 
   static weight_Getter(mthis) native "SpeechGrammar_weight_Getter";
+  weight_Getter_(mthis) => weight_Getter(mthis);
 
-  static weight_Setter(mthis, value) native "SpeechGrammar_weight_Setter";
+  static weight_Setter(mthis, __arg_0) native "SpeechGrammar_weight_Setter";
+  weight_Setter_(mthis, __arg_0) => weight_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSpeechGrammarList {
-  static constructorCallback() native "SpeechGrammarList_constructorCallback";
+  static final instance = new BlinkSpeechGrammarList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SpeechGrammarList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static addFromString_Callback_0(mthis) native "SpeechGrammarList_addFromString_Callback";
+  addFromString_Callback_0_(mthis) => addFromString_Callback_0(mthis);
+
+  static addFromString_Callback_1(mthis, __arg_0) native "SpeechGrammarList_addFromString_Callback";
+  addFromString_Callback_1_(mthis, __arg_0) => addFromString_Callback_1(mthis, __arg_0);
+
+  static addFromString_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_addFromString_Callback";
+  addFromString_Callback_2_(mthis, __arg_0, __arg_1) => addFromString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_addFromString_Callback";
+  addFromString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addFromString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SpeechGrammarList_addFromString_Callback";
+  addFromString_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addFromString_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static addFromUri_Callback_0(mthis) native "SpeechGrammarList_addFromUri_Callback";
+  addFromUri_Callback_0_(mthis) => addFromUri_Callback_0(mthis);
+
+  static addFromUri_Callback_1(mthis, __arg_0) native "SpeechGrammarList_addFromUri_Callback";
+  addFromUri_Callback_1_(mthis, __arg_0) => addFromUri_Callback_1(mthis, __arg_0);
+
+  static addFromUri_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_addFromUri_Callback";
+  addFromUri_Callback_2_(mthis, __arg_0, __arg_1) => addFromUri_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addFromUri_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_addFromUri_Callback";
+  addFromUri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addFromUri_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addFromUri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SpeechGrammarList_addFromUri_Callback";
+  addFromUri_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => addFromUri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_0() native "SpeechGrammarList_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "SpeechGrammarList_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechGrammarList_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static item_Callback_0(mthis) native "SpeechGrammarList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "SpeechGrammarList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechGrammarList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechGrammarList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static length_Getter(mthis) native "SpeechGrammarList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static addFromString_Callback_2(mthis, string, weight) native "SpeechGrammarList_addFromString_Callback";
-
-  static addFromString_Callback_1(mthis, string) native "SpeechGrammarList_addFromString_Callback";
-
-  static addFromUri_Callback_2(mthis, src, weight) native "SpeechGrammarList_addFromUri_Callback";
-
-  static addFromUri_Callback_1(mthis, src) native "SpeechGrammarList_addFromUri_Callback";
-
-  static item_Callback_1(mthis, index) native "SpeechGrammarList_item_Callback";
 }
 
-class BlinkSpeechRecognition {
-  static constructorCallback() native "SpeechRecognition_constructorCallback";
+class BlinkSpeechRecognition extends BlinkEventTarget {
+  static final instance = new BlinkSpeechRecognition();
+
+  static abort_Callback_0(mthis) native "SpeechRecognition_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "SpeechRecognition_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "SpeechRecognition_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "SpeechRecognition_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognition_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static continuous_Getter(mthis) native "SpeechRecognition_continuous_Getter";
+  continuous_Getter_(mthis) => continuous_Getter(mthis);
 
-  static continuous_Setter(mthis, value) native "SpeechRecognition_continuous_Setter";
+  static continuous_Setter(mthis, __arg_0) native "SpeechRecognition_continuous_Setter";
+  continuous_Setter_(mthis, __arg_0) => continuous_Setter(mthis, __arg_0);
 
   static grammars_Getter(mthis) native "SpeechRecognition_grammars_Getter";
+  grammars_Getter_(mthis) => grammars_Getter(mthis);
 
-  static grammars_Setter(mthis, value) native "SpeechRecognition_grammars_Setter";
+  static grammars_Setter(mthis, __arg_0) native "SpeechRecognition_grammars_Setter";
+  grammars_Setter_(mthis, __arg_0) => grammars_Setter(mthis, __arg_0);
 
   static interimResults_Getter(mthis) native "SpeechRecognition_interimResults_Getter";
+  interimResults_Getter_(mthis) => interimResults_Getter(mthis);
 
-  static interimResults_Setter(mthis, value) native "SpeechRecognition_interimResults_Setter";
+  static interimResults_Setter(mthis, __arg_0) native "SpeechRecognition_interimResults_Setter";
+  interimResults_Setter_(mthis, __arg_0) => interimResults_Setter(mthis, __arg_0);
 
   static lang_Getter(mthis) native "SpeechRecognition_lang_Getter";
+  lang_Getter_(mthis) => lang_Getter(mthis);
 
-  static lang_Setter(mthis, value) native "SpeechRecognition_lang_Setter";
+  static lang_Setter(mthis, __arg_0) native "SpeechRecognition_lang_Setter";
+  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
 
   static maxAlternatives_Getter(mthis) native "SpeechRecognition_maxAlternatives_Getter";
+  maxAlternatives_Getter_(mthis) => maxAlternatives_Getter(mthis);
 
-  static maxAlternatives_Setter(mthis, value) native "SpeechRecognition_maxAlternatives_Setter";
+  static maxAlternatives_Setter(mthis, __arg_0) native "SpeechRecognition_maxAlternatives_Setter";
+  maxAlternatives_Setter_(mthis, __arg_0) => maxAlternatives_Setter(mthis, __arg_0);
 
-  static abort_Callback(mthis) native "SpeechRecognition_abort_Callback";
+  static onaudioend_Getter(mthis) native "SpeechRecognition_onaudioend_Getter";
+  onaudioend_Getter_(mthis) => onaudioend_Getter(mthis);
 
-  static start_Callback(mthis) native "SpeechRecognition_start_Callback";
+  static onaudioend_Setter(mthis, __arg_0) native "SpeechRecognition_onaudioend_Setter";
+  onaudioend_Setter_(mthis, __arg_0) => onaudioend_Setter(mthis, __arg_0);
 
-  static stop_Callback(mthis) native "SpeechRecognition_stop_Callback";
+  static onaudiostart_Getter(mthis) native "SpeechRecognition_onaudiostart_Getter";
+  onaudiostart_Getter_(mthis) => onaudiostart_Getter(mthis);
+
+  static onaudiostart_Setter(mthis, __arg_0) native "SpeechRecognition_onaudiostart_Setter";
+  onaudiostart_Setter_(mthis, __arg_0) => onaudiostart_Setter(mthis, __arg_0);
+
+  static onend_Getter(mthis) native "SpeechRecognition_onend_Getter";
+  onend_Getter_(mthis) => onend_Getter(mthis);
+
+  static onend_Setter(mthis, __arg_0) native "SpeechRecognition_onend_Setter";
+  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "SpeechRecognition_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "SpeechRecognition_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onnomatch_Getter(mthis) native "SpeechRecognition_onnomatch_Getter";
+  onnomatch_Getter_(mthis) => onnomatch_Getter(mthis);
+
+  static onnomatch_Setter(mthis, __arg_0) native "SpeechRecognition_onnomatch_Setter";
+  onnomatch_Setter_(mthis, __arg_0) => onnomatch_Setter(mthis, __arg_0);
+
+  static onresult_Getter(mthis) native "SpeechRecognition_onresult_Getter";
+  onresult_Getter_(mthis) => onresult_Getter(mthis);
+
+  static onresult_Setter(mthis, __arg_0) native "SpeechRecognition_onresult_Setter";
+  onresult_Setter_(mthis, __arg_0) => onresult_Setter(mthis, __arg_0);
+
+  static onsoundend_Getter(mthis) native "SpeechRecognition_onsoundend_Getter";
+  onsoundend_Getter_(mthis) => onsoundend_Getter(mthis);
+
+  static onsoundend_Setter(mthis, __arg_0) native "SpeechRecognition_onsoundend_Setter";
+  onsoundend_Setter_(mthis, __arg_0) => onsoundend_Setter(mthis, __arg_0);
+
+  static onsoundstart_Getter(mthis) native "SpeechRecognition_onsoundstart_Getter";
+  onsoundstart_Getter_(mthis) => onsoundstart_Getter(mthis);
+
+  static onsoundstart_Setter(mthis, __arg_0) native "SpeechRecognition_onsoundstart_Setter";
+  onsoundstart_Setter_(mthis, __arg_0) => onsoundstart_Setter(mthis, __arg_0);
+
+  static onspeechend_Getter(mthis) native "SpeechRecognition_onspeechend_Getter";
+  onspeechend_Getter_(mthis) => onspeechend_Getter(mthis);
+
+  static onspeechend_Setter(mthis, __arg_0) native "SpeechRecognition_onspeechend_Setter";
+  onspeechend_Setter_(mthis, __arg_0) => onspeechend_Setter(mthis, __arg_0);
+
+  static onspeechstart_Getter(mthis) native "SpeechRecognition_onspeechstart_Getter";
+  onspeechstart_Getter_(mthis) => onspeechstart_Getter(mthis);
+
+  static onspeechstart_Setter(mthis, __arg_0) native "SpeechRecognition_onspeechstart_Setter";
+  onspeechstart_Setter_(mthis, __arg_0) => onspeechstart_Setter(mthis, __arg_0);
+
+  static onstart_Getter(mthis) native "SpeechRecognition_onstart_Getter";
+  onstart_Getter_(mthis) => onstart_Getter(mthis);
+
+  static onstart_Setter(mthis, __arg_0) native "SpeechRecognition_onstart_Setter";
+  onstart_Setter_(mthis, __arg_0) => onstart_Setter(mthis, __arg_0);
+
+  static start_Callback_0(mthis) native "SpeechRecognition_start_Callback";
+  start_Callback_0_(mthis) => start_Callback_0(mthis);
+
+  static start_Callback_1(mthis, __arg_0) native "SpeechRecognition_start_Callback";
+  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
+
+  static start_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_start_Callback";
+  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stop_Callback_0(mthis) native "SpeechRecognition_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+
+  static stop_Callback_1(mthis, __arg_0) native "SpeechRecognition_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognition_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
 class BlinkSpeechRecognitionAlternative {
+  static final instance = new BlinkSpeechRecognitionAlternative();
+
   static confidence_Getter(mthis) native "SpeechRecognitionAlternative_confidence_Getter";
+  confidence_Getter_(mthis) => confidence_Getter(mthis);
 
   static transcript_Getter(mthis) native "SpeechRecognitionAlternative_transcript_Getter";
+  transcript_Getter_(mthis) => transcript_Getter(mthis);
+
 }
 
-class BlinkSpeechRecognitionError {
-  static constructorCallback(type, options) native "SpeechRecognitionError_constructorCallback";
+class BlinkSpeechRecognitionError extends BlinkEvent {
+  static final instance = new BlinkSpeechRecognitionError();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognitionError_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static error_Getter(mthis) native "SpeechRecognitionError_error_Getter";
+  error_Getter_(mthis) => error_Getter(mthis);
 
   static message_Getter(mthis) native "SpeechRecognitionError_message_Getter";
+  message_Getter_(mthis) => message_Getter(mthis);
+
 }
 
-class BlinkSpeechRecognitionEvent {
-  static constructorCallback(type, options) native "SpeechRecognitionEvent_constructorCallback";
+class BlinkSpeechRecognitionEvent extends BlinkEvent {
+  static final instance = new BlinkSpeechRecognitionEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechRecognitionEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static emma_Getter(mthis) native "SpeechRecognitionEvent_emma_Getter";
+  emma_Getter_(mthis) => emma_Getter(mthis);
 
   static interpretation_Getter(mthis) native "SpeechRecognitionEvent_interpretation_Getter";
+  interpretation_Getter_(mthis) => interpretation_Getter(mthis);
 
   static resultIndex_Getter(mthis) native "SpeechRecognitionEvent_resultIndex_Getter";
+  resultIndex_Getter_(mthis) => resultIndex_Getter(mthis);
 
   static results_Getter(mthis) native "SpeechRecognitionEvent_results_Getter";
+  results_Getter_(mthis) => results_Getter(mthis);
+
 }
 
 class BlinkSpeechRecognitionResult {
+  static final instance = new BlinkSpeechRecognitionResult();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "SpeechRecognitionResult___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
   static isFinal_Getter(mthis) native "SpeechRecognitionResult_isFinal_Getter";
+  isFinal_Getter_(mthis) => isFinal_Getter(mthis);
+
+  static item_Callback_0(mthis) native "SpeechRecognitionResult_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "SpeechRecognitionResult_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognitionResult_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechRecognitionResult_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static length_Getter(mthis) native "SpeechRecognitionResult_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static item_Callback_1(mthis, index) native "SpeechRecognitionResult_item_Callback";
 }
 
 class BlinkSpeechRecognitionResultList {
-  static length_Getter(mthis) native "SpeechRecognitionResultList_length_Getter";
+  static final instance = new BlinkSpeechRecognitionResultList();
 
-  static item_Callback_1(mthis, index) native "SpeechRecognitionResultList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "SpeechRecognitionResultList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "SpeechRecognitionResultList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "SpeechRecognitionResultList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "SpeechRecognitionResultList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechRecognitionResultList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "SpeechRecognitionResultList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
-class BlinkSpeechSynthesis {
+class BlinkSpeechSynthesis extends BlinkEventTarget {
+  static final instance = new BlinkSpeechSynthesis();
+
+  static cancel_Callback_0(mthis) native "SpeechSynthesis_cancel_Callback";
+  cancel_Callback_0_(mthis) => cancel_Callback_0(mthis);
+
+  static cancel_Callback_1(mthis, __arg_0) native "SpeechSynthesis_cancel_Callback";
+  cancel_Callback_1_(mthis, __arg_0) => cancel_Callback_1(mthis, __arg_0);
+
+  static cancel_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_cancel_Callback";
+  cancel_Callback_2_(mthis, __arg_0, __arg_1) => cancel_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getVoices_Callback_0(mthis) native "SpeechSynthesis_getVoices_Callback";
+  getVoices_Callback_0_(mthis) => getVoices_Callback_0(mthis);
+
+  static getVoices_Callback_1(mthis, __arg_0) native "SpeechSynthesis_getVoices_Callback";
+  getVoices_Callback_1_(mthis, __arg_0) => getVoices_Callback_1(mthis, __arg_0);
+
+  static getVoices_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_getVoices_Callback";
+  getVoices_Callback_2_(mthis, __arg_0, __arg_1) => getVoices_Callback_2(mthis, __arg_0, __arg_1);
+
+  static onvoiceschanged_Getter(mthis) native "SpeechSynthesis_onvoiceschanged_Getter";
+  onvoiceschanged_Getter_(mthis) => onvoiceschanged_Getter(mthis);
+
+  static onvoiceschanged_Setter(mthis, __arg_0) native "SpeechSynthesis_onvoiceschanged_Setter";
+  onvoiceschanged_Setter_(mthis, __arg_0) => onvoiceschanged_Setter(mthis, __arg_0);
+
+  static pause_Callback_0(mthis) native "SpeechSynthesis_pause_Callback";
+  pause_Callback_0_(mthis) => pause_Callback_0(mthis);
+
+  static pause_Callback_1(mthis, __arg_0) native "SpeechSynthesis_pause_Callback";
+  pause_Callback_1_(mthis, __arg_0) => pause_Callback_1(mthis, __arg_0);
+
+  static pause_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_pause_Callback";
+  pause_Callback_2_(mthis, __arg_0, __arg_1) => pause_Callback_2(mthis, __arg_0, __arg_1);
+
   static paused_Getter(mthis) native "SpeechSynthesis_paused_Getter";
+  paused_Getter_(mthis) => paused_Getter(mthis);
 
   static pending_Getter(mthis) native "SpeechSynthesis_pending_Getter";
+  pending_Getter_(mthis) => pending_Getter(mthis);
+
+  static resume_Callback_0(mthis) native "SpeechSynthesis_resume_Callback";
+  resume_Callback_0_(mthis) => resume_Callback_0(mthis);
+
+  static resume_Callback_1(mthis, __arg_0) native "SpeechSynthesis_resume_Callback";
+  resume_Callback_1_(mthis, __arg_0) => resume_Callback_1(mthis, __arg_0);
+
+  static resume_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_resume_Callback";
+  resume_Callback_2_(mthis, __arg_0, __arg_1) => resume_Callback_2(mthis, __arg_0, __arg_1);
+
+  static speak_Callback_0(mthis) native "SpeechSynthesis_speak_Callback";
+  speak_Callback_0_(mthis) => speak_Callback_0(mthis);
+
+  static speak_Callback_1(mthis, __arg_0) native "SpeechSynthesis_speak_Callback";
+  speak_Callback_1_(mthis, __arg_0) => speak_Callback_1(mthis, __arg_0);
+
+  static speak_Callback_2(mthis, __arg_0, __arg_1) native "SpeechSynthesis_speak_Callback";
+  speak_Callback_2_(mthis, __arg_0, __arg_1) => speak_Callback_2(mthis, __arg_0, __arg_1);
+
+  static speak_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SpeechSynthesis_speak_Callback";
+  speak_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => speak_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static speaking_Getter(mthis) native "SpeechSynthesis_speaking_Getter";
+  speaking_Getter_(mthis) => speaking_Getter(mthis);
 
-  static cancel_Callback(mthis) native "SpeechSynthesis_cancel_Callback";
-
-  static getVoices_Callback(mthis) native "SpeechSynthesis_getVoices_Callback";
-
-  static pause_Callback(mthis) native "SpeechSynthesis_pause_Callback";
-
-  static resume_Callback(mthis) native "SpeechSynthesis_resume_Callback";
-
-  static speak_Callback_1(mthis, utterance) native "SpeechSynthesis_speak_Callback";
 }
 
-class BlinkSpeechSynthesisEvent {
+class BlinkSpeechSynthesisEvent extends BlinkEvent {
+  static final instance = new BlinkSpeechSynthesisEvent();
+
   static charIndex_Getter(mthis) native "SpeechSynthesisEvent_charIndex_Getter";
+  charIndex_Getter_(mthis) => charIndex_Getter(mthis);
 
   static elapsedTime_Getter(mthis) native "SpeechSynthesisEvent_elapsedTime_Getter";
+  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
 
   static name_Getter(mthis) native "SpeechSynthesisEvent_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
+
 }
 
-class BlinkSpeechSynthesisUtterance {
-  static constructorCallback_1(text) native "SpeechSynthesisUtterance_constructorCallback";
+class BlinkSpeechSynthesisUtterance extends BlinkEventTarget {
+  static final instance = new BlinkSpeechSynthesisUtterance();
+
+  static constructorCallback_0() native "SpeechSynthesisUtterance_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "SpeechSynthesisUtterance_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "SpeechSynthesisUtterance_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "SpeechSynthesisUtterance_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
 
   static lang_Getter(mthis) native "SpeechSynthesisUtterance_lang_Getter";
+  lang_Getter_(mthis) => lang_Getter(mthis);
 
-  static lang_Setter(mthis, value) native "SpeechSynthesisUtterance_lang_Setter";
+  static lang_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_lang_Setter";
+  lang_Setter_(mthis, __arg_0) => lang_Setter(mthis, __arg_0);
+
+  static onboundary_Getter(mthis) native "SpeechSynthesisUtterance_onboundary_Getter";
+  onboundary_Getter_(mthis) => onboundary_Getter(mthis);
+
+  static onboundary_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onboundary_Setter";
+  onboundary_Setter_(mthis, __arg_0) => onboundary_Setter(mthis, __arg_0);
+
+  static onend_Getter(mthis) native "SpeechSynthesisUtterance_onend_Getter";
+  onend_Getter_(mthis) => onend_Getter(mthis);
+
+  static onend_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onend_Setter";
+  onend_Setter_(mthis, __arg_0) => onend_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "SpeechSynthesisUtterance_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onmark_Getter(mthis) native "SpeechSynthesisUtterance_onmark_Getter";
+  onmark_Getter_(mthis) => onmark_Getter(mthis);
+
+  static onmark_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onmark_Setter";
+  onmark_Setter_(mthis, __arg_0) => onmark_Setter(mthis, __arg_0);
+
+  static onpause_Getter(mthis) native "SpeechSynthesisUtterance_onpause_Getter";
+  onpause_Getter_(mthis) => onpause_Getter(mthis);
+
+  static onpause_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onpause_Setter";
+  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+
+  static onresume_Getter(mthis) native "SpeechSynthesisUtterance_onresume_Getter";
+  onresume_Getter_(mthis) => onresume_Getter(mthis);
+
+  static onresume_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onresume_Setter";
+  onresume_Setter_(mthis, __arg_0) => onresume_Setter(mthis, __arg_0);
+
+  static onstart_Getter(mthis) native "SpeechSynthesisUtterance_onstart_Getter";
+  onstart_Getter_(mthis) => onstart_Getter(mthis);
+
+  static onstart_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_onstart_Setter";
+  onstart_Setter_(mthis, __arg_0) => onstart_Setter(mthis, __arg_0);
 
   static pitch_Getter(mthis) native "SpeechSynthesisUtterance_pitch_Getter";
+  pitch_Getter_(mthis) => pitch_Getter(mthis);
 
-  static pitch_Setter(mthis, value) native "SpeechSynthesisUtterance_pitch_Setter";
+  static pitch_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_pitch_Setter";
+  pitch_Setter_(mthis, __arg_0) => pitch_Setter(mthis, __arg_0);
 
   static rate_Getter(mthis) native "SpeechSynthesisUtterance_rate_Getter";
+  rate_Getter_(mthis) => rate_Getter(mthis);
 
-  static rate_Setter(mthis, value) native "SpeechSynthesisUtterance_rate_Setter";
+  static rate_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_rate_Setter";
+  rate_Setter_(mthis, __arg_0) => rate_Setter(mthis, __arg_0);
 
   static text_Getter(mthis) native "SpeechSynthesisUtterance_text_Getter";
+  text_Getter_(mthis) => text_Getter(mthis);
 
-  static text_Setter(mthis, value) native "SpeechSynthesisUtterance_text_Setter";
+  static text_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_text_Setter";
+  text_Setter_(mthis, __arg_0) => text_Setter(mthis, __arg_0);
 
   static voice_Getter(mthis) native "SpeechSynthesisUtterance_voice_Getter";
+  voice_Getter_(mthis) => voice_Getter(mthis);
 
-  static voice_Setter(mthis, value) native "SpeechSynthesisUtterance_voice_Setter";
+  static voice_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_voice_Setter";
+  voice_Setter_(mthis, __arg_0) => voice_Setter(mthis, __arg_0);
 
   static volume_Getter(mthis) native "SpeechSynthesisUtterance_volume_Getter";
+  volume_Getter_(mthis) => volume_Getter(mthis);
 
-  static volume_Setter(mthis, value) native "SpeechSynthesisUtterance_volume_Setter";
+  static volume_Setter(mthis, __arg_0) native "SpeechSynthesisUtterance_volume_Setter";
+  volume_Setter_(mthis, __arg_0) => volume_Setter(mthis, __arg_0);
+
 }
 
 class BlinkSpeechSynthesisVoice {
+  static final instance = new BlinkSpeechSynthesisVoice();
+
   static default_Getter(mthis) native "SpeechSynthesisVoice_default_Getter";
+  default_Getter_(mthis) => default_Getter(mthis);
 
   static lang_Getter(mthis) native "SpeechSynthesisVoice_lang_Getter";
+  lang_Getter_(mthis) => lang_Getter(mthis);
 
   static localService_Getter(mthis) native "SpeechSynthesisVoice_localService_Getter";
+  localService_Getter_(mthis) => localService_Getter(mthis);
 
   static name_Getter(mthis) native "SpeechSynthesisVoice_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static voiceURI_Getter(mthis) native "SpeechSynthesisVoice_voiceURI_Getter";
+  voiceURI_Getter_(mthis) => voiceURI_Getter(mthis);
+
 }
 
 class BlinkStorage {
+  static final instance = new BlinkStorage();
+
+  static $__delete___Callback_1(mthis, __arg_0) native "Storage___delete___Callback";
+  $__delete___Callback_1_(mthis, __arg_0) => $__delete___Callback_1(mthis, __arg_0);
+
+  static $__getter___Callback_1(mthis, __arg_0) native "Storage___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "Storage___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static clear_Callback_0(mthis) native "Storage_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "Storage_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "Storage_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_0(mthis) native "Storage_getItem_Callback";
+  getItem_Callback_0_(mthis) => getItem_Callback_0(mthis);
+
+  static getItem_Callback_1(mthis, __arg_0) native "Storage_getItem_Callback";
+  getItem_Callback_1_(mthis, __arg_0) => getItem_Callback_1(mthis, __arg_0);
+
+  static getItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_getItem_Callback";
+  getItem_Callback_2_(mthis, __arg_0, __arg_1) => getItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_getItem_Callback";
+  getItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static key_Callback_0(mthis) native "Storage_key_Callback";
+  key_Callback_0_(mthis) => key_Callback_0(mthis);
+
+  static key_Callback_1(mthis, __arg_0) native "Storage_key_Callback";
+  key_Callback_1_(mthis, __arg_0) => key_Callback_1(mthis, __arg_0);
+
+  static key_Callback_2(mthis, __arg_0, __arg_1) native "Storage_key_Callback";
+  key_Callback_2_(mthis, __arg_0, __arg_1) => key_Callback_2(mthis, __arg_0, __arg_1);
+
+  static key_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_key_Callback";
+  key_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => key_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "Storage_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__delete___Callback_1(mthis, index_OR_name) native "Storage___delete___Callback";
+  static removeItem_Callback_0(mthis) native "Storage_removeItem_Callback";
+  removeItem_Callback_0_(mthis) => removeItem_Callback_0(mthis);
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "Storage___getter___Callback";
+  static removeItem_Callback_1(mthis, __arg_0) native "Storage_removeItem_Callback";
+  removeItem_Callback_1_(mthis, __arg_0) => removeItem_Callback_1(mthis, __arg_0);
 
-  static $__setter___Callback_2(mthis, index_OR_name, value) native "Storage___setter___Callback";
+  static removeItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_removeItem_Callback";
+  removeItem_Callback_2_(mthis, __arg_0, __arg_1) => removeItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static clear_Callback(mthis) native "Storage_clear_Callback";
+  static removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_removeItem_Callback";
+  removeItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getItem_Callback_1(mthis, key) native "Storage_getItem_Callback";
+  static setItem_Callback_0(mthis) native "Storage_setItem_Callback";
+  setItem_Callback_0_(mthis) => setItem_Callback_0(mthis);
 
-  static key_Callback_1(mthis, index) native "Storage_key_Callback";
+  static setItem_Callback_1(mthis, __arg_0) native "Storage_setItem_Callback";
+  setItem_Callback_1_(mthis, __arg_0) => setItem_Callback_1(mthis, __arg_0);
 
-  static removeItem_Callback_1(mthis, key) native "Storage_removeItem_Callback";
+  static setItem_Callback_2(mthis, __arg_0, __arg_1) native "Storage_setItem_Callback";
+  setItem_Callback_2_(mthis, __arg_0, __arg_1) => setItem_Callback_2(mthis, __arg_0, __arg_1);
 
-  static setItem_Callback_2(mthis, key, data) native "Storage_setItem_Callback";
+  static setItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Storage_setItem_Callback";
+  setItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Storage_setItem_Callback";
+  setItem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setItem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
-class BlinkStorageEvent {
-  static constructorCallback(type, options) native "StorageEvent_constructorCallback";
+class BlinkStorageEvent extends BlinkEvent {
+  static final instance = new BlinkStorageEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "StorageEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static initStorageEvent_Callback_0(mthis) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_0_(mthis) => initStorageEvent_Callback_0(mthis);
+
+  static initStorageEvent_Callback_1(mthis, __arg_0) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_1_(mthis, __arg_0) => initStorageEvent_Callback_1(mthis, __arg_0);
+
+  static initStorageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initStorageEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initStorageEvent_Callback_2(mthis, __arg_0, __arg_1) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_2_(mthis, __arg_0, __arg_1) => initStorageEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initStorageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initStorageEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initStorageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initStorageEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initStorageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initStorageEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initStorageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initStorageEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initStorageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initStorageEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initStorageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initStorageEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initStorageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "StorageEvent_initStorageEvent_Callback";
+  initStorageEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initStorageEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static key_Getter(mthis) native "StorageEvent_key_Getter";
+  key_Getter_(mthis) => key_Getter(mthis);
 
   static newValue_Getter(mthis) native "StorageEvent_newValue_Getter";
+  newValue_Getter_(mthis) => newValue_Getter(mthis);
 
   static oldValue_Getter(mthis) native "StorageEvent_oldValue_Getter";
+  oldValue_Getter_(mthis) => oldValue_Getter(mthis);
 
   static storageArea_Getter(mthis) native "StorageEvent_storageArea_Getter";
+  storageArea_Getter_(mthis) => storageArea_Getter(mthis);
 
   static url_Getter(mthis) native "StorageEvent_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
 
-  static initStorageEvent_Callback_8(mthis, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg) native "StorageEvent_initStorageEvent_Callback";
 }
 
 class BlinkStorageInfo {
+  static final instance = new BlinkStorageInfo();
+
   static quota_Getter(mthis) native "StorageInfo_quota_Getter";
+  quota_Getter_(mthis) => quota_Getter(mthis);
 
   static usage_Getter(mthis) native "StorageInfo_usage_Getter";
+  usage_Getter_(mthis) => usage_Getter(mthis);
+
 }
 
 class BlinkStorageQuota {
+  static final instance = new BlinkStorageQuota();
+
+  static queryInfo_Callback_0(mthis) native "StorageQuota_queryInfo_Callback";
+  queryInfo_Callback_0_(mthis) => queryInfo_Callback_0(mthis);
+
+  static queryInfo_Callback_1(mthis, __arg_0) native "StorageQuota_queryInfo_Callback";
+  queryInfo_Callback_1_(mthis, __arg_0) => queryInfo_Callback_1(mthis, __arg_0);
+
+  static queryInfo_Callback_2(mthis, __arg_0, __arg_1) native "StorageQuota_queryInfo_Callback";
+  queryInfo_Callback_2_(mthis, __arg_0, __arg_1) => queryInfo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static queryInfo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageQuota_queryInfo_Callback";
+  queryInfo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => queryInfo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static requestPersistentQuota_Callback_0(mthis) native "StorageQuota_requestPersistentQuota_Callback";
+  requestPersistentQuota_Callback_0_(mthis) => requestPersistentQuota_Callback_0(mthis);
+
+  static requestPersistentQuota_Callback_1(mthis, __arg_0) native "StorageQuota_requestPersistentQuota_Callback";
+  requestPersistentQuota_Callback_1_(mthis, __arg_0) => requestPersistentQuota_Callback_1(mthis, __arg_0);
+
+  static requestPersistentQuota_Callback_2(mthis, __arg_0, __arg_1) native "StorageQuota_requestPersistentQuota_Callback";
+  requestPersistentQuota_Callback_2_(mthis, __arg_0, __arg_1) => requestPersistentQuota_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestPersistentQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StorageQuota_requestPersistentQuota_Callback";
+  requestPersistentQuota_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestPersistentQuota_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static supportedTypes_Getter(mthis) native "StorageQuota_supportedTypes_Getter";
+  supportedTypes_Getter_(mthis) => supportedTypes_Getter(mthis);
 
-  static queryInfo_Callback_1(mthis, type) native "StorageQuota_queryInfo_Callback";
-
-  static requestPersistentQuota_Callback_1(mthis, newQuota) native "StorageQuota_requestPersistentQuota_Callback";
 }
 
 class BlinkStream {
+  static final instance = new BlinkStream();
+
   static type_Getter(mthis) native "Stream_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
 class BlinkStyleMedia {
-  static type_Getter(mthis) native "StyleMedia_type_Getter";
+  static final instance = new BlinkStyleMedia();
 
-  static matchMedium_Callback_1(mthis, mediaquery) native "StyleMedia_matchMedium_Callback";
+  static matchMedium_Callback_0(mthis) native "StyleMedia_matchMedium_Callback";
+  matchMedium_Callback_0_(mthis) => matchMedium_Callback_0(mthis);
+
+  static matchMedium_Callback_1(mthis, __arg_0) native "StyleMedia_matchMedium_Callback";
+  matchMedium_Callback_1_(mthis, __arg_0) => matchMedium_Callback_1(mthis, __arg_0);
+
+  static matchMedium_Callback_2(mthis, __arg_0, __arg_1) native "StyleMedia_matchMedium_Callback";
+  matchMedium_Callback_2_(mthis, __arg_0, __arg_1) => matchMedium_Callback_2(mthis, __arg_0, __arg_1);
+
+  static matchMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StyleMedia_matchMedium_Callback";
+  matchMedium_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchMedium_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static type_Getter(mthis) native "StyleMedia_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
+}
+
+class BlinkStyleSheet {
+  static final instance = new BlinkStyleSheet();
+
+  static disabled_Getter(mthis) native "StyleSheet_disabled_Getter";
+  disabled_Getter_(mthis) => disabled_Getter(mthis);
+
+  static disabled_Setter(mthis, __arg_0) native "StyleSheet_disabled_Setter";
+  disabled_Setter_(mthis, __arg_0) => disabled_Setter(mthis, __arg_0);
+
+  static href_Getter(mthis) native "StyleSheet_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static media_Getter(mthis) native "StyleSheet_media_Getter";
+  media_Getter_(mthis) => media_Getter(mthis);
+
+  static ownerNode_Getter(mthis) native "StyleSheet_ownerNode_Getter";
+  ownerNode_Getter_(mthis) => ownerNode_Getter(mthis);
+
+  static parentStyleSheet_Getter(mthis) native "StyleSheet_parentStyleSheet_Getter";
+  parentStyleSheet_Getter_(mthis) => parentStyleSheet_Getter(mthis);
+
+  static title_Getter(mthis) native "StyleSheet_title_Getter";
+  title_Getter_(mthis) => title_Getter(mthis);
+
+  static type_Getter(mthis) native "StyleSheet_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
 class BlinkStyleSheetList {
+  static final instance = new BlinkStyleSheetList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "StyleSheetList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "StyleSheetList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "StyleSheetList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "StyleSheetList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "StyleSheetList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "StyleSheetList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, name) native "StyleSheetList___getter___Callback";
-
-  static item_Callback_1(mthis, index) native "StyleSheetList_item_Callback";
 }
 
-class BlinkSubtleCrypto {}
+class BlinkSubtleCrypto {
+  static final instance = new BlinkSubtleCrypto();
 
-class BlinkTextEvent {
+  static decrypt_Callback_1(mthis, __arg_0) native "SubtleCrypto_decrypt_Callback";
+  decrypt_Callback_1_(mthis, __arg_0) => decrypt_Callback_1(mthis, __arg_0);
+
+  static decrypt_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_decrypt_Callback";
+  decrypt_Callback_2_(mthis, __arg_0, __arg_1) => decrypt_Callback_2(mthis, __arg_0, __arg_1);
+
+  static decrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_decrypt_Callback";
+  decrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static decrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_decrypt_Callback";
+  decrypt_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static decrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_decrypt_Callback";
+  decrypt_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => decrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static digest_Callback_0(mthis) native "SubtleCrypto_digest_Callback";
+  digest_Callback_0_(mthis) => digest_Callback_0(mthis);
+
+  static digest_Callback_1(mthis, __arg_0) native "SubtleCrypto_digest_Callback";
+  digest_Callback_1_(mthis, __arg_0) => digest_Callback_1(mthis, __arg_0);
+
+  static digest_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_digest_Callback";
+  digest_Callback_2_(mthis, __arg_0, __arg_1) => digest_Callback_2(mthis, __arg_0, __arg_1);
+
+  static digest_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_digest_Callback";
+  digest_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => digest_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static digest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_digest_Callback";
+  digest_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => digest_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static encrypt_Callback_1(mthis, __arg_0) native "SubtleCrypto_encrypt_Callback";
+  encrypt_Callback_1_(mthis, __arg_0) => encrypt_Callback_1(mthis, __arg_0);
+
+  static encrypt_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_encrypt_Callback";
+  encrypt_Callback_2_(mthis, __arg_0, __arg_1) => encrypt_Callback_2(mthis, __arg_0, __arg_1);
+
+  static encrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_encrypt_Callback";
+  encrypt_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => encrypt_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static encrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_encrypt_Callback";
+  encrypt_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => encrypt_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static encrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_encrypt_Callback";
+  encrypt_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => encrypt_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static exportKey_Callback_0(mthis) native "SubtleCrypto_exportKey_Callback";
+  exportKey_Callback_0_(mthis) => exportKey_Callback_0(mthis);
+
+  static exportKey_Callback_1(mthis, __arg_0) native "SubtleCrypto_exportKey_Callback";
+  exportKey_Callback_1_(mthis, __arg_0) => exportKey_Callback_1(mthis, __arg_0);
+
+  static exportKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_exportKey_Callback";
+  exportKey_Callback_2_(mthis, __arg_0, __arg_1) => exportKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static exportKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_exportKey_Callback";
+  exportKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => exportKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static exportKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_exportKey_Callback";
+  exportKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => exportKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static generateKey_Callback_1(mthis, __arg_0) native "SubtleCrypto_generateKey_Callback";
+  generateKey_Callback_1_(mthis, __arg_0) => generateKey_Callback_1(mthis, __arg_0);
+
+  static generateKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_generateKey_Callback";
+  generateKey_Callback_2_(mthis, __arg_0, __arg_1) => generateKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static generateKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_generateKey_Callback";
+  generateKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => generateKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static generateKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_generateKey_Callback";
+  generateKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => generateKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static generateKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_generateKey_Callback";
+  generateKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => generateKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static importKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_importKey_Callback";
+  importKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static importKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_importKey_Callback";
+  importKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => importKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static importKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_importKey_Callback";
+  importKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => importKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static importKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_importKey_Callback";
+  importKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => importKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static importKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SubtleCrypto_importKey_Callback";
+  importKey_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => importKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static sign_Callback_1(mthis, __arg_0) native "SubtleCrypto_sign_Callback";
+  sign_Callback_1_(mthis, __arg_0) => sign_Callback_1(mthis, __arg_0);
+
+  static sign_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_sign_Callback";
+  sign_Callback_2_(mthis, __arg_0, __arg_1) => sign_Callback_2(mthis, __arg_0, __arg_1);
+
+  static sign_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_sign_Callback";
+  sign_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sign_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static sign_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_sign_Callback";
+  sign_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sign_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static sign_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_sign_Callback";
+  sign_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => sign_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static unwrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_unwrapKey_Callback";
+  unwrapKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => unwrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static unwrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_unwrapKey_Callback";
+  unwrapKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => unwrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static unwrapKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "SubtleCrypto_unwrapKey_Callback";
+  unwrapKey_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => unwrapKey_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static unwrapKey_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "SubtleCrypto_unwrapKey_Callback";
+  unwrapKey_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => unwrapKey_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static unwrapKey_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "SubtleCrypto_unwrapKey_Callback";
+  unwrapKey_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => unwrapKey_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static verify_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_verify_Callback";
+  verify_Callback_2_(mthis, __arg_0, __arg_1) => verify_Callback_2(mthis, __arg_0, __arg_1);
+
+  static verify_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_verify_Callback";
+  verify_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => verify_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static verify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_verify_Callback";
+  verify_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => verify_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static verify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_verify_Callback";
+  verify_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => verify_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static verify_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_verify_Callback";
+  verify_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => verify_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static wrapKey_Callback_2(mthis, __arg_0, __arg_1) native "SubtleCrypto_wrapKey_Callback";
+  wrapKey_Callback_2_(mthis, __arg_0, __arg_1) => wrapKey_Callback_2(mthis, __arg_0, __arg_1);
+
+  static wrapKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "SubtleCrypto_wrapKey_Callback";
+  wrapKey_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => wrapKey_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static wrapKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "SubtleCrypto_wrapKey_Callback";
+  wrapKey_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => wrapKey_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static wrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "SubtleCrypto_wrapKey_Callback";
+  wrapKey_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => wrapKey_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static wrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "SubtleCrypto_wrapKey_Callback";
+  wrapKey_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => wrapKey_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+}
+
+class BlinkText extends BlinkCharacterData {
+  static final instance = new BlinkText();
+
+  static constructorCallback_0() native "Text_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "Text_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Text_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Text_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static getDestinationInsertionPoints_Callback_0(mthis) native "Text_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_0_(mthis) => getDestinationInsertionPoints_Callback_0(mthis);
+
+  static getDestinationInsertionPoints_Callback_1(mthis, __arg_0) native "Text_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_1_(mthis, __arg_0) => getDestinationInsertionPoints_Callback_1(mthis, __arg_0);
+
+  static getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1) native "Text_getDestinationInsertionPoints_Callback";
+  getDestinationInsertionPoints_Callback_2_(mthis, __arg_0, __arg_1) => getDestinationInsertionPoints_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replaceWholeText_Callback_0(mthis) native "Text_replaceWholeText_Callback";
+  replaceWholeText_Callback_0_(mthis) => replaceWholeText_Callback_0(mthis);
+
+  static replaceWholeText_Callback_1(mthis, __arg_0) native "Text_replaceWholeText_Callback";
+  replaceWholeText_Callback_1_(mthis, __arg_0) => replaceWholeText_Callback_1(mthis, __arg_0);
+
+  static replaceWholeText_Callback_2(mthis, __arg_0, __arg_1) native "Text_replaceWholeText_Callback";
+  replaceWholeText_Callback_2_(mthis, __arg_0, __arg_1) => replaceWholeText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static replaceWholeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Text_replaceWholeText_Callback";
+  replaceWholeText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => replaceWholeText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static splitText_Callback_0(mthis) native "Text_splitText_Callback";
+  splitText_Callback_0_(mthis) => splitText_Callback_0(mthis);
+
+  static splitText_Callback_1(mthis, __arg_0) native "Text_splitText_Callback";
+  splitText_Callback_1_(mthis, __arg_0) => splitText_Callback_1(mthis, __arg_0);
+
+  static splitText_Callback_2(mthis, __arg_0, __arg_1) native "Text_splitText_Callback";
+  splitText_Callback_2_(mthis, __arg_0, __arg_1) => splitText_Callback_2(mthis, __arg_0, __arg_1);
+
+  static splitText_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Text_splitText_Callback";
+  splitText_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => splitText_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static wholeText_Getter(mthis) native "Text_wholeText_Getter";
+  wholeText_Getter_(mthis) => wholeText_Getter(mthis);
+
+}
+
+class BlinkTextDecoder {
+  static final instance = new BlinkTextDecoder();
+
+  static constructorCallback_0() native "TextDecoder_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "TextDecoder_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "TextDecoder_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "TextDecoder_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "TextDecoder_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static decode_Callback_0(mthis) native "TextDecoder_decode_Callback";
+  decode_Callback_0_(mthis) => decode_Callback_0(mthis);
+
+  static decode_Callback_1(mthis, __arg_0) native "TextDecoder_decode_Callback";
+  decode_Callback_1_(mthis, __arg_0) => decode_Callback_1(mthis, __arg_0);
+
+  static decode_Callback_2(mthis, __arg_0, __arg_1) native "TextDecoder_decode_Callback";
+  decode_Callback_2_(mthis, __arg_0, __arg_1) => decode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static decode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextDecoder_decode_Callback";
+  decode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => decode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static decode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TextDecoder_decode_Callback";
+  decode_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => decode_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static encoding_Getter(mthis) native "TextDecoder_encoding_Getter";
+  encoding_Getter_(mthis) => encoding_Getter(mthis);
+
+  static fatal_Getter(mthis) native "TextDecoder_fatal_Getter";
+  fatal_Getter_(mthis) => fatal_Getter(mthis);
+
+  static ignoreBOM_Getter(mthis) native "TextDecoder_ignoreBOM_Getter";
+  ignoreBOM_Getter_(mthis) => ignoreBOM_Getter(mthis);
+
+}
+
+class BlinkTextEncoder {
+  static final instance = new BlinkTextEncoder();
+
+  static constructorCallback_0() native "TextEncoder_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "TextEncoder_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "TextEncoder_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "TextEncoder_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static encode_Callback_0(mthis) native "TextEncoder_encode_Callback";
+  encode_Callback_0_(mthis) => encode_Callback_0(mthis);
+
+  static encode_Callback_1(mthis, __arg_0) native "TextEncoder_encode_Callback";
+  encode_Callback_1_(mthis, __arg_0) => encode_Callback_1(mthis, __arg_0);
+
+  static encode_Callback_2(mthis, __arg_0, __arg_1) native "TextEncoder_encode_Callback";
+  encode_Callback_2_(mthis, __arg_0, __arg_1) => encode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static encode_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextEncoder_encode_Callback";
+  encode_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => encode_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static encoding_Getter(mthis) native "TextEncoder_encoding_Getter";
+  encoding_Getter_(mthis) => encoding_Getter(mthis);
+
+}
+
+class BlinkTextEvent extends BlinkUIEvent {
+  static final instance = new BlinkTextEvent();
+
   static data_Getter(mthis) native "TextEvent_data_Getter";
+  data_Getter_(mthis) => data_Getter(mthis);
 
-  static initTextEvent_Callback_5(mthis, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg) native "TextEvent_initTextEvent_Callback";
+  static initTextEvent_Callback_0(mthis) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_0_(mthis) => initTextEvent_Callback_0(mthis);
+
+  static initTextEvent_Callback_1(mthis, __arg_0) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_1_(mthis, __arg_0) => initTextEvent_Callback_1(mthis, __arg_0);
+
+  static initTextEvent_Callback_2(mthis, __arg_0, __arg_1) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_2_(mthis, __arg_0, __arg_1) => initTextEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initTextEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initTextEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initTextEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initTextEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initTextEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initTextEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initTextEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initTextEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initTextEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "TextEvent_initTextEvent_Callback";
+  initTextEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initTextEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
 }
 
 class BlinkTextMetrics {
+  static final instance = new BlinkTextMetrics();
+
   static actualBoundingBoxAscent_Getter(mthis) native "TextMetrics_actualBoundingBoxAscent_Getter";
+  actualBoundingBoxAscent_Getter_(mthis) => actualBoundingBoxAscent_Getter(mthis);
 
   static actualBoundingBoxDescent_Getter(mthis) native "TextMetrics_actualBoundingBoxDescent_Getter";
+  actualBoundingBoxDescent_Getter_(mthis) => actualBoundingBoxDescent_Getter(mthis);
 
   static actualBoundingBoxLeft_Getter(mthis) native "TextMetrics_actualBoundingBoxLeft_Getter";
+  actualBoundingBoxLeft_Getter_(mthis) => actualBoundingBoxLeft_Getter(mthis);
 
   static actualBoundingBoxRight_Getter(mthis) native "TextMetrics_actualBoundingBoxRight_Getter";
+  actualBoundingBoxRight_Getter_(mthis) => actualBoundingBoxRight_Getter(mthis);
 
   static alphabeticBaseline_Getter(mthis) native "TextMetrics_alphabeticBaseline_Getter";
+  alphabeticBaseline_Getter_(mthis) => alphabeticBaseline_Getter(mthis);
 
   static emHeightAscent_Getter(mthis) native "TextMetrics_emHeightAscent_Getter";
+  emHeightAscent_Getter_(mthis) => emHeightAscent_Getter(mthis);
 
   static emHeightDescent_Getter(mthis) native "TextMetrics_emHeightDescent_Getter";
+  emHeightDescent_Getter_(mthis) => emHeightDescent_Getter(mthis);
 
   static fontBoundingBoxAscent_Getter(mthis) native "TextMetrics_fontBoundingBoxAscent_Getter";
+  fontBoundingBoxAscent_Getter_(mthis) => fontBoundingBoxAscent_Getter(mthis);
 
   static fontBoundingBoxDescent_Getter(mthis) native "TextMetrics_fontBoundingBoxDescent_Getter";
+  fontBoundingBoxDescent_Getter_(mthis) => fontBoundingBoxDescent_Getter(mthis);
 
   static hangingBaseline_Getter(mthis) native "TextMetrics_hangingBaseline_Getter";
+  hangingBaseline_Getter_(mthis) => hangingBaseline_Getter(mthis);
 
   static ideographicBaseline_Getter(mthis) native "TextMetrics_ideographicBaseline_Getter";
+  ideographicBaseline_Getter_(mthis) => ideographicBaseline_Getter(mthis);
 
   static width_Getter(mthis) native "TextMetrics_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
+
 }
 
-class BlinkTextTrack {
+class BlinkTextTrack extends BlinkEventTarget {
+  static final instance = new BlinkTextTrack();
+
   static activeCues_Getter(mthis) native "TextTrack_activeCues_Getter";
+  activeCues_Getter_(mthis) => activeCues_Getter(mthis);
+
+  static addCue_Callback_0(mthis) native "TextTrack_addCue_Callback";
+  addCue_Callback_0_(mthis) => addCue_Callback_0(mthis);
+
+  static addCue_Callback_1(mthis, __arg_0) native "TextTrack_addCue_Callback";
+  addCue_Callback_1_(mthis, __arg_0) => addCue_Callback_1(mthis, __arg_0);
+
+  static addCue_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_addCue_Callback";
+  addCue_Callback_2_(mthis, __arg_0, __arg_1) => addCue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_addCue_Callback";
+  addCue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static addRegion_Callback_0(mthis) native "TextTrack_addRegion_Callback";
+  addRegion_Callback_0_(mthis) => addRegion_Callback_0(mthis);
+
+  static addRegion_Callback_1(mthis, __arg_0) native "TextTrack_addRegion_Callback";
+  addRegion_Callback_1_(mthis, __arg_0) => addRegion_Callback_1(mthis, __arg_0);
+
+  static addRegion_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_addRegion_Callback";
+  addRegion_Callback_2_(mthis, __arg_0, __arg_1) => addRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static addRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_addRegion_Callback";
+  addRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => addRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static cues_Getter(mthis) native "TextTrack_cues_Getter";
+  cues_Getter_(mthis) => cues_Getter(mthis);
 
   static id_Getter(mthis) native "TextTrack_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static kind_Getter(mthis) native "TextTrack_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "TextTrack_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
   static language_Getter(mthis) native "TextTrack_language_Getter";
+  language_Getter_(mthis) => language_Getter(mthis);
 
   static mode_Getter(mthis) native "TextTrack_mode_Getter";
+  mode_Getter_(mthis) => mode_Getter(mthis);
 
-  static mode_Setter(mthis, value) native "TextTrack_mode_Setter";
+  static mode_Setter(mthis, __arg_0) native "TextTrack_mode_Setter";
+  mode_Setter_(mthis, __arg_0) => mode_Setter(mthis, __arg_0);
+
+  static oncuechange_Getter(mthis) native "TextTrack_oncuechange_Getter";
+  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+
+  static oncuechange_Setter(mthis, __arg_0) native "TextTrack_oncuechange_Setter";
+  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
 
   static regions_Getter(mthis) native "TextTrack_regions_Getter";
+  regions_Getter_(mthis) => regions_Getter(mthis);
 
-  static addCue_Callback_1(mthis, cue) native "TextTrack_addCue_Callback";
+  static removeCue_Callback_0(mthis) native "TextTrack_removeCue_Callback";
+  removeCue_Callback_0_(mthis) => removeCue_Callback_0(mthis);
 
-  static addRegion_Callback_1(mthis, region) native "TextTrack_addRegion_Callback";
+  static removeCue_Callback_1(mthis, __arg_0) native "TextTrack_removeCue_Callback";
+  removeCue_Callback_1_(mthis, __arg_0) => removeCue_Callback_1(mthis, __arg_0);
 
-  static removeCue_Callback_1(mthis, cue) native "TextTrack_removeCue_Callback";
+  static removeCue_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_removeCue_Callback";
+  removeCue_Callback_2_(mthis, __arg_0, __arg_1) => removeCue_Callback_2(mthis, __arg_0, __arg_1);
 
-  static removeRegion_Callback_1(mthis, region) native "TextTrack_removeRegion_Callback";
+  static removeCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_removeCue_Callback";
+  removeCue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeCue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeRegion_Callback_0(mthis) native "TextTrack_removeRegion_Callback";
+  removeRegion_Callback_0_(mthis) => removeRegion_Callback_0(mthis);
+
+  static removeRegion_Callback_1(mthis, __arg_0) native "TextTrack_removeRegion_Callback";
+  removeRegion_Callback_1_(mthis, __arg_0) => removeRegion_Callback_1(mthis, __arg_0);
+
+  static removeRegion_Callback_2(mthis, __arg_0, __arg_1) native "TextTrack_removeRegion_Callback";
+  removeRegion_Callback_2_(mthis, __arg_0, __arg_1) => removeRegion_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrack_removeRegion_Callback";
+  removeRegion_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeRegion_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkTextTrackCue {
-  static endTime_Getter(mthis) native "TextTrackCue_endTime_Getter";
+class BlinkTextTrackCue extends BlinkEventTarget {
+  static final instance = new BlinkTextTrackCue();
 
-  static endTime_Setter(mthis, value) native "TextTrackCue_endTime_Setter";
+  static endTime_Getter(mthis) native "TextTrackCue_endTime_Getter";
+  endTime_Getter_(mthis) => endTime_Getter(mthis);
+
+  static endTime_Setter(mthis, __arg_0) native "TextTrackCue_endTime_Setter";
+  endTime_Setter_(mthis, __arg_0) => endTime_Setter(mthis, __arg_0);
 
   static id_Getter(mthis) native "TextTrackCue_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
-  static id_Setter(mthis, value) native "TextTrackCue_id_Setter";
+  static id_Setter(mthis, __arg_0) native "TextTrackCue_id_Setter";
+  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
+
+  static onenter_Getter(mthis) native "TextTrackCue_onenter_Getter";
+  onenter_Getter_(mthis) => onenter_Getter(mthis);
+
+  static onenter_Setter(mthis, __arg_0) native "TextTrackCue_onenter_Setter";
+  onenter_Setter_(mthis, __arg_0) => onenter_Setter(mthis, __arg_0);
+
+  static onexit_Getter(mthis) native "TextTrackCue_onexit_Getter";
+  onexit_Getter_(mthis) => onexit_Getter(mthis);
+
+  static onexit_Setter(mthis, __arg_0) native "TextTrackCue_onexit_Setter";
+  onexit_Setter_(mthis, __arg_0) => onexit_Setter(mthis, __arg_0);
 
   static pauseOnExit_Getter(mthis) native "TextTrackCue_pauseOnExit_Getter";
+  pauseOnExit_Getter_(mthis) => pauseOnExit_Getter(mthis);
 
-  static pauseOnExit_Setter(mthis, value) native "TextTrackCue_pauseOnExit_Setter";
+  static pauseOnExit_Setter(mthis, __arg_0) native "TextTrackCue_pauseOnExit_Setter";
+  pauseOnExit_Setter_(mthis, __arg_0) => pauseOnExit_Setter(mthis, __arg_0);
 
   static startTime_Getter(mthis) native "TextTrackCue_startTime_Getter";
+  startTime_Getter_(mthis) => startTime_Getter(mthis);
 
-  static startTime_Setter(mthis, value) native "TextTrackCue_startTime_Setter";
+  static startTime_Setter(mthis, __arg_0) native "TextTrackCue_startTime_Setter";
+  startTime_Setter_(mthis, __arg_0) => startTime_Setter(mthis, __arg_0);
 
   static track_Getter(mthis) native "TextTrackCue_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
+
 }
 
 class BlinkTextTrackCueList {
+  static final instance = new BlinkTextTrackCueList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "TextTrackCueList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getCueById_Callback_0(mthis) native "TextTrackCueList_getCueById_Callback";
+  getCueById_Callback_0_(mthis) => getCueById_Callback_0(mthis);
+
+  static getCueById_Callback_1(mthis, __arg_0) native "TextTrackCueList_getCueById_Callback";
+  getCueById_Callback_1_(mthis, __arg_0) => getCueById_Callback_1(mthis, __arg_0);
+
+  static getCueById_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackCueList_getCueById_Callback";
+  getCueById_Callback_2_(mthis, __arg_0, __arg_1) => getCueById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getCueById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackCueList_getCueById_Callback";
+  getCueById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getCueById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "TextTrackCueList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "TextTrackCueList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackCueList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackCueList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "TextTrackCueList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static getCueById_Callback_1(mthis, id) native "TextTrackCueList_getCueById_Callback";
-
-  static item_Callback_1(mthis, index) native "TextTrackCueList_item_Callback";
 }
 
-class BlinkTextTrackList {
+class BlinkTextTrackList extends BlinkEventTarget {
+  static final instance = new BlinkTextTrackList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "TextTrackList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_0(mthis) native "TextTrackList_getTrackById_Callback";
+  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+
+  static getTrackById_Callback_1(mthis, __arg_0) native "TextTrackList_getTrackById_Callback";
+  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackList_getTrackById_Callback";
+  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackList_getTrackById_Callback";
+  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "TextTrackList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "TextTrackList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "TextTrackList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TextTrackList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "TextTrackList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static getTrackById_Callback_1(mthis, id) native "TextTrackList_getTrackById_Callback";
+  static onaddtrack_Getter(mthis) native "TextTrackList_onaddtrack_Getter";
+  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
 
-  static item_Callback_1(mthis, index) native "TextTrackList_item_Callback";
+  static onaddtrack_Setter(mthis, __arg_0) native "TextTrackList_onaddtrack_Setter";
+  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "TextTrackList_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "TextTrackList_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onremovetrack_Getter(mthis) native "TextTrackList_onremovetrack_Getter";
+  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
+
+  static onremovetrack_Setter(mthis, __arg_0) native "TextTrackList_onremovetrack_Setter";
+  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
+
 }
 
 class BlinkTimeRanges {
+  static final instance = new BlinkTimeRanges();
+
+  static end_Callback_0(mthis) native "TimeRanges_end_Callback";
+  end_Callback_0_(mthis) => end_Callback_0(mthis);
+
+  static end_Callback_1(mthis, __arg_0) native "TimeRanges_end_Callback";
+  end_Callback_1_(mthis, __arg_0) => end_Callback_1(mthis, __arg_0);
+
+  static end_Callback_2(mthis, __arg_0, __arg_1) native "TimeRanges_end_Callback";
+  end_Callback_2_(mthis, __arg_0, __arg_1) => end_Callback_2(mthis, __arg_0, __arg_1);
+
+  static end_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TimeRanges_end_Callback";
+  end_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => end_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "TimeRanges_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static end_Callback_1(mthis, index) native "TimeRanges_end_Callback";
+  static start_Callback_0(mthis) native "TimeRanges_start_Callback";
+  start_Callback_0_(mthis) => start_Callback_0(mthis);
 
-  static start_Callback_1(mthis, index) native "TimeRanges_start_Callback";
+  static start_Callback_1(mthis, __arg_0) native "TimeRanges_start_Callback";
+  start_Callback_1_(mthis, __arg_0) => start_Callback_1(mthis, __arg_0);
+
+  static start_Callback_2(mthis, __arg_0, __arg_1) native "TimeRanges_start_Callback";
+  start_Callback_2_(mthis, __arg_0, __arg_1) => start_Callback_2(mthis, __arg_0, __arg_1);
+
+  static start_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TimeRanges_start_Callback";
+  start_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => start_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkTiming {
-  static delay_Getter(mthis) native "Timing_delay_Getter";
+  static final instance = new BlinkTiming();
 
-  static delay_Setter(mthis, value) native "Timing_delay_Setter";
+  static $__getter___Callback_1(mthis, __arg_0) native "Timing___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static $__setter___Callback_2(mthis, __arg_0, __arg_1) native "Timing___setter___Callback";
+  $__setter___Callback_2_(mthis, __arg_0, __arg_1) => $__setter___Callback_2(mthis, __arg_0, __arg_1);
+
+  static delay_Getter(mthis) native "Timing_delay_Getter";
+  delay_Getter_(mthis) => delay_Getter(mthis);
+
+  static delay_Setter(mthis, __arg_0) native "Timing_delay_Setter";
+  delay_Setter_(mthis, __arg_0) => delay_Setter(mthis, __arg_0);
 
   static direction_Getter(mthis) native "Timing_direction_Getter";
+  direction_Getter_(mthis) => direction_Getter(mthis);
 
-  static direction_Setter(mthis, value) native "Timing_direction_Setter";
+  static direction_Setter(mthis, __arg_0) native "Timing_direction_Setter";
+  direction_Setter_(mthis, __arg_0) => direction_Setter(mthis, __arg_0);
 
   static easing_Getter(mthis) native "Timing_easing_Getter";
+  easing_Getter_(mthis) => easing_Getter(mthis);
 
-  static easing_Setter(mthis, value) native "Timing_easing_Setter";
+  static easing_Setter(mthis, __arg_0) native "Timing_easing_Setter";
+  easing_Setter_(mthis, __arg_0) => easing_Setter(mthis, __arg_0);
 
   static endDelay_Getter(mthis) native "Timing_endDelay_Getter";
+  endDelay_Getter_(mthis) => endDelay_Getter(mthis);
 
-  static endDelay_Setter(mthis, value) native "Timing_endDelay_Setter";
+  static endDelay_Setter(mthis, __arg_0) native "Timing_endDelay_Setter";
+  endDelay_Setter_(mthis, __arg_0) => endDelay_Setter(mthis, __arg_0);
 
   static fill_Getter(mthis) native "Timing_fill_Getter";
+  fill_Getter_(mthis) => fill_Getter(mthis);
 
-  static fill_Setter(mthis, value) native "Timing_fill_Setter";
+  static fill_Setter(mthis, __arg_0) native "Timing_fill_Setter";
+  fill_Setter_(mthis, __arg_0) => fill_Setter(mthis, __arg_0);
 
   static iterationStart_Getter(mthis) native "Timing_iterationStart_Getter";
+  iterationStart_Getter_(mthis) => iterationStart_Getter(mthis);
 
-  static iterationStart_Setter(mthis, value) native "Timing_iterationStart_Setter";
+  static iterationStart_Setter(mthis, __arg_0) native "Timing_iterationStart_Setter";
+  iterationStart_Setter_(mthis, __arg_0) => iterationStart_Setter(mthis, __arg_0);
 
   static iterations_Getter(mthis) native "Timing_iterations_Getter";
+  iterations_Getter_(mthis) => iterations_Getter(mthis);
 
-  static iterations_Setter(mthis, value) native "Timing_iterations_Setter";
+  static iterations_Setter(mthis, __arg_0) native "Timing_iterations_Setter";
+  iterations_Setter_(mthis, __arg_0) => iterations_Setter(mthis, __arg_0);
 
   static playbackRate_Getter(mthis) native "Timing_playbackRate_Getter";
+  playbackRate_Getter_(mthis) => playbackRate_Getter(mthis);
 
-  static playbackRate_Setter(mthis, value) native "Timing_playbackRate_Setter";
+  static playbackRate_Setter(mthis, __arg_0) native "Timing_playbackRate_Setter";
+  playbackRate_Setter_(mthis, __arg_0) => playbackRate_Setter(mthis, __arg_0);
 
-  static $__getter___Callback_1(mthis, name) native "Timing___getter___Callback";
-
-  static $__setter___Callback_2(mthis, name, duration) native "Timing___setter___Callback";
 }
 
 class BlinkTouch {
+  static final instance = new BlinkTouch();
+
   static clientX_Getter(mthis) native "Touch_clientX_Getter";
+  clientX_Getter_(mthis) => clientX_Getter(mthis);
 
   static clientY_Getter(mthis) native "Touch_clientY_Getter";
+  clientY_Getter_(mthis) => clientY_Getter(mthis);
 
   static force_Getter(mthis) native "Touch_force_Getter";
+  force_Getter_(mthis) => force_Getter(mthis);
 
   static identifier_Getter(mthis) native "Touch_identifier_Getter";
+  identifier_Getter_(mthis) => identifier_Getter(mthis);
 
   static pageX_Getter(mthis) native "Touch_pageX_Getter";
+  pageX_Getter_(mthis) => pageX_Getter(mthis);
 
   static pageY_Getter(mthis) native "Touch_pageY_Getter";
+  pageY_Getter_(mthis) => pageY_Getter(mthis);
 
   static radiusX_Getter(mthis) native "Touch_radiusX_Getter";
+  radiusX_Getter_(mthis) => radiusX_Getter(mthis);
 
   static radiusY_Getter(mthis) native "Touch_radiusY_Getter";
+  radiusY_Getter_(mthis) => radiusY_Getter(mthis);
 
   static screenX_Getter(mthis) native "Touch_screenX_Getter";
+  screenX_Getter_(mthis) => screenX_Getter(mthis);
 
   static screenY_Getter(mthis) native "Touch_screenY_Getter";
+  screenY_Getter_(mthis) => screenY_Getter(mthis);
 
   static target_Getter(mthis) native "Touch_target_Getter";
+  target_Getter_(mthis) => target_Getter(mthis);
+
+  static webkitForce_Getter(mthis) native "Touch_webkitForce_Getter";
+  webkitForce_Getter_(mthis) => webkitForce_Getter(mthis);
+
+  static webkitRadiusX_Getter(mthis) native "Touch_webkitRadiusX_Getter";
+  webkitRadiusX_Getter_(mthis) => webkitRadiusX_Getter(mthis);
+
+  static webkitRadiusY_Getter(mthis) native "Touch_webkitRadiusY_Getter";
+  webkitRadiusY_Getter_(mthis) => webkitRadiusY_Getter(mthis);
 
   static webkitRotationAngle_Getter(mthis) native "Touch_webkitRotationAngle_Getter";
+  webkitRotationAngle_Getter_(mthis) => webkitRotationAngle_Getter(mthis);
+
 }
 
-class BlinkTouchEvent {
+class BlinkTouchEvent extends BlinkUIEvent {
+  static final instance = new BlinkTouchEvent();
+
   static altKey_Getter(mthis) native "TouchEvent_altKey_Getter";
+  altKey_Getter_(mthis) => altKey_Getter(mthis);
 
   static changedTouches_Getter(mthis) native "TouchEvent_changedTouches_Getter";
+  changedTouches_Getter_(mthis) => changedTouches_Getter(mthis);
 
   static ctrlKey_Getter(mthis) native "TouchEvent_ctrlKey_Getter";
+  ctrlKey_Getter_(mthis) => ctrlKey_Getter(mthis);
+
+  static initTouchEvent_Callback_0(mthis) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_0_(mthis) => initTouchEvent_Callback_0(mthis);
+
+  static initTouchEvent_Callback_1(mthis, __arg_0) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_1_(mthis, __arg_0) => initTouchEvent_Callback_1(mthis, __arg_0);
+
+  static initTouchEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => initTouchEvent_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static initTouchEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => initTouchEvent_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static initTouchEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_12_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11) => initTouchEvent_Callback_12(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11);
+
+  static initTouchEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_13_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12) => initTouchEvent_Callback_13(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12);
+
+  static initTouchEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_14_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13) => initTouchEvent_Callback_14(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13);
+
+  static initTouchEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_15_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14) => initTouchEvent_Callback_15(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10, __arg_11, __arg_12, __arg_13, __arg_14);
+
+  static initTouchEvent_Callback_2(mthis, __arg_0, __arg_1) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_2_(mthis, __arg_0, __arg_1) => initTouchEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initTouchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initTouchEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initTouchEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initTouchEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initTouchEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initTouchEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initTouchEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initTouchEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initTouchEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initTouchEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static initTouchEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => initTouchEvent_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static initTouchEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "TouchEvent_initTouchEvent_Callback";
+  initTouchEvent_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => initTouchEvent_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
 
   static metaKey_Getter(mthis) native "TouchEvent_metaKey_Getter";
+  metaKey_Getter_(mthis) => metaKey_Getter(mthis);
 
   static shiftKey_Getter(mthis) native "TouchEvent_shiftKey_Getter";
+  shiftKey_Getter_(mthis) => shiftKey_Getter(mthis);
 
   static targetTouches_Getter(mthis) native "TouchEvent_targetTouches_Getter";
+  targetTouches_Getter_(mthis) => targetTouches_Getter(mthis);
 
   static touches_Getter(mthis) native "TouchEvent_touches_Getter";
+  touches_Getter_(mthis) => touches_Getter(mthis);
 
-  static initTouchEvent_Callback_13(mthis, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey) native "TouchEvent_initTouchEvent_Callback";
 }
 
 class BlinkTouchList {
-  static length_Getter(mthis) native "TouchList_length_Getter";
+  static final instance = new BlinkTouchList();
 
-  static item_Callback_1(mthis, index) native "TouchList_item_Callback";
+  static $__getter___Callback_1(mthis, __arg_0) native "TouchList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "TouchList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "TouchList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "TouchList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "TouchList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "TouchList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
 }
 
-class BlinkTrackEvent {
-  static constructorCallback(type, options) native "TrackEvent_constructorCallback";
+class BlinkTrackEvent extends BlinkEvent {
+  static final instance = new BlinkTrackEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "TrackEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static track_Getter(mthis) native "TrackEvent_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
+
 }
 
-class BlinkTransitionEvent {
-  static constructorCallback(type, options) native "TransitionEvent_constructorCallback";
+class BlinkTransitionEvent extends BlinkEvent {
+  static final instance = new BlinkTransitionEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "TransitionEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static elapsedTime_Getter(mthis) native "TransitionEvent_elapsedTime_Getter";
+  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
 
   static propertyName_Getter(mthis) native "TransitionEvent_propertyName_Getter";
+  propertyName_Getter_(mthis) => propertyName_Getter(mthis);
 
   static pseudoElement_Getter(mthis) native "TransitionEvent_pseudoElement_Getter";
+  pseudoElement_Getter_(mthis) => pseudoElement_Getter(mthis);
+
 }
 
 class BlinkTreeWalker {
-  static currentNode_Getter(mthis) native "TreeWalker_currentNode_Getter";
+  static final instance = new BlinkTreeWalker();
 
-  static currentNode_Setter(mthis, value) native "TreeWalker_currentNode_Setter";
+  static currentNode_Getter(mthis) native "TreeWalker_currentNode_Getter";
+  currentNode_Getter_(mthis) => currentNode_Getter(mthis);
+
+  static currentNode_Setter(mthis, __arg_0) native "TreeWalker_currentNode_Setter";
+  currentNode_Setter_(mthis, __arg_0) => currentNode_Setter(mthis, __arg_0);
+
+  static expandEntityReferences_Getter(mthis) native "TreeWalker_expandEntityReferences_Getter";
+  expandEntityReferences_Getter_(mthis) => expandEntityReferences_Getter(mthis);
 
   static filter_Getter(mthis) native "TreeWalker_filter_Getter";
+  filter_Getter_(mthis) => filter_Getter(mthis);
+
+  static firstChild_Callback_0(mthis) native "TreeWalker_firstChild_Callback";
+  firstChild_Callback_0_(mthis) => firstChild_Callback_0(mthis);
+
+  static firstChild_Callback_1(mthis, __arg_0) native "TreeWalker_firstChild_Callback";
+  firstChild_Callback_1_(mthis, __arg_0) => firstChild_Callback_1(mthis, __arg_0);
+
+  static firstChild_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_firstChild_Callback";
+  firstChild_Callback_2_(mthis, __arg_0, __arg_1) => firstChild_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lastChild_Callback_0(mthis) native "TreeWalker_lastChild_Callback";
+  lastChild_Callback_0_(mthis) => lastChild_Callback_0(mthis);
+
+  static lastChild_Callback_1(mthis, __arg_0) native "TreeWalker_lastChild_Callback";
+  lastChild_Callback_1_(mthis, __arg_0) => lastChild_Callback_1(mthis, __arg_0);
+
+  static lastChild_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_lastChild_Callback";
+  lastChild_Callback_2_(mthis, __arg_0, __arg_1) => lastChild_Callback_2(mthis, __arg_0, __arg_1);
+
+  static nextNode_Callback_0(mthis) native "TreeWalker_nextNode_Callback";
+  nextNode_Callback_0_(mthis) => nextNode_Callback_0(mthis);
+
+  static nextNode_Callback_1(mthis, __arg_0) native "TreeWalker_nextNode_Callback";
+  nextNode_Callback_1_(mthis, __arg_0) => nextNode_Callback_1(mthis, __arg_0);
+
+  static nextNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_nextNode_Callback";
+  nextNode_Callback_2_(mthis, __arg_0, __arg_1) => nextNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static nextSibling_Callback_0(mthis) native "TreeWalker_nextSibling_Callback";
+  nextSibling_Callback_0_(mthis) => nextSibling_Callback_0(mthis);
+
+  static nextSibling_Callback_1(mthis, __arg_0) native "TreeWalker_nextSibling_Callback";
+  nextSibling_Callback_1_(mthis, __arg_0) => nextSibling_Callback_1(mthis, __arg_0);
+
+  static nextSibling_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_nextSibling_Callback";
+  nextSibling_Callback_2_(mthis, __arg_0, __arg_1) => nextSibling_Callback_2(mthis, __arg_0, __arg_1);
+
+  static parentNode_Callback_0(mthis) native "TreeWalker_parentNode_Callback";
+  parentNode_Callback_0_(mthis) => parentNode_Callback_0(mthis);
+
+  static parentNode_Callback_1(mthis, __arg_0) native "TreeWalker_parentNode_Callback";
+  parentNode_Callback_1_(mthis, __arg_0) => parentNode_Callback_1(mthis, __arg_0);
+
+  static parentNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_parentNode_Callback";
+  parentNode_Callback_2_(mthis, __arg_0, __arg_1) => parentNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static previousNode_Callback_0(mthis) native "TreeWalker_previousNode_Callback";
+  previousNode_Callback_0_(mthis) => previousNode_Callback_0(mthis);
+
+  static previousNode_Callback_1(mthis, __arg_0) native "TreeWalker_previousNode_Callback";
+  previousNode_Callback_1_(mthis, __arg_0) => previousNode_Callback_1(mthis, __arg_0);
+
+  static previousNode_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_previousNode_Callback";
+  previousNode_Callback_2_(mthis, __arg_0, __arg_1) => previousNode_Callback_2(mthis, __arg_0, __arg_1);
+
+  static previousSibling_Callback_0(mthis) native "TreeWalker_previousSibling_Callback";
+  previousSibling_Callback_0_(mthis) => previousSibling_Callback_0(mthis);
+
+  static previousSibling_Callback_1(mthis, __arg_0) native "TreeWalker_previousSibling_Callback";
+  previousSibling_Callback_1_(mthis, __arg_0) => previousSibling_Callback_1(mthis, __arg_0);
+
+  static previousSibling_Callback_2(mthis, __arg_0, __arg_1) native "TreeWalker_previousSibling_Callback";
+  previousSibling_Callback_2_(mthis, __arg_0, __arg_1) => previousSibling_Callback_2(mthis, __arg_0, __arg_1);
 
   static root_Getter(mthis) native "TreeWalker_root_Getter";
+  root_Getter_(mthis) => root_Getter(mthis);
 
   static whatToShow_Getter(mthis) native "TreeWalker_whatToShow_Getter";
+  whatToShow_Getter_(mthis) => whatToShow_Getter(mthis);
 
-  static firstChild_Callback(mthis) native "TreeWalker_firstChild_Callback";
+}
 
-  static lastChild_Callback(mthis) native "TreeWalker_lastChild_Callback";
+class BlinkUIEvent extends BlinkEvent {
+  static final instance = new BlinkUIEvent();
 
-  static nextNode_Callback(mthis) native "TreeWalker_nextNode_Callback";
+  static charCode_Getter(mthis) native "UIEvent_charCode_Getter";
+  charCode_Getter_(mthis) => charCode_Getter(mthis);
 
-  static nextSibling_Callback(mthis) native "TreeWalker_nextSibling_Callback";
+  static constructorCallback_2(__arg_0, __arg_1) native "UIEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
-  static parentNode_Callback(mthis) native "TreeWalker_parentNode_Callback";
+  static detail_Getter(mthis) native "UIEvent_detail_Getter";
+  detail_Getter_(mthis) => detail_Getter(mthis);
 
-  static previousNode_Callback(mthis) native "TreeWalker_previousNode_Callback";
+  static initUIEvent_Callback_0(mthis) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_0_(mthis) => initUIEvent_Callback_0(mthis);
 
-  static previousSibling_Callback(mthis) native "TreeWalker_previousSibling_Callback";
+  static initUIEvent_Callback_1(mthis, __arg_0) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_1_(mthis, __arg_0) => initUIEvent_Callback_1(mthis, __arg_0);
+
+  static initUIEvent_Callback_2(mthis, __arg_0, __arg_1) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_2_(mthis, __arg_0, __arg_1) => initUIEvent_Callback_2(mthis, __arg_0, __arg_1);
+
+  static initUIEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => initUIEvent_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static initUIEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => initUIEvent_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static initUIEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => initUIEvent_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static initUIEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => initUIEvent_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static initUIEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "UIEvent_initUIEvent_Callback";
+  initUIEvent_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => initUIEvent_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static keyCode_Getter(mthis) native "UIEvent_keyCode_Getter";
+  keyCode_Getter_(mthis) => keyCode_Getter(mthis);
+
+  static layerX_Getter(mthis) native "UIEvent_layerX_Getter";
+  layerX_Getter_(mthis) => layerX_Getter(mthis);
+
+  static layerY_Getter(mthis) native "UIEvent_layerY_Getter";
+  layerY_Getter_(mthis) => layerY_Getter(mthis);
+
+  static pageX_Getter(mthis) native "UIEvent_pageX_Getter";
+  pageX_Getter_(mthis) => pageX_Getter(mthis);
+
+  static pageY_Getter(mthis) native "UIEvent_pageY_Getter";
+  pageY_Getter_(mthis) => pageY_Getter(mthis);
+
+  static view_Getter(mthis) native "UIEvent_view_Getter";
+  view_Getter_(mthis) => view_Getter(mthis);
+
+  static which_Getter(mthis) native "UIEvent_which_Getter";
+  which_Getter_(mthis) => which_Getter(mthis);
+
 }
 
 class BlinkURL {
-  static createObjectURL_Callback_1(blob_OR_source_OR_stream) native "URL_createObjectURL_Callback";
+  static final instance = new BlinkURL();
 
-  static revokeObjectURL_Callback_1(url) native "URL_revokeObjectURL_Callback";
+  static constructorCallback_0() native "URL_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "URL_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "URL_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "URL_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "URL_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createObjectURL_Callback_0() native "URL_createObjectURL_Callback";
+  createObjectURL_Callback_0_() => createObjectURL_Callback_0();
+
+  static createObjectURL_Callback_1(__arg_0) native "URL_createObjectURL_Callback";
+  createObjectURL_Callback_1_(__arg_0) => createObjectURL_Callback_1(__arg_0);
+
+  static createObjectURL_Callback_2(__arg_0, __arg_1) native "URL_createObjectURL_Callback";
+  createObjectURL_Callback_2_(__arg_0, __arg_1) => createObjectURL_Callback_2(__arg_0, __arg_1);
+
+  static createObjectURL_Callback_3(__arg_0, __arg_1, __arg_2) native "URL_createObjectURL_Callback";
+  createObjectURL_Callback_3_(__arg_0, __arg_1, __arg_2) => createObjectURL_Callback_3(__arg_0, __arg_1, __arg_2);
 
   static hash_Getter(mthis) native "URL_hash_Getter";
+  hash_Getter_(mthis) => hash_Getter(mthis);
 
-  static hash_Setter(mthis, value) native "URL_hash_Setter";
+  static hash_Setter(mthis, __arg_0) native "URL_hash_Setter";
+  hash_Setter_(mthis, __arg_0) => hash_Setter(mthis, __arg_0);
 
   static host_Getter(mthis) native "URL_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
 
-  static host_Setter(mthis, value) native "URL_host_Setter";
+  static host_Setter(mthis, __arg_0) native "URL_host_Setter";
+  host_Setter_(mthis, __arg_0) => host_Setter(mthis, __arg_0);
 
   static hostname_Getter(mthis) native "URL_hostname_Getter";
+  hostname_Getter_(mthis) => hostname_Getter(mthis);
 
-  static hostname_Setter(mthis, value) native "URL_hostname_Setter";
+  static hostname_Setter(mthis, __arg_0) native "URL_hostname_Setter";
+  hostname_Setter_(mthis, __arg_0) => hostname_Setter(mthis, __arg_0);
 
   static href_Getter(mthis) native "URL_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
 
-  static href_Setter(mthis, value) native "URL_href_Setter";
+  static href_Setter(mthis, __arg_0) native "URL_href_Setter";
+  href_Setter_(mthis, __arg_0) => href_Setter(mthis, __arg_0);
 
   static origin_Getter(mthis) native "URL_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
 
   static password_Getter(mthis) native "URL_password_Getter";
+  password_Getter_(mthis) => password_Getter(mthis);
 
-  static password_Setter(mthis, value) native "URL_password_Setter";
+  static password_Setter(mthis, __arg_0) native "URL_password_Setter";
+  password_Setter_(mthis, __arg_0) => password_Setter(mthis, __arg_0);
 
   static pathname_Getter(mthis) native "URL_pathname_Getter";
+  pathname_Getter_(mthis) => pathname_Getter(mthis);
 
-  static pathname_Setter(mthis, value) native "URL_pathname_Setter";
+  static pathname_Setter(mthis, __arg_0) native "URL_pathname_Setter";
+  pathname_Setter_(mthis, __arg_0) => pathname_Setter(mthis, __arg_0);
 
   static port_Getter(mthis) native "URL_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
 
-  static port_Setter(mthis, value) native "URL_port_Setter";
+  static port_Setter(mthis, __arg_0) native "URL_port_Setter";
+  port_Setter_(mthis, __arg_0) => port_Setter(mthis, __arg_0);
 
   static protocol_Getter(mthis) native "URL_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
-  static protocol_Setter(mthis, value) native "URL_protocol_Setter";
+  static protocol_Setter(mthis, __arg_0) native "URL_protocol_Setter";
+  protocol_Setter_(mthis, __arg_0) => protocol_Setter(mthis, __arg_0);
+
+  static revokeObjectURL_Callback_0() native "URL_revokeObjectURL_Callback";
+  revokeObjectURL_Callback_0_() => revokeObjectURL_Callback_0();
+
+  static revokeObjectURL_Callback_1(__arg_0) native "URL_revokeObjectURL_Callback";
+  revokeObjectURL_Callback_1_(__arg_0) => revokeObjectURL_Callback_1(__arg_0);
+
+  static revokeObjectURL_Callback_2(__arg_0, __arg_1) native "URL_revokeObjectURL_Callback";
+  revokeObjectURL_Callback_2_(__arg_0, __arg_1) => revokeObjectURL_Callback_2(__arg_0, __arg_1);
+
+  static revokeObjectURL_Callback_3(__arg_0, __arg_1, __arg_2) native "URL_revokeObjectURL_Callback";
+  revokeObjectURL_Callback_3_(__arg_0, __arg_1, __arg_2) => revokeObjectURL_Callback_3(__arg_0, __arg_1, __arg_2);
 
   static search_Getter(mthis) native "URL_search_Getter";
+  search_Getter_(mthis) => search_Getter(mthis);
 
-  static search_Setter(mthis, value) native "URL_search_Setter";
+  static search_Setter(mthis, __arg_0) native "URL_search_Setter";
+  search_Setter_(mthis, __arg_0) => search_Setter(mthis, __arg_0);
+
+  static toString_Callback_0(mthis) native "URL_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+
+  static toString_Callback_1(mthis, __arg_0) native "URL_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "URL_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
 
   static username_Getter(mthis) native "URL_username_Getter";
+  username_Getter_(mthis) => username_Getter(mthis);
 
-  static username_Setter(mthis, value) native "URL_username_Setter";
+  static username_Setter(mthis, __arg_0) native "URL_username_Setter";
+  username_Setter_(mthis, __arg_0) => username_Setter(mthis, __arg_0);
 
-  static toString_Callback(mthis) native "URL_toString_Callback";
 }
 
-class BlinkURLUtilsReadOnly {
-  static hash_Getter(mthis) native "WorkerLocation_hash_Getter";
-
-  static host_Getter(mthis) native "WorkerLocation_host_Getter";
-
-  static hostname_Getter(mthis) native "WorkerLocation_hostname_Getter";
-
-  static href_Getter(mthis) native "WorkerLocation_href_Getter";
-
-  static origin_Getter(mthis) native "WorkerLocation_origin_Getter";
-
-  static pathname_Getter(mthis) native "WorkerLocation_pathname_Getter";
-
-  static port_Getter(mthis) native "WorkerLocation_port_Getter";
-
-  static protocol_Getter(mthis) native "WorkerLocation_protocol_Getter";
-
-  static search_Getter(mthis) native "WorkerLocation_search_Getter";
-
-  static toString_Callback(mthis) native "WorkerLocation_toString_Callback";
-}
-
-class BlinkVTTCue {
-  static constructorCallback_3(startTime, endTime, text) native "VTTCue_constructorCallback";
+class BlinkVTTCue extends BlinkTextTrackCue {
+  static final instance = new BlinkVTTCue();
 
   static align_Getter(mthis) native "VTTCue_align_Getter";
+  align_Getter_(mthis) => align_Getter(mthis);
 
-  static align_Setter(mthis, value) native "VTTCue_align_Setter";
+  static align_Setter(mthis, __arg_0) native "VTTCue_align_Setter";
+  align_Setter_(mthis, __arg_0) => align_Setter(mthis, __arg_0);
+
+  static constructorCallback_1(__arg_0) native "VTTCue_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "VTTCue_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "VTTCue_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "VTTCue_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "VTTCue_constructorCallback";
+  constructorCallback_5_(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => constructorCallback_5(__arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getCueAsHTML_Callback_0(mthis) native "VTTCue_getCueAsHTML_Callback";
+  getCueAsHTML_Callback_0_(mthis) => getCueAsHTML_Callback_0(mthis);
+
+  static getCueAsHTML_Callback_1(mthis, __arg_0) native "VTTCue_getCueAsHTML_Callback";
+  getCueAsHTML_Callback_1_(mthis, __arg_0) => getCueAsHTML_Callback_1(mthis, __arg_0);
+
+  static getCueAsHTML_Callback_2(mthis, __arg_0, __arg_1) native "VTTCue_getCueAsHTML_Callback";
+  getCueAsHTML_Callback_2_(mthis, __arg_0, __arg_1) => getCueAsHTML_Callback_2(mthis, __arg_0, __arg_1);
 
   static line_Getter(mthis) native "VTTCue_line_Getter";
+  line_Getter_(mthis) => line_Getter(mthis);
 
-  static line_Setter(mthis, value) native "VTTCue_line_Setter";
+  static line_Setter(mthis, __arg_0) native "VTTCue_line_Setter";
+  line_Setter_(mthis, __arg_0) => line_Setter(mthis, __arg_0);
 
   static position_Getter(mthis) native "VTTCue_position_Getter";
+  position_Getter_(mthis) => position_Getter(mthis);
 
-  static position_Setter(mthis, value) native "VTTCue_position_Setter";
+  static position_Setter(mthis, __arg_0) native "VTTCue_position_Setter";
+  position_Setter_(mthis, __arg_0) => position_Setter(mthis, __arg_0);
 
   static regionId_Getter(mthis) native "VTTCue_regionId_Getter";
+  regionId_Getter_(mthis) => regionId_Getter(mthis);
 
-  static regionId_Setter(mthis, value) native "VTTCue_regionId_Setter";
+  static regionId_Setter(mthis, __arg_0) native "VTTCue_regionId_Setter";
+  regionId_Setter_(mthis, __arg_0) => regionId_Setter(mthis, __arg_0);
 
   static size_Getter(mthis) native "VTTCue_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
-  static size_Setter(mthis, value) native "VTTCue_size_Setter";
+  static size_Setter(mthis, __arg_0) native "VTTCue_size_Setter";
+  size_Setter_(mthis, __arg_0) => size_Setter(mthis, __arg_0);
 
   static snapToLines_Getter(mthis) native "VTTCue_snapToLines_Getter";
+  snapToLines_Getter_(mthis) => snapToLines_Getter(mthis);
 
-  static snapToLines_Setter(mthis, value) native "VTTCue_snapToLines_Setter";
+  static snapToLines_Setter(mthis, __arg_0) native "VTTCue_snapToLines_Setter";
+  snapToLines_Setter_(mthis, __arg_0) => snapToLines_Setter(mthis, __arg_0);
 
   static text_Getter(mthis) native "VTTCue_text_Getter";
+  text_Getter_(mthis) => text_Getter(mthis);
 
-  static text_Setter(mthis, value) native "VTTCue_text_Setter";
+  static text_Setter(mthis, __arg_0) native "VTTCue_text_Setter";
+  text_Setter_(mthis, __arg_0) => text_Setter(mthis, __arg_0);
 
   static vertical_Getter(mthis) native "VTTCue_vertical_Getter";
+  vertical_Getter_(mthis) => vertical_Getter(mthis);
 
-  static vertical_Setter(mthis, value) native "VTTCue_vertical_Setter";
+  static vertical_Setter(mthis, __arg_0) native "VTTCue_vertical_Setter";
+  vertical_Setter_(mthis, __arg_0) => vertical_Setter(mthis, __arg_0);
 
-  static getCueAsHTML_Callback(mthis) native "VTTCue_getCueAsHTML_Callback";
 }
 
 class BlinkVTTRegion {
-  static constructorCallback() native "VTTRegion_constructorCallback";
+  static final instance = new BlinkVTTRegion();
+
+  static constructorCallback_0() native "VTTRegion_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "VTTRegion_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "VTTRegion_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static height_Getter(mthis) native "VTTRegion_height_Getter";
+  height_Getter_(mthis) => height_Getter(mthis);
 
-  static height_Setter(mthis, value) native "VTTRegion_height_Setter";
+  static height_Setter(mthis, __arg_0) native "VTTRegion_height_Setter";
+  height_Setter_(mthis, __arg_0) => height_Setter(mthis, __arg_0);
 
   static id_Getter(mthis) native "VTTRegion_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
-  static id_Setter(mthis, value) native "VTTRegion_id_Setter";
+  static id_Setter(mthis, __arg_0) native "VTTRegion_id_Setter";
+  id_Setter_(mthis, __arg_0) => id_Setter(mthis, __arg_0);
 
   static regionAnchorX_Getter(mthis) native "VTTRegion_regionAnchorX_Getter";
+  regionAnchorX_Getter_(mthis) => regionAnchorX_Getter(mthis);
 
-  static regionAnchorX_Setter(mthis, value) native "VTTRegion_regionAnchorX_Setter";
+  static regionAnchorX_Setter(mthis, __arg_0) native "VTTRegion_regionAnchorX_Setter";
+  regionAnchorX_Setter_(mthis, __arg_0) => regionAnchorX_Setter(mthis, __arg_0);
 
   static regionAnchorY_Getter(mthis) native "VTTRegion_regionAnchorY_Getter";
+  regionAnchorY_Getter_(mthis) => regionAnchorY_Getter(mthis);
 
-  static regionAnchorY_Setter(mthis, value) native "VTTRegion_regionAnchorY_Setter";
+  static regionAnchorY_Setter(mthis, __arg_0) native "VTTRegion_regionAnchorY_Setter";
+  regionAnchorY_Setter_(mthis, __arg_0) => regionAnchorY_Setter(mthis, __arg_0);
 
   static scroll_Getter(mthis) native "VTTRegion_scroll_Getter";
+  scroll_Getter_(mthis) => scroll_Getter(mthis);
 
-  static scroll_Setter(mthis, value) native "VTTRegion_scroll_Setter";
+  static scroll_Setter(mthis, __arg_0) native "VTTRegion_scroll_Setter";
+  scroll_Setter_(mthis, __arg_0) => scroll_Setter(mthis, __arg_0);
 
   static track_Getter(mthis) native "VTTRegion_track_Getter";
+  track_Getter_(mthis) => track_Getter(mthis);
 
   static viewportAnchorX_Getter(mthis) native "VTTRegion_viewportAnchorX_Getter";
+  viewportAnchorX_Getter_(mthis) => viewportAnchorX_Getter(mthis);
 
-  static viewportAnchorX_Setter(mthis, value) native "VTTRegion_viewportAnchorX_Setter";
+  static viewportAnchorX_Setter(mthis, __arg_0) native "VTTRegion_viewportAnchorX_Setter";
+  viewportAnchorX_Setter_(mthis, __arg_0) => viewportAnchorX_Setter(mthis, __arg_0);
 
   static viewportAnchorY_Getter(mthis) native "VTTRegion_viewportAnchorY_Getter";
+  viewportAnchorY_Getter_(mthis) => viewportAnchorY_Getter(mthis);
 
-  static viewportAnchorY_Setter(mthis, value) native "VTTRegion_viewportAnchorY_Setter";
+  static viewportAnchorY_Setter(mthis, __arg_0) native "VTTRegion_viewportAnchorY_Setter";
+  viewportAnchorY_Setter_(mthis, __arg_0) => viewportAnchorY_Setter(mthis, __arg_0);
 
   static width_Getter(mthis) native "VTTRegion_width_Getter";
+  width_Getter_(mthis) => width_Getter(mthis);
 
-  static width_Setter(mthis, value) native "VTTRegion_width_Setter";
+  static width_Setter(mthis, __arg_0) native "VTTRegion_width_Setter";
+  width_Setter_(mthis, __arg_0) => width_Setter(mthis, __arg_0);
+
 }
 
 class BlinkVTTRegionList {
+  static final instance = new BlinkVTTRegionList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "VTTRegionList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getRegionById_Callback_0(mthis) native "VTTRegionList_getRegionById_Callback";
+  getRegionById_Callback_0_(mthis) => getRegionById_Callback_0(mthis);
+
+  static getRegionById_Callback_1(mthis, __arg_0) native "VTTRegionList_getRegionById_Callback";
+  getRegionById_Callback_1_(mthis, __arg_0) => getRegionById_Callback_1(mthis, __arg_0);
+
+  static getRegionById_Callback_2(mthis, __arg_0, __arg_1) native "VTTRegionList_getRegionById_Callback";
+  getRegionById_Callback_2_(mthis, __arg_0, __arg_1) => getRegionById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRegionById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VTTRegionList_getRegionById_Callback";
+  getRegionById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRegionById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static item_Callback_0(mthis) native "VTTRegionList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "VTTRegionList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "VTTRegionList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VTTRegionList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "VTTRegionList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
-  static getRegionById_Callback_1(mthis, id) native "VTTRegionList_getRegionById_Callback";
-
-  static item_Callback_1(mthis, index) native "VTTRegionList_item_Callback";
 }
 
 class BlinkValidityState {
+  static final instance = new BlinkValidityState();
+
   static badInput_Getter(mthis) native "ValidityState_badInput_Getter";
+  badInput_Getter_(mthis) => badInput_Getter(mthis);
 
   static customError_Getter(mthis) native "ValidityState_customError_Getter";
+  customError_Getter_(mthis) => customError_Getter(mthis);
 
   static patternMismatch_Getter(mthis) native "ValidityState_patternMismatch_Getter";
+  patternMismatch_Getter_(mthis) => patternMismatch_Getter(mthis);
 
   static rangeOverflow_Getter(mthis) native "ValidityState_rangeOverflow_Getter";
+  rangeOverflow_Getter_(mthis) => rangeOverflow_Getter(mthis);
 
   static rangeUnderflow_Getter(mthis) native "ValidityState_rangeUnderflow_Getter";
+  rangeUnderflow_Getter_(mthis) => rangeUnderflow_Getter(mthis);
 
   static stepMismatch_Getter(mthis) native "ValidityState_stepMismatch_Getter";
+  stepMismatch_Getter_(mthis) => stepMismatch_Getter(mthis);
 
   static tooLong_Getter(mthis) native "ValidityState_tooLong_Getter";
+  tooLong_Getter_(mthis) => tooLong_Getter(mthis);
 
   static typeMismatch_Getter(mthis) native "ValidityState_typeMismatch_Getter";
+  typeMismatch_Getter_(mthis) => typeMismatch_Getter(mthis);
 
   static valid_Getter(mthis) native "ValidityState_valid_Getter";
+  valid_Getter_(mthis) => valid_Getter(mthis);
 
   static valueMissing_Getter(mthis) native "ValidityState_valueMissing_Getter";
+  valueMissing_Getter_(mthis) => valueMissing_Getter(mthis);
+
 }
 
 class BlinkVideoPlaybackQuality {
+  static final instance = new BlinkVideoPlaybackQuality();
+
   static corruptedVideoFrames_Getter(mthis) native "VideoPlaybackQuality_corruptedVideoFrames_Getter";
+  corruptedVideoFrames_Getter_(mthis) => corruptedVideoFrames_Getter(mthis);
 
   static creationTime_Getter(mthis) native "VideoPlaybackQuality_creationTime_Getter";
+  creationTime_Getter_(mthis) => creationTime_Getter(mthis);
 
   static droppedVideoFrames_Getter(mthis) native "VideoPlaybackQuality_droppedVideoFrames_Getter";
+  droppedVideoFrames_Getter_(mthis) => droppedVideoFrames_Getter(mthis);
 
   static totalVideoFrames_Getter(mthis) native "VideoPlaybackQuality_totalVideoFrames_Getter";
+  totalVideoFrames_Getter_(mthis) => totalVideoFrames_Getter(mthis);
+
 }
 
 class BlinkVideoTrack {
+  static final instance = new BlinkVideoTrack();
+
   static id_Getter(mthis) native "VideoTrack_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
 
   static kind_Getter(mthis) native "VideoTrack_kind_Getter";
+  kind_Getter_(mthis) => kind_Getter(mthis);
 
   static label_Getter(mthis) native "VideoTrack_label_Getter";
+  label_Getter_(mthis) => label_Getter(mthis);
 
   static language_Getter(mthis) native "VideoTrack_language_Getter";
+  language_Getter_(mthis) => language_Getter(mthis);
 
   static selected_Getter(mthis) native "VideoTrack_selected_Getter";
+  selected_Getter_(mthis) => selected_Getter(mthis);
 
-  static selected_Setter(mthis, value) native "VideoTrack_selected_Setter";
+  static selected_Setter(mthis, __arg_0) native "VideoTrack_selected_Setter";
+  selected_Setter_(mthis, __arg_0) => selected_Setter(mthis, __arg_0);
+
 }
 
-class BlinkVideoTrackList {
+class BlinkVideoTrackList extends BlinkEventTarget {
+  static final instance = new BlinkVideoTrackList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "VideoTrackList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_0(mthis) native "VideoTrackList_getTrackById_Callback";
+  getTrackById_Callback_0_(mthis) => getTrackById_Callback_0(mthis);
+
+  static getTrackById_Callback_1(mthis, __arg_0) native "VideoTrackList_getTrackById_Callback";
+  getTrackById_Callback_1_(mthis, __arg_0) => getTrackById_Callback_1(mthis, __arg_0);
+
+  static getTrackById_Callback_2(mthis, __arg_0, __arg_1) native "VideoTrackList_getTrackById_Callback";
+  getTrackById_Callback_2_(mthis, __arg_0, __arg_1) => getTrackById_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "VideoTrackList_getTrackById_Callback";
+  getTrackById_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTrackById_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
   static length_Getter(mthis) native "VideoTrackList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+  static onaddtrack_Getter(mthis) native "VideoTrackList_onaddtrack_Getter";
+  onaddtrack_Getter_(mthis) => onaddtrack_Getter(mthis);
+
+  static onaddtrack_Setter(mthis, __arg_0) native "VideoTrackList_onaddtrack_Setter";
+  onaddtrack_Setter_(mthis, __arg_0) => onaddtrack_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "VideoTrackList_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "VideoTrackList_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onremovetrack_Getter(mthis) native "VideoTrackList_onremovetrack_Getter";
+  onremovetrack_Getter_(mthis) => onremovetrack_Getter(mthis);
+
+  static onremovetrack_Setter(mthis, __arg_0) native "VideoTrackList_onremovetrack_Setter";
+  onremovetrack_Setter_(mthis, __arg_0) => onremovetrack_Setter(mthis, __arg_0);
 
   static selectedIndex_Getter(mthis) native "VideoTrackList_selectedIndex_Getter";
+  selectedIndex_Getter_(mthis) => selectedIndex_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, index) native "VideoTrackList___getter___Callback";
-
-  static getTrackById_Callback_1(mthis, id) native "VideoTrackList_getTrackById_Callback";
 }
 
-class BlinkWaveShaperNode {
-  static curve_Getter(mthis) native "WaveShaperNode_curve_Getter";
+class BlinkWaveShaperNode extends BlinkAudioNode {
+  static final instance = new BlinkWaveShaperNode();
 
-  static curve_Setter(mthis, value) native "WaveShaperNode_curve_Setter";
+  static curve_Getter(mthis) native "WaveShaperNode_curve_Getter";
+  curve_Getter_(mthis) => curve_Getter(mthis);
+
+  static curve_Setter(mthis, __arg_0) native "WaveShaperNode_curve_Setter";
+  curve_Setter_(mthis, __arg_0) => curve_Setter(mthis, __arg_0);
 
   static oversample_Getter(mthis) native "WaveShaperNode_oversample_Getter";
+  oversample_Getter_(mthis) => oversample_Getter(mthis);
 
-  static oversample_Setter(mthis, value) native "WaveShaperNode_oversample_Setter";
+  static oversample_Setter(mthis, __arg_0) native "WaveShaperNode_oversample_Setter";
+  oversample_Setter_(mthis, __arg_0) => oversample_Setter(mthis, __arg_0);
+
 }
 
 class BlinkWebGLActiveInfo {
+  static final instance = new BlinkWebGLActiveInfo();
+
   static name_Getter(mthis) native "WebGLActiveInfo_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
   static size_Getter(mthis) native "WebGLActiveInfo_size_Getter";
+  size_Getter_(mthis) => size_Getter(mthis);
 
   static type_Getter(mthis) native "WebGLActiveInfo_type_Getter";
+  type_Getter_(mthis) => type_Getter(mthis);
+
 }
 
-class BlinkWebGLBuffer {}
+class BlinkWebGLBuffer {
+  static final instance = new BlinkWebGLBuffer();
 
-class BlinkWebGLCompressedTextureATC {}
+}
 
-class BlinkWebGLCompressedTextureETC1 {}
+class BlinkWebGLCompressedTextureATC {
+  static final instance = new BlinkWebGLCompressedTextureATC();
 
-class BlinkWebGLCompressedTexturePVRTC {}
+}
 
-class BlinkWebGLCompressedTextureS3TC {}
+class BlinkWebGLCompressedTextureETC1 {
+  static final instance = new BlinkWebGLCompressedTextureETC1();
+
+}
+
+class BlinkWebGLCompressedTexturePVRTC {
+  static final instance = new BlinkWebGLCompressedTexturePVRTC();
+
+}
+
+class BlinkWebGLCompressedTextureS3TC {
+  static final instance = new BlinkWebGLCompressedTextureS3TC();
+
+}
 
 class BlinkWebGLContextAttributes {
-  static alpha_Getter(mthis) native "WebGLContextAttributes_alpha_Getter";
+  static final instance = new BlinkWebGLContextAttributes();
 
-  static alpha_Setter(mthis, value) native "WebGLContextAttributes_alpha_Setter";
+  static alpha_Getter(mthis) native "WebGLContextAttributes_alpha_Getter";
+  alpha_Getter_(mthis) => alpha_Getter(mthis);
+
+  static alpha_Setter(mthis, __arg_0) native "WebGLContextAttributes_alpha_Setter";
+  alpha_Setter_(mthis, __arg_0) => alpha_Setter(mthis, __arg_0);
 
   static antialias_Getter(mthis) native "WebGLContextAttributes_antialias_Getter";
+  antialias_Getter_(mthis) => antialias_Getter(mthis);
 
-  static antialias_Setter(mthis, value) native "WebGLContextAttributes_antialias_Setter";
+  static antialias_Setter(mthis, __arg_0) native "WebGLContextAttributes_antialias_Setter";
+  antialias_Setter_(mthis, __arg_0) => antialias_Setter(mthis, __arg_0);
 
   static depth_Getter(mthis) native "WebGLContextAttributes_depth_Getter";
+  depth_Getter_(mthis) => depth_Getter(mthis);
 
-  static depth_Setter(mthis, value) native "WebGLContextAttributes_depth_Setter";
+  static depth_Setter(mthis, __arg_0) native "WebGLContextAttributes_depth_Setter";
+  depth_Setter_(mthis, __arg_0) => depth_Setter(mthis, __arg_0);
 
   static failIfMajorPerformanceCaveat_Getter(mthis) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Getter";
+  failIfMajorPerformanceCaveat_Getter_(mthis) => failIfMajorPerformanceCaveat_Getter(mthis);
 
-  static failIfMajorPerformanceCaveat_Setter(mthis, value) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Setter";
+  static failIfMajorPerformanceCaveat_Setter(mthis, __arg_0) native "WebGLContextAttributes_failIfMajorPerformanceCaveat_Setter";
+  failIfMajorPerformanceCaveat_Setter_(mthis, __arg_0) => failIfMajorPerformanceCaveat_Setter(mthis, __arg_0);
 
   static premultipliedAlpha_Getter(mthis) native "WebGLContextAttributes_premultipliedAlpha_Getter";
+  premultipliedAlpha_Getter_(mthis) => premultipliedAlpha_Getter(mthis);
 
-  static premultipliedAlpha_Setter(mthis, value) native "WebGLContextAttributes_premultipliedAlpha_Setter";
+  static premultipliedAlpha_Setter(mthis, __arg_0) native "WebGLContextAttributes_premultipliedAlpha_Setter";
+  premultipliedAlpha_Setter_(mthis, __arg_0) => premultipliedAlpha_Setter(mthis, __arg_0);
 
   static preserveDrawingBuffer_Getter(mthis) native "WebGLContextAttributes_preserveDrawingBuffer_Getter";
+  preserveDrawingBuffer_Getter_(mthis) => preserveDrawingBuffer_Getter(mthis);
 
-  static preserveDrawingBuffer_Setter(mthis, value) native "WebGLContextAttributes_preserveDrawingBuffer_Setter";
+  static preserveDrawingBuffer_Setter(mthis, __arg_0) native "WebGLContextAttributes_preserveDrawingBuffer_Setter";
+  preserveDrawingBuffer_Setter_(mthis, __arg_0) => preserveDrawingBuffer_Setter(mthis, __arg_0);
 
   static stencil_Getter(mthis) native "WebGLContextAttributes_stencil_Getter";
+  stencil_Getter_(mthis) => stencil_Getter(mthis);
 
-  static stencil_Setter(mthis, value) native "WebGLContextAttributes_stencil_Setter";
+  static stencil_Setter(mthis, __arg_0) native "WebGLContextAttributes_stencil_Setter";
+  stencil_Setter_(mthis, __arg_0) => stencil_Setter(mthis, __arg_0);
+
 }
 
-class BlinkWebGLContextEvent {
-  static constructorCallback(type, options) native "WebGLContextEvent_constructorCallback";
+class BlinkWebGLContextEvent extends BlinkEvent {
+  static final instance = new BlinkWebGLContextEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WebGLContextEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static statusMessage_Getter(mthis) native "WebGLContextEvent_statusMessage_Getter";
+  statusMessage_Getter_(mthis) => statusMessage_Getter(mthis);
+
 }
 
-class BlinkWebGLDebugRendererInfo {}
+class BlinkWebGLDebugRendererInfo {
+  static final instance = new BlinkWebGLDebugRendererInfo();
+
+}
 
 class BlinkWebGLDebugShaders {
-  static getTranslatedShaderSource_Callback_1(mthis, shader) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
+  static final instance = new BlinkWebGLDebugShaders();
+
+  static getTranslatedShaderSource_Callback_0(mthis) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
+  getTranslatedShaderSource_Callback_0_(mthis) => getTranslatedShaderSource_Callback_0(mthis);
+
+  static getTranslatedShaderSource_Callback_1(mthis, __arg_0) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
+  getTranslatedShaderSource_Callback_1_(mthis, __arg_0) => getTranslatedShaderSource_Callback_1(mthis, __arg_0);
+
+  static getTranslatedShaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
+  getTranslatedShaderSource_Callback_2_(mthis, __arg_0, __arg_1) => getTranslatedShaderSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTranslatedShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLDebugShaders_getTranslatedShaderSource_Callback";
+  getTranslatedShaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTranslatedShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkWebGLDepthTexture {}
+class BlinkWebGLDepthTexture {
+  static final instance = new BlinkWebGLDepthTexture();
+
+}
 
 class BlinkWebGLDrawBuffers {
-  static drawBuffersWEBGL_Callback_1(mthis, buffers) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
+  static final instance = new BlinkWebGLDrawBuffers();
+
+  static drawBuffersWEBGL_Callback_0(mthis) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
+  drawBuffersWEBGL_Callback_0_(mthis) => drawBuffersWEBGL_Callback_0(mthis);
+
+  static drawBuffersWEBGL_Callback_1(mthis, __arg_0) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
+  drawBuffersWEBGL_Callback_1_(mthis, __arg_0) => drawBuffersWEBGL_Callback_1(mthis, __arg_0);
+
+  static drawBuffersWEBGL_Callback_2(mthis, __arg_0, __arg_1) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
+  drawBuffersWEBGL_Callback_2_(mthis, __arg_0, __arg_1) => drawBuffersWEBGL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static drawBuffersWEBGL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLDrawBuffers_drawBuffersWEBGL_Callback";
+  drawBuffersWEBGL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawBuffersWEBGL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
-class BlinkWebGLFramebuffer {}
+class BlinkWebGLFramebuffer {
+  static final instance = new BlinkWebGLFramebuffer();
+
+}
 
 class BlinkWebGLLoseContext {
-  static loseContext_Callback(mthis) native "WebGLLoseContext_loseContext_Callback";
+  static final instance = new BlinkWebGLLoseContext();
 
-  static restoreContext_Callback(mthis) native "WebGLLoseContext_restoreContext_Callback";
+  static loseContext_Callback_0(mthis) native "WebGLLoseContext_loseContext_Callback";
+  loseContext_Callback_0_(mthis) => loseContext_Callback_0(mthis);
+
+  static loseContext_Callback_1(mthis, __arg_0) native "WebGLLoseContext_loseContext_Callback";
+  loseContext_Callback_1_(mthis, __arg_0) => loseContext_Callback_1(mthis, __arg_0);
+
+  static loseContext_Callback_2(mthis, __arg_0, __arg_1) native "WebGLLoseContext_loseContext_Callback";
+  loseContext_Callback_2_(mthis, __arg_0, __arg_1) => loseContext_Callback_2(mthis, __arg_0, __arg_1);
+
+  static restoreContext_Callback_0(mthis) native "WebGLLoseContext_restoreContext_Callback";
+  restoreContext_Callback_0_(mthis) => restoreContext_Callback_0(mthis);
+
+  static restoreContext_Callback_1(mthis, __arg_0) native "WebGLLoseContext_restoreContext_Callback";
+  restoreContext_Callback_1_(mthis, __arg_0) => restoreContext_Callback_1(mthis, __arg_0);
+
+  static restoreContext_Callback_2(mthis, __arg_0, __arg_1) native "WebGLLoseContext_restoreContext_Callback";
+  restoreContext_Callback_2_(mthis, __arg_0, __arg_1) => restoreContext_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkWebGLProgram {}
+class BlinkWebGLProgram {
+  static final instance = new BlinkWebGLProgram();
 
-class BlinkWebGLRenderbuffer {}
+}
 
-class BlinkWebGLRenderingContextBase {}
+class BlinkWebGLRenderbuffer {
+  static final instance = new BlinkWebGLRenderbuffer();
+
+}
 
 class BlinkWebGLRenderingContext {
+  static final instance = new BlinkWebGLRenderingContext();
+
+  static activeTexture_Callback_0(mthis) native "WebGLRenderingContext_activeTexture_Callback";
+  activeTexture_Callback_0_(mthis) => activeTexture_Callback_0(mthis);
+
+  static activeTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_activeTexture_Callback";
+  activeTexture_Callback_1_(mthis, __arg_0) => activeTexture_Callback_1(mthis, __arg_0);
+
+  static activeTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_activeTexture_Callback";
+  activeTexture_Callback_2_(mthis, __arg_0, __arg_1) => activeTexture_Callback_2(mthis, __arg_0, __arg_1);
+
+  static activeTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_activeTexture_Callback";
+  activeTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => activeTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static attachShader_Callback_0(mthis) native "WebGLRenderingContext_attachShader_Callback";
+  attachShader_Callback_0_(mthis) => attachShader_Callback_0(mthis);
+
+  static attachShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_attachShader_Callback";
+  attachShader_Callback_1_(mthis, __arg_0) => attachShader_Callback_1(mthis, __arg_0);
+
+  static attachShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_attachShader_Callback";
+  attachShader_Callback_2_(mthis, __arg_0, __arg_1) => attachShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static attachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_attachShader_Callback";
+  attachShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => attachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static attachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_attachShader_Callback";
+  attachShader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => attachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bindAttribLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  bindAttribLocation_Callback_1_(mthis, __arg_0) => bindAttribLocation_Callback_1(mthis, __arg_0);
+
+  static bindAttribLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  bindAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => bindAttribLocation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  bindAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bindAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  bindAttribLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bindAttribLocation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  bindAttribLocation_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bindAttribLocation_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static bindBuffer_Callback_0(mthis) native "WebGLRenderingContext_bindBuffer_Callback";
+  bindBuffer_Callback_0_(mthis) => bindBuffer_Callback_0(mthis);
+
+  static bindBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindBuffer_Callback";
+  bindBuffer_Callback_1_(mthis, __arg_0) => bindBuffer_Callback_1(mthis, __arg_0);
+
+  static bindBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindBuffer_Callback";
+  bindBuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindBuffer_Callback";
+  bindBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bindBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindBuffer_Callback";
+  bindBuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindBuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bindFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  bindFramebuffer_Callback_0_(mthis) => bindFramebuffer_Callback_0(mthis);
+
+  static bindFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  bindFramebuffer_Callback_1_(mthis, __arg_0) => bindFramebuffer_Callback_1(mthis, __arg_0);
+
+  static bindFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  bindFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  bindFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bindFramebuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  bindFramebuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindFramebuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bindRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  bindRenderbuffer_Callback_0_(mthis) => bindRenderbuffer_Callback_0(mthis);
+
+  static bindRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  bindRenderbuffer_Callback_1_(mthis, __arg_0) => bindRenderbuffer_Callback_1(mthis, __arg_0);
+
+  static bindRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  bindRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => bindRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  bindRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bindRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  bindRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bindTexture_Callback_0(mthis) native "WebGLRenderingContext_bindTexture_Callback";
+  bindTexture_Callback_0_(mthis) => bindTexture_Callback_0(mthis);
+
+  static bindTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bindTexture_Callback";
+  bindTexture_Callback_1_(mthis, __arg_0) => bindTexture_Callback_1(mthis, __arg_0);
+
+  static bindTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bindTexture_Callback";
+  bindTexture_Callback_2_(mthis, __arg_0, __arg_1) => bindTexture_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bindTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bindTexture_Callback";
+  bindTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bindTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bindTexture_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bindTexture_Callback";
+  bindTexture_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bindTexture_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static blendColor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendColor_Callback";
+  blendColor_Callback_2_(mthis, __arg_0, __arg_1) => blendColor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static blendColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendColor_Callback";
+  blendColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blendColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendColor_Callback";
+  blendColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static blendColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_blendColor_Callback";
+  blendColor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => blendColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static blendColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_blendColor_Callback";
+  blendColor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => blendColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static blendEquationSeparate_Callback_0(mthis) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  blendEquationSeparate_Callback_0_(mthis) => blendEquationSeparate_Callback_0(mthis);
+
+  static blendEquationSeparate_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  blendEquationSeparate_Callback_1_(mthis, __arg_0) => blendEquationSeparate_Callback_1(mthis, __arg_0);
+
+  static blendEquationSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  blendEquationSeparate_Callback_2_(mthis, __arg_0, __arg_1) => blendEquationSeparate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static blendEquationSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  blendEquationSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendEquationSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blendEquationSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  blendEquationSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendEquationSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static blendEquation_Callback_0(mthis) native "WebGLRenderingContext_blendEquation_Callback";
+  blendEquation_Callback_0_(mthis) => blendEquation_Callback_0(mthis);
+
+  static blendEquation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendEquation_Callback";
+  blendEquation_Callback_1_(mthis, __arg_0) => blendEquation_Callback_1(mthis, __arg_0);
+
+  static blendEquation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendEquation_Callback";
+  blendEquation_Callback_2_(mthis, __arg_0, __arg_1) => blendEquation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static blendEquation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendEquation_Callback";
+  blendEquation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendEquation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blendFuncSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  blendFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => blendFuncSeparate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static blendFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  blendFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blendFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  blendFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static blendFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  blendFuncSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => blendFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static blendFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  blendFuncSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => blendFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static blendFunc_Callback_0(mthis) native "WebGLRenderingContext_blendFunc_Callback";
+  blendFunc_Callback_0_(mthis) => blendFunc_Callback_0(mthis);
+
+  static blendFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_blendFunc_Callback";
+  blendFunc_Callback_1_(mthis, __arg_0) => blendFunc_Callback_1(mthis, __arg_0);
+
+  static blendFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_blendFunc_Callback";
+  blendFunc_Callback_2_(mthis, __arg_0, __arg_1) => blendFunc_Callback_2(mthis, __arg_0, __arg_1);
+
+  static blendFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_blendFunc_Callback";
+  blendFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => blendFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blendFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_blendFunc_Callback";
+  blendFunc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => blendFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bufferData_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bufferData_Callback";
+  bufferData_Callback_1_(mthis, __arg_0) => bufferData_Callback_1(mthis, __arg_0);
+
+  static bufferData_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bufferData_Callback";
+  bufferData_Callback_2_(mthis, __arg_0, __arg_1) => bufferData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bufferData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bufferData_Callback";
+  bufferData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bufferData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bufferData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bufferData_Callback";
+  bufferData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bufferData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bufferData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bufferData_Callback";
+  bufferData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bufferData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static bufferSubData_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_bufferSubData_Callback";
+  bufferSubData_Callback_1_(mthis, __arg_0) => bufferSubData_Callback_1(mthis, __arg_0);
+
+  static bufferSubData_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_bufferSubData_Callback";
+  bufferSubData_Callback_2_(mthis, __arg_0, __arg_1) => bufferSubData_Callback_2(mthis, __arg_0, __arg_1);
+
+  static bufferSubData_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_bufferSubData_Callback";
+  bufferSubData_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => bufferSubData_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static bufferSubData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_bufferSubData_Callback";
+  bufferSubData_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => bufferSubData_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static bufferSubData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_bufferSubData_Callback";
+  bufferSubData_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => bufferSubData_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
   static canvas_Getter(mthis) native "WebGLRenderingContext_canvas_Getter";
+  canvas_Getter_(mthis) => canvas_Getter(mthis);
+
+  static checkFramebufferStatus_Callback_0(mthis) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
+  checkFramebufferStatus_Callback_0_(mthis) => checkFramebufferStatus_Callback_0(mthis);
+
+  static checkFramebufferStatus_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
+  checkFramebufferStatus_Callback_1_(mthis, __arg_0) => checkFramebufferStatus_Callback_1(mthis, __arg_0);
+
+  static checkFramebufferStatus_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
+  checkFramebufferStatus_Callback_2_(mthis, __arg_0, __arg_1) => checkFramebufferStatus_Callback_2(mthis, __arg_0, __arg_1);
+
+  static checkFramebufferStatus_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
+  checkFramebufferStatus_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => checkFramebufferStatus_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearColor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearColor_Callback";
+  clearColor_Callback_2_(mthis, __arg_0, __arg_1) => clearColor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearColor_Callback";
+  clearColor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearColor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_clearColor_Callback";
+  clearColor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => clearColor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static clearColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_clearColor_Callback";
+  clearColor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => clearColor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static clearColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_clearColor_Callback";
+  clearColor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => clearColor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static clearDepth_Callback_0(mthis) native "WebGLRenderingContext_clearDepth_Callback";
+  clearDepth_Callback_0_(mthis) => clearDepth_Callback_0(mthis);
+
+  static clearDepth_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clearDepth_Callback";
+  clearDepth_Callback_1_(mthis, __arg_0) => clearDepth_Callback_1(mthis, __arg_0);
+
+  static clearDepth_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearDepth_Callback";
+  clearDepth_Callback_2_(mthis, __arg_0, __arg_1) => clearDepth_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearDepth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearDepth_Callback";
+  clearDepth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearDepth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearStencil_Callback_0(mthis) native "WebGLRenderingContext_clearStencil_Callback";
+  clearStencil_Callback_0_(mthis) => clearStencil_Callback_0(mthis);
+
+  static clearStencil_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clearStencil_Callback";
+  clearStencil_Callback_1_(mthis, __arg_0) => clearStencil_Callback_1(mthis, __arg_0);
+
+  static clearStencil_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clearStencil_Callback";
+  clearStencil_Callback_2_(mthis, __arg_0, __arg_1) => clearStencil_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearStencil_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clearStencil_Callback";
+  clearStencil_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearStencil_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clear_Callback_0(mthis) native "WebGLRenderingContext_clear_Callback";
+  clear_Callback_0_(mthis) => clear_Callback_0(mthis);
+
+  static clear_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_clear_Callback";
+  clear_Callback_1_(mthis, __arg_0) => clear_Callback_1(mthis, __arg_0);
+
+  static clear_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_clear_Callback";
+  clear_Callback_2_(mthis, __arg_0, __arg_1) => clear_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clear_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_clear_Callback";
+  clear_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clear_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static colorMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_colorMask_Callback";
+  colorMask_Callback_2_(mthis, __arg_0, __arg_1) => colorMask_Callback_2(mthis, __arg_0, __arg_1);
+
+  static colorMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_colorMask_Callback";
+  colorMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => colorMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static colorMask_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_colorMask_Callback";
+  colorMask_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => colorMask_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static colorMask_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_colorMask_Callback";
+  colorMask_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => colorMask_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static colorMask_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_colorMask_Callback";
+  colorMask_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => colorMask_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static compileShader_Callback_0(mthis) native "WebGLRenderingContext_compileShader_Callback";
+  compileShader_Callback_0_(mthis) => compileShader_Callback_0(mthis);
+
+  static compileShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_compileShader_Callback";
+  compileShader_Callback_1_(mthis, __arg_0) => compileShader_Callback_1(mthis, __arg_0);
+
+  static compileShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_compileShader_Callback";
+  compileShader_Callback_2_(mthis, __arg_0, __arg_1) => compileShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static compileShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_compileShader_Callback";
+  compileShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => compileShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static compressedTexImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  compressedTexImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => compressedTexImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static compressedTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  compressedTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => compressedTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static compressedTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  compressedTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => compressedTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static compressedTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  compressedTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => compressedTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static compressedTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  compressedTexImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => compressedTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static compressedTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  compressedTexSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => compressedTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static compressedTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  compressedTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => compressedTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static compressedTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  compressedTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => compressedTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static compressedTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  compressedTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => compressedTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static compressedTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  compressedTexSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => compressedTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static copyTexImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  copyTexImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => copyTexImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static copyTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  copyTexImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTexImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static copyTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  copyTexImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => copyTexImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static copyTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  copyTexImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => copyTexImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static copyTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  copyTexImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => copyTexImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static copyTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  copyTexSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => copyTexSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static copyTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  copyTexSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => copyTexSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static copyTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  copyTexSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => copyTexSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static copyTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  copyTexSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => copyTexSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static copyTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  copyTexSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => copyTexSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static createBuffer_Callback_0(mthis) native "WebGLRenderingContext_createBuffer_Callback";
+  createBuffer_Callback_0_(mthis) => createBuffer_Callback_0(mthis);
+
+  static createBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createBuffer_Callback";
+  createBuffer_Callback_1_(mthis, __arg_0) => createBuffer_Callback_1(mthis, __arg_0);
+
+  static createBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createBuffer_Callback";
+  createBuffer_Callback_2_(mthis, __arg_0, __arg_1) => createBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_createFramebuffer_Callback";
+  createFramebuffer_Callback_0_(mthis) => createFramebuffer_Callback_0(mthis);
+
+  static createFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createFramebuffer_Callback";
+  createFramebuffer_Callback_1_(mthis, __arg_0) => createFramebuffer_Callback_1(mthis, __arg_0);
+
+  static createFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createFramebuffer_Callback";
+  createFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => createFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createProgram_Callback_0(mthis) native "WebGLRenderingContext_createProgram_Callback";
+  createProgram_Callback_0_(mthis) => createProgram_Callback_0(mthis);
+
+  static createProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createProgram_Callback";
+  createProgram_Callback_1_(mthis, __arg_0) => createProgram_Callback_1(mthis, __arg_0);
+
+  static createProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createProgram_Callback";
+  createProgram_Callback_2_(mthis, __arg_0, __arg_1) => createProgram_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_createRenderbuffer_Callback";
+  createRenderbuffer_Callback_0_(mthis) => createRenderbuffer_Callback_0(mthis);
+
+  static createRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createRenderbuffer_Callback";
+  createRenderbuffer_Callback_1_(mthis, __arg_0) => createRenderbuffer_Callback_1(mthis, __arg_0);
+
+  static createRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createRenderbuffer_Callback";
+  createRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => createRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createShader_Callback_0(mthis) native "WebGLRenderingContext_createShader_Callback";
+  createShader_Callback_0_(mthis) => createShader_Callback_0(mthis);
+
+  static createShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createShader_Callback";
+  createShader_Callback_1_(mthis, __arg_0) => createShader_Callback_1(mthis, __arg_0);
+
+  static createShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createShader_Callback";
+  createShader_Callback_2_(mthis, __arg_0, __arg_1) => createShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_createShader_Callback";
+  createShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createTexture_Callback_0(mthis) native "WebGLRenderingContext_createTexture_Callback";
+  createTexture_Callback_0_(mthis) => createTexture_Callback_0(mthis);
+
+  static createTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_createTexture_Callback";
+  createTexture_Callback_1_(mthis, __arg_0) => createTexture_Callback_1(mthis, __arg_0);
+
+  static createTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_createTexture_Callback";
+  createTexture_Callback_2_(mthis, __arg_0, __arg_1) => createTexture_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cullFace_Callback_0(mthis) native "WebGLRenderingContext_cullFace_Callback";
+  cullFace_Callback_0_(mthis) => cullFace_Callback_0(mthis);
+
+  static cullFace_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_cullFace_Callback";
+  cullFace_Callback_1_(mthis, __arg_0) => cullFace_Callback_1(mthis, __arg_0);
+
+  static cullFace_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_cullFace_Callback";
+  cullFace_Callback_2_(mthis, __arg_0, __arg_1) => cullFace_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cullFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_cullFace_Callback";
+  cullFace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cullFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteBuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteBuffer_Callback";
+  deleteBuffer_Callback_0_(mthis) => deleteBuffer_Callback_0(mthis);
+
+  static deleteBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteBuffer_Callback";
+  deleteBuffer_Callback_1_(mthis, __arg_0) => deleteBuffer_Callback_1(mthis, __arg_0);
+
+  static deleteBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteBuffer_Callback";
+  deleteBuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteBuffer_Callback";
+  deleteBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteFramebuffer_Callback";
+  deleteFramebuffer_Callback_0_(mthis) => deleteFramebuffer_Callback_0(mthis);
+
+  static deleteFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteFramebuffer_Callback";
+  deleteFramebuffer_Callback_1_(mthis, __arg_0) => deleteFramebuffer_Callback_1(mthis, __arg_0);
+
+  static deleteFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteFramebuffer_Callback";
+  deleteFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteFramebuffer_Callback";
+  deleteFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteProgram_Callback_0(mthis) native "WebGLRenderingContext_deleteProgram_Callback";
+  deleteProgram_Callback_0_(mthis) => deleteProgram_Callback_0(mthis);
+
+  static deleteProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteProgram_Callback";
+  deleteProgram_Callback_1_(mthis, __arg_0) => deleteProgram_Callback_1(mthis, __arg_0);
+
+  static deleteProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteProgram_Callback";
+  deleteProgram_Callback_2_(mthis, __arg_0, __arg_1) => deleteProgram_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteProgram_Callback";
+  deleteProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
+  deleteRenderbuffer_Callback_0_(mthis) => deleteRenderbuffer_Callback_0(mthis);
+
+  static deleteRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
+  deleteRenderbuffer_Callback_1_(mthis, __arg_0) => deleteRenderbuffer_Callback_1(mthis, __arg_0);
+
+  static deleteRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
+  deleteRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => deleteRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
+  deleteRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteShader_Callback_0(mthis) native "WebGLRenderingContext_deleteShader_Callback";
+  deleteShader_Callback_0_(mthis) => deleteShader_Callback_0(mthis);
+
+  static deleteShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteShader_Callback";
+  deleteShader_Callback_1_(mthis, __arg_0) => deleteShader_Callback_1(mthis, __arg_0);
+
+  static deleteShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteShader_Callback";
+  deleteShader_Callback_2_(mthis, __arg_0, __arg_1) => deleteShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteShader_Callback";
+  deleteShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static deleteTexture_Callback_0(mthis) native "WebGLRenderingContext_deleteTexture_Callback";
+  deleteTexture_Callback_0_(mthis) => deleteTexture_Callback_0(mthis);
+
+  static deleteTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_deleteTexture_Callback";
+  deleteTexture_Callback_1_(mthis, __arg_0) => deleteTexture_Callback_1(mthis, __arg_0);
+
+  static deleteTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_deleteTexture_Callback";
+  deleteTexture_Callback_2_(mthis, __arg_0, __arg_1) => deleteTexture_Callback_2(mthis, __arg_0, __arg_1);
+
+  static deleteTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_deleteTexture_Callback";
+  deleteTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => deleteTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static depthFunc_Callback_0(mthis) native "WebGLRenderingContext_depthFunc_Callback";
+  depthFunc_Callback_0_(mthis) => depthFunc_Callback_0(mthis);
+
+  static depthFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthFunc_Callback";
+  depthFunc_Callback_1_(mthis, __arg_0) => depthFunc_Callback_1(mthis, __arg_0);
+
+  static depthFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthFunc_Callback";
+  depthFunc_Callback_2_(mthis, __arg_0, __arg_1) => depthFunc_Callback_2(mthis, __arg_0, __arg_1);
+
+  static depthFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthFunc_Callback";
+  depthFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static depthMask_Callback_0(mthis) native "WebGLRenderingContext_depthMask_Callback";
+  depthMask_Callback_0_(mthis) => depthMask_Callback_0(mthis);
+
+  static depthMask_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthMask_Callback";
+  depthMask_Callback_1_(mthis, __arg_0) => depthMask_Callback_1(mthis, __arg_0);
+
+  static depthMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthMask_Callback";
+  depthMask_Callback_2_(mthis, __arg_0, __arg_1) => depthMask_Callback_2(mthis, __arg_0, __arg_1);
+
+  static depthMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthMask_Callback";
+  depthMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static depthRange_Callback_0(mthis) native "WebGLRenderingContext_depthRange_Callback";
+  depthRange_Callback_0_(mthis) => depthRange_Callback_0(mthis);
+
+  static depthRange_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_depthRange_Callback";
+  depthRange_Callback_1_(mthis, __arg_0) => depthRange_Callback_1(mthis, __arg_0);
+
+  static depthRange_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_depthRange_Callback";
+  depthRange_Callback_2_(mthis, __arg_0, __arg_1) => depthRange_Callback_2(mthis, __arg_0, __arg_1);
+
+  static depthRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_depthRange_Callback";
+  depthRange_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => depthRange_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static depthRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_depthRange_Callback";
+  depthRange_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => depthRange_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static detachShader_Callback_0(mthis) native "WebGLRenderingContext_detachShader_Callback";
+  detachShader_Callback_0_(mthis) => detachShader_Callback_0(mthis);
+
+  static detachShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_detachShader_Callback";
+  detachShader_Callback_1_(mthis, __arg_0) => detachShader_Callback_1(mthis, __arg_0);
+
+  static detachShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_detachShader_Callback";
+  detachShader_Callback_2_(mthis, __arg_0, __arg_1) => detachShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static detachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_detachShader_Callback";
+  detachShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => detachShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static detachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_detachShader_Callback";
+  detachShader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => detachShader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static disableVertexAttribArray_Callback_0(mthis) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
+  disableVertexAttribArray_Callback_0_(mthis) => disableVertexAttribArray_Callback_0(mthis);
+
+  static disableVertexAttribArray_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
+  disableVertexAttribArray_Callback_1_(mthis, __arg_0) => disableVertexAttribArray_Callback_1(mthis, __arg_0);
+
+  static disableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
+  disableVertexAttribArray_Callback_2_(mthis, __arg_0, __arg_1) => disableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1);
+
+  static disableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
+  disableVertexAttribArray_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static disable_Callback_0(mthis) native "WebGLRenderingContext_disable_Callback";
+  disable_Callback_0_(mthis) => disable_Callback_0(mthis);
+
+  static disable_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_disable_Callback";
+  disable_Callback_1_(mthis, __arg_0) => disable_Callback_1(mthis, __arg_0);
+
+  static disable_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_disable_Callback";
+  disable_Callback_2_(mthis, __arg_0, __arg_1) => disable_Callback_2(mthis, __arg_0, __arg_1);
+
+  static disable_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_disable_Callback";
+  disable_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => disable_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawArrays_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_drawArrays_Callback";
+  drawArrays_Callback_1_(mthis, __arg_0) => drawArrays_Callback_1(mthis, __arg_0);
+
+  static drawArrays_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_drawArrays_Callback";
+  drawArrays_Callback_2_(mthis, __arg_0, __arg_1) => drawArrays_Callback_2(mthis, __arg_0, __arg_1);
+
+  static drawArrays_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_drawArrays_Callback";
+  drawArrays_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawArrays_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawArrays_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_drawArrays_Callback";
+  drawArrays_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawArrays_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawArrays_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_drawArrays_Callback";
+  drawArrays_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawArrays_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static drawElements_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_drawElements_Callback";
+  drawElements_Callback_2_(mthis, __arg_0, __arg_1) => drawElements_Callback_2(mthis, __arg_0, __arg_1);
+
+  static drawElements_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_drawElements_Callback";
+  drawElements_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => drawElements_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static drawElements_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_drawElements_Callback";
+  drawElements_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => drawElements_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static drawElements_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_drawElements_Callback";
+  drawElements_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => drawElements_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static drawElements_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_drawElements_Callback";
+  drawElements_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => drawElements_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
   static drawingBufferHeight_Getter(mthis) native "WebGLRenderingContext_drawingBufferHeight_Getter";
+  drawingBufferHeight_Getter_(mthis) => drawingBufferHeight_Getter(mthis);
 
   static drawingBufferWidth_Getter(mthis) native "WebGLRenderingContext_drawingBufferWidth_Getter";
+  drawingBufferWidth_Getter_(mthis) => drawingBufferWidth_Getter(mthis);
+
+  static enableVertexAttribArray_Callback_0(mthis) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
+  enableVertexAttribArray_Callback_0_(mthis) => enableVertexAttribArray_Callback_0(mthis);
+
+  static enableVertexAttribArray_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
+  enableVertexAttribArray_Callback_1_(mthis, __arg_0) => enableVertexAttribArray_Callback_1(mthis, __arg_0);
+
+  static enableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
+  enableVertexAttribArray_Callback_2_(mthis, __arg_0, __arg_1) => enableVertexAttribArray_Callback_2(mthis, __arg_0, __arg_1);
+
+  static enableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
+  enableVertexAttribArray_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => enableVertexAttribArray_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static enable_Callback_0(mthis) native "WebGLRenderingContext_enable_Callback";
+  enable_Callback_0_(mthis) => enable_Callback_0(mthis);
+
+  static enable_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_enable_Callback";
+  enable_Callback_1_(mthis, __arg_0) => enable_Callback_1(mthis, __arg_0);
+
+  static enable_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_enable_Callback";
+  enable_Callback_2_(mthis, __arg_0, __arg_1) => enable_Callback_2(mthis, __arg_0, __arg_1);
+
+  static enable_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_enable_Callback";
+  enable_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => enable_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static finish_Callback_0(mthis) native "WebGLRenderingContext_finish_Callback";
+  finish_Callback_0_(mthis) => finish_Callback_0(mthis);
+
+  static finish_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_finish_Callback";
+  finish_Callback_1_(mthis, __arg_0) => finish_Callback_1(mthis, __arg_0);
+
+  static finish_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_finish_Callback";
+  finish_Callback_2_(mthis, __arg_0, __arg_1) => finish_Callback_2(mthis, __arg_0, __arg_1);
+
+  static flush_Callback_0(mthis) native "WebGLRenderingContext_flush_Callback";
+  flush_Callback_0_(mthis) => flush_Callback_0(mthis);
+
+  static flush_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_flush_Callback";
+  flush_Callback_1_(mthis, __arg_0) => flush_Callback_1(mthis, __arg_0);
+
+  static flush_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_flush_Callback";
+  flush_Callback_2_(mthis, __arg_0, __arg_1) => flush_Callback_2(mthis, __arg_0, __arg_1);
+
+  static framebufferRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  framebufferRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => framebufferRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static framebufferRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  framebufferRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => framebufferRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static framebufferRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  framebufferRenderbuffer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => framebufferRenderbuffer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static framebufferRenderbuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  framebufferRenderbuffer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => framebufferRenderbuffer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static framebufferRenderbuffer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  framebufferRenderbuffer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => framebufferRenderbuffer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static framebufferTexture2D_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  framebufferTexture2D_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => framebufferTexture2D_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static framebufferTexture2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  framebufferTexture2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => framebufferTexture2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static framebufferTexture2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  framebufferTexture2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => framebufferTexture2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static framebufferTexture2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  framebufferTexture2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => framebufferTexture2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static framebufferTexture2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  framebufferTexture2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => framebufferTexture2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static frontFace_Callback_0(mthis) native "WebGLRenderingContext_frontFace_Callback";
+  frontFace_Callback_0_(mthis) => frontFace_Callback_0(mthis);
+
+  static frontFace_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_frontFace_Callback";
+  frontFace_Callback_1_(mthis, __arg_0) => frontFace_Callback_1(mthis, __arg_0);
+
+  static frontFace_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_frontFace_Callback";
+  frontFace_Callback_2_(mthis, __arg_0, __arg_1) => frontFace_Callback_2(mthis, __arg_0, __arg_1);
+
+  static frontFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_frontFace_Callback";
+  frontFace_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => frontFace_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static generateMipmap_Callback_0(mthis) native "WebGLRenderingContext_generateMipmap_Callback";
+  generateMipmap_Callback_0_(mthis) => generateMipmap_Callback_0(mthis);
+
+  static generateMipmap_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_generateMipmap_Callback";
+  generateMipmap_Callback_1_(mthis, __arg_0) => generateMipmap_Callback_1(mthis, __arg_0);
+
+  static generateMipmap_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_generateMipmap_Callback";
+  generateMipmap_Callback_2_(mthis, __arg_0, __arg_1) => generateMipmap_Callback_2(mthis, __arg_0, __arg_1);
+
+  static generateMipmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_generateMipmap_Callback";
+  generateMipmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => generateMipmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getActiveAttrib_Callback_0(mthis) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  getActiveAttrib_Callback_0_(mthis) => getActiveAttrib_Callback_0(mthis);
+
+  static getActiveAttrib_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  getActiveAttrib_Callback_1_(mthis, __arg_0) => getActiveAttrib_Callback_1(mthis, __arg_0);
+
+  static getActiveAttrib_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  getActiveAttrib_Callback_2_(mthis, __arg_0, __arg_1) => getActiveAttrib_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getActiveAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  getActiveAttrib_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getActiveAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getActiveAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  getActiveAttrib_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getActiveAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getActiveUniform_Callback_0(mthis) native "WebGLRenderingContext_getActiveUniform_Callback";
+  getActiveUniform_Callback_0_(mthis) => getActiveUniform_Callback_0(mthis);
+
+  static getActiveUniform_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getActiveUniform_Callback";
+  getActiveUniform_Callback_1_(mthis, __arg_0) => getActiveUniform_Callback_1(mthis, __arg_0);
+
+  static getActiveUniform_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getActiveUniform_Callback";
+  getActiveUniform_Callback_2_(mthis, __arg_0, __arg_1) => getActiveUniform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getActiveUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getActiveUniform_Callback";
+  getActiveUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getActiveUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getActiveUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getActiveUniform_Callback";
+  getActiveUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getActiveUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getAttachedShaders_Callback_0(mthis) native "WebGLRenderingContext_getAttachedShaders_Callback";
+  getAttachedShaders_Callback_0_(mthis) => getAttachedShaders_Callback_0(mthis);
+
+  static getAttachedShaders_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getAttachedShaders_Callback";
+  getAttachedShaders_Callback_1_(mthis, __arg_0) => getAttachedShaders_Callback_1(mthis, __arg_0);
+
+  static getAttachedShaders_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getAttachedShaders_Callback";
+  getAttachedShaders_Callback_2_(mthis, __arg_0, __arg_1) => getAttachedShaders_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAttachedShaders_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getAttachedShaders_Callback";
+  getAttachedShaders_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttachedShaders_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getAttribLocation_Callback_0(mthis) native "WebGLRenderingContext_getAttribLocation_Callback";
+  getAttribLocation_Callback_0_(mthis) => getAttribLocation_Callback_0(mthis);
+
+  static getAttribLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getAttribLocation_Callback";
+  getAttribLocation_Callback_1_(mthis, __arg_0) => getAttribLocation_Callback_1(mthis, __arg_0);
+
+  static getAttribLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getAttribLocation_Callback";
+  getAttribLocation_Callback_2_(mthis, __arg_0, __arg_1) => getAttribLocation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getAttribLocation_Callback";
+  getAttribLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getAttribLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getAttribLocation_Callback";
+  getAttribLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getAttribLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getBufferParameter_Callback_0(mthis) native "WebGLRenderingContext_getBufferParameter_Callback";
+  getBufferParameter_Callback_0_(mthis) => getBufferParameter_Callback_0(mthis);
+
+  static getBufferParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getBufferParameter_Callback";
+  getBufferParameter_Callback_1_(mthis, __arg_0) => getBufferParameter_Callback_1(mthis, __arg_0);
+
+  static getBufferParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getBufferParameter_Callback";
+  getBufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => getBufferParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getBufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getBufferParameter_Callback";
+  getBufferParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getBufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getBufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getBufferParameter_Callback";
+  getBufferParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getBufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getContextAttributes_Callback_0(mthis) native "WebGLRenderingContext_getContextAttributes_Callback";
+  getContextAttributes_Callback_0_(mthis) => getContextAttributes_Callback_0(mthis);
+
+  static getContextAttributes_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getContextAttributes_Callback";
+  getContextAttributes_Callback_1_(mthis, __arg_0) => getContextAttributes_Callback_1(mthis, __arg_0);
+
+  static getContextAttributes_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getContextAttributes_Callback";
+  getContextAttributes_Callback_2_(mthis, __arg_0, __arg_1) => getContextAttributes_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getError_Callback_0(mthis) native "WebGLRenderingContext_getError_Callback";
+  getError_Callback_0_(mthis) => getError_Callback_0(mthis);
+
+  static getError_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getError_Callback";
+  getError_Callback_1_(mthis, __arg_0) => getError_Callback_1(mthis, __arg_0);
+
+  static getError_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getError_Callback";
+  getError_Callback_2_(mthis, __arg_0, __arg_1) => getError_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getExtension_Callback_0(mthis) native "WebGLRenderingContext_getExtension_Callback";
+  getExtension_Callback_0_(mthis) => getExtension_Callback_0(mthis);
+
+  static getExtension_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getExtension_Callback";
+  getExtension_Callback_1_(mthis, __arg_0) => getExtension_Callback_1(mthis, __arg_0);
+
+  static getExtension_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getExtension_Callback";
+  getExtension_Callback_2_(mthis, __arg_0, __arg_1) => getExtension_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getExtension_Callback";
+  getExtension_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getExtension_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFramebufferAttachmentParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  getFramebufferAttachmentParameter_Callback_1_(mthis, __arg_0) => getFramebufferAttachmentParameter_Callback_1(mthis, __arg_0);
+
+  static getFramebufferAttachmentParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  getFramebufferAttachmentParameter_Callback_2_(mthis, __arg_0, __arg_1) => getFramebufferAttachmentParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getFramebufferAttachmentParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  getFramebufferAttachmentParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getFramebufferAttachmentParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getFramebufferAttachmentParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  getFramebufferAttachmentParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getFramebufferAttachmentParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getFramebufferAttachmentParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  getFramebufferAttachmentParameter_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => getFramebufferAttachmentParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static getParameter_Callback_0(mthis) native "WebGLRenderingContext_getParameter_Callback";
+  getParameter_Callback_0_(mthis) => getParameter_Callback_0(mthis);
+
+  static getParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getParameter_Callback";
+  getParameter_Callback_1_(mthis, __arg_0) => getParameter_Callback_1(mthis, __arg_0);
+
+  static getParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getParameter_Callback";
+  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => getParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getParameter_Callback";
+  getParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getProgramInfoLog_Callback_0(mthis) native "WebGLRenderingContext_getProgramInfoLog_Callback";
+  getProgramInfoLog_Callback_0_(mthis) => getProgramInfoLog_Callback_0(mthis);
+
+  static getProgramInfoLog_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getProgramInfoLog_Callback";
+  getProgramInfoLog_Callback_1_(mthis, __arg_0) => getProgramInfoLog_Callback_1(mthis, __arg_0);
+
+  static getProgramInfoLog_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getProgramInfoLog_Callback";
+  getProgramInfoLog_Callback_2_(mthis, __arg_0, __arg_1) => getProgramInfoLog_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getProgramInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getProgramInfoLog_Callback";
+  getProgramInfoLog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getProgramInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getProgramParameter_Callback_0(mthis) native "WebGLRenderingContext_getProgramParameter_Callback";
+  getProgramParameter_Callback_0_(mthis) => getProgramParameter_Callback_0(mthis);
+
+  static getProgramParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getProgramParameter_Callback";
+  getProgramParameter_Callback_1_(mthis, __arg_0) => getProgramParameter_Callback_1(mthis, __arg_0);
+
+  static getProgramParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getProgramParameter_Callback";
+  getProgramParameter_Callback_2_(mthis, __arg_0, __arg_1) => getProgramParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getProgramParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getProgramParameter_Callback";
+  getProgramParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getProgramParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getProgramParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getProgramParameter_Callback";
+  getProgramParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getProgramParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getRenderbufferParameter_Callback_0(mthis) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  getRenderbufferParameter_Callback_0_(mthis) => getRenderbufferParameter_Callback_0(mthis);
+
+  static getRenderbufferParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  getRenderbufferParameter_Callback_1_(mthis, __arg_0) => getRenderbufferParameter_Callback_1(mthis, __arg_0);
+
+  static getRenderbufferParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  getRenderbufferParameter_Callback_2_(mthis, __arg_0, __arg_1) => getRenderbufferParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getRenderbufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  getRenderbufferParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getRenderbufferParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getRenderbufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  getRenderbufferParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getRenderbufferParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getShaderInfoLog_Callback_0(mthis) native "WebGLRenderingContext_getShaderInfoLog_Callback";
+  getShaderInfoLog_Callback_0_(mthis) => getShaderInfoLog_Callback_0(mthis);
+
+  static getShaderInfoLog_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderInfoLog_Callback";
+  getShaderInfoLog_Callback_1_(mthis, __arg_0) => getShaderInfoLog_Callback_1(mthis, __arg_0);
+
+  static getShaderInfoLog_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderInfoLog_Callback";
+  getShaderInfoLog_Callback_2_(mthis, __arg_0, __arg_1) => getShaderInfoLog_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getShaderInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderInfoLog_Callback";
+  getShaderInfoLog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderInfoLog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getShaderParameter_Callback_0(mthis) native "WebGLRenderingContext_getShaderParameter_Callback";
+  getShaderParameter_Callback_0_(mthis) => getShaderParameter_Callback_0(mthis);
+
+  static getShaderParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderParameter_Callback";
+  getShaderParameter_Callback_1_(mthis, __arg_0) => getShaderParameter_Callback_1(mthis, __arg_0);
+
+  static getShaderParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderParameter_Callback";
+  getShaderParameter_Callback_2_(mthis, __arg_0, __arg_1) => getShaderParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getShaderParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderParameter_Callback";
+  getShaderParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getShaderParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getShaderParameter_Callback";
+  getShaderParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getShaderParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getShaderPrecisionFormat_Callback_0(mthis) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  getShaderPrecisionFormat_Callback_0_(mthis) => getShaderPrecisionFormat_Callback_0(mthis);
+
+  static getShaderPrecisionFormat_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  getShaderPrecisionFormat_Callback_1_(mthis, __arg_0) => getShaderPrecisionFormat_Callback_1(mthis, __arg_0);
+
+  static getShaderPrecisionFormat_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  getShaderPrecisionFormat_Callback_2_(mthis, __arg_0, __arg_1) => getShaderPrecisionFormat_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getShaderPrecisionFormat_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  getShaderPrecisionFormat_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderPrecisionFormat_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getShaderPrecisionFormat_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  getShaderPrecisionFormat_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getShaderPrecisionFormat_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getShaderSource_Callback_0(mthis) native "WebGLRenderingContext_getShaderSource_Callback";
+  getShaderSource_Callback_0_(mthis) => getShaderSource_Callback_0(mthis);
+
+  static getShaderSource_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getShaderSource_Callback";
+  getShaderSource_Callback_1_(mthis, __arg_0) => getShaderSource_Callback_1(mthis, __arg_0);
+
+  static getShaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getShaderSource_Callback";
+  getShaderSource_Callback_2_(mthis, __arg_0, __arg_1) => getShaderSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getShaderSource_Callback";
+  getShaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getShaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getSupportedExtensions_Callback_0(mthis) native "WebGLRenderingContext_getSupportedExtensions_Callback";
+  getSupportedExtensions_Callback_0_(mthis) => getSupportedExtensions_Callback_0(mthis);
+
+  static getSupportedExtensions_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getSupportedExtensions_Callback";
+  getSupportedExtensions_Callback_1_(mthis, __arg_0) => getSupportedExtensions_Callback_1(mthis, __arg_0);
+
+  static getSupportedExtensions_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getSupportedExtensions_Callback";
+  getSupportedExtensions_Callback_2_(mthis, __arg_0, __arg_1) => getSupportedExtensions_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTexParameter_Callback_0(mthis) native "WebGLRenderingContext_getTexParameter_Callback";
+  getTexParameter_Callback_0_(mthis) => getTexParameter_Callback_0(mthis);
+
+  static getTexParameter_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getTexParameter_Callback";
+  getTexParameter_Callback_1_(mthis, __arg_0) => getTexParameter_Callback_1(mthis, __arg_0);
+
+  static getTexParameter_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getTexParameter_Callback";
+  getTexParameter_Callback_2_(mthis, __arg_0, __arg_1) => getTexParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getTexParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getTexParameter_Callback";
+  getTexParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getTexParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getTexParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getTexParameter_Callback";
+  getTexParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getTexParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getUniformLocation_Callback_0(mthis) native "WebGLRenderingContext_getUniformLocation_Callback";
+  getUniformLocation_Callback_0_(mthis) => getUniformLocation_Callback_0(mthis);
+
+  static getUniformLocation_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getUniformLocation_Callback";
+  getUniformLocation_Callback_1_(mthis, __arg_0) => getUniformLocation_Callback_1(mthis, __arg_0);
+
+  static getUniformLocation_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getUniformLocation_Callback";
+  getUniformLocation_Callback_2_(mthis, __arg_0, __arg_1) => getUniformLocation_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getUniformLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getUniformLocation_Callback";
+  getUniformLocation_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getUniformLocation_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getUniformLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getUniformLocation_Callback";
+  getUniformLocation_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getUniformLocation_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getUniform_Callback_0(mthis) native "WebGLRenderingContext_getUniform_Callback";
+  getUniform_Callback_0_(mthis) => getUniform_Callback_0(mthis);
+
+  static getUniform_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getUniform_Callback";
+  getUniform_Callback_1_(mthis, __arg_0) => getUniform_Callback_1(mthis, __arg_0);
+
+  static getUniform_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getUniform_Callback";
+  getUniform_Callback_2_(mthis, __arg_0, __arg_1) => getUniform_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getUniform_Callback";
+  getUniform_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getUniform_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getUniform_Callback";
+  getUniform_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getUniform_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getVertexAttribOffset_Callback_0(mthis) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  getVertexAttribOffset_Callback_0_(mthis) => getVertexAttribOffset_Callback_0(mthis);
+
+  static getVertexAttribOffset_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  getVertexAttribOffset_Callback_1_(mthis, __arg_0) => getVertexAttribOffset_Callback_1(mthis, __arg_0);
+
+  static getVertexAttribOffset_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  getVertexAttribOffset_Callback_2_(mthis, __arg_0, __arg_1) => getVertexAttribOffset_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getVertexAttribOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  getVertexAttribOffset_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getVertexAttribOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getVertexAttribOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  getVertexAttribOffset_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getVertexAttribOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getVertexAttrib_Callback_0(mthis) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  getVertexAttrib_Callback_0_(mthis) => getVertexAttrib_Callback_0(mthis);
+
+  static getVertexAttrib_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  getVertexAttrib_Callback_1_(mthis, __arg_0) => getVertexAttrib_Callback_1(mthis, __arg_0);
+
+  static getVertexAttrib_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  getVertexAttrib_Callback_2_(mthis, __arg_0, __arg_1) => getVertexAttrib_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getVertexAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  getVertexAttrib_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getVertexAttrib_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getVertexAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  getVertexAttrib_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getVertexAttrib_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static hint_Callback_0(mthis) native "WebGLRenderingContext_hint_Callback";
+  hint_Callback_0_(mthis) => hint_Callback_0(mthis);
+
+  static hint_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_hint_Callback";
+  hint_Callback_1_(mthis, __arg_0) => hint_Callback_1(mthis, __arg_0);
+
+  static hint_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_hint_Callback";
+  hint_Callback_2_(mthis, __arg_0, __arg_1) => hint_Callback_2(mthis, __arg_0, __arg_1);
+
+  static hint_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_hint_Callback";
+  hint_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => hint_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static hint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_hint_Callback";
+  hint_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => hint_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static isBuffer_Callback_0(mthis) native "WebGLRenderingContext_isBuffer_Callback";
+  isBuffer_Callback_0_(mthis) => isBuffer_Callback_0(mthis);
+
+  static isBuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isBuffer_Callback";
+  isBuffer_Callback_1_(mthis, __arg_0) => isBuffer_Callback_1(mthis, __arg_0);
+
+  static isBuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isBuffer_Callback";
+  isBuffer_Callback_2_(mthis, __arg_0, __arg_1) => isBuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isBuffer_Callback";
+  isBuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isBuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isContextLost_Callback_0(mthis) native "WebGLRenderingContext_isContextLost_Callback";
+  isContextLost_Callback_0_(mthis) => isContextLost_Callback_0(mthis);
+
+  static isContextLost_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isContextLost_Callback";
+  isContextLost_Callback_1_(mthis, __arg_0) => isContextLost_Callback_1(mthis, __arg_0);
+
+  static isContextLost_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isContextLost_Callback";
+  isContextLost_Callback_2_(mthis, __arg_0, __arg_1) => isContextLost_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isEnabled_Callback_0(mthis) native "WebGLRenderingContext_isEnabled_Callback";
+  isEnabled_Callback_0_(mthis) => isEnabled_Callback_0(mthis);
+
+  static isEnabled_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isEnabled_Callback";
+  isEnabled_Callback_1_(mthis, __arg_0) => isEnabled_Callback_1(mthis, __arg_0);
+
+  static isEnabled_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isEnabled_Callback";
+  isEnabled_Callback_2_(mthis, __arg_0, __arg_1) => isEnabled_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isEnabled_Callback";
+  isEnabled_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isEnabled_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isFramebuffer_Callback_0(mthis) native "WebGLRenderingContext_isFramebuffer_Callback";
+  isFramebuffer_Callback_0_(mthis) => isFramebuffer_Callback_0(mthis);
+
+  static isFramebuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isFramebuffer_Callback";
+  isFramebuffer_Callback_1_(mthis, __arg_0) => isFramebuffer_Callback_1(mthis, __arg_0);
+
+  static isFramebuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isFramebuffer_Callback";
+  isFramebuffer_Callback_2_(mthis, __arg_0, __arg_1) => isFramebuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isFramebuffer_Callback";
+  isFramebuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isFramebuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isProgram_Callback_0(mthis) native "WebGLRenderingContext_isProgram_Callback";
+  isProgram_Callback_0_(mthis) => isProgram_Callback_0(mthis);
+
+  static isProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isProgram_Callback";
+  isProgram_Callback_1_(mthis, __arg_0) => isProgram_Callback_1(mthis, __arg_0);
+
+  static isProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isProgram_Callback";
+  isProgram_Callback_2_(mthis, __arg_0, __arg_1) => isProgram_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isProgram_Callback";
+  isProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isRenderbuffer_Callback_0(mthis) native "WebGLRenderingContext_isRenderbuffer_Callback";
+  isRenderbuffer_Callback_0_(mthis) => isRenderbuffer_Callback_0(mthis);
+
+  static isRenderbuffer_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isRenderbuffer_Callback";
+  isRenderbuffer_Callback_1_(mthis, __arg_0) => isRenderbuffer_Callback_1(mthis, __arg_0);
+
+  static isRenderbuffer_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isRenderbuffer_Callback";
+  isRenderbuffer_Callback_2_(mthis, __arg_0, __arg_1) => isRenderbuffer_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isRenderbuffer_Callback";
+  isRenderbuffer_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isRenderbuffer_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isShader_Callback_0(mthis) native "WebGLRenderingContext_isShader_Callback";
+  isShader_Callback_0_(mthis) => isShader_Callback_0(mthis);
+
+  static isShader_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isShader_Callback";
+  isShader_Callback_1_(mthis, __arg_0) => isShader_Callback_1(mthis, __arg_0);
+
+  static isShader_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isShader_Callback";
+  isShader_Callback_2_(mthis, __arg_0, __arg_1) => isShader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isShader_Callback";
+  isShader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isShader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static isTexture_Callback_0(mthis) native "WebGLRenderingContext_isTexture_Callback";
+  isTexture_Callback_0_(mthis) => isTexture_Callback_0(mthis);
+
+  static isTexture_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_isTexture_Callback";
+  isTexture_Callback_1_(mthis, __arg_0) => isTexture_Callback_1(mthis, __arg_0);
+
+  static isTexture_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_isTexture_Callback";
+  isTexture_Callback_2_(mthis, __arg_0, __arg_1) => isTexture_Callback_2(mthis, __arg_0, __arg_1);
+
+  static isTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_isTexture_Callback";
+  isTexture_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => isTexture_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static lineWidth_Callback_0(mthis) native "WebGLRenderingContext_lineWidth_Callback";
+  lineWidth_Callback_0_(mthis) => lineWidth_Callback_0(mthis);
+
+  static lineWidth_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_lineWidth_Callback";
+  lineWidth_Callback_1_(mthis, __arg_0) => lineWidth_Callback_1(mthis, __arg_0);
+
+  static lineWidth_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_lineWidth_Callback";
+  lineWidth_Callback_2_(mthis, __arg_0, __arg_1) => lineWidth_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lineWidth_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_lineWidth_Callback";
+  lineWidth_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lineWidth_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static linkProgram_Callback_0(mthis) native "WebGLRenderingContext_linkProgram_Callback";
+  linkProgram_Callback_0_(mthis) => linkProgram_Callback_0(mthis);
+
+  static linkProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_linkProgram_Callback";
+  linkProgram_Callback_1_(mthis, __arg_0) => linkProgram_Callback_1(mthis, __arg_0);
+
+  static linkProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_linkProgram_Callback";
+  linkProgram_Callback_2_(mthis, __arg_0, __arg_1) => linkProgram_Callback_2(mthis, __arg_0, __arg_1);
+
+  static linkProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_linkProgram_Callback";
+  linkProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => linkProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static pixelStorei_Callback_0(mthis) native "WebGLRenderingContext_pixelStorei_Callback";
+  pixelStorei_Callback_0_(mthis) => pixelStorei_Callback_0(mthis);
+
+  static pixelStorei_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_pixelStorei_Callback";
+  pixelStorei_Callback_1_(mthis, __arg_0) => pixelStorei_Callback_1(mthis, __arg_0);
+
+  static pixelStorei_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_pixelStorei_Callback";
+  pixelStorei_Callback_2_(mthis, __arg_0, __arg_1) => pixelStorei_Callback_2(mthis, __arg_0, __arg_1);
+
+  static pixelStorei_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_pixelStorei_Callback";
+  pixelStorei_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => pixelStorei_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static pixelStorei_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_pixelStorei_Callback";
+  pixelStorei_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => pixelStorei_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static polygonOffset_Callback_0(mthis) native "WebGLRenderingContext_polygonOffset_Callback";
+  polygonOffset_Callback_0_(mthis) => polygonOffset_Callback_0(mthis);
+
+  static polygonOffset_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_polygonOffset_Callback";
+  polygonOffset_Callback_1_(mthis, __arg_0) => polygonOffset_Callback_1(mthis, __arg_0);
+
+  static polygonOffset_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_polygonOffset_Callback";
+  polygonOffset_Callback_2_(mthis, __arg_0, __arg_1) => polygonOffset_Callback_2(mthis, __arg_0, __arg_1);
+
+  static polygonOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_polygonOffset_Callback";
+  polygonOffset_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => polygonOffset_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static polygonOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_polygonOffset_Callback";
+  polygonOffset_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => polygonOffset_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static readPixels_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_readPixels_Callback";
+  readPixels_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => readPixels_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static readPixels_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_readPixels_Callback";
+  readPixels_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => readPixels_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static readPixels_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_readPixels_Callback";
+  readPixels_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => readPixels_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static readPixels_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_readPixels_Callback";
+  readPixels_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => readPixels_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static readPixels_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_readPixels_Callback";
+  readPixels_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => readPixels_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static renderbufferStorage_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  renderbufferStorage_Callback_2_(mthis, __arg_0, __arg_1) => renderbufferStorage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static renderbufferStorage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  renderbufferStorage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => renderbufferStorage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static renderbufferStorage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  renderbufferStorage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => renderbufferStorage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static renderbufferStorage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  renderbufferStorage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => renderbufferStorage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static renderbufferStorage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  renderbufferStorage_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => renderbufferStorage_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static sampleCoverage_Callback_0(mthis) native "WebGLRenderingContext_sampleCoverage_Callback";
+  sampleCoverage_Callback_0_(mthis) => sampleCoverage_Callback_0(mthis);
+
+  static sampleCoverage_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_sampleCoverage_Callback";
+  sampleCoverage_Callback_1_(mthis, __arg_0) => sampleCoverage_Callback_1(mthis, __arg_0);
+
+  static sampleCoverage_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_sampleCoverage_Callback";
+  sampleCoverage_Callback_2_(mthis, __arg_0, __arg_1) => sampleCoverage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static sampleCoverage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_sampleCoverage_Callback";
+  sampleCoverage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => sampleCoverage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static sampleCoverage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_sampleCoverage_Callback";
+  sampleCoverage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => sampleCoverage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scissor_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_scissor_Callback";
+  scissor_Callback_2_(mthis, __arg_0, __arg_1) => scissor_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scissor_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_scissor_Callback";
+  scissor_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scissor_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scissor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_scissor_Callback";
+  scissor_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scissor_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scissor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_scissor_Callback";
+  scissor_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scissor_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static scissor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_scissor_Callback";
+  scissor_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => scissor_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static shaderSource_Callback_0(mthis) native "WebGLRenderingContext_shaderSource_Callback";
+  shaderSource_Callback_0_(mthis) => shaderSource_Callback_0(mthis);
+
+  static shaderSource_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_shaderSource_Callback";
+  shaderSource_Callback_1_(mthis, __arg_0) => shaderSource_Callback_1(mthis, __arg_0);
+
+  static shaderSource_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_shaderSource_Callback";
+  shaderSource_Callback_2_(mthis, __arg_0, __arg_1) => shaderSource_Callback_2(mthis, __arg_0, __arg_1);
+
+  static shaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_shaderSource_Callback";
+  shaderSource_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => shaderSource_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static shaderSource_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_shaderSource_Callback";
+  shaderSource_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => shaderSource_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilFuncSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  stencilFuncSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilFuncSeparate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  stencilFuncSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilFuncSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  stencilFuncSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilFuncSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  stencilFuncSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilFuncSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static stencilFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  stencilFuncSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => stencilFuncSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static stencilFunc_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilFunc_Callback";
+  stencilFunc_Callback_1_(mthis, __arg_0) => stencilFunc_Callback_1(mthis, __arg_0);
+
+  static stencilFunc_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilFunc_Callback";
+  stencilFunc_Callback_2_(mthis, __arg_0, __arg_1) => stencilFunc_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilFunc_Callback";
+  stencilFunc_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilFunc_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilFunc_Callback";
+  stencilFunc_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilFunc_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilFunc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilFunc_Callback";
+  stencilFunc_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilFunc_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static stencilMaskSeparate_Callback_0(mthis) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  stencilMaskSeparate_Callback_0_(mthis) => stencilMaskSeparate_Callback_0(mthis);
+
+  static stencilMaskSeparate_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  stencilMaskSeparate_Callback_1_(mthis, __arg_0) => stencilMaskSeparate_Callback_1(mthis, __arg_0);
+
+  static stencilMaskSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  stencilMaskSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilMaskSeparate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilMaskSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  stencilMaskSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilMaskSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilMaskSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  stencilMaskSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilMaskSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilMask_Callback_0(mthis) native "WebGLRenderingContext_stencilMask_Callback";
+  stencilMask_Callback_0_(mthis) => stencilMask_Callback_0(mthis);
+
+  static stencilMask_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilMask_Callback";
+  stencilMask_Callback_1_(mthis, __arg_0) => stencilMask_Callback_1(mthis, __arg_0);
+
+  static stencilMask_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilMask_Callback";
+  stencilMask_Callback_2_(mthis, __arg_0, __arg_1) => stencilMask_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilMask_Callback";
+  stencilMask_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilMask_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilOpSeparate_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  stencilOpSeparate_Callback_2_(mthis, __arg_0, __arg_1) => stencilOpSeparate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilOpSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  stencilOpSeparate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilOpSeparate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilOpSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  stencilOpSeparate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilOpSeparate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilOpSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  stencilOpSeparate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilOpSeparate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static stencilOpSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  stencilOpSeparate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => stencilOpSeparate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static stencilOp_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_stencilOp_Callback";
+  stencilOp_Callback_1_(mthis, __arg_0) => stencilOp_Callback_1(mthis, __arg_0);
+
+  static stencilOp_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_stencilOp_Callback";
+  stencilOp_Callback_2_(mthis, __arg_0, __arg_1) => stencilOp_Callback_2(mthis, __arg_0, __arg_1);
+
+  static stencilOp_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_stencilOp_Callback";
+  stencilOp_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => stencilOp_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static stencilOp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_stencilOp_Callback";
+  stencilOp_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => stencilOp_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static stencilOp_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_stencilOp_Callback";
+  stencilOp_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => stencilOp_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static texImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => texImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static texImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => texImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static texImage2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texImage2D_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static texImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static texImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => texImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static texImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => texImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static texImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => texImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static texImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_texImage2D_Callback";
+  texImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => texImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static texParameterf_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_texParameterf_Callback";
+  texParameterf_Callback_1_(mthis, __arg_0) => texParameterf_Callback_1(mthis, __arg_0);
+
+  static texParameterf_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_texParameterf_Callback";
+  texParameterf_Callback_2_(mthis, __arg_0, __arg_1) => texParameterf_Callback_2(mthis, __arg_0, __arg_1);
+
+  static texParameterf_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_texParameterf_Callback";
+  texParameterf_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => texParameterf_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static texParameterf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texParameterf_Callback";
+  texParameterf_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texParameterf_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static texParameterf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texParameterf_Callback";
+  texParameterf_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texParameterf_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static texParameteri_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_texParameteri_Callback";
+  texParameteri_Callback_1_(mthis, __arg_0) => texParameteri_Callback_1(mthis, __arg_0);
+
+  static texParameteri_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_texParameteri_Callback";
+  texParameteri_Callback_2_(mthis, __arg_0, __arg_1) => texParameteri_Callback_2(mthis, __arg_0, __arg_1);
+
+  static texParameteri_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_texParameteri_Callback";
+  texParameteri_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => texParameteri_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static texParameteri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_texParameteri_Callback";
+  texParameteri_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => texParameteri_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static texParameteri_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texParameteri_Callback";
+  texParameteri_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texParameteri_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static texSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_10_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9) => texSubImage2D_Callback_10(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9);
+
+  static texSubImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_11_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10) => texSubImage2D_Callback_11(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8, __arg_9, __arg_10);
+
+  static texSubImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => texSubImage2D_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static texSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => texSubImage2D_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static texSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => texSubImage2D_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static texSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => texSubImage2D_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static texSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "WebGLRenderingContext_texSubImage2D_Callback";
+  texSubImage2D_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => texSubImage2D_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static uniform1f_Callback_0(mthis) native "WebGLRenderingContext_uniform1f_Callback";
+  uniform1f_Callback_0_(mthis) => uniform1f_Callback_0(mthis);
+
+  static uniform1f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1f_Callback";
+  uniform1f_Callback_1_(mthis, __arg_0) => uniform1f_Callback_1(mthis, __arg_0);
+
+  static uniform1f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1f_Callback";
+  uniform1f_Callback_2_(mthis, __arg_0, __arg_1) => uniform1f_Callback_2(mthis, __arg_0, __arg_1);
+
+  static uniform1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1f_Callback";
+  uniform1f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static uniform1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1f_Callback";
+  uniform1f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static uniform1fv_Callback_0(mthis) native "WebGLRenderingContext_uniform1fv_Callback";
+  uniform1fv_Callback_0_(mthis) => uniform1fv_Callback_0(mthis);
+
+  static uniform1fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1fv_Callback";
+  uniform1fv_Callback_1_(mthis, __arg_0) => uniform1fv_Callback_1(mthis, __arg_0);
+
+  static uniform1fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1fv_Callback";
+  uniform1fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform1fv_Callback_2(mthis, __arg_0, __arg_1);
+
+  static uniform1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1fv_Callback";
+  uniform1fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static uniform1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1fv_Callback";
+  uniform1fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static uniform1i_Callback_0(mthis) native "WebGLRenderingContext_uniform1i_Callback";
+  uniform1i_Callback_0_(mthis) => uniform1i_Callback_0(mthis);
+
+  static uniform1i_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1i_Callback";
+  uniform1i_Callback_1_(mthis, __arg_0) => uniform1i_Callback_1(mthis, __arg_0);
+
+  static uniform1i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1i_Callback";
+  uniform1i_Callback_2_(mthis, __arg_0, __arg_1) => uniform1i_Callback_2(mthis, __arg_0, __arg_1);
+
+  static uniform1i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1i_Callback";
+  uniform1i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static uniform1i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1i_Callback";
+  uniform1i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static uniform1iv_Callback_0(mthis) native "WebGLRenderingContext_uniform1iv_Callback";
+  uniform1iv_Callback_0_(mthis) => uniform1iv_Callback_0(mthis);
 
-  static activeTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_activeTexture_Callback";
+  static uniform1iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform1iv_Callback";
+  uniform1iv_Callback_1_(mthis, __arg_0) => uniform1iv_Callback_1(mthis, __arg_0);
 
-  static attachShader_Callback_2(mthis, program, shader) native "WebGLRenderingContext_attachShader_Callback";
+  static uniform1iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform1iv_Callback";
+  uniform1iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform1iv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static bindAttribLocation_Callback_3(mthis, program, index, name) native "WebGLRenderingContext_bindAttribLocation_Callback";
+  static uniform1iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform1iv_Callback";
+  uniform1iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform1iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static bindBuffer_Callback_2(mthis, target, buffer) native "WebGLRenderingContext_bindBuffer_Callback";
+  static uniform1iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform1iv_Callback";
+  uniform1iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform1iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static bindFramebuffer_Callback_2(mthis, target, framebuffer) native "WebGLRenderingContext_bindFramebuffer_Callback";
+  static uniform2f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2f_Callback";
+  uniform2f_Callback_1_(mthis, __arg_0) => uniform2f_Callback_1(mthis, __arg_0);
 
-  static bindRenderbuffer_Callback_2(mthis, target, renderbuffer) native "WebGLRenderingContext_bindRenderbuffer_Callback";
+  static uniform2f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2f_Callback";
+  uniform2f_Callback_2_(mthis, __arg_0, __arg_1) => uniform2f_Callback_2(mthis, __arg_0, __arg_1);
 
-  static bindTexture_Callback_2(mthis, target, texture) native "WebGLRenderingContext_bindTexture_Callback";
+  static uniform2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2f_Callback";
+  uniform2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static blendColor_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_blendColor_Callback";
+  static uniform2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2f_Callback";
+  uniform2f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static blendEquation_Callback_1(mthis, mode) native "WebGLRenderingContext_blendEquation_Callback";
+  static uniform2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform2f_Callback";
+  uniform2f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static blendEquationSeparate_Callback_2(mthis, modeRGB, modeAlpha) native "WebGLRenderingContext_blendEquationSeparate_Callback";
+  static uniform2fv_Callback_0(mthis) native "WebGLRenderingContext_uniform2fv_Callback";
+  uniform2fv_Callback_0_(mthis) => uniform2fv_Callback_0(mthis);
 
-  static blendFunc_Callback_2(mthis, sfactor, dfactor) native "WebGLRenderingContext_blendFunc_Callback";
+  static uniform2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2fv_Callback";
+  uniform2fv_Callback_1_(mthis, __arg_0) => uniform2fv_Callback_1(mthis, __arg_0);
 
-  static blendFuncSeparate_Callback_4(mthis, srcRGB, dstRGB, srcAlpha, dstAlpha) native "WebGLRenderingContext_blendFuncSeparate_Callback";
+  static uniform2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2fv_Callback";
+  uniform2fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform2fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static bufferData_Callback_3(mthis, target, data, usage) native "WebGLRenderingContext_bufferData_Callback";
+  static uniform2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2fv_Callback";
+  uniform2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static bufferSubData_Callback_3(mthis, target, offset, data) native "WebGLRenderingContext_bufferSubData_Callback";
+  static uniform2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2fv_Callback";
+  uniform2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static checkFramebufferStatus_Callback_1(mthis, target) native "WebGLRenderingContext_checkFramebufferStatus_Callback";
+  static uniform2i_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2i_Callback";
+  uniform2i_Callback_1_(mthis, __arg_0) => uniform2i_Callback_1(mthis, __arg_0);
 
-  static clear_Callback_1(mthis, mask) native "WebGLRenderingContext_clear_Callback";
+  static uniform2i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2i_Callback";
+  uniform2i_Callback_2_(mthis, __arg_0, __arg_1) => uniform2i_Callback_2(mthis, __arg_0, __arg_1);
 
-  static clearColor_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_clearColor_Callback";
+  static uniform2i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2i_Callback";
+  uniform2i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static clearDepth_Callback_1(mthis, depth) native "WebGLRenderingContext_clearDepth_Callback";
+  static uniform2i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2i_Callback";
+  uniform2i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static clearStencil_Callback_1(mthis, s) native "WebGLRenderingContext_clearStencil_Callback";
+  static uniform2i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform2i_Callback";
+  uniform2i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform2i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static colorMask_Callback_4(mthis, red, green, blue, alpha) native "WebGLRenderingContext_colorMask_Callback";
+  static uniform2iv_Callback_0(mthis) native "WebGLRenderingContext_uniform2iv_Callback";
+  uniform2iv_Callback_0_(mthis) => uniform2iv_Callback_0(mthis);
 
-  static compileShader_Callback_1(mthis, shader) native "WebGLRenderingContext_compileShader_Callback";
+  static uniform2iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform2iv_Callback";
+  uniform2iv_Callback_1_(mthis, __arg_0) => uniform2iv_Callback_1(mthis, __arg_0);
 
-  static compressedTexImage2D_Callback_7(mthis, target, level, internalformat, width, height, border, data) native "WebGLRenderingContext_compressedTexImage2D_Callback";
+  static uniform2iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform2iv_Callback";
+  uniform2iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform2iv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static compressedTexSubImage2D_Callback_8(mthis, target, level, xoffset, yoffset, width, height, format, data) native "WebGLRenderingContext_compressedTexSubImage2D_Callback";
+  static uniform2iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform2iv_Callback";
+  uniform2iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform2iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static copyTexImage2D_Callback_8(mthis, target, level, internalformat, x, y, width, height, border) native "WebGLRenderingContext_copyTexImage2D_Callback";
+  static uniform2iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform2iv_Callback";
+  uniform2iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform2iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static copyTexSubImage2D_Callback_8(mthis, target, level, xoffset, yoffset, x, y, width, height) native "WebGLRenderingContext_copyTexSubImage2D_Callback";
+  static uniform3f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3f_Callback";
+  uniform3f_Callback_2_(mthis, __arg_0, __arg_1) => uniform3f_Callback_2(mthis, __arg_0, __arg_1);
 
-  static createBuffer_Callback(mthis) native "WebGLRenderingContext_createBuffer_Callback";
+  static uniform3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3f_Callback";
+  uniform3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static createFramebuffer_Callback(mthis) native "WebGLRenderingContext_createFramebuffer_Callback";
+  static uniform3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3f_Callback";
+  uniform3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static createProgram_Callback(mthis) native "WebGLRenderingContext_createProgram_Callback";
+  static uniform3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform3f_Callback";
+  uniform3f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static createRenderbuffer_Callback(mthis) native "WebGLRenderingContext_createRenderbuffer_Callback";
+  static uniform3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform3f_Callback";
+  uniform3f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static createShader_Callback_1(mthis, type) native "WebGLRenderingContext_createShader_Callback";
+  static uniform3fv_Callback_0(mthis) native "WebGLRenderingContext_uniform3fv_Callback";
+  uniform3fv_Callback_0_(mthis) => uniform3fv_Callback_0(mthis);
 
-  static createTexture_Callback(mthis) native "WebGLRenderingContext_createTexture_Callback";
+  static uniform3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform3fv_Callback";
+  uniform3fv_Callback_1_(mthis, __arg_0) => uniform3fv_Callback_1(mthis, __arg_0);
 
-  static cullFace_Callback_1(mthis, mode) native "WebGLRenderingContext_cullFace_Callback";
+  static uniform3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3fv_Callback";
+  uniform3fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform3fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static deleteBuffer_Callback_1(mthis, buffer) native "WebGLRenderingContext_deleteBuffer_Callback";
+  static uniform3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3fv_Callback";
+  uniform3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static deleteFramebuffer_Callback_1(mthis, framebuffer) native "WebGLRenderingContext_deleteFramebuffer_Callback";
+  static uniform3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3fv_Callback";
+  uniform3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static deleteProgram_Callback_1(mthis, program) native "WebGLRenderingContext_deleteProgram_Callback";
+  static uniform3i_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3i_Callback";
+  uniform3i_Callback_2_(mthis, __arg_0, __arg_1) => uniform3i_Callback_2(mthis, __arg_0, __arg_1);
 
-  static deleteRenderbuffer_Callback_1(mthis, renderbuffer) native "WebGLRenderingContext_deleteRenderbuffer_Callback";
+  static uniform3i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3i_Callback";
+  uniform3i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static deleteShader_Callback_1(mthis, shader) native "WebGLRenderingContext_deleteShader_Callback";
+  static uniform3i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3i_Callback";
+  uniform3i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static deleteTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_deleteTexture_Callback";
+  static uniform3i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform3i_Callback";
+  uniform3i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform3i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static depthFunc_Callback_1(mthis, func) native "WebGLRenderingContext_depthFunc_Callback";
+  static uniform3i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform3i_Callback";
+  uniform3i_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform3i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static depthMask_Callback_1(mthis, flag) native "WebGLRenderingContext_depthMask_Callback";
+  static uniform3iv_Callback_0(mthis) native "WebGLRenderingContext_uniform3iv_Callback";
+  uniform3iv_Callback_0_(mthis) => uniform3iv_Callback_0(mthis);
 
-  static depthRange_Callback_2(mthis, zNear, zFar) native "WebGLRenderingContext_depthRange_Callback";
+  static uniform3iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform3iv_Callback";
+  uniform3iv_Callback_1_(mthis, __arg_0) => uniform3iv_Callback_1(mthis, __arg_0);
 
-  static detachShader_Callback_2(mthis, program, shader) native "WebGLRenderingContext_detachShader_Callback";
+  static uniform3iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform3iv_Callback";
+  uniform3iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform3iv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static disable_Callback_1(mthis, cap) native "WebGLRenderingContext_disable_Callback";
+  static uniform3iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform3iv_Callback";
+  uniform3iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform3iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static disableVertexAttribArray_Callback_1(mthis, index) native "WebGLRenderingContext_disableVertexAttribArray_Callback";
+  static uniform3iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform3iv_Callback";
+  uniform3iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform3iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static drawArrays_Callback_3(mthis, mode, first, count) native "WebGLRenderingContext_drawArrays_Callback";
+  static uniform4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4f_Callback";
+  uniform4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static drawElements_Callback_4(mthis, mode, count, type, offset) native "WebGLRenderingContext_drawElements_Callback";
+  static uniform4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4f_Callback";
+  uniform4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static enable_Callback_1(mthis, cap) native "WebGLRenderingContext_enable_Callback";
+  static uniform4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform4f_Callback";
+  uniform4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static enableVertexAttribArray_Callback_1(mthis, index) native "WebGLRenderingContext_enableVertexAttribArray_Callback";
+  static uniform4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform4f_Callback";
+  uniform4f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static finish_Callback(mthis) native "WebGLRenderingContext_finish_Callback";
+  static uniform4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_uniform4f_Callback";
+  uniform4f_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => uniform4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static flush_Callback(mthis) native "WebGLRenderingContext_flush_Callback";
+  static uniform4fv_Callback_0(mthis) native "WebGLRenderingContext_uniform4fv_Callback";
+  uniform4fv_Callback_0_(mthis) => uniform4fv_Callback_0(mthis);
 
-  static framebufferRenderbuffer_Callback_4(mthis, target, attachment, renderbuffertarget, renderbuffer) native "WebGLRenderingContext_framebufferRenderbuffer_Callback";
+  static uniform4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform4fv_Callback";
+  uniform4fv_Callback_1_(mthis, __arg_0) => uniform4fv_Callback_1(mthis, __arg_0);
 
-  static framebufferTexture2D_Callback_5(mthis, target, attachment, textarget, texture, level) native "WebGLRenderingContext_framebufferTexture2D_Callback";
+  static uniform4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform4fv_Callback";
+  uniform4fv_Callback_2_(mthis, __arg_0, __arg_1) => uniform4fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static frontFace_Callback_1(mthis, mode) native "WebGLRenderingContext_frontFace_Callback";
+  static uniform4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4fv_Callback";
+  uniform4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static generateMipmap_Callback_1(mthis, target) native "WebGLRenderingContext_generateMipmap_Callback";
+  static uniform4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4fv_Callback";
+  uniform4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getActiveAttrib_Callback_2(mthis, program, index) native "WebGLRenderingContext_getActiveAttrib_Callback";
+  static uniform4i_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4i_Callback";
+  uniform4i_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4i_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getActiveUniform_Callback_2(mthis, program, index) native "WebGLRenderingContext_getActiveUniform_Callback";
+  static uniform4i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4i_Callback";
+  uniform4i_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4i_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getAttachedShaders_Callback_1(mthis, program) native "WebGLRenderingContext_getAttachedShaders_Callback";
+  static uniform4i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniform4i_Callback";
+  uniform4i_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniform4i_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static getAttribLocation_Callback_2(mthis, program, name) native "WebGLRenderingContext_getAttribLocation_Callback";
+  static uniform4i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_uniform4i_Callback";
+  uniform4i_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => uniform4i_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static getBufferParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getBufferParameter_Callback";
+  static uniform4i_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_uniform4i_Callback";
+  uniform4i_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => uniform4i_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static getContextAttributes_Callback(mthis) native "WebGLRenderingContext_getContextAttributes_Callback";
+  static uniform4iv_Callback_0(mthis) native "WebGLRenderingContext_uniform4iv_Callback";
+  uniform4iv_Callback_0_(mthis) => uniform4iv_Callback_0(mthis);
 
-  static getError_Callback(mthis) native "WebGLRenderingContext_getError_Callback";
+  static uniform4iv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniform4iv_Callback";
+  uniform4iv_Callback_1_(mthis, __arg_0) => uniform4iv_Callback_1(mthis, __arg_0);
 
-  static getExtension_Callback_1(mthis, name) native "WebGLRenderingContext_getExtension_Callback";
+  static uniform4iv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniform4iv_Callback";
+  uniform4iv_Callback_2_(mthis, __arg_0, __arg_1) => uniform4iv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getFramebufferAttachmentParameter_Callback_3(mthis, target, attachment, pname) native "WebGLRenderingContext_getFramebufferAttachmentParameter_Callback";
+  static uniform4iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniform4iv_Callback";
+  uniform4iv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniform4iv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getParameter_Callback_1(mthis, pname) native "WebGLRenderingContext_getParameter_Callback";
+  static uniform4iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniform4iv_Callback";
+  uniform4iv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniform4iv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getProgramInfoLog_Callback_1(mthis, program) native "WebGLRenderingContext_getProgramInfoLog_Callback";
+  static uniformMatrix2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  uniformMatrix2fv_Callback_1_(mthis, __arg_0) => uniformMatrix2fv_Callback_1(mthis, __arg_0);
 
-  static getProgramParameter_Callback_2(mthis, program, pname) native "WebGLRenderingContext_getProgramParameter_Callback";
+  static uniformMatrix2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  uniformMatrix2fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix2fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getRenderbufferParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getRenderbufferParameter_Callback";
+  static uniformMatrix2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  uniformMatrix2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getShaderInfoLog_Callback_1(mthis, shader) native "WebGLRenderingContext_getShaderInfoLog_Callback";
+  static uniformMatrix2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  uniformMatrix2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getShaderParameter_Callback_2(mthis, shader, pname) native "WebGLRenderingContext_getShaderParameter_Callback";
+  static uniformMatrix2fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  uniformMatrix2fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix2fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static getShaderPrecisionFormat_Callback_2(mthis, shadertype, precisiontype) native "WebGLRenderingContext_getShaderPrecisionFormat_Callback";
+  static uniformMatrix3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  uniformMatrix3fv_Callback_1_(mthis, __arg_0) => uniformMatrix3fv_Callback_1(mthis, __arg_0);
 
-  static getShaderSource_Callback_1(mthis, shader) native "WebGLRenderingContext_getShaderSource_Callback";
+  static uniformMatrix3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  uniformMatrix3fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix3fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getSupportedExtensions_Callback(mthis) native "WebGLRenderingContext_getSupportedExtensions_Callback";
+  static uniformMatrix3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  uniformMatrix3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static getTexParameter_Callback_2(mthis, target, pname) native "WebGLRenderingContext_getTexParameter_Callback";
+  static uniformMatrix3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  uniformMatrix3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static getUniform_Callback_2(mthis, program, location) native "WebGLRenderingContext_getUniform_Callback";
+  static uniformMatrix3fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  uniformMatrix3fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix3fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static getUniformLocation_Callback_2(mthis, program, name) native "WebGLRenderingContext_getUniformLocation_Callback";
+  static uniformMatrix4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  uniformMatrix4fv_Callback_1_(mthis, __arg_0) => uniformMatrix4fv_Callback_1(mthis, __arg_0);
 
-  static getVertexAttrib_Callback_2(mthis, index, pname) native "WebGLRenderingContext_getVertexAttrib_Callback";
+  static uniformMatrix4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  uniformMatrix4fv_Callback_2_(mthis, __arg_0, __arg_1) => uniformMatrix4fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static getVertexAttribOffset_Callback_2(mthis, index, pname) native "WebGLRenderingContext_getVertexAttribOffset_Callback";
+  static uniformMatrix4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  uniformMatrix4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => uniformMatrix4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static hint_Callback_2(mthis, target, mode) native "WebGLRenderingContext_hint_Callback";
+  static uniformMatrix4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  uniformMatrix4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => uniformMatrix4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static isBuffer_Callback_1(mthis, buffer) native "WebGLRenderingContext_isBuffer_Callback";
+  static uniformMatrix4fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  uniformMatrix4fv_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => uniformMatrix4fv_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static isContextLost_Callback(mthis) native "WebGLRenderingContext_isContextLost_Callback";
+  static useProgram_Callback_0(mthis) native "WebGLRenderingContext_useProgram_Callback";
+  useProgram_Callback_0_(mthis) => useProgram_Callback_0(mthis);
 
-  static isEnabled_Callback_1(mthis, cap) native "WebGLRenderingContext_isEnabled_Callback";
+  static useProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_useProgram_Callback";
+  useProgram_Callback_1_(mthis, __arg_0) => useProgram_Callback_1(mthis, __arg_0);
 
-  static isFramebuffer_Callback_1(mthis, framebuffer) native "WebGLRenderingContext_isFramebuffer_Callback";
+  static useProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_useProgram_Callback";
+  useProgram_Callback_2_(mthis, __arg_0, __arg_1) => useProgram_Callback_2(mthis, __arg_0, __arg_1);
 
-  static isProgram_Callback_1(mthis, program) native "WebGLRenderingContext_isProgram_Callback";
+  static useProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_useProgram_Callback";
+  useProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => useProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static isRenderbuffer_Callback_1(mthis, renderbuffer) native "WebGLRenderingContext_isRenderbuffer_Callback";
+  static validateProgram_Callback_0(mthis) native "WebGLRenderingContext_validateProgram_Callback";
+  validateProgram_Callback_0_(mthis) => validateProgram_Callback_0(mthis);
 
-  static isShader_Callback_1(mthis, shader) native "WebGLRenderingContext_isShader_Callback";
+  static validateProgram_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_validateProgram_Callback";
+  validateProgram_Callback_1_(mthis, __arg_0) => validateProgram_Callback_1(mthis, __arg_0);
 
-  static isTexture_Callback_1(mthis, texture) native "WebGLRenderingContext_isTexture_Callback";
+  static validateProgram_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_validateProgram_Callback";
+  validateProgram_Callback_2_(mthis, __arg_0, __arg_1) => validateProgram_Callback_2(mthis, __arg_0, __arg_1);
 
-  static lineWidth_Callback_1(mthis, width) native "WebGLRenderingContext_lineWidth_Callback";
+  static validateProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_validateProgram_Callback";
+  validateProgram_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => validateProgram_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static linkProgram_Callback_1(mthis, program) native "WebGLRenderingContext_linkProgram_Callback";
+  static vertexAttrib1f_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  vertexAttrib1f_Callback_0_(mthis) => vertexAttrib1f_Callback_0(mthis);
 
-  static pixelStorei_Callback_2(mthis, pname, param) native "WebGLRenderingContext_pixelStorei_Callback";
+  static vertexAttrib1f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  vertexAttrib1f_Callback_1_(mthis, __arg_0) => vertexAttrib1f_Callback_1(mthis, __arg_0);
 
-  static polygonOffset_Callback_2(mthis, factor, units) native "WebGLRenderingContext_polygonOffset_Callback";
+  static vertexAttrib1f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  vertexAttrib1f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib1f_Callback_2(mthis, __arg_0, __arg_1);
 
-  static readPixels_Callback_7(mthis, x, y, width, height, format, type, pixels) native "WebGLRenderingContext_readPixels_Callback";
+  static vertexAttrib1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  vertexAttrib1f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib1f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static renderbufferStorage_Callback_4(mthis, target, internalformat, width, height) native "WebGLRenderingContext_renderbufferStorage_Callback";
+  static vertexAttrib1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  vertexAttrib1f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib1f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static sampleCoverage_Callback_2(mthis, value, invert) native "WebGLRenderingContext_sampleCoverage_Callback";
+  static vertexAttrib1fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  vertexAttrib1fv_Callback_0_(mthis) => vertexAttrib1fv_Callback_0(mthis);
 
-  static scissor_Callback_4(mthis, x, y, width, height) native "WebGLRenderingContext_scissor_Callback";
+  static vertexAttrib1fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  vertexAttrib1fv_Callback_1_(mthis, __arg_0) => vertexAttrib1fv_Callback_1(mthis, __arg_0);
 
-  static shaderSource_Callback_2(mthis, shader, string) native "WebGLRenderingContext_shaderSource_Callback";
+  static vertexAttrib1fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  vertexAttrib1fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib1fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static stencilFunc_Callback_3(mthis, func, ref, mask) native "WebGLRenderingContext_stencilFunc_Callback";
+  static vertexAttrib1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  vertexAttrib1fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib1fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static stencilFuncSeparate_Callback_4(mthis, face, func, ref, mask) native "WebGLRenderingContext_stencilFuncSeparate_Callback";
+  static vertexAttrib1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  vertexAttrib1fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib1fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static stencilMask_Callback_1(mthis, mask) native "WebGLRenderingContext_stencilMask_Callback";
+  static vertexAttrib2f_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  vertexAttrib2f_Callback_1_(mthis, __arg_0) => vertexAttrib2f_Callback_1(mthis, __arg_0);
 
-  static stencilMaskSeparate_Callback_2(mthis, face, mask) native "WebGLRenderingContext_stencilMaskSeparate_Callback";
+  static vertexAttrib2f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  vertexAttrib2f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib2f_Callback_2(mthis, __arg_0, __arg_1);
 
-  static stencilOp_Callback_3(mthis, fail, zfail, zpass) native "WebGLRenderingContext_stencilOp_Callback";
+  static vertexAttrib2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  vertexAttrib2f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib2f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static stencilOpSeparate_Callback_4(mthis, face, fail, zfail, zpass) native "WebGLRenderingContext_stencilOpSeparate_Callback";
+  static vertexAttrib2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  vertexAttrib2f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib2f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static texImage2D_Callback_9(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels) native "WebGLRenderingContext_texImage2D_Callback";
+  static vertexAttrib2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  vertexAttrib2f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib2f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static texImage2D_Callback_6(mthis, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texImage2D_Callback";
+  static vertexAttrib2fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  vertexAttrib2fv_Callback_0_(mthis) => vertexAttrib2fv_Callback_0(mthis);
 
-  static texParameterf_Callback_3(mthis, target, pname, param) native "WebGLRenderingContext_texParameterf_Callback";
+  static vertexAttrib2fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  vertexAttrib2fv_Callback_1_(mthis, __arg_0) => vertexAttrib2fv_Callback_1(mthis, __arg_0);
 
-  static texParameteri_Callback_3(mthis, target, pname, param) native "WebGLRenderingContext_texParameteri_Callback";
+  static vertexAttrib2fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  vertexAttrib2fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib2fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static texSubImage2D_Callback_9(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels) native "WebGLRenderingContext_texSubImage2D_Callback";
+  static vertexAttrib2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  vertexAttrib2fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib2fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static texSubImage2D_Callback_7(mthis, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video) native "WebGLRenderingContext_texSubImage2D_Callback";
+  static vertexAttrib2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  vertexAttrib2fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib2fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static uniform1f_Callback_2(mthis, location, x) native "WebGLRenderingContext_uniform1f_Callback";
+  static vertexAttrib3f_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  vertexAttrib3f_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib3f_Callback_2(mthis, __arg_0, __arg_1);
 
-  static uniform1fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform1fv_Callback";
+  static vertexAttrib3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  vertexAttrib3f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib3f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static uniform1i_Callback_2(mthis, location, x) native "WebGLRenderingContext_uniform1i_Callback";
+  static vertexAttrib3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  vertexAttrib3f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib3f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static uniform1iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform1iv_Callback";
+  static vertexAttrib3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  vertexAttrib3f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib3f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static uniform2f_Callback_3(mthis, location, x, y) native "WebGLRenderingContext_uniform2f_Callback";
+  static vertexAttrib3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  vertexAttrib3f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttrib3f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static uniform2fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform2fv_Callback";
+  static vertexAttrib3fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  vertexAttrib3fv_Callback_0_(mthis) => vertexAttrib3fv_Callback_0(mthis);
 
-  static uniform2i_Callback_3(mthis, location, x, y) native "WebGLRenderingContext_uniform2i_Callback";
+  static vertexAttrib3fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  vertexAttrib3fv_Callback_1_(mthis, __arg_0) => vertexAttrib3fv_Callback_1(mthis, __arg_0);
 
-  static uniform2iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform2iv_Callback";
+  static vertexAttrib3fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  vertexAttrib3fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib3fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static uniform3f_Callback_4(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3f_Callback";
+  static vertexAttrib3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  vertexAttrib3fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib3fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static uniform3fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform3fv_Callback";
+  static vertexAttrib3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  vertexAttrib3fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib3fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static uniform3i_Callback_4(mthis, location, x, y, z) native "WebGLRenderingContext_uniform3i_Callback";
+  static vertexAttrib4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  vertexAttrib4f_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib4f_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static uniform3iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform3iv_Callback";
+  static vertexAttrib4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  vertexAttrib4f_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib4f_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static uniform4f_Callback_5(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4f_Callback";
+  static vertexAttrib4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  vertexAttrib4f_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttrib4f_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static uniform4fv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform4fv_Callback";
+  static vertexAttrib4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  vertexAttrib4f_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttrib4f_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static uniform4i_Callback_5(mthis, location, x, y, z, w) native "WebGLRenderingContext_uniform4i_Callback";
+  static vertexAttrib4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  vertexAttrib4f_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => vertexAttrib4f_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static uniform4iv_Callback_2(mthis, location, v) native "WebGLRenderingContext_uniform4iv_Callback";
+  static vertexAttrib4fv_Callback_0(mthis) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  vertexAttrib4fv_Callback_0_(mthis) => vertexAttrib4fv_Callback_0(mthis);
 
-  static uniformMatrix2fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix2fv_Callback";
+  static vertexAttrib4fv_Callback_1(mthis, __arg_0) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  vertexAttrib4fv_Callback_1_(mthis, __arg_0) => vertexAttrib4fv_Callback_1(mthis, __arg_0);
 
-  static uniformMatrix3fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix3fv_Callback";
+  static vertexAttrib4fv_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  vertexAttrib4fv_Callback_2_(mthis, __arg_0, __arg_1) => vertexAttrib4fv_Callback_2(mthis, __arg_0, __arg_1);
 
-  static uniformMatrix4fv_Callback_3(mthis, location, transpose, array) native "WebGLRenderingContext_uniformMatrix4fv_Callback";
+  static vertexAttrib4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  vertexAttrib4fv_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => vertexAttrib4fv_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static useProgram_Callback_1(mthis, program) native "WebGLRenderingContext_useProgram_Callback";
+  static vertexAttrib4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  vertexAttrib4fv_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttrib4fv_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static validateProgram_Callback_1(mthis, program) native "WebGLRenderingContext_validateProgram_Callback";
+  static vertexAttribPointer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  vertexAttribPointer_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => vertexAttribPointer_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static vertexAttrib1f_Callback_2(mthis, indx, x) native "WebGLRenderingContext_vertexAttrib1f_Callback";
+  static vertexAttribPointer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  vertexAttribPointer_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => vertexAttribPointer_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static vertexAttrib1fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib1fv_Callback";
+  static vertexAttribPointer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  vertexAttribPointer_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => vertexAttribPointer_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static vertexAttrib2f_Callback_3(mthis, indx, x, y) native "WebGLRenderingContext_vertexAttrib2f_Callback";
+  static vertexAttribPointer_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  vertexAttribPointer_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => vertexAttribPointer_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
 
-  static vertexAttrib2fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib2fv_Callback";
+  static vertexAttribPointer_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  vertexAttribPointer_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => vertexAttribPointer_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
 
-  static vertexAttrib3f_Callback_4(mthis, indx, x, y, z) native "WebGLRenderingContext_vertexAttrib3f_Callback";
+  static viewport_Callback_2(mthis, __arg_0, __arg_1) native "WebGLRenderingContext_viewport_Callback";
+  viewport_Callback_2_(mthis, __arg_0, __arg_1) => viewport_Callback_2(mthis, __arg_0, __arg_1);
 
-  static vertexAttrib3fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib3fv_Callback";
+  static viewport_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebGLRenderingContext_viewport_Callback";
+  viewport_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => viewport_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
-  static vertexAttrib4f_Callback_5(mthis, indx, x, y, z, w) native "WebGLRenderingContext_vertexAttrib4f_Callback";
+  static viewport_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebGLRenderingContext_viewport_Callback";
+  viewport_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => viewport_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
-  static vertexAttrib4fv_Callback_2(mthis, indx, values) native "WebGLRenderingContext_vertexAttrib4fv_Callback";
+  static viewport_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebGLRenderingContext_viewport_Callback";
+  viewport_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => viewport_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
-  static vertexAttribPointer_Callback_6(mthis, indx, size, type, normalized, stride, offset) native "WebGLRenderingContext_vertexAttribPointer_Callback";
+  static viewport_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebGLRenderingContext_viewport_Callback";
+  viewport_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => viewport_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
 
-  static viewport_Callback_4(mthis, x, y, width, height) native "WebGLRenderingContext_viewport_Callback";
 }
 
-class BlinkWebGLShader {}
+class BlinkWebGLShader {
+  static final instance = new BlinkWebGLShader();
+
+}
 
 class BlinkWebGLShaderPrecisionFormat {
+  static final instance = new BlinkWebGLShaderPrecisionFormat();
+
   static precision_Getter(mthis) native "WebGLShaderPrecisionFormat_precision_Getter";
+  precision_Getter_(mthis) => precision_Getter(mthis);
 
   static rangeMax_Getter(mthis) native "WebGLShaderPrecisionFormat_rangeMax_Getter";
+  rangeMax_Getter_(mthis) => rangeMax_Getter(mthis);
 
   static rangeMin_Getter(mthis) native "WebGLShaderPrecisionFormat_rangeMin_Getter";
+  rangeMin_Getter_(mthis) => rangeMin_Getter(mthis);
+
 }
 
-class BlinkWebGLTexture {}
+class BlinkWebGLTexture {
+  static final instance = new BlinkWebGLTexture();
 
-class BlinkWebGLUniformLocation {}
+}
 
-class BlinkWebGLVertexArrayObjectOES {}
+class BlinkWebGLUniformLocation {
+  static final instance = new BlinkWebGLUniformLocation();
 
-class BlinkWebKitAnimationEvent {
-  static constructorCallback(type, options) native "WebKitAnimationEvent_constructorCallback";
+}
+
+class BlinkWebGLVertexArrayObjectOES {
+  static final instance = new BlinkWebGLVertexArrayObjectOES();
+
+}
+
+class BlinkWebKitAnimationEvent extends BlinkEvent {
+  static final instance = new BlinkWebKitAnimationEvent();
 
   static animationName_Getter(mthis) native "WebKitAnimationEvent_animationName_Getter";
+  animationName_Getter_(mthis) => animationName_Getter(mthis);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WebKitAnimationEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static elapsedTime_Getter(mthis) native "WebKitAnimationEvent_elapsedTime_Getter";
+  elapsedTime_Getter_(mthis) => elapsedTime_Getter(mthis);
+
 }
 
-class BlinkWebKitCSSFilterRule {
+class BlinkWebKitCSSFilterRule extends BlinkCSSRule {
+  static final instance = new BlinkWebKitCSSFilterRule();
+
   static style_Getter(mthis) native "WebKitCSSFilterRule_style_Getter";
+  style_Getter_(mthis) => style_Getter(mthis);
+
 }
 
-class BlinkWebKitCSSFilterValue {}
+class BlinkWebKitCSSFilterValue extends BlinkCSSValueList {
+  static final instance = new BlinkWebKitCSSFilterValue();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "WebKitCSSFilterValue___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static operationType_Getter(mthis) native "WebKitCSSFilterValue_operationType_Getter";
+  operationType_Getter_(mthis) => operationType_Getter(mthis);
+
+}
 
 class BlinkWebKitCSSMatrix {
-  static constructorCallback_1(cssValue) native "WebKitCSSMatrix_constructorCallback";
+  static final instance = new BlinkWebKitCSSMatrix();
+
+  static a_Getter(mthis) native "WebKitCSSMatrix_a_Getter";
+  a_Getter_(mthis) => a_Getter(mthis);
+
+  static a_Setter(mthis, __arg_0) native "WebKitCSSMatrix_a_Setter";
+  a_Setter_(mthis, __arg_0) => a_Setter(mthis, __arg_0);
+
+  static b_Getter(mthis) native "WebKitCSSMatrix_b_Getter";
+  b_Getter_(mthis) => b_Getter(mthis);
+
+  static b_Setter(mthis, __arg_0) native "WebKitCSSMatrix_b_Setter";
+  b_Setter_(mthis, __arg_0) => b_Setter(mthis, __arg_0);
+
+  static c_Getter(mthis) native "WebKitCSSMatrix_c_Getter";
+  c_Getter_(mthis) => c_Getter(mthis);
+
+  static c_Setter(mthis, __arg_0) native "WebKitCSSMatrix_c_Setter";
+  c_Setter_(mthis, __arg_0) => c_Setter(mthis, __arg_0);
+
+  static constructorCallback_0() native "WebKitCSSMatrix_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "WebKitCSSMatrix_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WebKitCSSMatrix_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static d_Getter(mthis) native "WebKitCSSMatrix_d_Getter";
+  d_Getter_(mthis) => d_Getter(mthis);
+
+  static d_Setter(mthis, __arg_0) native "WebKitCSSMatrix_d_Setter";
+  d_Setter_(mthis, __arg_0) => d_Setter(mthis, __arg_0);
+
+  static e_Getter(mthis) native "WebKitCSSMatrix_e_Getter";
+  e_Getter_(mthis) => e_Getter(mthis);
+
+  static e_Setter(mthis, __arg_0) native "WebKitCSSMatrix_e_Setter";
+  e_Setter_(mthis, __arg_0) => e_Setter(mthis, __arg_0);
+
+  static f_Getter(mthis) native "WebKitCSSMatrix_f_Getter";
+  f_Getter_(mthis) => f_Getter(mthis);
+
+  static f_Setter(mthis, __arg_0) native "WebKitCSSMatrix_f_Setter";
+  f_Setter_(mthis, __arg_0) => f_Setter(mthis, __arg_0);
+
+  static inverse_Callback_0(mthis) native "WebKitCSSMatrix_inverse_Callback";
+  inverse_Callback_0_(mthis) => inverse_Callback_0(mthis);
+
+  static inverse_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_inverse_Callback";
+  inverse_Callback_1_(mthis, __arg_0) => inverse_Callback_1(mthis, __arg_0);
+
+  static inverse_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_inverse_Callback";
+  inverse_Callback_2_(mthis, __arg_0, __arg_1) => inverse_Callback_2(mthis, __arg_0, __arg_1);
+
+  static m11_Getter(mthis) native "WebKitCSSMatrix_m11_Getter";
+  m11_Getter_(mthis) => m11_Getter(mthis);
+
+  static m11_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m11_Setter";
+  m11_Setter_(mthis, __arg_0) => m11_Setter(mthis, __arg_0);
+
+  static m12_Getter(mthis) native "WebKitCSSMatrix_m12_Getter";
+  m12_Getter_(mthis) => m12_Getter(mthis);
+
+  static m12_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m12_Setter";
+  m12_Setter_(mthis, __arg_0) => m12_Setter(mthis, __arg_0);
+
+  static m13_Getter(mthis) native "WebKitCSSMatrix_m13_Getter";
+  m13_Getter_(mthis) => m13_Getter(mthis);
+
+  static m13_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m13_Setter";
+  m13_Setter_(mthis, __arg_0) => m13_Setter(mthis, __arg_0);
+
+  static m14_Getter(mthis) native "WebKitCSSMatrix_m14_Getter";
+  m14_Getter_(mthis) => m14_Getter(mthis);
+
+  static m14_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m14_Setter";
+  m14_Setter_(mthis, __arg_0) => m14_Setter(mthis, __arg_0);
+
+  static m21_Getter(mthis) native "WebKitCSSMatrix_m21_Getter";
+  m21_Getter_(mthis) => m21_Getter(mthis);
+
+  static m21_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m21_Setter";
+  m21_Setter_(mthis, __arg_0) => m21_Setter(mthis, __arg_0);
+
+  static m22_Getter(mthis) native "WebKitCSSMatrix_m22_Getter";
+  m22_Getter_(mthis) => m22_Getter(mthis);
+
+  static m22_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m22_Setter";
+  m22_Setter_(mthis, __arg_0) => m22_Setter(mthis, __arg_0);
+
+  static m23_Getter(mthis) native "WebKitCSSMatrix_m23_Getter";
+  m23_Getter_(mthis) => m23_Getter(mthis);
+
+  static m23_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m23_Setter";
+  m23_Setter_(mthis, __arg_0) => m23_Setter(mthis, __arg_0);
+
+  static m24_Getter(mthis) native "WebKitCSSMatrix_m24_Getter";
+  m24_Getter_(mthis) => m24_Getter(mthis);
+
+  static m24_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m24_Setter";
+  m24_Setter_(mthis, __arg_0) => m24_Setter(mthis, __arg_0);
+
+  static m31_Getter(mthis) native "WebKitCSSMatrix_m31_Getter";
+  m31_Getter_(mthis) => m31_Getter(mthis);
+
+  static m31_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m31_Setter";
+  m31_Setter_(mthis, __arg_0) => m31_Setter(mthis, __arg_0);
+
+  static m32_Getter(mthis) native "WebKitCSSMatrix_m32_Getter";
+  m32_Getter_(mthis) => m32_Getter(mthis);
+
+  static m32_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m32_Setter";
+  m32_Setter_(mthis, __arg_0) => m32_Setter(mthis, __arg_0);
+
+  static m33_Getter(mthis) native "WebKitCSSMatrix_m33_Getter";
+  m33_Getter_(mthis) => m33_Getter(mthis);
+
+  static m33_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m33_Setter";
+  m33_Setter_(mthis, __arg_0) => m33_Setter(mthis, __arg_0);
+
+  static m34_Getter(mthis) native "WebKitCSSMatrix_m34_Getter";
+  m34_Getter_(mthis) => m34_Getter(mthis);
+
+  static m34_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m34_Setter";
+  m34_Setter_(mthis, __arg_0) => m34_Setter(mthis, __arg_0);
+
+  static m41_Getter(mthis) native "WebKitCSSMatrix_m41_Getter";
+  m41_Getter_(mthis) => m41_Getter(mthis);
+
+  static m41_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m41_Setter";
+  m41_Setter_(mthis, __arg_0) => m41_Setter(mthis, __arg_0);
+
+  static m42_Getter(mthis) native "WebKitCSSMatrix_m42_Getter";
+  m42_Getter_(mthis) => m42_Getter(mthis);
+
+  static m42_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m42_Setter";
+  m42_Setter_(mthis, __arg_0) => m42_Setter(mthis, __arg_0);
+
+  static m43_Getter(mthis) native "WebKitCSSMatrix_m43_Getter";
+  m43_Getter_(mthis) => m43_Getter(mthis);
+
+  static m43_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m43_Setter";
+  m43_Setter_(mthis, __arg_0) => m43_Setter(mthis, __arg_0);
+
+  static m44_Getter(mthis) native "WebKitCSSMatrix_m44_Getter";
+  m44_Getter_(mthis) => m44_Getter(mthis);
+
+  static m44_Setter(mthis, __arg_0) native "WebKitCSSMatrix_m44_Setter";
+  m44_Setter_(mthis, __arg_0) => m44_Setter(mthis, __arg_0);
+
+  static multiply_Callback_0(mthis) native "WebKitCSSMatrix_multiply_Callback";
+  multiply_Callback_0_(mthis) => multiply_Callback_0(mthis);
+
+  static multiply_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_multiply_Callback";
+  multiply_Callback_1_(mthis, __arg_0) => multiply_Callback_1(mthis, __arg_0);
+
+  static multiply_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_multiply_Callback";
+  multiply_Callback_2_(mthis, __arg_0, __arg_1) => multiply_Callback_2(mthis, __arg_0, __arg_1);
+
+  static multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_multiply_Callback";
+  multiply_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => multiply_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rotateAxisAngle_Callback_0(mthis) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_0_(mthis) => rotateAxisAngle_Callback_0(mthis);
+
+  static rotateAxisAngle_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_1_(mthis, __arg_0) => rotateAxisAngle_Callback_1(mthis, __arg_0);
+
+  static rotateAxisAngle_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_2_(mthis, __arg_0, __arg_1) => rotateAxisAngle_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotateAxisAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotateAxisAngle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rotateAxisAngle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotateAxisAngle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rotateAxisAngle_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rotateAxisAngle_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static rotateAxisAngle_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WebKitCSSMatrix_rotateAxisAngle_Callback";
+  rotateAxisAngle_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => rotateAxisAngle_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static rotate_Callback_0(mthis) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_0_(mthis) => rotate_Callback_0(mthis);
+
+  static rotate_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_1_(mthis, __arg_0) => rotate_Callback_1(mthis, __arg_0);
+
+  static rotate_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_2_(mthis, __arg_0, __arg_1) => rotate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => rotate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static rotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => rotate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static rotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_rotate_Callback";
+  rotate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => rotate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static scale_Callback_0(mthis) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_0_(mthis) => scale_Callback_0(mthis);
+
+  static scale_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_1_(mthis, __arg_0) => scale_Callback_1(mthis, __arg_0);
+
+  static scale_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_2_(mthis, __arg_0, __arg_1) => scale_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scale_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scale_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_scale_Callback";
+  scale_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scale_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static setMatrixValue_Callback_0(mthis) native "WebKitCSSMatrix_setMatrixValue_Callback";
+  setMatrixValue_Callback_0_(mthis) => setMatrixValue_Callback_0(mthis);
+
+  static setMatrixValue_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_setMatrixValue_Callback";
+  setMatrixValue_Callback_1_(mthis, __arg_0) => setMatrixValue_Callback_1(mthis, __arg_0);
+
+  static setMatrixValue_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_setMatrixValue_Callback";
+  setMatrixValue_Callback_2_(mthis, __arg_0, __arg_1) => setMatrixValue_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setMatrixValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_setMatrixValue_Callback";
+  setMatrixValue_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setMatrixValue_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static skewX_Callback_0(mthis) native "WebKitCSSMatrix_skewX_Callback";
+  skewX_Callback_0_(mthis) => skewX_Callback_0(mthis);
+
+  static skewX_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_skewX_Callback";
+  skewX_Callback_1_(mthis, __arg_0) => skewX_Callback_1(mthis, __arg_0);
+
+  static skewX_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_skewX_Callback";
+  skewX_Callback_2_(mthis, __arg_0, __arg_1) => skewX_Callback_2(mthis, __arg_0, __arg_1);
+
+  static skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_skewX_Callback";
+  skewX_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewX_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static skewY_Callback_0(mthis) native "WebKitCSSMatrix_skewY_Callback";
+  skewY_Callback_0_(mthis) => skewY_Callback_0(mthis);
+
+  static skewY_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_skewY_Callback";
+  skewY_Callback_1_(mthis, __arg_0) => skewY_Callback_1(mthis, __arg_0);
+
+  static skewY_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_skewY_Callback";
+  skewY_Callback_2_(mthis, __arg_0, __arg_1) => skewY_Callback_2(mthis, __arg_0, __arg_1);
+
+  static skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_skewY_Callback";
+  skewY_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => skewY_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static translate_Callback_0(mthis) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_0_(mthis) => translate_Callback_0(mthis);
+
+  static translate_Callback_1(mthis, __arg_0) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_1_(mthis, __arg_0) => translate_Callback_1(mthis, __arg_0);
+
+  static translate_Callback_2(mthis, __arg_0, __arg_1) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_2_(mthis, __arg_0, __arg_1) => translate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => translate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => translate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WebKitCSSMatrix_translate_Callback";
+  translate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => translate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
-class BlinkWebKitCSSTransformValue {}
+class BlinkWebKitCSSTransformValue extends BlinkCSSValueList {
+  static final instance = new BlinkWebKitCSSTransformValue();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "WebKitCSSTransformValue___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static operationType_Getter(mthis) native "WebKitCSSTransformValue_operationType_Getter";
+  operationType_Getter_(mthis) => operationType_Getter(mthis);
+
+}
+
+class BlinkWebKitGamepad {
+  static final instance = new BlinkWebKitGamepad();
+
+  static axes_Getter(mthis) native "WebKitGamepad_axes_Getter";
+  axes_Getter_(mthis) => axes_Getter(mthis);
+
+  static buttons_Getter(mthis) native "WebKitGamepad_buttons_Getter";
+  buttons_Getter_(mthis) => buttons_Getter(mthis);
+
+  static connected_Getter(mthis) native "WebKitGamepad_connected_Getter";
+  connected_Getter_(mthis) => connected_Getter(mthis);
+
+  static id_Getter(mthis) native "WebKitGamepad_id_Getter";
+  id_Getter_(mthis) => id_Getter(mthis);
+
+  static index_Getter(mthis) native "WebKitGamepad_index_Getter";
+  index_Getter_(mthis) => index_Getter(mthis);
+
+  static mapping_Getter(mthis) native "WebKitGamepad_mapping_Getter";
+  mapping_Getter_(mthis) => mapping_Getter(mthis);
+
+  static timestamp_Getter(mthis) native "WebKitGamepad_timestamp_Getter";
+  timestamp_Getter_(mthis) => timestamp_Getter(mthis);
+
+}
+
+class BlinkWebKitGamepadList {
+  static final instance = new BlinkWebKitGamepadList();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "WebKitGamepadList___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
+  static item_Callback_0(mthis) native "WebKitGamepadList_item_Callback";
+  item_Callback_0_(mthis) => item_Callback_0(mthis);
+
+  static item_Callback_1(mthis, __arg_0) native "WebKitGamepadList_item_Callback";
+  item_Callback_1_(mthis, __arg_0) => item_Callback_1(mthis, __arg_0);
+
+  static item_Callback_2(mthis, __arg_0, __arg_1) native "WebKitGamepadList_item_Callback";
+  item_Callback_2_(mthis, __arg_0, __arg_1) => item_Callback_2(mthis, __arg_0, __arg_1);
+
+  static item_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebKitGamepadList_item_Callback";
+  item_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => item_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static length_Getter(mthis) native "WebKitGamepadList_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
+
+}
 
 class BlinkWebKitPoint {
-  static constructorCallback_2(x, y) native "WebKitPoint_constructorCallback";
+  static final instance = new BlinkWebKitPoint();
+
+  static constructorCallback_0() native "WebKitPoint_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "WebKitPoint_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WebKitPoint_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "WebKitPoint_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "WebKitPoint_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static x_Getter(mthis) native "WebKitPoint_x_Getter";
+  x_Getter_(mthis) => x_Getter(mthis);
 
-  static x_Setter(mthis, value) native "WebKitPoint_x_Setter";
+  static x_Setter(mthis, __arg_0) native "WebKitPoint_x_Setter";
+  x_Setter_(mthis, __arg_0) => x_Setter(mthis, __arg_0);
 
   static y_Getter(mthis) native "WebKitPoint_y_Getter";
+  y_Getter_(mthis) => y_Getter(mthis);
 
-  static y_Setter(mthis, value) native "WebKitPoint_y_Setter";
+  static y_Setter(mthis, __arg_0) native "WebKitPoint_y_Setter";
+  y_Setter_(mthis, __arg_0) => y_Setter(mthis, __arg_0);
+
 }
 
-class BlinkWebSocket {
-  static constructorCallback_1(url) native "WebSocket_constructorCallback";
+class BlinkWebSocket extends BlinkEventTarget {
+  static final instance = new BlinkWebSocket();
 
-  static constructorCallback_2(url, protocol_OR_protocols) native "WebSocket_constructorCallback";
+  static URL_Getter(mthis) native "WebSocket_URL_Getter";
+  URL_Getter_(mthis) => URL_Getter(mthis);
 
   static binaryType_Getter(mthis) native "WebSocket_binaryType_Getter";
+  binaryType_Getter_(mthis) => binaryType_Getter(mthis);
 
-  static binaryType_Setter(mthis, value) native "WebSocket_binaryType_Setter";
+  static binaryType_Setter(mthis, __arg_0) native "WebSocket_binaryType_Setter";
+  binaryType_Setter_(mthis, __arg_0) => binaryType_Setter(mthis, __arg_0);
 
   static bufferedAmount_Getter(mthis) native "WebSocket_bufferedAmount_Getter";
+  bufferedAmount_Getter_(mthis) => bufferedAmount_Getter(mthis);
+
+  static close_Callback_0(mthis) native "WebSocket_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "WebSocket_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "WebSocket_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static close_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebSocket_close_Callback";
+  close_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => close_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static close_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WebSocket_close_Callback";
+  close_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => close_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static constructorCallback_0() native "WebSocket_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "WebSocket_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WebSocket_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "WebSocket_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3) native "WebSocket_constructorCallback";
+  constructorCallback_4_(__arg_0, __arg_1, __arg_2, __arg_3) => constructorCallback_4(__arg_0, __arg_1, __arg_2, __arg_3);
 
   static extensions_Getter(mthis) native "WebSocket_extensions_Getter";
+  extensions_Getter_(mthis) => extensions_Getter(mthis);
+
+  static onclose_Getter(mthis) native "WebSocket_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "WebSocket_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "WebSocket_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "WebSocket_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "WebSocket_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "WebSocket_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onopen_Getter(mthis) native "WebSocket_onopen_Getter";
+  onopen_Getter_(mthis) => onopen_Getter(mthis);
+
+  static onopen_Setter(mthis, __arg_0) native "WebSocket_onopen_Setter";
+  onopen_Setter_(mthis, __arg_0) => onopen_Setter(mthis, __arg_0);
 
   static protocol_Getter(mthis) native "WebSocket_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
 
   static readyState_Getter(mthis) native "WebSocket_readyState_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
+
+  static send_Callback_0(mthis) native "WebSocket_send_Callback";
+  send_Callback_0_(mthis) => send_Callback_0(mthis);
+
+  static send_Callback_1(mthis, __arg_0) native "WebSocket_send_Callback";
+  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
+
+  static send_Callback_2(mthis, __arg_0, __arg_1) native "WebSocket_send_Callback";
+  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
+
+  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WebSocket_send_Callback";
+  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static url_Getter(mthis) native "WebSocket_url_Getter";
+  url_Getter_(mthis) => url_Getter(mthis);
 
-  static close_Callback_2(mthis, code, reason) native "WebSocket_close_Callback";
-
-  static close_Callback_1(mthis, code) native "WebSocket_close_Callback";
-
-  static close_Callback(mthis) native "WebSocket_close_Callback";
-
-  static send_Callback_1(mthis, data) native "WebSocket_send_Callback";
 }
 
-class BlinkWheelEvent {
-  static constructorCallback(type, options) native "WheelEvent_constructorCallback";
+class BlinkWheelEvent extends BlinkMouseEvent {
+  static final instance = new BlinkWheelEvent();
+
+  static constructorCallback_2(__arg_0, __arg_1) native "WheelEvent_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
   static deltaMode_Getter(mthis) native "WheelEvent_deltaMode_Getter";
+  deltaMode_Getter_(mthis) => deltaMode_Getter(mthis);
 
   static deltaX_Getter(mthis) native "WheelEvent_deltaX_Getter";
+  deltaX_Getter_(mthis) => deltaX_Getter(mthis);
 
   static deltaY_Getter(mthis) native "WheelEvent_deltaY_Getter";
+  deltaY_Getter_(mthis) => deltaY_Getter(mthis);
 
   static deltaZ_Getter(mthis) native "WheelEvent_deltaZ_Getter";
+  deltaZ_Getter_(mthis) => deltaZ_Getter(mthis);
 
   static wheelDeltaX_Getter(mthis) native "WheelEvent_wheelDeltaX_Getter";
+  wheelDeltaX_Getter_(mthis) => wheelDeltaX_Getter(mthis);
 
   static wheelDeltaY_Getter(mthis) native "WheelEvent_wheelDeltaY_Getter";
+  wheelDeltaY_Getter_(mthis) => wheelDeltaY_Getter(mthis);
+
 }
 
-class BlinkWindow {
+class BlinkWindow extends BlinkEventTarget {
+  static final instance = new BlinkWindow();
+
+  static $__getter___Callback_1(mthis, __arg_0) native "Window___getter___Callback";
+  $__getter___Callback_1_(mthis, __arg_0) => $__getter___Callback_1(mthis, __arg_0);
+
   static CSS_Getter(mthis) native "Window_CSS_Getter";
+  CSS_Getter_(mthis) => CSS_Getter(mthis);
+
+  static alert_Callback_0(mthis) native "Window_alert_Callback";
+  alert_Callback_0_(mthis) => alert_Callback_0(mthis);
+
+  static alert_Callback_1(mthis, __arg_0) native "Window_alert_Callback";
+  alert_Callback_1_(mthis, __arg_0) => alert_Callback_1(mthis, __arg_0);
+
+  static alert_Callback_2(mthis, __arg_0, __arg_1) native "Window_alert_Callback";
+  alert_Callback_2_(mthis, __arg_0, __arg_1) => alert_Callback_2(mthis, __arg_0, __arg_1);
+
+  static alert_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_alert_Callback";
+  alert_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => alert_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static applicationCache_Getter(mthis) native "Window_applicationCache_Getter";
+  applicationCache_Getter_(mthis) => applicationCache_Getter(mthis);
+
+  static atob_Callback_0(mthis) native "Window_atob_Callback";
+  atob_Callback_0_(mthis) => atob_Callback_0(mthis);
+
+  static atob_Callback_1(mthis, __arg_0) native "Window_atob_Callback";
+  atob_Callback_1_(mthis, __arg_0) => atob_Callback_1(mthis, __arg_0);
+
+  static atob_Callback_2(mthis, __arg_0, __arg_1) native "Window_atob_Callback";
+  atob_Callback_2_(mthis, __arg_0, __arg_1) => atob_Callback_2(mthis, __arg_0, __arg_1);
+
+  static atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_atob_Callback";
+  atob_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static blur_Callback_0(mthis) native "Window_blur_Callback";
+  blur_Callback_0_(mthis) => blur_Callback_0(mthis);
+
+  static blur_Callback_1(mthis, __arg_0) native "Window_blur_Callback";
+  blur_Callback_1_(mthis, __arg_0) => blur_Callback_1(mthis, __arg_0);
+
+  static blur_Callback_2(mthis, __arg_0, __arg_1) native "Window_blur_Callback";
+  blur_Callback_2_(mthis, __arg_0, __arg_1) => blur_Callback_2(mthis, __arg_0, __arg_1);
+
+  static btoa_Callback_0(mthis) native "Window_btoa_Callback";
+  btoa_Callback_0_(mthis) => btoa_Callback_0(mthis);
+
+  static btoa_Callback_1(mthis, __arg_0) native "Window_btoa_Callback";
+  btoa_Callback_1_(mthis, __arg_0) => btoa_Callback_1(mthis, __arg_0);
+
+  static btoa_Callback_2(mthis, __arg_0, __arg_1) native "Window_btoa_Callback";
+  btoa_Callback_2_(mthis, __arg_0, __arg_1) => btoa_Callback_2(mthis, __arg_0, __arg_1);
+
+  static btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_btoa_Callback";
+  btoa_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static cancelAnimationFrame_Callback_0(mthis) native "Window_cancelAnimationFrame_Callback";
+  cancelAnimationFrame_Callback_0_(mthis) => cancelAnimationFrame_Callback_0(mthis);
+
+  static cancelAnimationFrame_Callback_1(mthis, __arg_0) native "Window_cancelAnimationFrame_Callback";
+  cancelAnimationFrame_Callback_1_(mthis, __arg_0) => cancelAnimationFrame_Callback_1(mthis, __arg_0);
+
+  static cancelAnimationFrame_Callback_2(mthis, __arg_0, __arg_1) native "Window_cancelAnimationFrame_Callback";
+  cancelAnimationFrame_Callback_2_(mthis, __arg_0, __arg_1) => cancelAnimationFrame_Callback_2(mthis, __arg_0, __arg_1);
+
+  static cancelAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_cancelAnimationFrame_Callback";
+  cancelAnimationFrame_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => cancelAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static captureEvents_Callback_0(mthis) native "Window_captureEvents_Callback";
+  captureEvents_Callback_0_(mthis) => captureEvents_Callback_0(mthis);
+
+  static captureEvents_Callback_1(mthis, __arg_0) native "Window_captureEvents_Callback";
+  captureEvents_Callback_1_(mthis, __arg_0) => captureEvents_Callback_1(mthis, __arg_0);
+
+  static captureEvents_Callback_2(mthis, __arg_0, __arg_1) native "Window_captureEvents_Callback";
+  captureEvents_Callback_2_(mthis, __arg_0, __arg_1) => captureEvents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearInterval_Callback_0(mthis) native "Window_clearInterval_Callback";
+  clearInterval_Callback_0_(mthis) => clearInterval_Callback_0(mthis);
+
+  static clearInterval_Callback_1(mthis, __arg_0) native "Window_clearInterval_Callback";
+  clearInterval_Callback_1_(mthis, __arg_0) => clearInterval_Callback_1(mthis, __arg_0);
+
+  static clearInterval_Callback_2(mthis, __arg_0, __arg_1) native "Window_clearInterval_Callback";
+  clearInterval_Callback_2_(mthis, __arg_0, __arg_1) => clearInterval_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_clearInterval_Callback";
+  clearInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearTimeout_Callback_0(mthis) native "Window_clearTimeout_Callback";
+  clearTimeout_Callback_0_(mthis) => clearTimeout_Callback_0(mthis);
+
+  static clearTimeout_Callback_1(mthis, __arg_0) native "Window_clearTimeout_Callback";
+  clearTimeout_Callback_1_(mthis, __arg_0) => clearTimeout_Callback_1(mthis, __arg_0);
+
+  static clearTimeout_Callback_2(mthis, __arg_0, __arg_1) native "Window_clearTimeout_Callback";
+  clearTimeout_Callback_2_(mthis, __arg_0, __arg_1) => clearTimeout_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_clearTimeout_Callback";
+  clearTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static close_Callback_0(mthis) native "Window_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "Window_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "Window_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
 
   static closed_Getter(mthis) native "Window_closed_Getter";
+  closed_Getter_(mthis) => closed_Getter(mthis);
+
+  static confirm_Callback_0(mthis) native "Window_confirm_Callback";
+  confirm_Callback_0_(mthis) => confirm_Callback_0(mthis);
+
+  static confirm_Callback_1(mthis, __arg_0) native "Window_confirm_Callback";
+  confirm_Callback_1_(mthis, __arg_0) => confirm_Callback_1(mthis, __arg_0);
+
+  static confirm_Callback_2(mthis, __arg_0, __arg_1) native "Window_confirm_Callback";
+  confirm_Callback_2_(mthis, __arg_0, __arg_1) => confirm_Callback_2(mthis, __arg_0, __arg_1);
+
+  static confirm_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_confirm_Callback";
+  confirm_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => confirm_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static console_Getter(mthis) native "Window_console_Getter";
+  console_Getter_(mthis) => console_Getter(mthis);
 
   static crypto_Getter(mthis) native "Window_crypto_Getter";
+  crypto_Getter_(mthis) => crypto_Getter(mthis);
 
   static defaultStatus_Getter(mthis) native "Window_defaultStatus_Getter";
+  defaultStatus_Getter_(mthis) => defaultStatus_Getter(mthis);
 
-  static defaultStatus_Setter(mthis, value) native "Window_defaultStatus_Setter";
+  static defaultStatus_Setter(mthis, __arg_0) native "Window_defaultStatus_Setter";
+  defaultStatus_Setter_(mthis, __arg_0) => defaultStatus_Setter(mthis, __arg_0);
 
   static defaultstatus_Getter(mthis) native "Window_defaultstatus_Getter";
+  defaultstatus_Getter_(mthis) => defaultstatus_Getter(mthis);
 
-  static defaultstatus_Setter(mthis, value) native "Window_defaultstatus_Setter";
+  static defaultstatus_Setter(mthis, __arg_0) native "Window_defaultstatus_Setter";
+  defaultstatus_Setter_(mthis, __arg_0) => defaultstatus_Setter(mthis, __arg_0);
 
   static devicePixelRatio_Getter(mthis) native "Window_devicePixelRatio_Getter";
+  devicePixelRatio_Getter_(mthis) => devicePixelRatio_Getter(mthis);
 
   static document_Getter(mthis) native "Window_document_Getter";
+  document_Getter_(mthis) => document_Getter(mthis);
+
+  static event_Getter(mthis) native "Window_event_Getter";
+  event_Getter_(mthis) => event_Getter(mthis);
+
+  static event_Setter(mthis, __arg_0) native "Window_event_Setter";
+  event_Setter_(mthis, __arg_0) => event_Setter(mthis, __arg_0);
+
+  static find_Callback_0(mthis) native "Window_find_Callback";
+  find_Callback_0_(mthis) => find_Callback_0(mthis);
+
+  static find_Callback_1(mthis, __arg_0) native "Window_find_Callback";
+  find_Callback_1_(mthis, __arg_0) => find_Callback_1(mthis, __arg_0);
+
+  static find_Callback_2(mthis, __arg_0, __arg_1) native "Window_find_Callback";
+  find_Callback_2_(mthis, __arg_0, __arg_1) => find_Callback_2(mthis, __arg_0, __arg_1);
+
+  static find_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_find_Callback";
+  find_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => find_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static find_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_find_Callback";
+  find_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => find_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static find_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_find_Callback";
+  find_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => find_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static find_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_find_Callback";
+  find_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => find_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static find_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Window_find_Callback";
+  find_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => find_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static find_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) native "Window_find_Callback";
+  find_Callback_8_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7) => find_Callback_8(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7);
+
+  static find_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) native "Window_find_Callback";
+  find_Callback_9_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8) => find_Callback_9(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6, __arg_7, __arg_8);
+
+  static focus_Callback_0(mthis) native "Window_focus_Callback";
+  focus_Callback_0_(mthis) => focus_Callback_0(mthis);
+
+  static focus_Callback_1(mthis, __arg_0) native "Window_focus_Callback";
+  focus_Callback_1_(mthis, __arg_0) => focus_Callback_1(mthis, __arg_0);
+
+  static focus_Callback_2(mthis, __arg_0, __arg_1) native "Window_focus_Callback";
+  focus_Callback_2_(mthis, __arg_0, __arg_1) => focus_Callback_2(mthis, __arg_0, __arg_1);
+
+  static frameElement_Getter(mthis) native "Window_frameElement_Getter";
+  frameElement_Getter_(mthis) => frameElement_Getter(mthis);
+
+  static frames_Getter(mthis) native "Window_frames_Getter";
+  frames_Getter_(mthis) => frames_Getter(mthis);
+
+  static getComputedStyle_Callback_0(mthis) native "Window_getComputedStyle_Callback";
+  getComputedStyle_Callback_0_(mthis) => getComputedStyle_Callback_0(mthis);
+
+  static getComputedStyle_Callback_1(mthis, __arg_0) native "Window_getComputedStyle_Callback";
+  getComputedStyle_Callback_1_(mthis, __arg_0) => getComputedStyle_Callback_1(mthis, __arg_0);
+
+  static getComputedStyle_Callback_2(mthis, __arg_0, __arg_1) native "Window_getComputedStyle_Callback";
+  getComputedStyle_Callback_2_(mthis, __arg_0, __arg_1) => getComputedStyle_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getComputedStyle_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_getComputedStyle_Callback";
+  getComputedStyle_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getComputedStyle_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getComputedStyle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_getComputedStyle_Callback";
+  getComputedStyle_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getComputedStyle_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getMatchedCSSRules_Callback_0(mthis) native "Window_getMatchedCSSRules_Callback";
+  getMatchedCSSRules_Callback_0_(mthis) => getMatchedCSSRules_Callback_0(mthis);
+
+  static getMatchedCSSRules_Callback_1(mthis, __arg_0) native "Window_getMatchedCSSRules_Callback";
+  getMatchedCSSRules_Callback_1_(mthis, __arg_0) => getMatchedCSSRules_Callback_1(mthis, __arg_0);
+
+  static getMatchedCSSRules_Callback_2(mthis, __arg_0, __arg_1) native "Window_getMatchedCSSRules_Callback";
+  getMatchedCSSRules_Callback_2_(mthis, __arg_0, __arg_1) => getMatchedCSSRules_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getMatchedCSSRules_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_getMatchedCSSRules_Callback";
+  getMatchedCSSRules_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getMatchedCSSRules_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getMatchedCSSRules_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_getMatchedCSSRules_Callback";
+  getMatchedCSSRules_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getMatchedCSSRules_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static getSelection_Callback_0(mthis) native "Window_getSelection_Callback";
+  getSelection_Callback_0_(mthis) => getSelection_Callback_0(mthis);
+
+  static getSelection_Callback_1(mthis, __arg_0) native "Window_getSelection_Callback";
+  getSelection_Callback_1_(mthis, __arg_0) => getSelection_Callback_1(mthis, __arg_0);
+
+  static getSelection_Callback_2(mthis, __arg_0, __arg_1) native "Window_getSelection_Callback";
+  getSelection_Callback_2_(mthis, __arg_0, __arg_1) => getSelection_Callback_2(mthis, __arg_0, __arg_1);
 
   static history_Getter(mthis) native "Window_history_Getter";
+  history_Getter_(mthis) => history_Getter(mthis);
 
   static indexedDB_Getter(mthis) native "Window_indexedDB_Getter";
+  indexedDB_Getter_(mthis) => indexedDB_Getter(mthis);
 
   static innerHeight_Getter(mthis) native "Window_innerHeight_Getter";
+  innerHeight_Getter_(mthis) => innerHeight_Getter(mthis);
 
   static innerWidth_Getter(mthis) native "Window_innerWidth_Getter";
+  innerWidth_Getter_(mthis) => innerWidth_Getter(mthis);
+
+  static length_Getter(mthis) native "Window_length_Getter";
+  length_Getter_(mthis) => length_Getter(mthis);
 
   static localStorage_Getter(mthis) native "Window_localStorage_Getter";
+  localStorage_Getter_(mthis) => localStorage_Getter(mthis);
 
   static location_Getter(mthis) native "Window_location_Getter";
+  location_Getter_(mthis) => location_Getter(mthis);
+
+  static location_Setter(mthis, __arg_0) native "Window_location_Setter";
+  location_Setter_(mthis, __arg_0) => location_Setter(mthis, __arg_0);
 
   static locationbar_Getter(mthis) native "Window_locationbar_Getter";
+  locationbar_Getter_(mthis) => locationbar_Getter(mthis);
+
+  static matchMedia_Callback_0(mthis) native "Window_matchMedia_Callback";
+  matchMedia_Callback_0_(mthis) => matchMedia_Callback_0(mthis);
+
+  static matchMedia_Callback_1(mthis, __arg_0) native "Window_matchMedia_Callback";
+  matchMedia_Callback_1_(mthis, __arg_0) => matchMedia_Callback_1(mthis, __arg_0);
+
+  static matchMedia_Callback_2(mthis, __arg_0, __arg_1) native "Window_matchMedia_Callback";
+  matchMedia_Callback_2_(mthis, __arg_0, __arg_1) => matchMedia_Callback_2(mthis, __arg_0, __arg_1);
+
+  static matchMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_matchMedia_Callback";
+  matchMedia_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => matchMedia_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static menubar_Getter(mthis) native "Window_menubar_Getter";
+  menubar_Getter_(mthis) => menubar_Getter(mthis);
+
+  static moveBy_Callback_0(mthis) native "Window_moveBy_Callback";
+  moveBy_Callback_0_(mthis) => moveBy_Callback_0(mthis);
+
+  static moveBy_Callback_1(mthis, __arg_0) native "Window_moveBy_Callback";
+  moveBy_Callback_1_(mthis, __arg_0) => moveBy_Callback_1(mthis, __arg_0);
+
+  static moveBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_moveBy_Callback";
+  moveBy_Callback_2_(mthis, __arg_0, __arg_1) => moveBy_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_moveBy_Callback";
+  moveBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_moveBy_Callback";
+  moveBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static moveTo_Callback_0(mthis) native "Window_moveTo_Callback";
+  moveTo_Callback_0_(mthis) => moveTo_Callback_0(mthis);
+
+  static moveTo_Callback_1(mthis, __arg_0) native "Window_moveTo_Callback";
+  moveTo_Callback_1_(mthis, __arg_0) => moveTo_Callback_1(mthis, __arg_0);
+
+  static moveTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_moveTo_Callback";
+  moveTo_Callback_2_(mthis, __arg_0, __arg_1) => moveTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_moveTo_Callback";
+  moveTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => moveTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_moveTo_Callback";
+  moveTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => moveTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static name_Getter(mthis) native "Window_name_Getter";
+  name_Getter_(mthis) => name_Getter(mthis);
 
-  static name_Setter(mthis, value) native "Window_name_Setter";
+  static name_Setter(mthis, __arg_0) native "Window_name_Setter";
+  name_Setter_(mthis, __arg_0) => name_Setter(mthis, __arg_0);
 
   static navigator_Getter(mthis) native "Window_navigator_Getter";
+  navigator_Getter_(mthis) => navigator_Getter(mthis);
 
   static offscreenBuffering_Getter(mthis) native "Window_offscreenBuffering_Getter";
+  offscreenBuffering_Getter_(mthis) => offscreenBuffering_Getter(mthis);
+
+  static onabort_Getter(mthis) native "Window_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "Window_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onanimationend_Getter(mthis) native "Window_onanimationend_Getter";
+  onanimationend_Getter_(mthis) => onanimationend_Getter(mthis);
+
+  static onanimationend_Setter(mthis, __arg_0) native "Window_onanimationend_Setter";
+  onanimationend_Setter_(mthis, __arg_0) => onanimationend_Setter(mthis, __arg_0);
+
+  static onanimationiteration_Getter(mthis) native "Window_onanimationiteration_Getter";
+  onanimationiteration_Getter_(mthis) => onanimationiteration_Getter(mthis);
+
+  static onanimationiteration_Setter(mthis, __arg_0) native "Window_onanimationiteration_Setter";
+  onanimationiteration_Setter_(mthis, __arg_0) => onanimationiteration_Setter(mthis, __arg_0);
+
+  static onanimationstart_Getter(mthis) native "Window_onanimationstart_Getter";
+  onanimationstart_Getter_(mthis) => onanimationstart_Getter(mthis);
+
+  static onanimationstart_Setter(mthis, __arg_0) native "Window_onanimationstart_Setter";
+  onanimationstart_Setter_(mthis, __arg_0) => onanimationstart_Setter(mthis, __arg_0);
+
+  static onautocomplete_Getter(mthis) native "Window_onautocomplete_Getter";
+  onautocomplete_Getter_(mthis) => onautocomplete_Getter(mthis);
+
+  static onautocomplete_Setter(mthis, __arg_0) native "Window_onautocomplete_Setter";
+  onautocomplete_Setter_(mthis, __arg_0) => onautocomplete_Setter(mthis, __arg_0);
+
+  static onautocompleteerror_Getter(mthis) native "Window_onautocompleteerror_Getter";
+  onautocompleteerror_Getter_(mthis) => onautocompleteerror_Getter(mthis);
+
+  static onautocompleteerror_Setter(mthis, __arg_0) native "Window_onautocompleteerror_Setter";
+  onautocompleteerror_Setter_(mthis, __arg_0) => onautocompleteerror_Setter(mthis, __arg_0);
+
+  static onbeforeunload_Getter(mthis) native "Window_onbeforeunload_Getter";
+  onbeforeunload_Getter_(mthis) => onbeforeunload_Getter(mthis);
+
+  static onbeforeunload_Setter(mthis, __arg_0) native "Window_onbeforeunload_Setter";
+  onbeforeunload_Setter_(mthis, __arg_0) => onbeforeunload_Setter(mthis, __arg_0);
+
+  static onblur_Getter(mthis) native "Window_onblur_Getter";
+  onblur_Getter_(mthis) => onblur_Getter(mthis);
+
+  static onblur_Setter(mthis, __arg_0) native "Window_onblur_Setter";
+  onblur_Setter_(mthis, __arg_0) => onblur_Setter(mthis, __arg_0);
+
+  static oncancel_Getter(mthis) native "Window_oncancel_Getter";
+  oncancel_Getter_(mthis) => oncancel_Getter(mthis);
+
+  static oncancel_Setter(mthis, __arg_0) native "Window_oncancel_Setter";
+  oncancel_Setter_(mthis, __arg_0) => oncancel_Setter(mthis, __arg_0);
+
+  static oncanplay_Getter(mthis) native "Window_oncanplay_Getter";
+  oncanplay_Getter_(mthis) => oncanplay_Getter(mthis);
+
+  static oncanplay_Setter(mthis, __arg_0) native "Window_oncanplay_Setter";
+  oncanplay_Setter_(mthis, __arg_0) => oncanplay_Setter(mthis, __arg_0);
+
+  static oncanplaythrough_Getter(mthis) native "Window_oncanplaythrough_Getter";
+  oncanplaythrough_Getter_(mthis) => oncanplaythrough_Getter(mthis);
+
+  static oncanplaythrough_Setter(mthis, __arg_0) native "Window_oncanplaythrough_Setter";
+  oncanplaythrough_Setter_(mthis, __arg_0) => oncanplaythrough_Setter(mthis, __arg_0);
+
+  static onchange_Getter(mthis) native "Window_onchange_Getter";
+  onchange_Getter_(mthis) => onchange_Getter(mthis);
+
+  static onchange_Setter(mthis, __arg_0) native "Window_onchange_Setter";
+  onchange_Setter_(mthis, __arg_0) => onchange_Setter(mthis, __arg_0);
+
+  static onclick_Getter(mthis) native "Window_onclick_Getter";
+  onclick_Getter_(mthis) => onclick_Getter(mthis);
+
+  static onclick_Setter(mthis, __arg_0) native "Window_onclick_Setter";
+  onclick_Setter_(mthis, __arg_0) => onclick_Setter(mthis, __arg_0);
+
+  static onclose_Getter(mthis) native "Window_onclose_Getter";
+  onclose_Getter_(mthis) => onclose_Getter(mthis);
+
+  static onclose_Setter(mthis, __arg_0) native "Window_onclose_Setter";
+  onclose_Setter_(mthis, __arg_0) => onclose_Setter(mthis, __arg_0);
+
+  static oncontextmenu_Getter(mthis) native "Window_oncontextmenu_Getter";
+  oncontextmenu_Getter_(mthis) => oncontextmenu_Getter(mthis);
+
+  static oncontextmenu_Setter(mthis, __arg_0) native "Window_oncontextmenu_Setter";
+  oncontextmenu_Setter_(mthis, __arg_0) => oncontextmenu_Setter(mthis, __arg_0);
+
+  static oncuechange_Getter(mthis) native "Window_oncuechange_Getter";
+  oncuechange_Getter_(mthis) => oncuechange_Getter(mthis);
+
+  static oncuechange_Setter(mthis, __arg_0) native "Window_oncuechange_Setter";
+  oncuechange_Setter_(mthis, __arg_0) => oncuechange_Setter(mthis, __arg_0);
+
+  static ondblclick_Getter(mthis) native "Window_ondblclick_Getter";
+  ondblclick_Getter_(mthis) => ondblclick_Getter(mthis);
+
+  static ondblclick_Setter(mthis, __arg_0) native "Window_ondblclick_Setter";
+  ondblclick_Setter_(mthis, __arg_0) => ondblclick_Setter(mthis, __arg_0);
+
+  static ondevicelight_Getter(mthis) native "Window_ondevicelight_Getter";
+  ondevicelight_Getter_(mthis) => ondevicelight_Getter(mthis);
+
+  static ondevicelight_Setter(mthis, __arg_0) native "Window_ondevicelight_Setter";
+  ondevicelight_Setter_(mthis, __arg_0) => ondevicelight_Setter(mthis, __arg_0);
+
+  static ondevicemotion_Getter(mthis) native "Window_ondevicemotion_Getter";
+  ondevicemotion_Getter_(mthis) => ondevicemotion_Getter(mthis);
+
+  static ondevicemotion_Setter(mthis, __arg_0) native "Window_ondevicemotion_Setter";
+  ondevicemotion_Setter_(mthis, __arg_0) => ondevicemotion_Setter(mthis, __arg_0);
+
+  static ondeviceorientation_Getter(mthis) native "Window_ondeviceorientation_Getter";
+  ondeviceorientation_Getter_(mthis) => ondeviceorientation_Getter(mthis);
+
+  static ondeviceorientation_Setter(mthis, __arg_0) native "Window_ondeviceorientation_Setter";
+  ondeviceorientation_Setter_(mthis, __arg_0) => ondeviceorientation_Setter(mthis, __arg_0);
+
+  static ondrag_Getter(mthis) native "Window_ondrag_Getter";
+  ondrag_Getter_(mthis) => ondrag_Getter(mthis);
+
+  static ondrag_Setter(mthis, __arg_0) native "Window_ondrag_Setter";
+  ondrag_Setter_(mthis, __arg_0) => ondrag_Setter(mthis, __arg_0);
+
+  static ondragend_Getter(mthis) native "Window_ondragend_Getter";
+  ondragend_Getter_(mthis) => ondragend_Getter(mthis);
+
+  static ondragend_Setter(mthis, __arg_0) native "Window_ondragend_Setter";
+  ondragend_Setter_(mthis, __arg_0) => ondragend_Setter(mthis, __arg_0);
+
+  static ondragenter_Getter(mthis) native "Window_ondragenter_Getter";
+  ondragenter_Getter_(mthis) => ondragenter_Getter(mthis);
+
+  static ondragenter_Setter(mthis, __arg_0) native "Window_ondragenter_Setter";
+  ondragenter_Setter_(mthis, __arg_0) => ondragenter_Setter(mthis, __arg_0);
+
+  static ondragleave_Getter(mthis) native "Window_ondragleave_Getter";
+  ondragleave_Getter_(mthis) => ondragleave_Getter(mthis);
+
+  static ondragleave_Setter(mthis, __arg_0) native "Window_ondragleave_Setter";
+  ondragleave_Setter_(mthis, __arg_0) => ondragleave_Setter(mthis, __arg_0);
+
+  static ondragover_Getter(mthis) native "Window_ondragover_Getter";
+  ondragover_Getter_(mthis) => ondragover_Getter(mthis);
+
+  static ondragover_Setter(mthis, __arg_0) native "Window_ondragover_Setter";
+  ondragover_Setter_(mthis, __arg_0) => ondragover_Setter(mthis, __arg_0);
+
+  static ondragstart_Getter(mthis) native "Window_ondragstart_Getter";
+  ondragstart_Getter_(mthis) => ondragstart_Getter(mthis);
+
+  static ondragstart_Setter(mthis, __arg_0) native "Window_ondragstart_Setter";
+  ondragstart_Setter_(mthis, __arg_0) => ondragstart_Setter(mthis, __arg_0);
+
+  static ondrop_Getter(mthis) native "Window_ondrop_Getter";
+  ondrop_Getter_(mthis) => ondrop_Getter(mthis);
+
+  static ondrop_Setter(mthis, __arg_0) native "Window_ondrop_Setter";
+  ondrop_Setter_(mthis, __arg_0) => ondrop_Setter(mthis, __arg_0);
+
+  static ondurationchange_Getter(mthis) native "Window_ondurationchange_Getter";
+  ondurationchange_Getter_(mthis) => ondurationchange_Getter(mthis);
+
+  static ondurationchange_Setter(mthis, __arg_0) native "Window_ondurationchange_Setter";
+  ondurationchange_Setter_(mthis, __arg_0) => ondurationchange_Setter(mthis, __arg_0);
+
+  static onemptied_Getter(mthis) native "Window_onemptied_Getter";
+  onemptied_Getter_(mthis) => onemptied_Getter(mthis);
+
+  static onemptied_Setter(mthis, __arg_0) native "Window_onemptied_Setter";
+  onemptied_Setter_(mthis, __arg_0) => onemptied_Setter(mthis, __arg_0);
+
+  static onended_Getter(mthis) native "Window_onended_Getter";
+  onended_Getter_(mthis) => onended_Getter(mthis);
+
+  static onended_Setter(mthis, __arg_0) native "Window_onended_Setter";
+  onended_Setter_(mthis, __arg_0) => onended_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "Window_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "Window_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onfocus_Getter(mthis) native "Window_onfocus_Getter";
+  onfocus_Getter_(mthis) => onfocus_Getter(mthis);
+
+  static onfocus_Setter(mthis, __arg_0) native "Window_onfocus_Setter";
+  onfocus_Setter_(mthis, __arg_0) => onfocus_Setter(mthis, __arg_0);
+
+  static onhashchange_Getter(mthis) native "Window_onhashchange_Getter";
+  onhashchange_Getter_(mthis) => onhashchange_Getter(mthis);
+
+  static onhashchange_Setter(mthis, __arg_0) native "Window_onhashchange_Setter";
+  onhashchange_Setter_(mthis, __arg_0) => onhashchange_Setter(mthis, __arg_0);
+
+  static oninput_Getter(mthis) native "Window_oninput_Getter";
+  oninput_Getter_(mthis) => oninput_Getter(mthis);
+
+  static oninput_Setter(mthis, __arg_0) native "Window_oninput_Setter";
+  oninput_Setter_(mthis, __arg_0) => oninput_Setter(mthis, __arg_0);
+
+  static oninvalid_Getter(mthis) native "Window_oninvalid_Getter";
+  oninvalid_Getter_(mthis) => oninvalid_Getter(mthis);
+
+  static oninvalid_Setter(mthis, __arg_0) native "Window_oninvalid_Setter";
+  oninvalid_Setter_(mthis, __arg_0) => oninvalid_Setter(mthis, __arg_0);
+
+  static onkeydown_Getter(mthis) native "Window_onkeydown_Getter";
+  onkeydown_Getter_(mthis) => onkeydown_Getter(mthis);
+
+  static onkeydown_Setter(mthis, __arg_0) native "Window_onkeydown_Setter";
+  onkeydown_Setter_(mthis, __arg_0) => onkeydown_Setter(mthis, __arg_0);
+
+  static onkeypress_Getter(mthis) native "Window_onkeypress_Getter";
+  onkeypress_Getter_(mthis) => onkeypress_Getter(mthis);
+
+  static onkeypress_Setter(mthis, __arg_0) native "Window_onkeypress_Setter";
+  onkeypress_Setter_(mthis, __arg_0) => onkeypress_Setter(mthis, __arg_0);
+
+  static onkeyup_Getter(mthis) native "Window_onkeyup_Getter";
+  onkeyup_Getter_(mthis) => onkeyup_Getter(mthis);
+
+  static onkeyup_Setter(mthis, __arg_0) native "Window_onkeyup_Setter";
+  onkeyup_Setter_(mthis, __arg_0) => onkeyup_Setter(mthis, __arg_0);
+
+  static onlanguagechange_Getter(mthis) native "Window_onlanguagechange_Getter";
+  onlanguagechange_Getter_(mthis) => onlanguagechange_Getter(mthis);
+
+  static onlanguagechange_Setter(mthis, __arg_0) native "Window_onlanguagechange_Setter";
+  onlanguagechange_Setter_(mthis, __arg_0) => onlanguagechange_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "Window_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "Window_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadeddata_Getter(mthis) native "Window_onloadeddata_Getter";
+  onloadeddata_Getter_(mthis) => onloadeddata_Getter(mthis);
+
+  static onloadeddata_Setter(mthis, __arg_0) native "Window_onloadeddata_Setter";
+  onloadeddata_Setter_(mthis, __arg_0) => onloadeddata_Setter(mthis, __arg_0);
+
+  static onloadedmetadata_Getter(mthis) native "Window_onloadedmetadata_Getter";
+  onloadedmetadata_Getter_(mthis) => onloadedmetadata_Getter(mthis);
+
+  static onloadedmetadata_Setter(mthis, __arg_0) native "Window_onloadedmetadata_Setter";
+  onloadedmetadata_Setter_(mthis, __arg_0) => onloadedmetadata_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "Window_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "Window_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "Window_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "Window_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static onmousedown_Getter(mthis) native "Window_onmousedown_Getter";
+  onmousedown_Getter_(mthis) => onmousedown_Getter(mthis);
+
+  static onmousedown_Setter(mthis, __arg_0) native "Window_onmousedown_Setter";
+  onmousedown_Setter_(mthis, __arg_0) => onmousedown_Setter(mthis, __arg_0);
+
+  static onmouseenter_Getter(mthis) native "Window_onmouseenter_Getter";
+  onmouseenter_Getter_(mthis) => onmouseenter_Getter(mthis);
+
+  static onmouseenter_Setter(mthis, __arg_0) native "Window_onmouseenter_Setter";
+  onmouseenter_Setter_(mthis, __arg_0) => onmouseenter_Setter(mthis, __arg_0);
+
+  static onmouseleave_Getter(mthis) native "Window_onmouseleave_Getter";
+  onmouseleave_Getter_(mthis) => onmouseleave_Getter(mthis);
+
+  static onmouseleave_Setter(mthis, __arg_0) native "Window_onmouseleave_Setter";
+  onmouseleave_Setter_(mthis, __arg_0) => onmouseleave_Setter(mthis, __arg_0);
+
+  static onmousemove_Getter(mthis) native "Window_onmousemove_Getter";
+  onmousemove_Getter_(mthis) => onmousemove_Getter(mthis);
+
+  static onmousemove_Setter(mthis, __arg_0) native "Window_onmousemove_Setter";
+  onmousemove_Setter_(mthis, __arg_0) => onmousemove_Setter(mthis, __arg_0);
+
+  static onmouseout_Getter(mthis) native "Window_onmouseout_Getter";
+  onmouseout_Getter_(mthis) => onmouseout_Getter(mthis);
+
+  static onmouseout_Setter(mthis, __arg_0) native "Window_onmouseout_Setter";
+  onmouseout_Setter_(mthis, __arg_0) => onmouseout_Setter(mthis, __arg_0);
+
+  static onmouseover_Getter(mthis) native "Window_onmouseover_Getter";
+  onmouseover_Getter_(mthis) => onmouseover_Getter(mthis);
+
+  static onmouseover_Setter(mthis, __arg_0) native "Window_onmouseover_Setter";
+  onmouseover_Setter_(mthis, __arg_0) => onmouseover_Setter(mthis, __arg_0);
+
+  static onmouseup_Getter(mthis) native "Window_onmouseup_Getter";
+  onmouseup_Getter_(mthis) => onmouseup_Getter(mthis);
+
+  static onmouseup_Setter(mthis, __arg_0) native "Window_onmouseup_Setter";
+  onmouseup_Setter_(mthis, __arg_0) => onmouseup_Setter(mthis, __arg_0);
+
+  static onmousewheel_Getter(mthis) native "Window_onmousewheel_Getter";
+  onmousewheel_Getter_(mthis) => onmousewheel_Getter(mthis);
+
+  static onmousewheel_Setter(mthis, __arg_0) native "Window_onmousewheel_Setter";
+  onmousewheel_Setter_(mthis, __arg_0) => onmousewheel_Setter(mthis, __arg_0);
+
+  static onoffline_Getter(mthis) native "Window_onoffline_Getter";
+  onoffline_Getter_(mthis) => onoffline_Getter(mthis);
+
+  static onoffline_Setter(mthis, __arg_0) native "Window_onoffline_Setter";
+  onoffline_Setter_(mthis, __arg_0) => onoffline_Setter(mthis, __arg_0);
+
+  static ononline_Getter(mthis) native "Window_ononline_Getter";
+  ononline_Getter_(mthis) => ononline_Getter(mthis);
+
+  static ononline_Setter(mthis, __arg_0) native "Window_ononline_Setter";
+  ononline_Setter_(mthis, __arg_0) => ononline_Setter(mthis, __arg_0);
+
+  static onorientationchange_Getter(mthis) native "Window_onorientationchange_Getter";
+  onorientationchange_Getter_(mthis) => onorientationchange_Getter(mthis);
+
+  static onorientationchange_Setter(mthis, __arg_0) native "Window_onorientationchange_Setter";
+  onorientationchange_Setter_(mthis, __arg_0) => onorientationchange_Setter(mthis, __arg_0);
+
+  static onpagehide_Getter(mthis) native "Window_onpagehide_Getter";
+  onpagehide_Getter_(mthis) => onpagehide_Getter(mthis);
+
+  static onpagehide_Setter(mthis, __arg_0) native "Window_onpagehide_Setter";
+  onpagehide_Setter_(mthis, __arg_0) => onpagehide_Setter(mthis, __arg_0);
+
+  static onpageshow_Getter(mthis) native "Window_onpageshow_Getter";
+  onpageshow_Getter_(mthis) => onpageshow_Getter(mthis);
+
+  static onpageshow_Setter(mthis, __arg_0) native "Window_onpageshow_Setter";
+  onpageshow_Setter_(mthis, __arg_0) => onpageshow_Setter(mthis, __arg_0);
+
+  static onpause_Getter(mthis) native "Window_onpause_Getter";
+  onpause_Getter_(mthis) => onpause_Getter(mthis);
+
+  static onpause_Setter(mthis, __arg_0) native "Window_onpause_Setter";
+  onpause_Setter_(mthis, __arg_0) => onpause_Setter(mthis, __arg_0);
+
+  static onplay_Getter(mthis) native "Window_onplay_Getter";
+  onplay_Getter_(mthis) => onplay_Getter(mthis);
+
+  static onplay_Setter(mthis, __arg_0) native "Window_onplay_Setter";
+  onplay_Setter_(mthis, __arg_0) => onplay_Setter(mthis, __arg_0);
+
+  static onplaying_Getter(mthis) native "Window_onplaying_Getter";
+  onplaying_Getter_(mthis) => onplaying_Getter(mthis);
+
+  static onplaying_Setter(mthis, __arg_0) native "Window_onplaying_Setter";
+  onplaying_Setter_(mthis, __arg_0) => onplaying_Setter(mthis, __arg_0);
+
+  static onpopstate_Getter(mthis) native "Window_onpopstate_Getter";
+  onpopstate_Getter_(mthis) => onpopstate_Getter(mthis);
+
+  static onpopstate_Setter(mthis, __arg_0) native "Window_onpopstate_Setter";
+  onpopstate_Setter_(mthis, __arg_0) => onpopstate_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "Window_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "Window_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static onratechange_Getter(mthis) native "Window_onratechange_Getter";
+  onratechange_Getter_(mthis) => onratechange_Getter(mthis);
+
+  static onratechange_Setter(mthis, __arg_0) native "Window_onratechange_Setter";
+  onratechange_Setter_(mthis, __arg_0) => onratechange_Setter(mthis, __arg_0);
+
+  static onreset_Getter(mthis) native "Window_onreset_Getter";
+  onreset_Getter_(mthis) => onreset_Getter(mthis);
+
+  static onreset_Setter(mthis, __arg_0) native "Window_onreset_Setter";
+  onreset_Setter_(mthis, __arg_0) => onreset_Setter(mthis, __arg_0);
+
+  static onresize_Getter(mthis) native "Window_onresize_Getter";
+  onresize_Getter_(mthis) => onresize_Getter(mthis);
+
+  static onresize_Setter(mthis, __arg_0) native "Window_onresize_Setter";
+  onresize_Setter_(mthis, __arg_0) => onresize_Setter(mthis, __arg_0);
+
+  static onscroll_Getter(mthis) native "Window_onscroll_Getter";
+  onscroll_Getter_(mthis) => onscroll_Getter(mthis);
+
+  static onscroll_Setter(mthis, __arg_0) native "Window_onscroll_Setter";
+  onscroll_Setter_(mthis, __arg_0) => onscroll_Setter(mthis, __arg_0);
+
+  static onsearch_Getter(mthis) native "Window_onsearch_Getter";
+  onsearch_Getter_(mthis) => onsearch_Getter(mthis);
+
+  static onsearch_Setter(mthis, __arg_0) native "Window_onsearch_Setter";
+  onsearch_Setter_(mthis, __arg_0) => onsearch_Setter(mthis, __arg_0);
+
+  static onseeked_Getter(mthis) native "Window_onseeked_Getter";
+  onseeked_Getter_(mthis) => onseeked_Getter(mthis);
+
+  static onseeked_Setter(mthis, __arg_0) native "Window_onseeked_Setter";
+  onseeked_Setter_(mthis, __arg_0) => onseeked_Setter(mthis, __arg_0);
+
+  static onseeking_Getter(mthis) native "Window_onseeking_Getter";
+  onseeking_Getter_(mthis) => onseeking_Getter(mthis);
+
+  static onseeking_Setter(mthis, __arg_0) native "Window_onseeking_Setter";
+  onseeking_Setter_(mthis, __arg_0) => onseeking_Setter(mthis, __arg_0);
+
+  static onselect_Getter(mthis) native "Window_onselect_Getter";
+  onselect_Getter_(mthis) => onselect_Getter(mthis);
+
+  static onselect_Setter(mthis, __arg_0) native "Window_onselect_Setter";
+  onselect_Setter_(mthis, __arg_0) => onselect_Setter(mthis, __arg_0);
+
+  static onshow_Getter(mthis) native "Window_onshow_Getter";
+  onshow_Getter_(mthis) => onshow_Getter(mthis);
+
+  static onshow_Setter(mthis, __arg_0) native "Window_onshow_Setter";
+  onshow_Setter_(mthis, __arg_0) => onshow_Setter(mthis, __arg_0);
+
+  static onstalled_Getter(mthis) native "Window_onstalled_Getter";
+  onstalled_Getter_(mthis) => onstalled_Getter(mthis);
+
+  static onstalled_Setter(mthis, __arg_0) native "Window_onstalled_Setter";
+  onstalled_Setter_(mthis, __arg_0) => onstalled_Setter(mthis, __arg_0);
+
+  static onstorage_Getter(mthis) native "Window_onstorage_Getter";
+  onstorage_Getter_(mthis) => onstorage_Getter(mthis);
+
+  static onstorage_Setter(mthis, __arg_0) native "Window_onstorage_Setter";
+  onstorage_Setter_(mthis, __arg_0) => onstorage_Setter(mthis, __arg_0);
+
+  static onsubmit_Getter(mthis) native "Window_onsubmit_Getter";
+  onsubmit_Getter_(mthis) => onsubmit_Getter(mthis);
+
+  static onsubmit_Setter(mthis, __arg_0) native "Window_onsubmit_Setter";
+  onsubmit_Setter_(mthis, __arg_0) => onsubmit_Setter(mthis, __arg_0);
+
+  static onsuspend_Getter(mthis) native "Window_onsuspend_Getter";
+  onsuspend_Getter_(mthis) => onsuspend_Getter(mthis);
+
+  static onsuspend_Setter(mthis, __arg_0) native "Window_onsuspend_Setter";
+  onsuspend_Setter_(mthis, __arg_0) => onsuspend_Setter(mthis, __arg_0);
+
+  static ontimeupdate_Getter(mthis) native "Window_ontimeupdate_Getter";
+  ontimeupdate_Getter_(mthis) => ontimeupdate_Getter(mthis);
+
+  static ontimeupdate_Setter(mthis, __arg_0) native "Window_ontimeupdate_Setter";
+  ontimeupdate_Setter_(mthis, __arg_0) => ontimeupdate_Setter(mthis, __arg_0);
+
+  static ontoggle_Getter(mthis) native "Window_ontoggle_Getter";
+  ontoggle_Getter_(mthis) => ontoggle_Getter(mthis);
+
+  static ontoggle_Setter(mthis, __arg_0) native "Window_ontoggle_Setter";
+  ontoggle_Setter_(mthis, __arg_0) => ontoggle_Setter(mthis, __arg_0);
+
+  static ontouchcancel_Getter(mthis) native "Window_ontouchcancel_Getter";
+  ontouchcancel_Getter_(mthis) => ontouchcancel_Getter(mthis);
+
+  static ontouchcancel_Setter(mthis, __arg_0) native "Window_ontouchcancel_Setter";
+  ontouchcancel_Setter_(mthis, __arg_0) => ontouchcancel_Setter(mthis, __arg_0);
+
+  static ontouchend_Getter(mthis) native "Window_ontouchend_Getter";
+  ontouchend_Getter_(mthis) => ontouchend_Getter(mthis);
+
+  static ontouchend_Setter(mthis, __arg_0) native "Window_ontouchend_Setter";
+  ontouchend_Setter_(mthis, __arg_0) => ontouchend_Setter(mthis, __arg_0);
+
+  static ontouchmove_Getter(mthis) native "Window_ontouchmove_Getter";
+  ontouchmove_Getter_(mthis) => ontouchmove_Getter(mthis);
+
+  static ontouchmove_Setter(mthis, __arg_0) native "Window_ontouchmove_Setter";
+  ontouchmove_Setter_(mthis, __arg_0) => ontouchmove_Setter(mthis, __arg_0);
+
+  static ontouchstart_Getter(mthis) native "Window_ontouchstart_Getter";
+  ontouchstart_Getter_(mthis) => ontouchstart_Getter(mthis);
+
+  static ontouchstart_Setter(mthis, __arg_0) native "Window_ontouchstart_Setter";
+  ontouchstart_Setter_(mthis, __arg_0) => ontouchstart_Setter(mthis, __arg_0);
+
+  static ontransitionend_Getter(mthis) native "Window_ontransitionend_Getter";
+  ontransitionend_Getter_(mthis) => ontransitionend_Getter(mthis);
+
+  static ontransitionend_Setter(mthis, __arg_0) native "Window_ontransitionend_Setter";
+  ontransitionend_Setter_(mthis, __arg_0) => ontransitionend_Setter(mthis, __arg_0);
+
+  static onunload_Getter(mthis) native "Window_onunload_Getter";
+  onunload_Getter_(mthis) => onunload_Getter(mthis);
+
+  static onunload_Setter(mthis, __arg_0) native "Window_onunload_Setter";
+  onunload_Setter_(mthis, __arg_0) => onunload_Setter(mthis, __arg_0);
+
+  static onvolumechange_Getter(mthis) native "Window_onvolumechange_Getter";
+  onvolumechange_Getter_(mthis) => onvolumechange_Getter(mthis);
+
+  static onvolumechange_Setter(mthis, __arg_0) native "Window_onvolumechange_Setter";
+  onvolumechange_Setter_(mthis, __arg_0) => onvolumechange_Setter(mthis, __arg_0);
+
+  static onwaiting_Getter(mthis) native "Window_onwaiting_Getter";
+  onwaiting_Getter_(mthis) => onwaiting_Getter(mthis);
+
+  static onwaiting_Setter(mthis, __arg_0) native "Window_onwaiting_Setter";
+  onwaiting_Setter_(mthis, __arg_0) => onwaiting_Setter(mthis, __arg_0);
+
+  static onwebkitanimationend_Getter(mthis) native "Window_onwebkitanimationend_Getter";
+  onwebkitanimationend_Getter_(mthis) => onwebkitanimationend_Getter(mthis);
+
+  static onwebkitanimationend_Setter(mthis, __arg_0) native "Window_onwebkitanimationend_Setter";
+  onwebkitanimationend_Setter_(mthis, __arg_0) => onwebkitanimationend_Setter(mthis, __arg_0);
+
+  static onwebkitanimationiteration_Getter(mthis) native "Window_onwebkitanimationiteration_Getter";
+  onwebkitanimationiteration_Getter_(mthis) => onwebkitanimationiteration_Getter(mthis);
+
+  static onwebkitanimationiteration_Setter(mthis, __arg_0) native "Window_onwebkitanimationiteration_Setter";
+  onwebkitanimationiteration_Setter_(mthis, __arg_0) => onwebkitanimationiteration_Setter(mthis, __arg_0);
+
+  static onwebkitanimationstart_Getter(mthis) native "Window_onwebkitanimationstart_Getter";
+  onwebkitanimationstart_Getter_(mthis) => onwebkitanimationstart_Getter(mthis);
+
+  static onwebkitanimationstart_Setter(mthis, __arg_0) native "Window_onwebkitanimationstart_Setter";
+  onwebkitanimationstart_Setter_(mthis, __arg_0) => onwebkitanimationstart_Setter(mthis, __arg_0);
+
+  static onwebkittransitionend_Getter(mthis) native "Window_onwebkittransitionend_Getter";
+  onwebkittransitionend_Getter_(mthis) => onwebkittransitionend_Getter(mthis);
+
+  static onwebkittransitionend_Setter(mthis, __arg_0) native "Window_onwebkittransitionend_Setter";
+  onwebkittransitionend_Setter_(mthis, __arg_0) => onwebkittransitionend_Setter(mthis, __arg_0);
+
+  static onwheel_Getter(mthis) native "Window_onwheel_Getter";
+  onwheel_Getter_(mthis) => onwheel_Getter(mthis);
+
+  static onwheel_Setter(mthis, __arg_0) native "Window_onwheel_Setter";
+  onwheel_Setter_(mthis, __arg_0) => onwheel_Setter(mthis, __arg_0);
+
+  static openDatabase_Callback_2(mthis, __arg_0, __arg_1) native "Window_openDatabase_Callback";
+  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => openDatabase_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_openDatabase_Callback";
+  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_openDatabase_Callback";
+  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_openDatabase_Callback";
+  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_openDatabase_Callback";
+  openDatabase_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "Window_openDatabase_Callback";
+  openDatabase_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static open_Callback_0(mthis) native "Window_open_Callback";
+  open_Callback_0_(mthis) => open_Callback_0(mthis);
+
+  static open_Callback_1(mthis, __arg_0) native "Window_open_Callback";
+  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+
+  static open_Callback_2(mthis, __arg_0, __arg_1) native "Window_open_Callback";
+  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+
+  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_open_Callback";
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_open_Callback";
+  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_open_Callback";
+  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static opener_Getter(mthis) native "Window_opener_Getter";
+  opener_Getter_(mthis) => opener_Getter(mthis);
 
-  static opener_Setter(mthis, value) native "Window_opener_Setter";
+  static opener_Setter(mthis, __arg_0) native "Window_opener_Setter";
+  opener_Setter_(mthis, __arg_0) => opener_Setter(mthis, __arg_0);
 
   static orientation_Getter(mthis) native "Window_orientation_Getter";
+  orientation_Getter_(mthis) => orientation_Getter(mthis);
 
   static outerHeight_Getter(mthis) native "Window_outerHeight_Getter";
+  outerHeight_Getter_(mthis) => outerHeight_Getter(mthis);
 
   static outerWidth_Getter(mthis) native "Window_outerWidth_Getter";
+  outerWidth_Getter_(mthis) => outerWidth_Getter(mthis);
 
   static pageXOffset_Getter(mthis) native "Window_pageXOffset_Getter";
+  pageXOffset_Getter_(mthis) => pageXOffset_Getter(mthis);
 
   static pageYOffset_Getter(mthis) native "Window_pageYOffset_Getter";
+  pageYOffset_Getter_(mthis) => pageYOffset_Getter(mthis);
 
   static parent_Getter(mthis) native "Window_parent_Getter";
+  parent_Getter_(mthis) => parent_Getter(mthis);
 
   static performance_Getter(mthis) native "Window_performance_Getter";
+  performance_Getter_(mthis) => performance_Getter(mthis);
 
-  static screen_Getter(mthis) native "Window_screen_Getter";
+  static personalbar_Getter(mthis) native "Window_personalbar_Getter";
+  personalbar_Getter_(mthis) => personalbar_Getter(mthis);
+
+  static postMessage_Callback_0(mthis) native "Window_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "Window_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "Window_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static postMessage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_postMessage_Callback";
+  postMessage_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => postMessage_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static print_Callback_0(mthis) native "Window_print_Callback";
+  print_Callback_0_(mthis) => print_Callback_0(mthis);
+
+  static print_Callback_1(mthis, __arg_0) native "Window_print_Callback";
+  print_Callback_1_(mthis, __arg_0) => print_Callback_1(mthis, __arg_0);
+
+  static print_Callback_2(mthis, __arg_0, __arg_1) native "Window_print_Callback";
+  print_Callback_2_(mthis, __arg_0, __arg_1) => print_Callback_2(mthis, __arg_0, __arg_1);
+
+  static releaseEvents_Callback_0(mthis) native "Window_releaseEvents_Callback";
+  releaseEvents_Callback_0_(mthis) => releaseEvents_Callback_0(mthis);
+
+  static releaseEvents_Callback_1(mthis, __arg_0) native "Window_releaseEvents_Callback";
+  releaseEvents_Callback_1_(mthis, __arg_0) => releaseEvents_Callback_1(mthis, __arg_0);
+
+  static releaseEvents_Callback_2(mthis, __arg_0, __arg_1) native "Window_releaseEvents_Callback";
+  releaseEvents_Callback_2_(mthis, __arg_0, __arg_1) => releaseEvents_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestAnimationFrame_Callback_0(mthis) native "Window_requestAnimationFrame_Callback";
+  requestAnimationFrame_Callback_0_(mthis) => requestAnimationFrame_Callback_0(mthis);
+
+  static requestAnimationFrame_Callback_1(mthis, __arg_0) native "Window_requestAnimationFrame_Callback";
+  requestAnimationFrame_Callback_1_(mthis, __arg_0) => requestAnimationFrame_Callback_1(mthis, __arg_0);
+
+  static requestAnimationFrame_Callback_2(mthis, __arg_0, __arg_1) native "Window_requestAnimationFrame_Callback";
+  requestAnimationFrame_Callback_2_(mthis, __arg_0, __arg_1) => requestAnimationFrame_Callback_2(mthis, __arg_0, __arg_1);
+
+  static requestAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_requestAnimationFrame_Callback";
+  requestAnimationFrame_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => requestAnimationFrame_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static resizeBy_Callback_0(mthis) native "Window_resizeBy_Callback";
+  resizeBy_Callback_0_(mthis) => resizeBy_Callback_0(mthis);
+
+  static resizeBy_Callback_1(mthis, __arg_0) native "Window_resizeBy_Callback";
+  resizeBy_Callback_1_(mthis, __arg_0) => resizeBy_Callback_1(mthis, __arg_0);
+
+  static resizeBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_resizeBy_Callback";
+  resizeBy_Callback_2_(mthis, __arg_0, __arg_1) => resizeBy_Callback_2(mthis, __arg_0, __arg_1);
+
+  static resizeBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_resizeBy_Callback";
+  resizeBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => resizeBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static resizeBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_resizeBy_Callback";
+  resizeBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => resizeBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static resizeTo_Callback_0(mthis) native "Window_resizeTo_Callback";
+  resizeTo_Callback_0_(mthis) => resizeTo_Callback_0(mthis);
+
+  static resizeTo_Callback_1(mthis, __arg_0) native "Window_resizeTo_Callback";
+  resizeTo_Callback_1_(mthis, __arg_0) => resizeTo_Callback_1(mthis, __arg_0);
+
+  static resizeTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_resizeTo_Callback";
+  resizeTo_Callback_2_(mthis, __arg_0, __arg_1) => resizeTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static resizeTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_resizeTo_Callback";
+  resizeTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => resizeTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static resizeTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_resizeTo_Callback";
+  resizeTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => resizeTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static screenLeft_Getter(mthis) native "Window_screenLeft_Getter";
+  screenLeft_Getter_(mthis) => screenLeft_Getter(mthis);
 
   static screenTop_Getter(mthis) native "Window_screenTop_Getter";
+  screenTop_Getter_(mthis) => screenTop_Getter(mthis);
 
   static screenX_Getter(mthis) native "Window_screenX_Getter";
+  screenX_Getter_(mthis) => screenX_Getter(mthis);
 
   static screenY_Getter(mthis) native "Window_screenY_Getter";
+  screenY_Getter_(mthis) => screenY_Getter(mthis);
+
+  static screen_Getter(mthis) native "Window_screen_Getter";
+  screen_Getter_(mthis) => screen_Getter(mthis);
+
+  static scrollBy_Callback_0(mthis) native "Window_scrollBy_Callback";
+  scrollBy_Callback_0_(mthis) => scrollBy_Callback_0(mthis);
+
+  static scrollBy_Callback_1(mthis, __arg_0) native "Window_scrollBy_Callback";
+  scrollBy_Callback_1_(mthis, __arg_0) => scrollBy_Callback_1(mthis, __arg_0);
+
+  static scrollBy_Callback_2(mthis, __arg_0, __arg_1) native "Window_scrollBy_Callback";
+  scrollBy_Callback_2_(mthis, __arg_0, __arg_1) => scrollBy_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scrollBy_Callback";
+  scrollBy_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollBy_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scrollBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scrollBy_Callback";
+  scrollBy_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scrollBy_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scrollBy_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scrollBy_Callback";
+  scrollBy_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scrollBy_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static scrollTo_Callback_0(mthis) native "Window_scrollTo_Callback";
+  scrollTo_Callback_0_(mthis) => scrollTo_Callback_0(mthis);
+
+  static scrollTo_Callback_1(mthis, __arg_0) native "Window_scrollTo_Callback";
+  scrollTo_Callback_1_(mthis, __arg_0) => scrollTo_Callback_1(mthis, __arg_0);
+
+  static scrollTo_Callback_2(mthis, __arg_0, __arg_1) native "Window_scrollTo_Callback";
+  scrollTo_Callback_2_(mthis, __arg_0, __arg_1) => scrollTo_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scrollTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scrollTo_Callback";
+  scrollTo_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scrollTo_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scrollTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scrollTo_Callback";
+  scrollTo_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scrollTo_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scrollTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scrollTo_Callback";
+  scrollTo_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scrollTo_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static scrollX_Getter(mthis) native "Window_scrollX_Getter";
+  scrollX_Getter_(mthis) => scrollX_Getter(mthis);
 
   static scrollY_Getter(mthis) native "Window_scrollY_Getter";
+  scrollY_Getter_(mthis) => scrollY_Getter(mthis);
+
+  static scroll_Callback_0(mthis) native "Window_scroll_Callback";
+  scroll_Callback_0_(mthis) => scroll_Callback_0(mthis);
+
+  static scroll_Callback_1(mthis, __arg_0) native "Window_scroll_Callback";
+  scroll_Callback_1_(mthis, __arg_0) => scroll_Callback_1(mthis, __arg_0);
+
+  static scroll_Callback_2(mthis, __arg_0, __arg_1) native "Window_scroll_Callback";
+  scroll_Callback_2_(mthis, __arg_0, __arg_1) => scroll_Callback_2(mthis, __arg_0, __arg_1);
+
+  static scroll_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_scroll_Callback";
+  scroll_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => scroll_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static scroll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_scroll_Callback";
+  scroll_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => scroll_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static scroll_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_scroll_Callback";
+  scroll_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => scroll_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static scrollbars_Getter(mthis) native "Window_scrollbars_Getter";
+  scrollbars_Getter_(mthis) => scrollbars_Getter(mthis);
 
   static self_Getter(mthis) native "Window_self_Getter";
+  self_Getter_(mthis) => self_Getter(mthis);
 
   static sessionStorage_Getter(mthis) native "Window_sessionStorage_Getter";
+  sessionStorage_Getter_(mthis) => sessionStorage_Getter(mthis);
+
+  static setInterval_Callback_0(mthis) native "Window_setInterval_Callback";
+  setInterval_Callback_0_(mthis) => setInterval_Callback_0(mthis);
+
+  static setInterval_Callback_1(mthis, __arg_0) native "Window_setInterval_Callback";
+  setInterval_Callback_1_(mthis, __arg_0) => setInterval_Callback_1(mthis, __arg_0);
+
+  static setInterval_Callback_2(mthis, __arg_0, __arg_1) native "Window_setInterval_Callback";
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => setInterval_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_setInterval_Callback";
+  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_setInterval_Callback";
+  setInterval_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setTimeout_Callback_0(mthis) native "Window_setTimeout_Callback";
+  setTimeout_Callback_0_(mthis) => setTimeout_Callback_0(mthis);
+
+  static setTimeout_Callback_1(mthis, __arg_0) native "Window_setTimeout_Callback";
+  setTimeout_Callback_1_(mthis, __arg_0) => setTimeout_Callback_1(mthis, __arg_0);
+
+  static setTimeout_Callback_2(mthis, __arg_0, __arg_1) native "Window_setTimeout_Callback";
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => setTimeout_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_setTimeout_Callback";
+  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_setTimeout_Callback";
+  setTimeout_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static showModalDialog_Callback_0(mthis) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_0_(mthis) => showModalDialog_Callback_0(mthis);
+
+  static showModalDialog_Callback_1(mthis, __arg_0) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_1_(mthis, __arg_0) => showModalDialog_Callback_1(mthis, __arg_0);
+
+  static showModalDialog_Callback_2(mthis, __arg_0, __arg_1) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_2_(mthis, __arg_0, __arg_1) => showModalDialog_Callback_2(mthis, __arg_0, __arg_1);
+
+  static showModalDialog_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => showModalDialog_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static showModalDialog_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => showModalDialog_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static showModalDialog_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_showModalDialog_Callback";
+  showModalDialog_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => showModalDialog_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
 
   static speechSynthesis_Getter(mthis) native "Window_speechSynthesis_Getter";
+  speechSynthesis_Getter_(mthis) => speechSynthesis_Getter(mthis);
 
   static status_Getter(mthis) native "Window_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
-  static status_Setter(mthis, value) native "Window_status_Setter";
+  static status_Setter(mthis, __arg_0) native "Window_status_Setter";
+  status_Setter_(mthis, __arg_0) => status_Setter(mthis, __arg_0);
 
   static statusbar_Getter(mthis) native "Window_statusbar_Getter";
+  statusbar_Getter_(mthis) => statusbar_Getter(mthis);
+
+  static stop_Callback_0(mthis) native "Window_stop_Callback";
+  stop_Callback_0_(mthis) => stop_Callback_0(mthis);
+
+  static stop_Callback_1(mthis, __arg_0) native "Window_stop_Callback";
+  stop_Callback_1_(mthis, __arg_0) => stop_Callback_1(mthis, __arg_0);
+
+  static stop_Callback_2(mthis, __arg_0, __arg_1) native "Window_stop_Callback";
+  stop_Callback_2_(mthis, __arg_0, __arg_1) => stop_Callback_2(mthis, __arg_0, __arg_1);
 
   static styleMedia_Getter(mthis) native "Window_styleMedia_Getter";
+  styleMedia_Getter_(mthis) => styleMedia_Getter(mthis);
 
   static toolbar_Getter(mthis) native "Window_toolbar_Getter";
+  toolbar_Getter_(mthis) => toolbar_Getter(mthis);
 
   static top_Getter(mthis) native "Window_top_Getter";
+  top_Getter_(mthis) => top_Getter(mthis);
+
+  static webkitRequestFileSystem_Callback_1(mthis, __arg_0) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => webkitRequestFileSystem_Callback_1(mthis, __arg_0);
+
+  static webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "Window_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static webkitResolveLocalFileSystemURL_Callback_0(mthis) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => webkitResolveLocalFileSystemURL_Callback_0(mthis);
+
+  static webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0);
+
+  static webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "Window_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static webkitStorageInfo_Getter(mthis) native "Window_webkitStorageInfo_Getter";
+  webkitStorageInfo_Getter_(mthis) => webkitStorageInfo_Getter(mthis);
 
   static window_Getter(mthis) native "Window_window_Getter";
+  window_Getter_(mthis) => window_Getter(mthis);
 
-  static $__getter___Callback_1(mthis, index_OR_name) native "Window___getter___Callback";
-
-  static alert_Callback_1(mthis, message) native "Window_alert_Callback";
-
-  static alert_Callback(mthis) native "Window_alert_Callback";
-
-  static cancelAnimationFrame_Callback_1(mthis, id) native "Window_cancelAnimationFrame_Callback";
-
-  static close_Callback(mthis) native "Window_close_Callback";
-
-  static confirm_Callback_1(mthis, message) native "Window_confirm_Callback";
-
-  static confirm_Callback(mthis) native "Window_confirm_Callback";
-
-  static find_Callback_7(mthis, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog) native "Window_find_Callback";
-
-  static getComputedStyle_Callback_2(mthis, element, pseudoElement) native "Window_getComputedStyle_Callback";
-
-  static getMatchedCSSRules_Callback_2(mthis, element, pseudoElement) native "Window_getMatchedCSSRules_Callback";
-
-  static getSelection_Callback(mthis) native "Window_getSelection_Callback";
-
-  static matchMedia_Callback_1(mthis, query) native "Window_matchMedia_Callback";
-
-  static moveBy_Callback_2(mthis, x, y) native "Window_moveBy_Callback";
-
-  static moveTo_Callback_2(mthis, x, y) native "Window_moveTo_Callback";
-
-  static open_Callback_3(mthis, url, name, options) native "Window_open_Callback";
-
-  static openDatabase_Callback_5(mthis, name, version, displayName, estimatedSize, creationCallback) native "Window_openDatabase_Callback";
-
-  static openDatabase_Callback_4(mthis, name, version, displayName, estimatedSize) native "Window_openDatabase_Callback";
-
-  static postMessage_Callback_3(mthis, message, targetOrigin, transfer) native "Window_postMessage_Callback";
-
-  static print_Callback(mthis) native "Window_print_Callback";
-
-  static requestAnimationFrame_Callback_1(mthis, callback) native "Window_requestAnimationFrame_Callback";
-
-  static resizeBy_Callback_2(mthis, x, y) native "Window_resizeBy_Callback";
-
-  static resizeTo_Callback_2(mthis, width, height) native "Window_resizeTo_Callback";
-
-  static scroll_Callback_3(mthis, x, y, scrollOptions) native "Window_scroll_Callback";
-
-  static scroll_Callback_2(mthis, x, y) native "Window_scroll_Callback";
-
-  static scrollBy_Callback_3(mthis, x, y, scrollOptions) native "Window_scrollBy_Callback";
-
-  static scrollBy_Callback_2(mthis, x, y) native "Window_scrollBy_Callback";
-
-  static scrollTo_Callback_3(mthis, x, y, scrollOptions) native "Window_scrollTo_Callback";
-
-  static scrollTo_Callback_2(mthis, x, y) native "Window_scrollTo_Callback";
-
-  static showModalDialog_Callback_3(mthis, url, dialogArgs, featureArgs) native "Window_showModalDialog_Callback";
-
-  static stop_Callback(mthis) native "Window_stop_Callback";
-
-  static webkitRequestFileSystem_Callback_4(mthis, type, size, successCallback, errorCallback) native "Window_webkitRequestFileSystem_Callback";
-
-  static webkitRequestFileSystem_Callback_3(mthis, type, size, successCallback) native "Window_webkitRequestFileSystem_Callback";
-
-  static webkitResolveLocalFileSystemURL_Callback_3(mthis, url, successCallback, errorCallback) native "Window_webkitResolveLocalFileSystemURL_Callback";
-
-  static webkitResolveLocalFileSystemURL_Callback_2(mthis, url, successCallback) native "Window_webkitResolveLocalFileSystemURL_Callback";
-
-  static atob_Callback_1(mthis, string) native "Window_atob_Callback";
-
-  static btoa_Callback_1(mthis, string) native "Window_btoa_Callback";
-
-  static clearInterval_Callback_1(mthis, handle) native "Window_clearInterval_Callback";
-
-  static clearTimeout_Callback_1(mthis, handle) native "Window_clearTimeout_Callback";
-
-  static setInterval_Callback_2(mthis, handler, timeout) native "Window_setInterval_Callback";
-
-  static setTimeout_Callback_2(mthis, handler, timeout) native "Window_setTimeout_Callback";
 }
 
-class BlinkWorker {
-  static constructorCallback_1(scriptUrl) native "Worker_constructorCallback";
+class BlinkWorker extends BlinkEventTarget {
+  static final instance = new BlinkWorker();
 
-  static postMessage_Callback_2(mthis, message, transfer) native "Worker_postMessage_Callback";
+  static constructorCallback_0() native "Worker_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static terminate_Callback(mthis) native "Worker_terminate_Callback";
+  static constructorCallback_1(__arg_0) native "Worker_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "Worker_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "Worker_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static onerror_Getter(mthis) native "Worker_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "Worker_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onmessage_Getter(mthis) native "Worker_onmessage_Getter";
+  onmessage_Getter_(mthis) => onmessage_Getter(mthis);
+
+  static onmessage_Setter(mthis, __arg_0) native "Worker_onmessage_Setter";
+  onmessage_Setter_(mthis, __arg_0) => onmessage_Setter(mthis, __arg_0);
+
+  static postMessage_Callback_0(mthis) native "Worker_postMessage_Callback";
+  postMessage_Callback_0_(mthis) => postMessage_Callback_0(mthis);
+
+  static postMessage_Callback_1(mthis, __arg_0) native "Worker_postMessage_Callback";
+  postMessage_Callback_1_(mthis, __arg_0) => postMessage_Callback_1(mthis, __arg_0);
+
+  static postMessage_Callback_2(mthis, __arg_0, __arg_1) native "Worker_postMessage_Callback";
+  postMessage_Callback_2_(mthis, __arg_0, __arg_1) => postMessage_Callback_2(mthis, __arg_0, __arg_1);
+
+  static postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "Worker_postMessage_Callback";
+  postMessage_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => postMessage_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "Worker_postMessage_Callback";
+  postMessage_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => postMessage_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static terminate_Callback_0(mthis) native "Worker_terminate_Callback";
+  terminate_Callback_0_(mthis) => terminate_Callback_0(mthis);
+
+  static terminate_Callback_1(mthis, __arg_0) native "Worker_terminate_Callback";
+  terminate_Callback_1_(mthis, __arg_0) => terminate_Callback_1(mthis, __arg_0);
+
+  static terminate_Callback_2(mthis, __arg_0, __arg_1) native "Worker_terminate_Callback";
+  terminate_Callback_2_(mthis, __arg_0, __arg_1) => terminate_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkWorkerConsole {}
+class BlinkWorkerConsole extends BlinkConsoleBase {
+  static final instance = new BlinkWorkerConsole();
 
-class BlinkWorkerLocation {}
+}
 
-class BlinkWorkerNavigator {}
+class BlinkWorkerGlobalScope extends BlinkEventTarget {
+  static final instance = new BlinkWorkerGlobalScope();
+
+  static atob_Callback_0(mthis) native "WorkerGlobalScope_atob_Callback";
+  atob_Callback_0_(mthis) => atob_Callback_0(mthis);
+
+  static atob_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_atob_Callback";
+  atob_Callback_1_(mthis, __arg_0) => atob_Callback_1(mthis, __arg_0);
+
+  static atob_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_atob_Callback";
+  atob_Callback_2_(mthis, __arg_0, __arg_1) => atob_Callback_2(mthis, __arg_0, __arg_1);
+
+  static atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_atob_Callback";
+  atob_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => atob_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static btoa_Callback_0(mthis) native "WorkerGlobalScope_btoa_Callback";
+  btoa_Callback_0_(mthis) => btoa_Callback_0(mthis);
+
+  static btoa_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_btoa_Callback";
+  btoa_Callback_1_(mthis, __arg_0) => btoa_Callback_1(mthis, __arg_0);
+
+  static btoa_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_btoa_Callback";
+  btoa_Callback_2_(mthis, __arg_0, __arg_1) => btoa_Callback_2(mthis, __arg_0, __arg_1);
+
+  static btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_btoa_Callback";
+  btoa_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => btoa_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearInterval_Callback_0(mthis) native "WorkerGlobalScope_clearInterval_Callback";
+  clearInterval_Callback_0_(mthis) => clearInterval_Callback_0(mthis);
+
+  static clearInterval_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_clearInterval_Callback";
+  clearInterval_Callback_1_(mthis, __arg_0) => clearInterval_Callback_1(mthis, __arg_0);
+
+  static clearInterval_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_clearInterval_Callback";
+  clearInterval_Callback_2_(mthis, __arg_0, __arg_1) => clearInterval_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_clearInterval_Callback";
+  clearInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static clearTimeout_Callback_0(mthis) native "WorkerGlobalScope_clearTimeout_Callback";
+  clearTimeout_Callback_0_(mthis) => clearTimeout_Callback_0(mthis);
+
+  static clearTimeout_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_clearTimeout_Callback";
+  clearTimeout_Callback_1_(mthis, __arg_0) => clearTimeout_Callback_1(mthis, __arg_0);
+
+  static clearTimeout_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_clearTimeout_Callback";
+  clearTimeout_Callback_2_(mthis, __arg_0, __arg_1) => clearTimeout_Callback_2(mthis, __arg_0, __arg_1);
+
+  static clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_clearTimeout_Callback";
+  clearTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => clearTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static close_Callback_0(mthis) native "WorkerGlobalScope_close_Callback";
+  close_Callback_0_(mthis) => close_Callback_0(mthis);
+
+  static close_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_close_Callback";
+  close_Callback_1_(mthis, __arg_0) => close_Callback_1(mthis, __arg_0);
+
+  static close_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_close_Callback";
+  close_Callback_2_(mthis, __arg_0, __arg_1) => close_Callback_2(mthis, __arg_0, __arg_1);
+
+  static console_Getter(mthis) native "WorkerGlobalScope_console_Getter";
+  console_Getter_(mthis) => console_Getter(mthis);
+
+  static createImageBitmap_Callback_0(mthis) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_0_(mthis) => createImageBitmap_Callback_0(mthis);
+
+  static createImageBitmap_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_1_(mthis, __arg_0) => createImageBitmap_Callback_1(mthis, __arg_0);
+
+  static createImageBitmap_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_2_(mthis, __arg_0, __arg_1) => createImageBitmap_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createImageBitmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createImageBitmap_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createImageBitmap_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createImageBitmap_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createImageBitmap_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => createImageBitmap_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static createImageBitmap_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => createImageBitmap_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static createImageBitmap_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WorkerGlobalScope_createImageBitmap_Callback";
+  createImageBitmap_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => createImageBitmap_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static crypto_Getter(mthis) native "WorkerGlobalScope_crypto_Getter";
+  crypto_Getter_(mthis) => crypto_Getter(mthis);
+
+  static importScripts_Callback_0(mthis) native "WorkerGlobalScope_importScripts_Callback";
+  importScripts_Callback_0_(mthis) => importScripts_Callback_0(mthis);
+
+  static importScripts_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_importScripts_Callback";
+  importScripts_Callback_1_(mthis, __arg_0) => importScripts_Callback_1(mthis, __arg_0);
+
+  static importScripts_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_importScripts_Callback";
+  importScripts_Callback_2_(mthis, __arg_0, __arg_1) => importScripts_Callback_2(mthis, __arg_0, __arg_1);
+
+  static importScripts_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_importScripts_Callback";
+  importScripts_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importScripts_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static indexedDB_Getter(mthis) native "WorkerGlobalScope_indexedDB_Getter";
+  indexedDB_Getter_(mthis) => indexedDB_Getter(mthis);
+
+  static location_Getter(mthis) native "WorkerGlobalScope_location_Getter";
+  location_Getter_(mthis) => location_Getter(mthis);
+
+  static navigator_Getter(mthis) native "WorkerGlobalScope_navigator_Getter";
+  navigator_Getter_(mthis) => navigator_Getter(mthis);
+
+  static onerror_Getter(mthis) native "WorkerGlobalScope_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "WorkerGlobalScope_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static openDatabaseSync_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_2_(mthis, __arg_0, __arg_1) => openDatabaseSync_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openDatabaseSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openDatabaseSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openDatabaseSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openDatabaseSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static openDatabaseSync_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => openDatabaseSync_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static openDatabaseSync_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => openDatabaseSync_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static openDatabaseSync_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WorkerGlobalScope_openDatabaseSync_Callback";
+  openDatabaseSync_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => openDatabaseSync_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static openDatabase_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_2_(mthis, __arg_0, __arg_1) => openDatabase_Callback_2(mthis, __arg_0, __arg_1);
+
+  static openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => openDatabase_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => openDatabase_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => openDatabase_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => openDatabase_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "WorkerGlobalScope_openDatabase_Callback";
+  openDatabase_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => openDatabase_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static performance_Getter(mthis) native "WorkerGlobalScope_performance_Getter";
+  performance_Getter_(mthis) => performance_Getter(mthis);
+
+  static self_Getter(mthis) native "WorkerGlobalScope_self_Getter";
+  self_Getter_(mthis) => self_Getter(mthis);
+
+  static setInterval_Callback_0(mthis) native "WorkerGlobalScope_setInterval_Callback";
+  setInterval_Callback_0_(mthis) => setInterval_Callback_0(mthis);
+
+  static setInterval_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_setInterval_Callback";
+  setInterval_Callback_1_(mthis, __arg_0) => setInterval_Callback_1(mthis, __arg_0);
+
+  static setInterval_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_setInterval_Callback";
+  setInterval_Callback_2_(mthis, __arg_0, __arg_1) => setInterval_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_setInterval_Callback";
+  setInterval_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setInterval_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_setInterval_Callback";
+  setInterval_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setInterval_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setTimeout_Callback_0(mthis) native "WorkerGlobalScope_setTimeout_Callback";
+  setTimeout_Callback_0_(mthis) => setTimeout_Callback_0(mthis);
+
+  static setTimeout_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_setTimeout_Callback";
+  setTimeout_Callback_1_(mthis, __arg_0) => setTimeout_Callback_1(mthis, __arg_0);
+
+  static setTimeout_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_setTimeout_Callback";
+  setTimeout_Callback_2_(mthis, __arg_0, __arg_1) => setTimeout_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_setTimeout_Callback";
+  setTimeout_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setTimeout_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_setTimeout_Callback";
+  setTimeout_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setTimeout_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitRequestFileSystemSync_Callback_0(mthis) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
+  webkitRequestFileSystemSync_Callback_0_(mthis) => webkitRequestFileSystemSync_Callback_0(mthis);
+
+  static webkitRequestFileSystemSync_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
+  webkitRequestFileSystemSync_Callback_1_(mthis, __arg_0) => webkitRequestFileSystemSync_Callback_1(mthis, __arg_0);
+
+  static webkitRequestFileSystemSync_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
+  webkitRequestFileSystemSync_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystemSync_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitRequestFileSystemSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
+  webkitRequestFileSystemSync_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystemSync_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitRequestFileSystemSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitRequestFileSystemSync_Callback";
+  webkitRequestFileSystemSync_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystemSync_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitRequestFileSystem_Callback_0(mthis) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_0_(mthis) => webkitRequestFileSystem_Callback_0(mthis);
+
+  static webkitRequestFileSystem_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_1_(mthis, __arg_0) => webkitRequestFileSystem_Callback_1(mthis, __arg_0);
+
+  static webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_2_(mthis, __arg_0, __arg_1) => webkitRequestFileSystem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitRequestFileSystem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitRequestFileSystem_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitRequestFileSystem_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "WorkerGlobalScope_webkitRequestFileSystem_Callback";
+  webkitRequestFileSystem_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => webkitRequestFileSystem_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static webkitResolveLocalFileSystemSyncURL_Callback_0(mthis) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
+  webkitResolveLocalFileSystemSyncURL_Callback_0_(mthis) => webkitResolveLocalFileSystemSyncURL_Callback_0(mthis);
+
+  static webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
+  webkitResolveLocalFileSystemSyncURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemSyncURL_Callback_1(mthis, __arg_0);
+
+  static webkitResolveLocalFileSystemSyncURL_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
+  webkitResolveLocalFileSystemSyncURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemSyncURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitResolveLocalFileSystemSyncURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitResolveLocalFileSystemSyncURL_Callback";
+  webkitResolveLocalFileSystemSyncURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemSyncURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitResolveLocalFileSystemURL_Callback_0(mthis) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_0_(mthis) => webkitResolveLocalFileSystemURL_Callback_0(mthis);
+
+  static webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_1_(mthis, __arg_0) => webkitResolveLocalFileSystemURL_Callback_1(mthis, __arg_0);
+
+  static webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_2_(mthis, __arg_0, __arg_1) => webkitResolveLocalFileSystemURL_Callback_2(mthis, __arg_0, __arg_1);
+
+  static webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => webkitResolveLocalFileSystemURL_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => webkitResolveLocalFileSystemURL_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "WorkerGlobalScope_webkitResolveLocalFileSystemURL_Callback";
+  webkitResolveLocalFileSystemURL_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => webkitResolveLocalFileSystemURL_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+}
+
+class BlinkWorkerLocation {
+  static final instance = new BlinkWorkerLocation();
+
+  static hash_Getter(mthis) native "WorkerLocation_hash_Getter";
+  hash_Getter_(mthis) => hash_Getter(mthis);
+
+  static host_Getter(mthis) native "WorkerLocation_host_Getter";
+  host_Getter_(mthis) => host_Getter(mthis);
+
+  static hostname_Getter(mthis) native "WorkerLocation_hostname_Getter";
+  hostname_Getter_(mthis) => hostname_Getter(mthis);
+
+  static href_Getter(mthis) native "WorkerLocation_href_Getter";
+  href_Getter_(mthis) => href_Getter(mthis);
+
+  static origin_Getter(mthis) native "WorkerLocation_origin_Getter";
+  origin_Getter_(mthis) => origin_Getter(mthis);
+
+  static pathname_Getter(mthis) native "WorkerLocation_pathname_Getter";
+  pathname_Getter_(mthis) => pathname_Getter(mthis);
+
+  static port_Getter(mthis) native "WorkerLocation_port_Getter";
+  port_Getter_(mthis) => port_Getter(mthis);
+
+  static protocol_Getter(mthis) native "WorkerLocation_protocol_Getter";
+  protocol_Getter_(mthis) => protocol_Getter(mthis);
+
+  static search_Getter(mthis) native "WorkerLocation_search_Getter";
+  search_Getter_(mthis) => search_Getter(mthis);
+
+  static toString_Callback_0(mthis) native "WorkerLocation_toString_Callback";
+  toString_Callback_0_(mthis) => toString_Callback_0(mthis);
+
+  static toString_Callback_1(mthis, __arg_0) native "WorkerLocation_toString_Callback";
+  toString_Callback_1_(mthis, __arg_0) => toString_Callback_1(mthis, __arg_0);
+
+  static toString_Callback_2(mthis, __arg_0, __arg_1) native "WorkerLocation_toString_Callback";
+  toString_Callback_2_(mthis, __arg_0, __arg_1) => toString_Callback_2(mthis, __arg_0, __arg_1);
+
+}
+
+class BlinkWorkerNavigator {
+  static final instance = new BlinkWorkerNavigator();
+
+  static appCodeName_Getter(mthis) native "WorkerNavigator_appCodeName_Getter";
+  appCodeName_Getter_(mthis) => appCodeName_Getter(mthis);
+
+  static appName_Getter(mthis) native "WorkerNavigator_appName_Getter";
+  appName_Getter_(mthis) => appName_Getter(mthis);
+
+  static appVersion_Getter(mthis) native "WorkerNavigator_appVersion_Getter";
+  appVersion_Getter_(mthis) => appVersion_Getter(mthis);
+
+  static connection_Getter(mthis) native "WorkerNavigator_connection_Getter";
+  connection_Getter_(mthis) => connection_Getter(mthis);
+
+  static dartEnabled_Getter(mthis) native "WorkerNavigator_dartEnabled_Getter";
+  dartEnabled_Getter_(mthis) => dartEnabled_Getter(mthis);
+
+  static hardwareConcurrency_Getter(mthis) native "WorkerNavigator_hardwareConcurrency_Getter";
+  hardwareConcurrency_Getter_(mthis) => hardwareConcurrency_Getter(mthis);
+
+  static onLine_Getter(mthis) native "WorkerNavigator_onLine_Getter";
+  onLine_Getter_(mthis) => onLine_Getter(mthis);
+
+  static platform_Getter(mthis) native "WorkerNavigator_platform_Getter";
+  platform_Getter_(mthis) => platform_Getter(mthis);
+
+  static product_Getter(mthis) native "WorkerNavigator_product_Getter";
+  product_Getter_(mthis) => product_Getter(mthis);
+
+  static userAgent_Getter(mthis) native "WorkerNavigator_userAgent_Getter";
+  userAgent_Getter_(mthis) => userAgent_Getter(mthis);
+
+  static webkitPersistentStorage_Getter(mthis) native "WorkerNavigator_webkitPersistentStorage_Getter";
+  webkitPersistentStorage_Getter_(mthis) => webkitPersistentStorage_Getter(mthis);
+
+  static webkitTemporaryStorage_Getter(mthis) native "WorkerNavigator_webkitTemporaryStorage_Getter";
+  webkitTemporaryStorage_Getter_(mthis) => webkitTemporaryStorage_Getter(mthis);
+
+}
 
 class BlinkWorkerPerformance {
-  static memory_Getter(mthis) native "WorkerPerformance_memory_Getter";
+  static final instance = new BlinkWorkerPerformance();
 
-  static now_Callback(mthis) native "WorkerPerformance_now_Callback";
+  static memory_Getter(mthis) native "WorkerPerformance_memory_Getter";
+  memory_Getter_(mthis) => memory_Getter(mthis);
+
+  static now_Callback_0(mthis) native "WorkerPerformance_now_Callback";
+  now_Callback_0_(mthis) => now_Callback_0(mthis);
+
+  static now_Callback_1(mthis, __arg_0) native "WorkerPerformance_now_Callback";
+  now_Callback_1_(mthis, __arg_0) => now_Callback_1(mthis, __arg_0);
+
+  static now_Callback_2(mthis, __arg_0, __arg_1) native "WorkerPerformance_now_Callback";
+  now_Callback_2_(mthis, __arg_0, __arg_1) => now_Callback_2(mthis, __arg_0, __arg_1);
+
 }
 
-class BlinkXMLDocument {}
+class BlinkXMLDocument extends BlinkDocument {
+  static final instance = new BlinkXMLDocument();
 
-class BlinkXMLHttpRequestEventTarget {}
+}
 
-class BlinkXMLHttpRequest {
-  static constructorCallback() native "XMLHttpRequest_constructorCallback";
+class BlinkXMLHttpRequest extends BlinkXMLHttpRequestEventTarget {
+  static final instance = new BlinkXMLHttpRequest();
+
+  static abort_Callback_0(mthis) native "XMLHttpRequest_abort_Callback";
+  abort_Callback_0_(mthis) => abort_Callback_0(mthis);
+
+  static abort_Callback_1(mthis, __arg_0) native "XMLHttpRequest_abort_Callback";
+  abort_Callback_1_(mthis, __arg_0) => abort_Callback_1(mthis, __arg_0);
+
+  static abort_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_abort_Callback";
+  abort_Callback_2_(mthis, __arg_0, __arg_1) => abort_Callback_2(mthis, __arg_0, __arg_1);
+
+  static constructorCallback_0() native "XMLHttpRequest_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "XMLHttpRequest_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "XMLHttpRequest_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static constructorCallback_3(__arg_0, __arg_1, __arg_2) native "XMLHttpRequest_constructorCallback";
+  constructorCallback_3_(__arg_0, __arg_1, __arg_2) => constructorCallback_3(__arg_0, __arg_1, __arg_2);
+
+  static getAllResponseHeaders_Callback_0(mthis) native "XMLHttpRequest_getAllResponseHeaders_Callback";
+  getAllResponseHeaders_Callback_0_(mthis) => getAllResponseHeaders_Callback_0(mthis);
+
+  static getAllResponseHeaders_Callback_1(mthis, __arg_0) native "XMLHttpRequest_getAllResponseHeaders_Callback";
+  getAllResponseHeaders_Callback_1_(mthis, __arg_0) => getAllResponseHeaders_Callback_1(mthis, __arg_0);
+
+  static getAllResponseHeaders_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_getAllResponseHeaders_Callback";
+  getAllResponseHeaders_Callback_2_(mthis, __arg_0, __arg_1) => getAllResponseHeaders_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getResponseHeader_Callback_0(mthis) native "XMLHttpRequest_getResponseHeader_Callback";
+  getResponseHeader_Callback_0_(mthis) => getResponseHeader_Callback_0(mthis);
+
+  static getResponseHeader_Callback_1(mthis, __arg_0) native "XMLHttpRequest_getResponseHeader_Callback";
+  getResponseHeader_Callback_1_(mthis, __arg_0) => getResponseHeader_Callback_1(mthis, __arg_0);
+
+  static getResponseHeader_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_getResponseHeader_Callback";
+  getResponseHeader_Callback_2_(mthis, __arg_0, __arg_1) => getResponseHeader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getResponseHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_getResponseHeader_Callback";
+  getResponseHeader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getResponseHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static onreadystatechange_Getter(mthis) native "XMLHttpRequest_onreadystatechange_Getter";
+  onreadystatechange_Getter_(mthis) => onreadystatechange_Getter(mthis);
+
+  static onreadystatechange_Setter(mthis, __arg_0) native "XMLHttpRequest_onreadystatechange_Setter";
+  onreadystatechange_Setter_(mthis, __arg_0) => onreadystatechange_Setter(mthis, __arg_0);
+
+  static open_Callback_0(mthis) native "XMLHttpRequest_open_Callback";
+  open_Callback_0_(mthis) => open_Callback_0(mthis);
+
+  static open_Callback_1(mthis, __arg_0) native "XMLHttpRequest_open_Callback";
+  open_Callback_1_(mthis, __arg_0) => open_Callback_1(mthis, __arg_0);
+
+  static open_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_open_Callback";
+  open_Callback_2_(mthis, __arg_0, __arg_1) => open_Callback_2(mthis, __arg_0, __arg_1);
+
+  static open_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_open_Callback";
+  open_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => open_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XMLHttpRequest_open_Callback";
+  open_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => open_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XMLHttpRequest_open_Callback";
+  open_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => open_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static open_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "XMLHttpRequest_open_Callback";
+  open_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => open_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static open_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "XMLHttpRequest_open_Callback";
+  open_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => open_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
+  static overrideMimeType_Callback_0(mthis) native "XMLHttpRequest_overrideMimeType_Callback";
+  overrideMimeType_Callback_0_(mthis) => overrideMimeType_Callback_0(mthis);
+
+  static overrideMimeType_Callback_1(mthis, __arg_0) native "XMLHttpRequest_overrideMimeType_Callback";
+  overrideMimeType_Callback_1_(mthis, __arg_0) => overrideMimeType_Callback_1(mthis, __arg_0);
+
+  static overrideMimeType_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_overrideMimeType_Callback";
+  overrideMimeType_Callback_2_(mthis, __arg_0, __arg_1) => overrideMimeType_Callback_2(mthis, __arg_0, __arg_1);
+
+  static overrideMimeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_overrideMimeType_Callback";
+  overrideMimeType_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => overrideMimeType_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static readyState_Getter(mthis) native "XMLHttpRequest_readyState_Getter";
-
-  static response_Getter(mthis) native "XMLHttpRequest_response_Getter";
+  readyState_Getter_(mthis) => readyState_Getter(mthis);
 
   static responseText_Getter(mthis) native "XMLHttpRequest_responseText_Getter";
+  responseText_Getter_(mthis) => responseText_Getter(mthis);
 
   static responseType_Getter(mthis) native "XMLHttpRequest_responseType_Getter";
+  responseType_Getter_(mthis) => responseType_Getter(mthis);
 
-  static responseType_Setter(mthis, value) native "XMLHttpRequest_responseType_Setter";
+  static responseType_Setter(mthis, __arg_0) native "XMLHttpRequest_responseType_Setter";
+  responseType_Setter_(mthis, __arg_0) => responseType_Setter(mthis, __arg_0);
 
   static responseURL_Getter(mthis) native "XMLHttpRequest_responseURL_Getter";
+  responseURL_Getter_(mthis) => responseURL_Getter(mthis);
 
   static responseXML_Getter(mthis) native "XMLHttpRequest_responseXML_Getter";
+  responseXML_Getter_(mthis) => responseXML_Getter(mthis);
 
-  static status_Getter(mthis) native "XMLHttpRequest_status_Getter";
+  static response_Getter(mthis) native "XMLHttpRequest_response_Getter";
+  response_Getter_(mthis) => response_Getter(mthis);
+
+  static send_Callback_0(mthis) native "XMLHttpRequest_send_Callback";
+  send_Callback_0_(mthis) => send_Callback_0(mthis);
+
+  static send_Callback_1(mthis, __arg_0) native "XMLHttpRequest_send_Callback";
+  send_Callback_1_(mthis, __arg_0) => send_Callback_1(mthis, __arg_0);
+
+  static send_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_send_Callback";
+  send_Callback_2_(mthis, __arg_0, __arg_1) => send_Callback_2(mthis, __arg_0, __arg_1);
+
+  static send_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_send_Callback";
+  send_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => send_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRequestHeader_Callback_0(mthis) native "XMLHttpRequest_setRequestHeader_Callback";
+  setRequestHeader_Callback_0_(mthis) => setRequestHeader_Callback_0(mthis);
+
+  static setRequestHeader_Callback_1(mthis, __arg_0) native "XMLHttpRequest_setRequestHeader_Callback";
+  setRequestHeader_Callback_1_(mthis, __arg_0) => setRequestHeader_Callback_1(mthis, __arg_0);
+
+  static setRequestHeader_Callback_2(mthis, __arg_0, __arg_1) native "XMLHttpRequest_setRequestHeader_Callback";
+  setRequestHeader_Callback_2_(mthis, __arg_0, __arg_1) => setRequestHeader_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setRequestHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLHttpRequest_setRequestHeader_Callback";
+  setRequestHeader_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setRequestHeader_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setRequestHeader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XMLHttpRequest_setRequestHeader_Callback";
+  setRequestHeader_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setRequestHeader_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
 
   static statusText_Getter(mthis) native "XMLHttpRequest_statusText_Getter";
+  statusText_Getter_(mthis) => statusText_Getter(mthis);
+
+  static status_Getter(mthis) native "XMLHttpRequest_status_Getter";
+  status_Getter_(mthis) => status_Getter(mthis);
 
   static timeout_Getter(mthis) native "XMLHttpRequest_timeout_Getter";
+  timeout_Getter_(mthis) => timeout_Getter(mthis);
 
-  static timeout_Setter(mthis, value) native "XMLHttpRequest_timeout_Setter";
+  static timeout_Setter(mthis, __arg_0) native "XMLHttpRequest_timeout_Setter";
+  timeout_Setter_(mthis, __arg_0) => timeout_Setter(mthis, __arg_0);
 
   static upload_Getter(mthis) native "XMLHttpRequest_upload_Getter";
+  upload_Getter_(mthis) => upload_Getter(mthis);
 
   static withCredentials_Getter(mthis) native "XMLHttpRequest_withCredentials_Getter";
+  withCredentials_Getter_(mthis) => withCredentials_Getter(mthis);
 
-  static withCredentials_Setter(mthis, value) native "XMLHttpRequest_withCredentials_Setter";
+  static withCredentials_Setter(mthis, __arg_0) native "XMLHttpRequest_withCredentials_Setter";
+  withCredentials_Setter_(mthis, __arg_0) => withCredentials_Setter(mthis, __arg_0);
 
-  static abort_Callback(mthis) native "XMLHttpRequest_abort_Callback";
-
-  static getAllResponseHeaders_Callback(mthis) native "XMLHttpRequest_getAllResponseHeaders_Callback";
-
-  static getResponseHeader_Callback_1(mthis, header) native "XMLHttpRequest_getResponseHeader_Callback";
-
-  static open_Callback_5(mthis, method, url, async, user, password) native "XMLHttpRequest_open_Callback";
-
-  static overrideMimeType_Callback_1(mthis, override) native "XMLHttpRequest_overrideMimeType_Callback";
-
-  static send_Callback_1(mthis, data) native "XMLHttpRequest_send_Callback";
-
-  static setRequestHeader_Callback_2(mthis, header, value) native "XMLHttpRequest_setRequestHeader_Callback";
 }
 
-class BlinkXMLHttpRequestProgressEvent {}
+class BlinkXMLHttpRequestEventTarget extends BlinkEventTarget {
+  static final instance = new BlinkXMLHttpRequestEventTarget();
 
-class BlinkXMLHttpRequestUpload {}
+  static onabort_Getter(mthis) native "XMLHttpRequestEventTarget_onabort_Getter";
+  onabort_Getter_(mthis) => onabort_Getter(mthis);
+
+  static onabort_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onabort_Setter";
+  onabort_Setter_(mthis, __arg_0) => onabort_Setter(mthis, __arg_0);
+
+  static onerror_Getter(mthis) native "XMLHttpRequestEventTarget_onerror_Getter";
+  onerror_Getter_(mthis) => onerror_Getter(mthis);
+
+  static onerror_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onerror_Setter";
+  onerror_Setter_(mthis, __arg_0) => onerror_Setter(mthis, __arg_0);
+
+  static onload_Getter(mthis) native "XMLHttpRequestEventTarget_onload_Getter";
+  onload_Getter_(mthis) => onload_Getter(mthis);
+
+  static onload_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onload_Setter";
+  onload_Setter_(mthis, __arg_0) => onload_Setter(mthis, __arg_0);
+
+  static onloadend_Getter(mthis) native "XMLHttpRequestEventTarget_onloadend_Getter";
+  onloadend_Getter_(mthis) => onloadend_Getter(mthis);
+
+  static onloadend_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onloadend_Setter";
+  onloadend_Setter_(mthis, __arg_0) => onloadend_Setter(mthis, __arg_0);
+
+  static onloadstart_Getter(mthis) native "XMLHttpRequestEventTarget_onloadstart_Getter";
+  onloadstart_Getter_(mthis) => onloadstart_Getter(mthis);
+
+  static onloadstart_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onloadstart_Setter";
+  onloadstart_Setter_(mthis, __arg_0) => onloadstart_Setter(mthis, __arg_0);
+
+  static onprogress_Getter(mthis) native "XMLHttpRequestEventTarget_onprogress_Getter";
+  onprogress_Getter_(mthis) => onprogress_Getter(mthis);
+
+  static onprogress_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_onprogress_Setter";
+  onprogress_Setter_(mthis, __arg_0) => onprogress_Setter(mthis, __arg_0);
+
+  static ontimeout_Getter(mthis) native "XMLHttpRequestEventTarget_ontimeout_Getter";
+  ontimeout_Getter_(mthis) => ontimeout_Getter(mthis);
+
+  static ontimeout_Setter(mthis, __arg_0) native "XMLHttpRequestEventTarget_ontimeout_Setter";
+  ontimeout_Setter_(mthis, __arg_0) => ontimeout_Setter(mthis, __arg_0);
+
+}
+
+class BlinkXMLHttpRequestProgressEvent extends BlinkProgressEvent {
+  static final instance = new BlinkXMLHttpRequestProgressEvent();
+
+  static position_Getter(mthis) native "XMLHttpRequestProgressEvent_position_Getter";
+  position_Getter_(mthis) => position_Getter(mthis);
+
+  static totalSize_Getter(mthis) native "XMLHttpRequestProgressEvent_totalSize_Getter";
+  totalSize_Getter_(mthis) => totalSize_Getter(mthis);
+
+}
+
+class BlinkXMLHttpRequestUpload extends BlinkXMLHttpRequestEventTarget {
+  static final instance = new BlinkXMLHttpRequestUpload();
+
+}
 
 class BlinkXMLSerializer {
-  static constructorCallback() native "XMLSerializer_constructorCallback";
+  static final instance = new BlinkXMLSerializer();
 
-  static serializeToString_Callback_1(mthis, node) native "XMLSerializer_serializeToString_Callback";
+  static constructorCallback_0() native "XMLSerializer_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
+
+  static constructorCallback_1(__arg_0) native "XMLSerializer_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
+
+  static constructorCallback_2(__arg_0, __arg_1) native "XMLSerializer_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static serializeToString_Callback_0(mthis) native "XMLSerializer_serializeToString_Callback";
+  serializeToString_Callback_0_(mthis) => serializeToString_Callback_0(mthis);
+
+  static serializeToString_Callback_1(mthis, __arg_0) native "XMLSerializer_serializeToString_Callback";
+  serializeToString_Callback_1_(mthis, __arg_0) => serializeToString_Callback_1(mthis, __arg_0);
+
+  static serializeToString_Callback_2(mthis, __arg_0, __arg_1) native "XMLSerializer_serializeToString_Callback";
+  serializeToString_Callback_2_(mthis, __arg_0, __arg_1) => serializeToString_Callback_2(mthis, __arg_0, __arg_1);
+
+  static serializeToString_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XMLSerializer_serializeToString_Callback";
+  serializeToString_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => serializeToString_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkXPathEvaluator {
-  static constructorCallback() native "XPathEvaluator_constructorCallback";
+  static final instance = new BlinkXPathEvaluator();
 
-  static createExpression_Callback_2(mthis, expression, resolver) native "XPathEvaluator_createExpression_Callback";
+  static constructorCallback_0() native "XPathEvaluator_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static createNSResolver_Callback_1(mthis, nodeResolver) native "XPathEvaluator_createNSResolver_Callback";
+  static constructorCallback_1(__arg_0) native "XPathEvaluator_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
 
-  static evaluate_Callback_5(mthis, expression, contextNode, resolver, type, inResult) native "XPathEvaluator_evaluate_Callback";
+  static constructorCallback_2(__arg_0, __arg_1) native "XPathEvaluator_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
+
+  static createExpression_Callback_0(mthis) native "XPathEvaluator_createExpression_Callback";
+  createExpression_Callback_0_(mthis) => createExpression_Callback_0(mthis);
+
+  static createExpression_Callback_1(mthis, __arg_0) native "XPathEvaluator_createExpression_Callback";
+  createExpression_Callback_1_(mthis, __arg_0) => createExpression_Callback_1(mthis, __arg_0);
+
+  static createExpression_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_createExpression_Callback";
+  createExpression_Callback_2_(mthis, __arg_0, __arg_1) => createExpression_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createExpression_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_createExpression_Callback";
+  createExpression_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createExpression_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static createExpression_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathEvaluator_createExpression_Callback";
+  createExpression_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => createExpression_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static createNSResolver_Callback_0(mthis) native "XPathEvaluator_createNSResolver_Callback";
+  createNSResolver_Callback_0_(mthis) => createNSResolver_Callback_0(mthis);
+
+  static createNSResolver_Callback_1(mthis, __arg_0) native "XPathEvaluator_createNSResolver_Callback";
+  createNSResolver_Callback_1_(mthis, __arg_0) => createNSResolver_Callback_1(mthis, __arg_0);
+
+  static createNSResolver_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_createNSResolver_Callback";
+  createNSResolver_Callback_2_(mthis, __arg_0, __arg_1) => createNSResolver_Callback_2(mthis, __arg_0, __arg_1);
+
+  static createNSResolver_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_createNSResolver_Callback";
+  createNSResolver_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => createNSResolver_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static evaluate_Callback_0(mthis) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_0_(mthis) => evaluate_Callback_0(mthis);
+
+  static evaluate_Callback_1(mthis, __arg_0) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_1_(mthis, __arg_0) => evaluate_Callback_1(mthis, __arg_0);
+
+  static evaluate_Callback_2(mthis, __arg_0, __arg_1) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => evaluate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static evaluate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_6_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5) => evaluate_Callback_6(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5);
+
+  static evaluate_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) native "XPathEvaluator_evaluate_Callback";
+  evaluate_Callback_7_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6) => evaluate_Callback_7(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4, __arg_5, __arg_6);
+
 }
 
 class BlinkXPathExpression {
-  static evaluate_Callback_3(mthis, contextNode, type, inResult) native "XPathExpression_evaluate_Callback";
+  static final instance = new BlinkXPathExpression();
+
+  static evaluate_Callback_0(mthis) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_0_(mthis) => evaluate_Callback_0(mthis);
+
+  static evaluate_Callback_1(mthis, __arg_0) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_1_(mthis, __arg_0) => evaluate_Callback_1(mthis, __arg_0);
+
+  static evaluate_Callback_2(mthis, __arg_0, __arg_1) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_2_(mthis, __arg_0, __arg_1) => evaluate_Callback_2(mthis, __arg_0, __arg_1);
+
+  static evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => evaluate_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => evaluate_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XPathExpression_evaluate_Callback";
+  evaluate_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => evaluate_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
 }
 
 class BlinkXPathNSResolver {
-  static lookupNamespaceURI_Callback_1(mthis, prefix) native "XPathNSResolver_lookupNamespaceURI_Callback";
+  static final instance = new BlinkXPathNSResolver();
+
+  static lookupNamespaceURI_Callback_0(mthis) native "XPathNSResolver_lookupNamespaceURI_Callback";
+  lookupNamespaceURI_Callback_0_(mthis) => lookupNamespaceURI_Callback_0(mthis);
+
+  static lookupNamespaceURI_Callback_1(mthis, __arg_0) native "XPathNSResolver_lookupNamespaceURI_Callback";
+  lookupNamespaceURI_Callback_1_(mthis, __arg_0) => lookupNamespaceURI_Callback_1(mthis, __arg_0);
+
+  static lookupNamespaceURI_Callback_2(mthis, __arg_0, __arg_1) native "XPathNSResolver_lookupNamespaceURI_Callback";
+  lookupNamespaceURI_Callback_2_(mthis, __arg_0, __arg_1) => lookupNamespaceURI_Callback_2(mthis, __arg_0, __arg_1);
+
+  static lookupNamespaceURI_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathNSResolver_lookupNamespaceURI_Callback";
+  lookupNamespaceURI_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => lookupNamespaceURI_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
 }
 
 class BlinkXPathResult {
+  static final instance = new BlinkXPathResult();
+
   static booleanValue_Getter(mthis) native "XPathResult_booleanValue_Getter";
+  booleanValue_Getter_(mthis) => booleanValue_Getter(mthis);
 
   static invalidIteratorState_Getter(mthis) native "XPathResult_invalidIteratorState_Getter";
+  invalidIteratorState_Getter_(mthis) => invalidIteratorState_Getter(mthis);
+
+  static iterateNext_Callback_0(mthis) native "XPathResult_iterateNext_Callback";
+  iterateNext_Callback_0_(mthis) => iterateNext_Callback_0(mthis);
+
+  static iterateNext_Callback_1(mthis, __arg_0) native "XPathResult_iterateNext_Callback";
+  iterateNext_Callback_1_(mthis, __arg_0) => iterateNext_Callback_1(mthis, __arg_0);
+
+  static iterateNext_Callback_2(mthis, __arg_0, __arg_1) native "XPathResult_iterateNext_Callback";
+  iterateNext_Callback_2_(mthis, __arg_0, __arg_1) => iterateNext_Callback_2(mthis, __arg_0, __arg_1);
 
   static numberValue_Getter(mthis) native "XPathResult_numberValue_Getter";
+  numberValue_Getter_(mthis) => numberValue_Getter(mthis);
 
   static resultType_Getter(mthis) native "XPathResult_resultType_Getter";
+  resultType_Getter_(mthis) => resultType_Getter(mthis);
 
   static singleNodeValue_Getter(mthis) native "XPathResult_singleNodeValue_Getter";
+  singleNodeValue_Getter_(mthis) => singleNodeValue_Getter(mthis);
+
+  static snapshotItem_Callback_0(mthis) native "XPathResult_snapshotItem_Callback";
+  snapshotItem_Callback_0_(mthis) => snapshotItem_Callback_0(mthis);
+
+  static snapshotItem_Callback_1(mthis, __arg_0) native "XPathResult_snapshotItem_Callback";
+  snapshotItem_Callback_1_(mthis, __arg_0) => snapshotItem_Callback_1(mthis, __arg_0);
+
+  static snapshotItem_Callback_2(mthis, __arg_0, __arg_1) native "XPathResult_snapshotItem_Callback";
+  snapshotItem_Callback_2_(mthis, __arg_0, __arg_1) => snapshotItem_Callback_2(mthis, __arg_0, __arg_1);
+
+  static snapshotItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XPathResult_snapshotItem_Callback";
+  snapshotItem_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => snapshotItem_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
 
   static snapshotLength_Getter(mthis) native "XPathResult_snapshotLength_Getter";
+  snapshotLength_Getter_(mthis) => snapshotLength_Getter(mthis);
 
   static stringValue_Getter(mthis) native "XPathResult_stringValue_Getter";
+  stringValue_Getter_(mthis) => stringValue_Getter(mthis);
 
-  static iterateNext_Callback(mthis) native "XPathResult_iterateNext_Callback";
-
-  static snapshotItem_Callback_1(mthis, index) native "XPathResult_snapshotItem_Callback";
 }
 
 class BlinkXSLTProcessor {
-  static constructorCallback() native "XSLTProcessor_constructorCallback";
+  static final instance = new BlinkXSLTProcessor();
 
-  static clearParameters_Callback(mthis) native "XSLTProcessor_clearParameters_Callback";
+  static clearParameters_Callback_0(mthis) native "XSLTProcessor_clearParameters_Callback";
+  clearParameters_Callback_0_(mthis) => clearParameters_Callback_0(mthis);
 
-  static getParameter_Callback_2(mthis, namespaceURI, localName) native "XSLTProcessor_getParameter_Callback";
+  static clearParameters_Callback_1(mthis, __arg_0) native "XSLTProcessor_clearParameters_Callback";
+  clearParameters_Callback_1_(mthis, __arg_0) => clearParameters_Callback_1(mthis, __arg_0);
 
-  static importStylesheet_Callback_1(mthis, stylesheet) native "XSLTProcessor_importStylesheet_Callback";
+  static clearParameters_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_clearParameters_Callback";
+  clearParameters_Callback_2_(mthis, __arg_0, __arg_1) => clearParameters_Callback_2(mthis, __arg_0, __arg_1);
 
-  static removeParameter_Callback_2(mthis, namespaceURI, localName) native "XSLTProcessor_removeParameter_Callback";
+  static constructorCallback_0() native "XSLTProcessor_constructorCallback";
+  constructorCallback_0_() => constructorCallback_0();
 
-  static reset_Callback(mthis) native "XSLTProcessor_reset_Callback";
+  static constructorCallback_1(__arg_0) native "XSLTProcessor_constructorCallback";
+  constructorCallback_1_(__arg_0) => constructorCallback_1(__arg_0);
 
-  static setParameter_Callback_3(mthis, namespaceURI, localName, value) native "XSLTProcessor_setParameter_Callback";
+  static constructorCallback_2(__arg_0, __arg_1) native "XSLTProcessor_constructorCallback";
+  constructorCallback_2_(__arg_0, __arg_1) => constructorCallback_2(__arg_0, __arg_1);
 
-  static transformToDocument_Callback_1(mthis, source) native "XSLTProcessor_transformToDocument_Callback";
+  static getParameter_Callback_0(mthis) native "XSLTProcessor_getParameter_Callback";
+  getParameter_Callback_0_(mthis) => getParameter_Callback_0(mthis);
 
-  static transformToFragment_Callback_2(mthis, source, docVal) native "XSLTProcessor_transformToFragment_Callback";
+  static getParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_getParameter_Callback";
+  getParameter_Callback_1_(mthis, __arg_0) => getParameter_Callback_1(mthis, __arg_0);
+
+  static getParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_getParameter_Callback";
+  getParameter_Callback_2_(mthis, __arg_0, __arg_1) => getParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_getParameter_Callback";
+  getParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => getParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static getParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_getParameter_Callback";
+  getParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => getParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static importStylesheet_Callback_0(mthis) native "XSLTProcessor_importStylesheet_Callback";
+  importStylesheet_Callback_0_(mthis) => importStylesheet_Callback_0(mthis);
+
+  static importStylesheet_Callback_1(mthis, __arg_0) native "XSLTProcessor_importStylesheet_Callback";
+  importStylesheet_Callback_1_(mthis, __arg_0) => importStylesheet_Callback_1(mthis, __arg_0);
+
+  static importStylesheet_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_importStylesheet_Callback";
+  importStylesheet_Callback_2_(mthis, __arg_0, __arg_1) => importStylesheet_Callback_2(mthis, __arg_0, __arg_1);
+
+  static importStylesheet_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_importStylesheet_Callback";
+  importStylesheet_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => importStylesheet_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeParameter_Callback_0(mthis) native "XSLTProcessor_removeParameter_Callback";
+  removeParameter_Callback_0_(mthis) => removeParameter_Callback_0(mthis);
+
+  static removeParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_removeParameter_Callback";
+  removeParameter_Callback_1_(mthis, __arg_0) => removeParameter_Callback_1(mthis, __arg_0);
+
+  static removeParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_removeParameter_Callback";
+  removeParameter_Callback_2_(mthis, __arg_0, __arg_1) => removeParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static removeParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_removeParameter_Callback";
+  removeParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => removeParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static removeParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_removeParameter_Callback";
+  removeParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => removeParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static reset_Callback_0(mthis) native "XSLTProcessor_reset_Callback";
+  reset_Callback_0_(mthis) => reset_Callback_0(mthis);
+
+  static reset_Callback_1(mthis, __arg_0) native "XSLTProcessor_reset_Callback";
+  reset_Callback_1_(mthis, __arg_0) => reset_Callback_1(mthis, __arg_0);
+
+  static reset_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_reset_Callback";
+  reset_Callback_2_(mthis, __arg_0, __arg_1) => reset_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setParameter_Callback_1(mthis, __arg_0) native "XSLTProcessor_setParameter_Callback";
+  setParameter_Callback_1_(mthis, __arg_0) => setParameter_Callback_1(mthis, __arg_0);
+
+  static setParameter_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_setParameter_Callback";
+  setParameter_Callback_2_(mthis, __arg_0, __arg_1) => setParameter_Callback_2(mthis, __arg_0, __arg_1);
+
+  static setParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_setParameter_Callback";
+  setParameter_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => setParameter_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static setParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_setParameter_Callback";
+  setParameter_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => setParameter_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
+  static setParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) native "XSLTProcessor_setParameter_Callback";
+  setParameter_Callback_5_(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4) => setParameter_Callback_5(mthis, __arg_0, __arg_1, __arg_2, __arg_3, __arg_4);
+
+  static transformToDocument_Callback_0(mthis) native "XSLTProcessor_transformToDocument_Callback";
+  transformToDocument_Callback_0_(mthis) => transformToDocument_Callback_0(mthis);
+
+  static transformToDocument_Callback_1(mthis, __arg_0) native "XSLTProcessor_transformToDocument_Callback";
+  transformToDocument_Callback_1_(mthis, __arg_0) => transformToDocument_Callback_1(mthis, __arg_0);
+
+  static transformToDocument_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_transformToDocument_Callback";
+  transformToDocument_Callback_2_(mthis, __arg_0, __arg_1) => transformToDocument_Callback_2(mthis, __arg_0, __arg_1);
+
+  static transformToDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_transformToDocument_Callback";
+  transformToDocument_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transformToDocument_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static transformToFragment_Callback_0(mthis) native "XSLTProcessor_transformToFragment_Callback";
+  transformToFragment_Callback_0_(mthis) => transformToFragment_Callback_0(mthis);
+
+  static transformToFragment_Callback_1(mthis, __arg_0) native "XSLTProcessor_transformToFragment_Callback";
+  transformToFragment_Callback_1_(mthis, __arg_0) => transformToFragment_Callback_1(mthis, __arg_0);
+
+  static transformToFragment_Callback_2(mthis, __arg_0, __arg_1) native "XSLTProcessor_transformToFragment_Callback";
+  transformToFragment_Callback_2_(mthis, __arg_0, __arg_1) => transformToFragment_Callback_2(mthis, __arg_0, __arg_1);
+
+  static transformToFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2) native "XSLTProcessor_transformToFragment_Callback";
+  transformToFragment_Callback_3_(mthis, __arg_0, __arg_1, __arg_2) => transformToFragment_Callback_3(mthis, __arg_0, __arg_1, __arg_2);
+
+  static transformToFragment_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3) native "XSLTProcessor_transformToFragment_Callback";
+  transformToFragment_Callback_4_(mthis, __arg_0, __arg_1, __arg_2, __arg_3) => transformToFragment_Callback_4(mthis, __arg_0, __arg_1, __arg_2, __arg_3);
+
 }
 
 
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-
 // _Utils native entry points
 class Blink_Utils {
   static window() native "Utils_window";
@@ -9173,4 +30482,4 @@
   static remove(_DOMStringMap, key) native "DOMStringMap_remove_Callback";
 
   static get_keys(_DOMStringMap) native "DOMStringMap_getKeys_Callback";
-}
\ No newline at end of file
+}
diff --git a/sdk/lib/_internal/compiler/implementation/constant_system.dart b/sdk/lib/_internal/compiler/implementation/constant_system.dart
index 110efca..36b98d7 100644
--- a/sdk/lib/_internal/compiler/implementation/constant_system.dart
+++ b/sdk/lib/_internal/compiler/implementation/constant_system.dart
@@ -46,6 +46,8 @@
   BinaryOperation get subtract;
   BinaryOperation get truncatingDivide;
 
+  BinaryOperation get codeUnitAt;
+
   const ConstantSystem();
 
   ConstantValue createInt(int i);
diff --git a/sdk/lib/_internal/compiler/implementation/constant_system_dart.dart b/sdk/lib/_internal/compiler/implementation/constant_system_dart.dart
index 624d967..1cc239d 100644
--- a/sdk/lib/_internal/compiler/implementation/constant_system_dart.dart
+++ b/sdk/lib/_internal/compiler/implementation/constant_system_dart.dart
@@ -318,6 +318,37 @@
   apply(left, right) => identical(left, right);
 }
 
+abstract class CodeUnitAtOperation implements BinaryOperation {
+  final String name = 'charCodeAt';
+  const CodeUnitAtOperation();
+  apply(left, right) => left.codeUnitAt(right);
+}
+
+class CodeUnitAtConstantOperation extends CodeUnitAtOperation {
+  const CodeUnitAtConstantOperation();
+  ConstantValue fold(ConstantValue left, ConstantValue right) {
+    // 'a'.codeUnitAt(0) is not a constant expression.
+    return null;
+  }
+}
+
+class CodeUnitAtRuntimeOperation extends CodeUnitAtOperation {
+  const CodeUnitAtRuntimeOperation();
+  IntConstantValue fold(ConstantValue left, ConstantValue right) {
+    if (left.isString && right.isInt) {
+      StringConstantValue stringConstant = left;
+      IntConstantValue indexConstant = right;
+      DartString dartString = stringConstant.primitiveValue;
+      int index = indexConstant.primitiveValue;
+      if (index < 0 || index >= dartString.length) return null;
+      String string = dartString.slowToString();
+      int value = string.codeUnitAt(index);
+      return DART_CONSTANT_SYSTEM.createInt(value);
+    }
+    return null;
+  }
+}
+
 /**
  * A constant system implementing the Dart semantics. This system relies on
  * the underlying runtime-system. That is, if dart2js is run in an environment
@@ -347,6 +378,7 @@
   final shiftRight = const ShiftRightOperation();
   final subtract = const SubtractOperation();
   final truncatingDivide = const TruncatingDivideOperation();
+  final codeUnitAt = const CodeUnitAtConstantOperation();
 
   const DartConstantSystem();
 
diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart
index 850ff3c..5a006dc 100644
--- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart
+++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder.dart
@@ -162,6 +162,16 @@
   SubbuildFunction subbuild(N node) {
     return (IrBuilder builder) => withBuilder(builder, () => build(node));
   }
+
+  /// Returns a closure that takes an [IrBuilder] and builds the sequence of
+  /// [nodes] in its context using [build].
+  // TODO(johnniwinther): Type [nodes] as `Iterable<N>` when `NodeList` uses
+  // `List` instead of `Link`.
+  SubbuildFunction subbuildSequence(/*Iterable<N>*/ nodes) {
+    return (IrBuilder builder) {
+      return withBuilder(builder, () => builder.buildSequence(nodes, build));
+    };
+  }
 }
 
 /// Shared state between nested builders.
@@ -260,16 +270,24 @@
 
   bool get isOpen => _root == null || _current != null;
 
+  /// True if [element] is a local variable, local function, or parameter that
+  /// is accessed from an inner function. Recursive self-references in a local
+  /// function count as closure accesses.
+  ///
+  /// If `true`, [element] is a [LocalElement].
+  bool isClosureVariable(Element element) {
+    return state.closureLocals.contains(element);
+  }
+
   /// Create a parameter for [parameterElement] and add it to the current
   /// environment.
   ///
   /// [isClosureVariable] marks whether [parameterElement] is accessed from an
   /// inner function.
-  void createParameter(LocalElement parameterElement,
-                       {bool isClosureVariable: false}) {
+  void createParameter(LocalElement parameterElement) {
     ir.Parameter parameter = new ir.Parameter(parameterElement);
     _parameters.add(parameter);
-    if (isClosureVariable) {
+    if (isClosureVariable(parameterElement)) {
       add(new ir.SetClosureVariable(parameterElement, parameter));
     } else {
       environment.extend(parameterElement, parameter);
@@ -289,15 +307,14 @@
   /// [isClosureVariable] marks whether [variableElement] is accessed from an
   /// inner function.
   void declareLocalVariable(LocalVariableElement variableElement,
-                            {ir.Primitive initialValue,
-                             bool isClosureVariable: false}) {
+                            {ir.Primitive initialValue}) {
     assert(isOpen);
     if (initialValue == null) {
       // TODO(kmillikin): Consider pooling constants.
       // The initial value is null.
       initialValue = buildNullLiteral();
     }
-    if (isClosureVariable) {
+    if (isClosureVariable(variableElement)) {
       add(new ir.SetClosureVariable(variableElement,
                                     initialValue,
                                     isDeclaration: true));
@@ -420,10 +437,28 @@
 
   }
 
-  /// Create a get access of [local].
-  ir.Primitive buildLocalGet(Element local) {
+  /// Create a read access of [local].
+  ir.Primitive buildLocalGet(LocalElement local) {
     assert(isOpen);
-    return environment.lookup(local);
+    if (isClosureVariable(local)) {
+      ir.Primitive result = new ir.GetClosureVariable(local);
+      add(new ir.LetPrim(result));
+      return result;
+    } else {
+      return environment.lookup(local);
+    }
+  }
+
+  /// Create a write access to [local].
+  ir.Primitive buildLocalSet(LocalElement local, ir.Primitive valueToStore) {
+    assert(isOpen);
+    if (isClosureVariable(local)) {
+      add(new ir.SetClosureVariable(local, valueToStore));
+    } else {
+      valueToStore.useElementAsHint(local);
+      environment.update(local, valueToStore);
+    }
+    return valueToStore;
   }
 
   /// Create a get access of the static [element].
@@ -491,7 +526,7 @@
 
   }
 
-  /// Create a dynamic invocation on [receiver] with method name and arguments
+  /// Create a dynamic invocation on [receiver] with method name and argument
   /// structure defined by [selector] and argument values defined by
   /// [arguments].
   ir.Primitive buildDynamicInvocation(ir.Definition receiver,
@@ -502,7 +537,7 @@
         (k) => new ir.InvokeMethod(receiver, selector, k, arguments));
   }
 
-  /// Create a static invocation of [element] with arguments structure defined
+  /// Create a static invocation of [element] with argument structure defined
   /// by [selector] and argument values defined by [arguments].
   ir.Primitive buildStaticInvocation(Element element,
                                      Selector selector,
@@ -511,6 +546,18 @@
         (k) => new ir.InvokeStatic(element, selector, k, arguments));
   }
 
+  /// Create a constructor invocation of [element] on [type] with argument
+  /// structure defined by [selector] and argument values defined by
+  /// [arguments].
+  ir.Primitive buildConstructorInvocation(FunctionElement element,
+                                         Selector selector,
+                                         DartType type,
+                                         List<ir.Definition> arguments) {
+    assert(isOpen);
+    return continueWithExpression(
+        (k) => new ir.InvokeConstructor(type, element, selector, k, arguments));
+  }
+
   /// Creates an if-then-else statement with the provided [condition] where the
   /// then and else branches are created through the [buildThenPart] and
   /// [buildElsePart] functions, respectively.
@@ -582,6 +629,154 @@
     }
   }
 
+  /// Invoke a join-point continuation that contains arguments for all local
+  /// variables.
+  ///
+  /// Given the continuation and a list of uninitialized invocations, fill
+  /// in each invocation with the continuation and appropriate arguments.
+  void invokeFullJoin(ir.Continuation join,
+                      JumpCollector jumps,
+                      {recursive: false}) {
+    join.isRecursive = recursive;
+    for (int i = 0; i < jumps.length; ++i) {
+      Environment currentEnvironment = jumps.environments[i];
+      ir.InvokeContinuation invoke = jumps.invocations[i];
+      invoke.continuation = new ir.Reference(join);
+      invoke.arguments = new List<ir.Reference>.generate(
+          join.parameters.length,
+          (i) => new ir.Reference(currentEnvironment[i]));
+      invoke.isRecursive = recursive;
+    }
+  }
+
+  /// Creates a for loop in which the initializer, condition, body, update are
+  /// created by [buildInitializer], [buildCondition], [buildBody] and
+  /// [buildUpdate], respectively.
+  ///
+  /// The jump [target] is used to identify which `break` and `continue`
+  /// statements that have this `for` statement as their target.
+  void buildFor({SubbuildFunction buildInitializer,
+                 SubbuildFunction buildCondition,
+                 SubbuildFunction buildBody,
+                 SubbuildFunction buildUpdate,
+                 JumpTarget target}) {
+    assert(isOpen);
+
+    // For loops use four named continuations: the entry to the condition,
+    // the entry to the body, the loop exit, and the loop successor (break).
+    // The CPS translation of
+    // [[for (initializer; condition; update) body; successor]] is:
+    //
+    // [[initializer]];
+    // let cont loop(x, ...) =
+    //     let prim cond = [[condition]] in
+    //     let cont break() = [[successor]] in
+    //     let cont exit() = break(v, ...) in
+    //     let cont body() =
+    //       let cont continue(x, ...) = [[update]]; loop(v, ...) in
+    //       [[body]]; continue(v, ...) in
+    //     branch cond (body, exit) in
+    // loop(v, ...)
+    //
+    // If there are no breaks in the body, the break continuation is inlined
+    // in the exit continuation (i.e., the translation of the successor
+    // statement occurs in the exit continuation).  If there is only one
+    // invocation of the continue continuation (i.e., no continues in the
+    // body), the continue continuation is inlined in the body.
+
+    buildInitializer(this);
+
+    IrBuilder condBuilder = new IrBuilder.recursive(this);
+    ir.Primitive condition = buildCondition(condBuilder);
+    if (condition == null) {
+      // If the condition is empty then the body is entered unconditionally.
+      condition = condBuilder.buildBooleanLiteral(true);
+    }
+
+    JumpCollector breakCollector = new JumpCollector(target);
+    JumpCollector continueCollector = new JumpCollector(target);
+    state.breakCollectors.add(breakCollector);
+    state.continueCollectors.add(continueCollector);
+
+    IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder);
+    buildBody(bodyBuilder);
+    assert(state.breakCollectors.last == breakCollector);
+    assert(state.continueCollectors.last == continueCollector);
+    state.breakCollectors.removeLast();
+    state.continueCollectors.removeLast();
+
+    // The binding of the continue continuation should occur as late as
+    // possible, that is, at the nearest common ancestor of all the continue
+    // sites in the body.  However, that is difficult to compute here, so it
+    // is instead placed just outside the body of the body continuation.
+    bool hasContinues = !continueCollector.isEmpty;
+    IrBuilder updateBuilder = hasContinues
+        ? new IrBuilder.recursive(condBuilder)
+        : bodyBuilder;
+    buildUpdate(updateBuilder);
+
+    // Create body entry and loop exit continuations and a branch to them.
+    ir.Continuation bodyContinuation = new ir.Continuation([]);
+    ir.Continuation exitContinuation = new ir.Continuation([]);
+    ir.LetCont branch =
+        new ir.LetCont(exitContinuation,
+            new ir.LetCont(bodyContinuation,
+                new ir.Branch(new ir.IsTrue(condition),
+                              bodyContinuation,
+                              exitContinuation)));
+    // If there are breaks in the body, then there must be a join-point
+    // continuation for the normal exit and the breaks.
+    bool hasBreaks = !breakCollector.isEmpty;
+    ir.LetCont letJoin;
+    if (hasBreaks) {
+      letJoin = new ir.LetCont(null, branch);
+      condBuilder.add(letJoin);
+      condBuilder._current = branch;
+    } else {
+      condBuilder.add(branch);
+    }
+    ir.Continuation continueContinuation;
+    if (hasContinues) {
+      // If there are continues in the body, we need a named continue
+      // continuation as a join point.
+      continueContinuation = new ir.Continuation(updateBuilder._parameters);
+      if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder);
+      invokeFullJoin(continueContinuation, continueCollector);
+    }
+    ir.Continuation loopContinuation =
+        new ir.Continuation(condBuilder._parameters);
+    if (updateBuilder.isOpen) {
+      JumpCollector backEdges = new JumpCollector(null);
+      backEdges.addJump(updateBuilder);
+      invokeFullJoin(loopContinuation, backEdges, recursive: true);
+    }
+
+    // Fill in the body and possible continue continuation bodies.  Do this
+    // only after it is guaranteed that they are not empty.
+    if (hasContinues) {
+      continueContinuation.body = updateBuilder._root;
+      bodyContinuation.body =
+          new ir.LetCont(continueContinuation, bodyBuilder._root);
+    } else {
+      bodyContinuation.body = bodyBuilder._root;
+    }
+
+    loopContinuation.body = condBuilder._root;
+    add(new ir.LetCont(loopContinuation,
+            new ir.InvokeContinuation(loopContinuation,
+                environment.index2value)));
+    if (hasBreaks) {
+      _current = branch;
+      environment = condBuilder.environment;
+      breakCollector.addJump(this);
+      letJoin.continuation = createJoin(environment.length, breakCollector);
+      _current = letJoin;
+    } else {
+      _current = condBuilder._current;
+      environment = condBuilder.environment;
+    }
+  }
+
   /// Create a return statement `return value;` or `return;` if [value] is
   /// null.
   void buildReturn([ir.Primitive value]) {
@@ -597,6 +792,30 @@
     _current = null;
   }
 
+  /// Create a blocks of [statements] by applying [build] to all reachable
+  /// statements. The first statement is assumed to be reachable.
+  // TODO(johnniwinther): Type [statements] as `Iterable` when `NodeList` uses
+  // `List` instead of `Link`.
+  void buildBlock(var statements, build(statement)) {
+    // Build(Block(stamements), C) = C'
+    //   where C' = statements.fold(Build, C)
+    assert(isOpen);
+    return buildSequence(statements, build);
+  }
+
+  /// Creates a sequence of [nodes] by applying [build] to all reachable nodes.
+  ///
+  /// The first node in the sequence does not need to be reachable.
+  // TODO(johnniwinther): Type [nodes] as `Iterable` when `NodeList` uses
+  // `List` instead of `Link`.
+  void buildSequence(var nodes, build(node)) {
+    for (var node in nodes) {
+      if (!isOpen) return;
+      build(node);
+    }
+  }
+
+
   // Build(BreakStatement L, C) = C[InvokeContinuation(...)]
   //
   // The continuation and arguments are filled in later after translating
diff --git a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart
index 9b20c5e..085a1c6 100644
--- a/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart
+++ b/sdk/lib/_internal/compiler/implementation/cps_ir/cps_ir_builder_visitor.dart
@@ -162,9 +162,7 @@
         () {
       FunctionSignature signature = element.functionSignature;
       signature.orderedForEachParameter((ParameterElement parameterElement) {
-        irBuilder.createParameter(
-            parameterElement,
-            isClosureVariable: isClosureVariable(parameterElement));
+        irBuilder.createParameter(parameterElement);
       });
 
       List<ConstantExpression> defaults = new List<ConstantExpression>();
@@ -180,15 +178,8 @@
   ir.Primitive visit(ast.Node node) => node.accept(this);
 
   // ==== Statements ====
-  // Build(Block(stamements), C) = C'
-  //   where C' = statements.fold(Build, C)
-  ir.Primitive visitBlock(ast.Block node) {
-    assert(irBuilder.isOpen);
-    for (ast.Node n in node.statements.nodes) {
-      visit(n);
-      if (!irBuilder.isOpen) return null;
-    }
-    return null;
+  visitBlock(ast.Block node) {
+    irBuilder.buildBlock(node.statements.nodes, build);
   }
 
   ir.Primitive visitBreakStatement(ast.BreakStatement node) {
@@ -219,163 +210,28 @@
     return null;
   }
 
-  /// Invoke a join-point continuation that contains arguments for all local
-  /// variables.
-  ///
-  /// Given the continuation and a list of uninitialized invocations, fill
-  /// in each invocation with the continuation and appropriate arguments.
-  void invokeFullJoin(ir.Continuation join,
-                      JumpCollector jumps,
-                      {recursive: false}) {
-    join.isRecursive = recursive;
-    for (int i = 0; i < jumps.length; ++i) {
-      Environment currentEnvironment = jumps.environments[i];
-      ir.InvokeContinuation invoke = jumps.invocations[i];
-      invoke.continuation = new ir.Reference(join);
-      invoke.arguments = new List<ir.Reference>.generate(
-          join.parameters.length,
-          (i) => new ir.Reference(currentEnvironment[i]));
-      invoke.isRecursive = recursive;
-    }
-  }
-
-  ir.Primitive visitFor(ast.For node) {
-    assert(irBuilder.isOpen);
+  visitFor(ast.For node) {
     // TODO(kmillikin,sigurdm): Handle closure variables declared in a for-loop.
     if (node.initializer is ast.VariableDefinitions) {
       ast.VariableDefinitions definitions = node.initializer;
       for (ast.Node definition in definitions.definitions.nodes) {
         Element element = elements[definition];
-        if (isClosureVariable(element)) {
+        if (irBuilder.isClosureVariable(element)) {
           return giveup(definition, 'Closure variable in for loop initializer');
         }
       }
     }
 
-    // For loops use four named continuations: the entry to the condition,
-    // the entry to the body, the loop exit, and the loop successor (break).
-    // The CPS translation of
-    // [[for (initializer; condition; update) body; successor]] is:
-    //
-    // [[initializer]];
-    // let cont loop(x, ...) =
-    //     let prim cond = [[condition]] in
-    //     let cont break() = [[successor]] in
-    //     let cont exit() = break(v, ...) in
-    //     let cont body() =
-    //       let cont continue(x, ...) = [[update]]; loop(v, ...) in
-    //       [[body]]; continue(v, ...) in
-    //     branch cond (body, exit) in
-    // loop(v, ...)
-    //
-    // If there are no breaks in the body, the break continuation is inlined
-    // in the exit continuation (i.e., the translation of the successor
-    // statement occurs in the exit continuation).  If there is only one
-    // invocation of the continue continuation (i.e., no continues in the
-    // body), the continue continuation is inlined in the body.
-
-    if (node.initializer != null) visit(node.initializer);
-
-    IrBuilder condBuilder = new IrBuilder.recursive(irBuilder);
-    ir.Primitive condition;
-    if (node.condition == null) {
-      // If the condition is empty then the body is entered unconditionally.
-      condition = condBuilder.buildBooleanLiteral(true);
-    } else {
-      condition = withBuilder(condBuilder, () => visit(node.condition));
-    }
-
     JumpTarget target = elements.getTargetDefinition(node);
-    JumpCollector breakCollector = new JumpCollector(target);
-    JumpCollector continueCollector = new JumpCollector(target);
-    irBuilder.state.breakCollectors.add(breakCollector);
-    irBuilder.state.continueCollectors.add(continueCollector);
-
-    IrBuilder bodyBuilder = new IrBuilder.delimited(condBuilder);
-    withBuilder(bodyBuilder, () => visit(node.body));
-    assert(irBuilder.state.breakCollectors.last == breakCollector);
-    assert(irBuilder.state.continueCollectors.last == continueCollector);
-    irBuilder.state.breakCollectors.removeLast();
-    irBuilder.state.continueCollectors.removeLast();
-
-    // The binding of the continue continuation should occur as late as
-    // possible, that is, at the nearest common ancestor of all the continue
-    // sites in the body.  However, that is difficult to compute here, so it
-    // is instead placed just outside the body of the body continuation.
-    bool hasContinues = !continueCollector.isEmpty;
-    IrBuilder updateBuilder = hasContinues
-        ? new IrBuilder.recursive(condBuilder)
-        : bodyBuilder;
-    for (ast.Node n in node.update) {
-      if (!updateBuilder.isOpen) break;
-      withBuilder(updateBuilder, () => visit(n));
-    }
-
-    // Create body entry and loop exit continuations and a branch to them.
-    ir.Continuation bodyContinuation = new ir.Continuation([]);
-    ir.Continuation exitContinuation = new ir.Continuation([]);
-    ir.LetCont branch =
-        new ir.LetCont(exitContinuation,
-            new ir.LetCont(bodyContinuation,
-                new ir.Branch(new ir.IsTrue(condition),
-                              bodyContinuation,
-                              exitContinuation)));
-    // If there are breaks in the body, then there must be a join-point
-    // continuation for the normal exit and the breaks.
-    bool hasBreaks = !breakCollector.isEmpty;
-    ir.LetCont letJoin;
-    if (hasBreaks) {
-      letJoin = new ir.LetCont(null, branch);
-      condBuilder.add(letJoin);
-      condBuilder._current = branch;
-    } else {
-      condBuilder.add(branch);
-    }
-    ir.Continuation continueContinuation;
-    if (hasContinues) {
-      // If there are continues in the body, we need a named continue
-      // continuation as a join point.
-      continueContinuation = new ir.Continuation(updateBuilder._parameters);
-      if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder);
-      invokeFullJoin(continueContinuation, continueCollector);
-    }
-    ir.Continuation loopContinuation =
-        new ir.Continuation(condBuilder._parameters);
-    if (updateBuilder.isOpen) {
-      JumpCollector backEdges = new JumpCollector(null);
-      backEdges.addJump(updateBuilder);
-      invokeFullJoin(loopContinuation, backEdges, recursive: true);
-    }
-
-    // Fill in the body and possible continue continuation bodies.  Do this
-    // only after it is guaranteed that they are not empty.
-    if (hasContinues) {
-      continueContinuation.body = updateBuilder._root;
-      bodyContinuation.body =
-          new ir.LetCont(continueContinuation, bodyBuilder._root);
-    } else {
-      bodyContinuation.body = bodyBuilder._root;
-    }
-
-    loopContinuation.body = condBuilder._root;
-    irBuilder.add(new ir.LetCont(loopContinuation,
-            new ir.InvokeContinuation(loopContinuation,
-                irBuilder.environment.index2value)));
-    if (hasBreaks) {
-      irBuilder._current = branch;
-      irBuilder.environment = condBuilder.environment;
-      breakCollector.addJump(irBuilder);
-      letJoin.continuation =
-          irBuilder.createJoin(irBuilder.environment.length, breakCollector);
-      irBuilder._current = letJoin;
-    } else {
-      irBuilder._current = condBuilder._current;
-      irBuilder.environment = condBuilder.environment;
-    }
-    return null;
+    irBuilder.buildFor(
+        buildInitializer: subbuild(node.initializer),
+        buildCondition: subbuild(node.condition),
+        buildBody: subbuild(node.body),
+        buildUpdate: subbuildSequence(node.update),
+        target: target);
   }
 
-   visitIf(ast.If node) {
+  visitIf(ast.If node) {
     irBuilder.buildIf(
         build(node.condition),
         subbuild(node.thenPart),
@@ -448,7 +304,8 @@
     ir.Continuation loopContinuation =
         new ir.Continuation(condBuilder._parameters);
     if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder);
-    invokeFullJoin(loopContinuation, continueCollector, recursive: true);
+    irBuilder.invokeFullJoin(
+        loopContinuation, continueCollector, recursive: true);
     bodyContinuation.body = bodyBuilder._root;
 
     loopContinuation.body = condBuilder._root;
@@ -528,7 +385,7 @@
         new ir.InvokeMethod(iterator, new Selector.getter("current", null),
             currentInvoked, emptyArguments)));
     if (Elements.isLocal(variableElement)) {
-      withBuilder(bodyBuilder, () => setLocal(variableElement, currentValue));
+      bodyBuilder.buildLocalSet(variableElement, currentValue);
     } else if (Elements.isStaticOrTopLevel(variableElement)) {
       withBuilder(bodyBuilder,
           () => setStatic(variableElement, selector, currentValue));
@@ -568,7 +425,8 @@
     ir.Continuation loopContinuation =
         new ir.Continuation(condBuilder._parameters);
     if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder);
-    invokeFullJoin(loopContinuation, continueCollector, recursive: true);
+    irBuilder.invokeFullJoin(
+        loopContinuation, continueCollector, recursive: true);
     bodyContinuation.body = bodyBuilder._root;
 
     loopContinuation.body = condBuilder._root;
@@ -612,9 +470,7 @@
         } else {
           assert(definition is ast.Identifier);
         }
-        irBuilder.declareLocalVariable(element,
-            initialValue: initialValue,
-            isClosureVariable: isClosureVariable(element));
+        irBuilder.declareLocalVariable(element, initialValue: initialValue);
       }
     }
     return null;
@@ -785,7 +641,7 @@
     ir.Primitive closureTarget;
     if (element == null) {
       closureTarget = visit(node.selector);
-    } else if (isClosureVariable(element)) {
+    } else if (irBuilder.isClosureVariable(element)) {
       LocalElement local = element;
       closureTarget = new ir.GetClosureVariable(local);
       irBuilder.add(new ir.LetPrim(closureTarget));
@@ -839,10 +695,6 @@
     if (element != null && element.isConst) {
       // Reference to constant local, top-level or static field
       result = translateConstant(node);
-    } else if (isClosureVariable(element)) {
-      LocalElement local = element;
-      result = new ir.GetClosureVariable(local);
-      irBuilder.add(new ir.LetPrim(result));
     } else if (Elements.isLocal(element)) {
       // Reference to local variable
       result = irBuilder.buildLocalGet(element);
@@ -995,25 +847,6 @@
     }
   }
 
-  /// True if [element] is a local variable, local function, or parameter that
-  /// is accessed from an inner function. Recursive self-references in a local
-  /// function count as closure accesses.
-  ///
-  /// If `true`, [element] is a [LocalElement].
-  bool isClosureVariable(Element element) {
-    return irBuilder.state.closureLocals.contains(element);
-  }
-
-  void setLocal(Element element, ir.Primitive valueToStore) {
-    if (isClosureVariable(element)) {
-      LocalElement local = element;
-      irBuilder.add(new ir.SetClosureVariable(local, valueToStore));
-    } else {
-      valueToStore.useElementAsHint(element);
-      irBuilder.environment.update(element, valueToStore);
-    }
-  }
-
   void setStatic(Element element,
                  Selector selector,
                  ir.Primitive valueToStore) {
@@ -1104,7 +937,7 @@
     }
 
     if (Elements.isLocal(element)) {
-      setLocal(element, valueToStore);
+      irBuilder.buildLocalSet(element, valueToStore);
     } else if ((!node.isSuperCall && Elements.isErroneousElement(element)) ||
                 Elements.isStaticOrTopLevel(element)) {
       setStatic(element, elements.getSelector(node), valueToStore);
@@ -1129,18 +962,18 @@
   }
 
   ir.Primitive visitNewExpression(ast.NewExpression node) {
-    assert(irBuilder.isOpen);
     if (node.isConst) {
       return translateConstant(node);
     }
     FunctionElement element = elements[node.send];
     Selector selector = elements.getSelector(node.send);
-    ast.Node selectorNode = node.send.selector;
     DartType type = elements.getType(node);
-    List<ir.Primitive> args =
+    ast.Node selectorNode = node.send.selector;
+    List<ir.Definition> arguments =
         node.send.arguments.mapToList(visit, growable:false);
-    return irBuilder.continueWithExpression(
-        (k) => new ir.InvokeConstructor(type, element,selector, k, args));
+    return irBuilder.buildConstructorInvocation(
+        element, selector, type, arguments);
+
   }
 
   ir.Primitive visitStringJuxtaposition(ast.StringJuxtaposition node) {
@@ -1190,7 +1023,7 @@
   ir.Primitive visitFunctionDeclaration(ast.FunctionDeclaration node) {
     LocalFunctionElement element = elements[node.function];
     ir.FunctionDefinition inner = makeSubFunction(node.function);
-    if (isClosureVariable(element)) {
+    if (irBuilder.isClosureVariable(element)) {
       irBuilder.add(new ir.DeclareFunction(element, inner));
     } else {
       ir.CreateFunction prim = new ir.CreateFunction(inner);
diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart
index 4e2afbd..53107a1 100644
--- a/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart
+++ b/sdk/lib/_internal/compiler/implementation/inferrer/type_graph_inferrer.dart
@@ -341,7 +341,9 @@
                                ast.Node node,
                                Element enclosing,
                                [TypeInformation elementType, int length]) {
-    bool isTypedArray = (compiler.typedDataClass != null) &&
+    bool isTypedArray =
+        compiler.typedDataClass != null &&
+        classWorld.isInstantiated(compiler.typedDataClass) &&
         type.type.satisfies(compiler.typedDataClass, classWorld);
     bool isConst = (type.type == compiler.typesTask.constListType);
     bool isFixed = (type.type == compiler.typesTask.fixedListType) ||
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 0375ea8..dfd5a92 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -2074,9 +2074,11 @@
     // Just checking for [:TypedData:] is not sufficient, as it is an
     // abstract class any user-defined class can implement. So we also
     // check for the interface [JavaScriptIndexingBehavior].
-    return compiler.typedDataClass != null
-        && mask.satisfies(compiler.typedDataClass, compiler.world)
-        && mask.satisfies(jsIndexingBehaviorInterface, compiler.world);
+    return
+        compiler.typedDataClass != null &&
+        compiler.world.isInstantiated(compiler.typedDataClass) &&
+        mask.satisfies(compiler.typedDataClass, compiler.world) &&
+        mask.satisfies(jsIndexingBehaviorInterface, compiler.world);
   }
 
   bool couldBeTypedArray(TypeMask mask) {
@@ -2084,11 +2086,13 @@
         !type1.intersection(type2, compiler.world).isEmpty;
     // TODO(herhut): Maybe cache the TypeMask for typedDataClass and
     //               jsIndexingBehaviourInterface.
-    return compiler.typedDataClass != null &&
-           intersects(mask, new TypeMask.subtype(compiler.typedDataClass,
-                                                 compiler.world)) &&
-           intersects(mask, new TypeMask.subtype(jsIndexingBehaviorInterface,
-                                                 compiler.world));
+    return
+        compiler.typedDataClass != null &&
+        compiler.world.isInstantiated(compiler.typedDataClass) &&
+        intersects(mask,
+            new TypeMask.subtype(compiler.typedDataClass, compiler.world)) &&
+        intersects(mask,
+            new TypeMask.subtype(jsIndexingBehaviorInterface, compiler.world));
   }
 
   /// Returns all static fields that are referenced through [targetsUsed].
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
index 10a279d..3d6e72f 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
@@ -174,6 +174,7 @@
       const JavaScriptBinaryArithmeticOperation(const SubtractOperation());
   final truncatingDivide = const JavaScriptBinaryArithmeticOperation(
       const TruncatingDivideOperation());
+  final codeUnitAt = const CodeUnitAtRuntimeOperation();
 
   const JavaScriptConstantSystem();
 
@@ -341,4 +342,4 @@
     result.addAll(values);
     return result;
   }
-}
\ No newline at end of file
+}
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/invoke_dynamic_specializers.dart b/sdk/lib/_internal/compiler/implementation/ssa/invoke_dynamic_specializers.dart
index d9fc286..5511118 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/invoke_dynamic_specializers.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/invoke_dynamic_specializers.dart
@@ -69,6 +69,12 @@
       } else if (selector.name == '>=') {
         return const GreaterEqualSpecializer();
       }
+    } else if (selector.kind == SelectorKind.CALL) {
+      if (selector.argumentCount == 1 && selector.namedArguments.length == 0) {
+        if (selector.name == 'codeUnitAt') {
+          return const CodeUnitAtSpecializer();
+        }
+      }
     }
     return const InvokeDynamicSpecializer();
   }
@@ -726,3 +732,18 @@
         instruction.selector, backend.boolType);
   }
 }
+
+class CodeUnitAtSpecializer extends InvokeDynamicSpecializer {
+  const CodeUnitAtSpecializer();
+
+  BinaryOperation operation(ConstantSystem constantSystem) {
+    return constantSystem.codeUnitAt;
+  }
+
+  HInstruction tryConvertToBuiltin(HInvokeDynamic instruction,
+                                   Compiler compiler) {
+    // TODO(sra): Implement a builtin HCodeUnitAt instruction and the same index
+    // bounds checking optimizations as for HIndex.
+    return null;
+  }
+}
diff --git a/sdk/lib/_internal/compiler/implementation/tree/nodes.dart b/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
index 505d283..5bb147e 100644
--- a/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
+++ b/sdk/lib/_internal/compiler/implementation/tree/nodes.dart
@@ -667,8 +667,10 @@
   For asFor() => this;
 
   Expression get condition {
-    if (conditionStatement is ExpressionStatement) {
-      return conditionStatement.asExpressionStatement().expression;
+    ExpressionStatement expressionStatement =
+        conditionStatement.asExpressionStatement();
+    if (expressionStatement != null) {
+      return expressionStatement.expression;
     } else {
       return null;
     }
diff --git a/sdk/lib/_internal/compiler/implementation/world.dart b/sdk/lib/_internal/compiler/implementation/world.dart
index b10e308..4391cdb 100644
--- a/sdk/lib/_internal/compiler/implementation/world.dart
+++ b/sdk/lib/_internal/compiler/implementation/world.dart
@@ -112,18 +112,17 @@
       invariant(cls, cls.isDeclaration,
                 message: '$cls must be the declaration.') &&
       invariant(cls, cls.isResolved,
-                message: '$cls must be resolved.');
-    // TODO(johnniwinther): Enable check for instantiation:
-    // (!mustBeInstantiated ||
-    //   invariant(cls, isInstantiated(cls),
-    //             message: '$cls is not instantiated.'));
+                message: '$cls must be resolved.') &&
+      (!mustBeInstantiated ||
+       invariant(cls, isInstantiated(cls),
+                 message: '$cls is not instantiated.'));
  }
 
   /// Returns `true` if [x] is a subtype of [y], that is, if [x] implements an
   /// instance of [y].
   bool isSubtypeOf(ClassElement x, ClassElement y) {
-    assert(checkInvariants(x, mustBeInstantiated: true));
-    assert(checkInvariants(y));
+    assert(checkInvariants(x));
+    assert(checkInvariants(y, mustBeInstantiated: false));
 
     if (y == objectClass) return true;
     if (x == objectClass) return false;
diff --git a/sdk/lib/_internal/compiler/js_lib/convert_patch.dart b/sdk/lib/_internal/compiler/js_lib/convert_patch.dart
index dd7244d..2686ca6 100644
--- a/sdk/lib/_internal/compiler/js_lib/convert_patch.dart
+++ b/sdk/lib/_internal/compiler/js_lib/convert_patch.dart
@@ -337,3 +337,35 @@
   static _newJavaScriptObject()
       => JS('=Object', 'Object.create(null)');
 }
+
+@patch class JsonDecoder {
+  @patch
+  StringConversionSink startChunkedConversion(Sink<Object> sink) {
+    return new _JsonDecoderSink(_reviver, sink);
+  }
+}
+
+/**
+ * Implements the chunked conversion from a JSON string to its corresponding
+ * object.
+ *
+ * The sink only creates one object, but its input can be chunked.
+ */
+// TODO(floitsch): don't accumulate everything before starting to decode.
+class _JsonDecoderSink extends _StringSinkConversionSink {
+  final _Reviver _reviver;
+  final Sink<Object> _sink;
+
+  _JsonDecoderSink(this._reviver, this._sink)
+      : super(new StringBuffer());
+
+  void close() {
+    super.close();
+    StringBuffer buffer = _stringSink;
+    String accumulated = buffer.toString();
+    buffer.clear();
+    Object decoded = _parseJson(accumulated, _reviver);
+    _sink.add(decoded);
+    _sink.close();
+  }
+}
diff --git a/sdk/lib/_internal/compiler/js_lib/interceptors.dart b/sdk/lib/_internal/compiler/js_lib/interceptors.dart
index ea4d901..e70b106 100644
--- a/sdk/lib/_internal/compiler/js_lib/interceptors.dart
+++ b/sdk/lib/_internal/compiler/js_lib/interceptors.dart
@@ -23,6 +23,7 @@
                               initNativeDispatch,
                               initNativeDispatchFlag,
                               regExpGetNative,
+                              regExpCaptureCount,
                               stringContainsUnchecked,
                               stringLastIndexOfUnchecked,
                               stringReplaceAllFuncUnchecked,
diff --git a/sdk/lib/_internal/compiler/js_lib/js_string.dart b/sdk/lib/_internal/compiler/js_lib/js_string.dart
index ec1ece1..c7fd9ab 100644
--- a/sdk/lib/_internal/compiler/js_lib/js_string.dart
+++ b/sdk/lib/_internal/compiler/js_lib/js_string.dart
@@ -83,14 +83,42 @@
     checkNull(pattern);
     if (pattern is String) {
       return JS('JSExtendableArray', r'#.split(#)', this, pattern);
-    } else if (pattern is JSSyntaxRegExp) {
+    } else if (pattern is JSSyntaxRegExp && regExpCaptureCount(pattern) == 0) {
       var re = regExpGetNative(pattern);
       return JS('JSExtendableArray', r'#.split(#)', this, re);
     } else {
-      throw "String.split(Pattern) UNIMPLEMENTED";
+      return _defaultSplit(pattern);
     }
   }
 
+  List<String> _defaultSplit(Pattern pattern) {
+    List<String> result = <String>[];
+    // End of most recent match. That is, start of next part to add to result.
+    int start = 0;
+    // Length of most recent match.
+    // Set >0, so no match on the empty string causes the result to be [""].
+    int length = 1;
+    for (var match in pattern.allMatches(this)) {
+      int matchStart = match.start;
+      int matchEnd = match.end;
+      length = matchEnd - matchStart;
+      if (length == 0 && start == matchStart) {
+        // An empty match right after another match is ignored.
+        // This includes an empty match at the start of the string.
+        continue;
+      }
+      int end = matchStart;
+      result.add(this.substring(start, end));
+      start = matchEnd;
+    }
+    if (start < this.length || length > 0) {
+      // An empty match at the end of the string does not cause a "" at the end.
+      // A non-empty match ending at the end of the string does add a "".
+      result.add(this.substring(start));
+    }
+    return result;
+  }
+
   bool startsWith(Pattern pattern, [int index = 0]) {
     checkInt(index);
     if (index < 0 || index > this.length) {
diff --git a/sdk/lib/_internal/compiler/js_lib/regexp_helper.dart b/sdk/lib/_internal/compiler/js_lib/regexp_helper.dart
index 7f930eb..4bdf754 100644
--- a/sdk/lib/_internal/compiler/js_lib/regexp_helper.dart
+++ b/sdk/lib/_internal/compiler/js_lib/regexp_helper.dart
@@ -22,12 +22,31 @@
   return nativeRegexp;
 }
 
+/**
+ * Computes the number of captures in a regexp.
+ *
+ * This currently involves creating a new RegExp object with a different
+ * source and running it against the empty string (the last part is usually
+ * fast).
+ *
+ * The JSSyntaxRegExp could cache the result, and set the cache any time
+ * it finds a match.
+ */
+int regExpCaptureCount(JSSyntaxRegExp regexp) {
+  var nativeAnchoredRegExp = regexp._nativeAnchoredVersion;
+  var match = JS('JSExtendableArray', "#.exec('')", nativeAnchoredRegExp);
+  // The native-anchored regexp always have one capture more than the original,
+  // and always matches the empty string.
+  return match.length - 2;
+}
+
 class JSSyntaxRegExp implements RegExp {
   final String pattern;
   final _nativeRegExp;
   var _nativeGlobalRegExp;
   var _nativeAnchoredRegExp;
 
+  String toString() => "RegExp/$pattern/";
 
   JSSyntaxRegExp(String source,
                  { bool multiLine: false,
diff --git a/sdk/lib/convert/json.dart b/sdk/lib/convert/json.dart
index 910b8cc..4b7817f 100644
--- a/sdk/lib/convert/json.dart
+++ b/sdk/lib/convert/json.dart
@@ -326,39 +326,12 @@
    *
    * The output [sink] receives exactly one decoded element through `add`.
    */
-  StringConversionSink startChunkedConversion(Sink<Object> sink) {
-    return new _JsonDecoderSink(_reviver, sink);
-  }
+  external StringConversionSink startChunkedConversion(Sink<Object> sink);
 
   // Override the base-classes bind, to provide a better type.
   Stream<Object> bind(Stream<String> stream) => super.bind(stream);
 }
 
-/**
- * Implements the chunked conversion from a JSON string to its corresponding
- * object.
- *
- * The sink only creates one object, but its input can be chunked.
- */
-// TODO(floitsch): don't accumulate everything before starting to decode.
-class _JsonDecoderSink extends _StringSinkConversionSink {
-  final _Reviver _reviver;
-  final Sink<Object> _sink;
-
-  _JsonDecoderSink(this._reviver, this._sink)
-      : super(new StringBuffer());
-
-  void close() {
-    super.close();
-    StringBuffer buffer = _stringSink;
-    String accumulated = buffer.toString();
-    buffer.clear();
-    Object decoded = _parseJson(accumulated, _reviver);
-    _sink.add(decoded);
-    _sink.close();
-  }
-}
-
 // Internal optimized JSON parsing implementation.
 external _parseJson(String source, reviver(key, value));
 
diff --git a/sdk/lib/core/string.dart b/sdk/lib/core/string.dart
index 90e6b50..8c8f8f0 100644
--- a/sdk/lib/core/string.dart
+++ b/sdk/lib/core/string.dart
@@ -463,11 +463,30 @@
   String replaceAllMapped(Pattern from, String replace(Match match));
 
   /**
-   * Splits the string at matches of [pattern]. Returns
-   * a list of substrings.
+   * Splits the string at matches of [pattern] and returns a list of substrings.
    *
-   * Splitting with an empty string pattern (`''`) splits at UTF-16 code unit
-   * boundaries and not at rune boundaries:
+   * Finds all the matches of `pattern` in this string,
+   * and returns the list of the substrings between the matches.
+   *
+   *     var string = "Hello world!";
+   *     string.split(" ");                      // ['Hello', 'world!'];
+   *
+   * Empty matches at the beginning and end of the strings are ignored,
+   * and so are empty matches right after another match.
+   *
+   *     var string = "abba";
+   *     string.split(new RegExp(r"b*"));        // ['a', 'a']
+   *                                             // not ['', 'a', 'a', '']
+   *
+   * If this string is empty, the result is an empty list if `pattern` matches
+   * the empty string, and it is `[""]` if the pattern doesn't match.
+   *
+   *     var string = '';
+   *     string.split('');                       // []
+   *     string.split("a");                      // ['']
+   *
+   * Splitting with an empty pattern splits the string into single-code unit
+   * strings.
    *
    *     var string = 'Pub';
    *     string.split('');                       // ['P', 'u', 'b']
@@ -476,15 +495,18 @@
    *       return new String.fromCharCode(unit);
    *     }).toList();                            // ['P', 'u', 'b']
    *
+   * Splitting happens at UTF-16 code unit boundaries,
+   * and not at rune boundaries:
+   *
    *     // String made up of two code units, but one rune.
    *     string = '\u{1D11E}';
-   *     string.split('').length;                 // 2
+   *     string.split('').length;                 // 2 surrogate values
    *
-   * You should [map] the runes unless you are certain that the string is in
-   * the basic multilingual plane (meaning that each code unit represents a
-   * rune):
+   * To get a list of strings containing the individual runes of a string,
+   * you should not use split. You can instead map each rune to a string
+   * as follows:
    *
-   *     string.runes.map((rune) => new String.fromCharCode(rune));
+   *     string.runes.map((rune) => new String.fromCharCode(rune)).toList();
    */
   List<String> split(Pattern pattern);
 
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 1c465c6..88a4020 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -127,7 +127,6 @@
 
 @DocsEditable()
 @DomName('AbstractWorker')
-@Native("AbstractWorker")
 abstract class AbstractWorker extends Interceptor implements EventTarget {
   // To suppress missing implicit constructor warnings.
   factory AbstractWorker._() { throw new UnsupportedError("Not supported"); }
@@ -21251,7 +21250,7 @@
 
 @DomName('Navigator')
 @Native("Navigator")
-class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLine, NavigatorID {
+class Navigator extends Interceptor implements NavigatorCpu, NavigatorLanguage, NavigatorOnLine, NavigatorID {
 
   @DomName('Navigator.language')
   String get language => JS('String', '#.language || #.userLanguage', this,
@@ -21454,6 +21453,13 @@
   @Experimental() // untriaged
   void unregisterProtocolHandler(String scheme, String url) native;
 
+  // From NavigatorCPU
+
+  @DomName('Navigator.hardwareConcurrency')
+  @DocsEditable()
+  @Experimental() // untriaged
+  final int hardwareConcurrency;
+
   // From NavigatorID
 
   @DomName('Navigator.appCodeName')
@@ -21510,14 +21516,10 @@
 @DocsEditable()
 @DomName('NavigatorCPU')
 @Experimental() // untriaged
-@Native("NavigatorCPU")
-class NavigatorCpu extends Interceptor {
+abstract class NavigatorCpu extends Interceptor {
   // To suppress missing implicit constructor warnings.
   factory NavigatorCpu._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('NavigatorCPU.hardwareConcurrency')
-  @DocsEditable()
-  @Experimental() // untriaged
   final int hardwareConcurrency;
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21554,19 +21556,12 @@
 @DocsEditable()
 @DomName('NavigatorLanguage')
 @Experimental() // untriaged
-@Native("NavigatorLanguage")
-class NavigatorLanguage extends Interceptor {
+abstract class NavigatorLanguage extends Interceptor {
   // To suppress missing implicit constructor warnings.
   factory NavigatorLanguage._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('NavigatorLanguage.language')
-  @DocsEditable()
-  @Experimental() // untriaged
   final String language;
 
-  @DomName('NavigatorLanguage.languages')
-  @DocsEditable()
-  @Experimental() // untriaged
   final List<String> languages;
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -33904,10 +33899,12 @@
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workernavigator
 @Experimental()
 @Native("WorkerNavigator")
-abstract class _WorkerNavigator extends NavigatorCpu implements NavigatorOnLine, NavigatorID {
+abstract class _WorkerNavigator extends Interceptor implements NavigatorCpu, NavigatorOnLine, NavigatorID {
   // To suppress missing implicit constructor warnings.
   factory _WorkerNavigator._() { throw new UnsupportedError("Not supported"); }
 
+  // From NavigatorCPU
+
   // From NavigatorID
 
   // From NavigatorOnLine
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index e1b8b5e..25dbbf9 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -666,147 +666,147 @@
 
   @DomName('HTMLAnchorElement.download')
   @DocsEditable()
-  String get download => _blink.BlinkHTMLAnchorElement.download_Getter(this);
+  String get download => _blink.BlinkHTMLAnchorElement.instance.download_Getter_(this);
 
   @DomName('HTMLAnchorElement.download')
   @DocsEditable()
-  void set download(String value) => _blink.BlinkHTMLAnchorElement.download_Setter(this, value);
+  void set download(String value) => _blink.BlinkHTMLAnchorElement.instance.download_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
-  String get hreflang => _blink.BlinkHTMLAnchorElement.hreflang_Getter(this);
+  String get hreflang => _blink.BlinkHTMLAnchorElement.instance.hreflang_Getter_(this);
 
   @DomName('HTMLAnchorElement.hreflang')
   @DocsEditable()
-  void set hreflang(String value) => _blink.BlinkHTMLAnchorElement.hreflang_Setter(this, value);
+  void set hreflang(String value) => _blink.BlinkHTMLAnchorElement.instance.hreflang_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLAnchorElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLAnchorElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLAnchorElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLAnchorElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLAnchorElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
-  String get rel => _blink.BlinkHTMLAnchorElement.rel_Getter(this);
+  String get rel => _blink.BlinkHTMLAnchorElement.instance.rel_Getter_(this);
 
   @DomName('HTMLAnchorElement.rel')
   @DocsEditable()
-  void set rel(String value) => _blink.BlinkHTMLAnchorElement.rel_Setter(this, value);
+  void set rel(String value) => _blink.BlinkHTMLAnchorElement.instance.rel_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLAnchorElement.target_Getter(this);
+  String get target => _blink.BlinkHTMLAnchorElement.instance.target_Getter_(this);
 
   @DomName('HTMLAnchorElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLAnchorElement.target_Setter(this, value);
+  void set target(String value) => _blink.BlinkHTMLAnchorElement.instance.target_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLAnchorElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLAnchorElement.instance.type_Getter_(this);
 
   @DomName('HTMLAnchorElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLAnchorElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLAnchorElement.instance.type_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkHTMLAnchorElement.hash_Getter(this);
+  String get hash => _blink.BlinkHTMLAnchorElement.instance.hash_Getter_(this);
 
   @DomName('HTMLAnchorElement.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkHTMLAnchorElement.hash_Setter(this, value);
+  void set hash(String value) => _blink.BlinkHTMLAnchorElement.instance.hash_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
-  String get host => _blink.BlinkHTMLAnchorElement.host_Getter(this);
+  String get host => _blink.BlinkHTMLAnchorElement.instance.host_Getter_(this);
 
   @DomName('HTMLAnchorElement.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkHTMLAnchorElement.host_Setter(this, value);
+  void set host(String value) => _blink.BlinkHTMLAnchorElement.instance.host_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkHTMLAnchorElement.hostname_Getter(this);
+  String get hostname => _blink.BlinkHTMLAnchorElement.instance.hostname_Getter_(this);
 
   @DomName('HTMLAnchorElement.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkHTMLAnchorElement.hostname_Setter(this, value);
+  void set hostname(String value) => _blink.BlinkHTMLAnchorElement.instance.hostname_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLAnchorElement.href_Getter(this);
+  String get href => _blink.BlinkHTMLAnchorElement.instance.href_Getter_(this);
 
   @DomName('HTMLAnchorElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLAnchorElement.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkHTMLAnchorElement.instance.href_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.origin')
   @DocsEditable()
   // WebKit only
   @Experimental() // non-standard
-  String get origin => _blink.BlinkHTMLAnchorElement.origin_Getter(this);
+  String get origin => _blink.BlinkHTMLAnchorElement.instance.origin_Getter_(this);
 
   @DomName('HTMLAnchorElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkHTMLAnchorElement.password_Getter(this);
+  String get password => _blink.BlinkHTMLAnchorElement.instance.password_Getter_(this);
 
   @DomName('HTMLAnchorElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkHTMLAnchorElement.password_Setter(this, value);
+  void set password(String value) => _blink.BlinkHTMLAnchorElement.instance.password_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkHTMLAnchorElement.pathname_Getter(this);
+  String get pathname => _blink.BlinkHTMLAnchorElement.instance.pathname_Getter_(this);
 
   @DomName('HTMLAnchorElement.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkHTMLAnchorElement.pathname_Setter(this, value);
+  void set pathname(String value) => _blink.BlinkHTMLAnchorElement.instance.pathname_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
-  String get port => _blink.BlinkHTMLAnchorElement.port_Getter(this);
+  String get port => _blink.BlinkHTMLAnchorElement.instance.port_Getter_(this);
 
   @DomName('HTMLAnchorElement.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkHTMLAnchorElement.port_Setter(this, value);
+  void set port(String value) => _blink.BlinkHTMLAnchorElement.instance.port_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkHTMLAnchorElement.protocol_Getter(this);
+  String get protocol => _blink.BlinkHTMLAnchorElement.instance.protocol_Getter_(this);
 
   @DomName('HTMLAnchorElement.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkHTMLAnchorElement.protocol_Setter(this, value);
+  void set protocol(String value) => _blink.BlinkHTMLAnchorElement.instance.protocol_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
-  String get search => _blink.BlinkHTMLAnchorElement.search_Getter(this);
+  String get search => _blink.BlinkHTMLAnchorElement.instance.search_Getter_(this);
 
   @DomName('HTMLAnchorElement.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkHTMLAnchorElement.search_Setter(this, value);
+  void set search(String value) => _blink.BlinkHTMLAnchorElement.instance.search_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkHTMLAnchorElement.username_Getter(this);
+  String get username => _blink.BlinkHTMLAnchorElement.instance.username_Getter_(this);
 
   @DomName('HTMLAnchorElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkHTMLAnchorElement.username_Setter(this, value);
+  void set username(String value) => _blink.BlinkHTMLAnchorElement.instance.username_Setter_(this, value);
 
   @DomName('HTMLAnchorElement.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkHTMLAnchorElement.toString_Callback(this);
+  String toString() => _blink.BlinkHTMLAnchorElement.instance.toString_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -827,13 +827,13 @@
   @DocsEditable()
   factory Animation(Element target, List<Map> keyframes, [timingInput]) {
     if ((keyframes is List<Map> || keyframes == null) && (target is Element || target == null) && timingInput == null) {
-      return _blink.BlinkAnimation.constructorCallback_2(target, keyframes);
+      return _blink.BlinkAnimation.instance.constructorCallback_2_(target, keyframes);
     }
     if ((timingInput is num || timingInput == null) && (keyframes is List<Map> || keyframes == null) && (target is Element || target == null)) {
-      return _blink.BlinkAnimation.constructorCallback_3(target, keyframes, timingInput);
+      return _blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput);
     }
     if ((timingInput is Map || timingInput == null) && (keyframes is List<Map> || keyframes == null) && (target is Element || target == null)) {
-      return _blink.BlinkAnimation.constructorCallback_3(target, keyframes, timingInput);
+      return _blink.BlinkAnimation.instance.constructorCallback_3_(target, keyframes, timingInput);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -872,11 +872,11 @@
 
   @DomName('WebKitAnimationEvent.animationName')
   @DocsEditable()
-  String get animationName => _blink.BlinkWebKitAnimationEvent.animationName_Getter(this);
+  String get animationName => _blink.BlinkWebKitAnimationEvent.instance.animationName_Getter_(this);
 
   @DomName('WebKitAnimationEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkWebKitAnimationEvent.elapsedTime_Getter(this);
+  double get elapsedTime => _blink.BlinkWebKitAnimationEvent.instance.elapsedTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -896,42 +896,42 @@
   @DomName('AnimationNode.activeDuration')
   @DocsEditable()
   @Experimental() // untriaged
-  double get activeDuration => _blink.BlinkAnimationNode.activeDuration_Getter(this);
+  double get activeDuration => _blink.BlinkAnimationNode.instance.activeDuration_Getter_(this);
 
   @DomName('AnimationNode.currentIteration')
   @DocsEditable()
   @Experimental() // untriaged
-  int get currentIteration => _blink.BlinkAnimationNode.currentIteration_Getter(this);
+  int get currentIteration => _blink.BlinkAnimationNode.instance.currentIteration_Getter_(this);
 
   @DomName('AnimationNode.duration')
   @DocsEditable()
   @Experimental() // untriaged
-  double get duration => _blink.BlinkAnimationNode.duration_Getter(this);
+  double get duration => _blink.BlinkAnimationNode.instance.duration_Getter_(this);
 
   @DomName('AnimationNode.endTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get endTime => _blink.BlinkAnimationNode.endTime_Getter(this);
+  double get endTime => _blink.BlinkAnimationNode.instance.endTime_Getter_(this);
 
   @DomName('AnimationNode.localTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get localTime => _blink.BlinkAnimationNode.localTime_Getter(this);
+  double get localTime => _blink.BlinkAnimationNode.instance.localTime_Getter_(this);
 
   @DomName('AnimationNode.player')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationPlayer get player => _blink.BlinkAnimationNode.player_Getter(this);
+  AnimationPlayer get player => _blink.BlinkAnimationNode.instance.player_Getter_(this);
 
   @DomName('AnimationNode.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get startTime => _blink.BlinkAnimationNode.startTime_Getter(this);
+  double get startTime => _blink.BlinkAnimationNode.instance.startTime_Getter_(this);
 
   @DomName('AnimationNode.timing')
   @DocsEditable()
   @Experimental() // untriaged
-  Timing get timing => _blink.BlinkAnimationNode.timing_Getter(this);
+  Timing get timing => _blink.BlinkAnimationNode.instance.timing_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -951,77 +951,77 @@
   @DomName('AnimationPlayer.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get currentTime => _blink.BlinkAnimationPlayer.currentTime_Getter(this);
+  num get currentTime => _blink.BlinkAnimationPlayer.instance.currentTime_Getter_(this);
 
   @DomName('AnimationPlayer.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  void set currentTime(num value) => _blink.BlinkAnimationPlayer.currentTime_Setter(this, value);
+  void set currentTime(num value) => _blink.BlinkAnimationPlayer.instance.currentTime_Setter_(this, value);
 
   @DomName('AnimationPlayer.finished')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get finished => _blink.BlinkAnimationPlayer.finished_Getter(this);
+  bool get finished => _blink.BlinkAnimationPlayer.instance.finished_Getter_(this);
 
   @DomName('AnimationPlayer.paused')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get paused => _blink.BlinkAnimationPlayer.paused_Getter(this);
+  bool get paused => _blink.BlinkAnimationPlayer.instance.paused_Getter_(this);
 
   @DomName('AnimationPlayer.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackRate => _blink.BlinkAnimationPlayer.playbackRate_Getter(this);
+  num get playbackRate => _blink.BlinkAnimationPlayer.instance.playbackRate_Getter_(this);
 
   @DomName('AnimationPlayer.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  void set playbackRate(num value) => _blink.BlinkAnimationPlayer.playbackRate_Setter(this, value);
+  void set playbackRate(num value) => _blink.BlinkAnimationPlayer.instance.playbackRate_Setter_(this, value);
 
   @DomName('AnimationPlayer.source')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationNode get source => _blink.BlinkAnimationPlayer.source_Getter(this);
+  AnimationNode get source => _blink.BlinkAnimationPlayer.instance.source_Getter_(this);
 
   @DomName('AnimationPlayer.source')
   @DocsEditable()
   @Experimental() // untriaged
-  void set source(AnimationNode value) => _blink.BlinkAnimationPlayer.source_Setter(this, value);
+  void set source(AnimationNode value) => _blink.BlinkAnimationPlayer.instance.source_Setter_(this, value);
 
   @DomName('AnimationPlayer.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  num get startTime => _blink.BlinkAnimationPlayer.startTime_Getter(this);
+  num get startTime => _blink.BlinkAnimationPlayer.instance.startTime_Getter_(this);
 
   @DomName('AnimationPlayer.startTime')
   @DocsEditable()
   @Experimental() // untriaged
-  void set startTime(num value) => _blink.BlinkAnimationPlayer.startTime_Setter(this, value);
+  void set startTime(num value) => _blink.BlinkAnimationPlayer.instance.startTime_Setter_(this, value);
 
   @DomName('AnimationPlayer.cancel')
   @DocsEditable()
   @Experimental() // untriaged
-  void cancel() => _blink.BlinkAnimationPlayer.cancel_Callback(this);
+  void cancel() => _blink.BlinkAnimationPlayer.instance.cancel_Callback_0_(this);
 
   @DomName('AnimationPlayer.finish')
   @DocsEditable()
   @Experimental() // untriaged
-  void finish() => _blink.BlinkAnimationPlayer.finish_Callback(this);
+  void finish() => _blink.BlinkAnimationPlayer.instance.finish_Callback_0_(this);
 
   @DomName('AnimationPlayer.pause')
   @DocsEditable()
   @Experimental() // untriaged
-  void pause() => _blink.BlinkAnimationPlayer.pause_Callback(this);
+  void pause() => _blink.BlinkAnimationPlayer.instance.pause_Callback_0_(this);
 
   @DomName('AnimationPlayer.play')
   @DocsEditable()
   @Experimental() // untriaged
-  void play() => _blink.BlinkAnimationPlayer.play_Callback(this);
+  void play() => _blink.BlinkAnimationPlayer.instance.play_Callback_0_(this);
 
   @DomName('AnimationPlayer.reverse')
   @DocsEditable()
   @Experimental() // untriaged
-  void reverse() => _blink.BlinkAnimationPlayer.reverse_Callback(this);
+  void reverse() => _blink.BlinkAnimationPlayer.instance.reverse_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1041,12 +1041,12 @@
   @DomName('AnimationPlayerEvent.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get currentTime => _blink.BlinkAnimationPlayerEvent.currentTime_Getter(this);
+  double get currentTime => _blink.BlinkAnimationPlayerEvent.instance.currentTime_Getter_(this);
 
   @DomName('AnimationPlayerEvent.timelineTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get timelineTime => _blink.BlinkAnimationPlayerEvent.timelineTime_Getter(this);
+  double get timelineTime => _blink.BlinkAnimationPlayerEvent.instance.timelineTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1066,17 +1066,17 @@
   @DomName('AnimationTimeline.currentTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get currentTime => _blink.BlinkAnimationTimeline.currentTime_Getter(this);
+  double get currentTime => _blink.BlinkAnimationTimeline.instance.currentTime_Getter_(this);
 
   @DomName('AnimationTimeline.getAnimationPlayers')
   @DocsEditable()
   @Experimental() // untriaged
-  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkAnimationTimeline.getAnimationPlayers_Callback(this);
+  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkAnimationTimeline.instance.getAnimationPlayers_Callback_0_(this);
 
   @DomName('AnimationTimeline.play')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationPlayer play(AnimationNode source) => _blink.BlinkAnimationTimeline.play_Callback_1(this, source);
+  AnimationPlayer play(AnimationNode source) => _blink.BlinkAnimationTimeline.instance.play_Callback_1_(this, source);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1210,19 +1210,19 @@
 
   @DomName('ApplicationCache.status')
   @DocsEditable()
-  int get status => _blink.BlinkApplicationCache.status_Getter(this);
+  int get status => _blink.BlinkApplicationCache.instance.status_Getter_(this);
 
   @DomName('ApplicationCache.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkApplicationCache.abort_Callback(this);
+  void abort() => _blink.BlinkApplicationCache.instance.abort_Callback_0_(this);
 
   @DomName('ApplicationCache.swapCache')
   @DocsEditable()
-  void swapCache() => _blink.BlinkApplicationCache.swapCache_Callback(this);
+  void swapCache() => _blink.BlinkApplicationCache.instance.swapCache_Callback_0_(this);
 
   @DomName('ApplicationCache.update')
   @DocsEditable()
-  void update() => _blink.BlinkApplicationCache.update_Callback(this);
+  void update() => _blink.BlinkApplicationCache.instance.update_Callback_0_(this);
 
   /// Stream of `cached` events handled by this [ApplicationCache].
   @DomName('ApplicationCache.oncached')
@@ -1282,22 +1282,22 @@
   @DomName('ApplicationCacheErrorEvent.message')
   @DocsEditable()
   @Experimental() // untriaged
-  String get message => _blink.BlinkApplicationCacheErrorEvent.message_Getter(this);
+  String get message => _blink.BlinkApplicationCacheErrorEvent.instance.message_Getter_(this);
 
   @DomName('ApplicationCacheErrorEvent.reason')
   @DocsEditable()
   @Experimental() // untriaged
-  String get reason => _blink.BlinkApplicationCacheErrorEvent.reason_Getter(this);
+  String get reason => _blink.BlinkApplicationCacheErrorEvent.instance.reason_Getter_(this);
 
   @DomName('ApplicationCacheErrorEvent.status')
   @DocsEditable()
   @Experimental() // untriaged
-  int get status => _blink.BlinkApplicationCacheErrorEvent.status_Getter(this);
+  int get status => _blink.BlinkApplicationCacheErrorEvent.instance.status_Getter_(this);
 
   @DomName('ApplicationCacheErrorEvent.url')
   @DocsEditable()
   @Experimental() // untriaged
-  String get url => _blink.BlinkApplicationCacheErrorEvent.url_Getter(this);
+  String get url => _blink.BlinkApplicationCacheErrorEvent.instance.url_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1335,129 +1335,129 @@
 
   @DomName('HTMLAreaElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLAreaElement.alt_Getter(this);
+  String get alt => _blink.BlinkHTMLAreaElement.instance.alt_Getter_(this);
 
   @DomName('HTMLAreaElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLAreaElement.alt_Setter(this, value);
+  void set alt(String value) => _blink.BlinkHTMLAreaElement.instance.alt_Setter_(this, value);
 
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
-  String get coords => _blink.BlinkHTMLAreaElement.coords_Getter(this);
+  String get coords => _blink.BlinkHTMLAreaElement.instance.coords_Getter_(this);
 
   @DomName('HTMLAreaElement.coords')
   @DocsEditable()
-  void set coords(String value) => _blink.BlinkHTMLAreaElement.coords_Setter(this, value);
+  void set coords(String value) => _blink.BlinkHTMLAreaElement.instance.coords_Setter_(this, value);
 
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
-  String get shape => _blink.BlinkHTMLAreaElement.shape_Getter(this);
+  String get shape => _blink.BlinkHTMLAreaElement.instance.shape_Getter_(this);
 
   @DomName('HTMLAreaElement.shape')
   @DocsEditable()
-  void set shape(String value) => _blink.BlinkHTMLAreaElement.shape_Setter(this, value);
+  void set shape(String value) => _blink.BlinkHTMLAreaElement.instance.shape_Setter_(this, value);
 
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLAreaElement.target_Getter(this);
+  String get target => _blink.BlinkHTMLAreaElement.instance.target_Getter_(this);
 
   @DomName('HTMLAreaElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLAreaElement.target_Setter(this, value);
+  void set target(String value) => _blink.BlinkHTMLAreaElement.instance.target_Setter_(this, value);
 
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkHTMLAreaElement.hash_Getter(this);
+  String get hash => _blink.BlinkHTMLAreaElement.instance.hash_Getter_(this);
 
   @DomName('HTMLAreaElement.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkHTMLAreaElement.hash_Setter(this, value);
+  void set hash(String value) => _blink.BlinkHTMLAreaElement.instance.hash_Setter_(this, value);
 
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
-  String get host => _blink.BlinkHTMLAreaElement.host_Getter(this);
+  String get host => _blink.BlinkHTMLAreaElement.instance.host_Getter_(this);
 
   @DomName('HTMLAreaElement.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkHTMLAreaElement.host_Setter(this, value);
+  void set host(String value) => _blink.BlinkHTMLAreaElement.instance.host_Setter_(this, value);
 
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkHTMLAreaElement.hostname_Getter(this);
+  String get hostname => _blink.BlinkHTMLAreaElement.instance.hostname_Getter_(this);
 
   @DomName('HTMLAreaElement.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkHTMLAreaElement.hostname_Setter(this, value);
+  void set hostname(String value) => _blink.BlinkHTMLAreaElement.instance.hostname_Setter_(this, value);
 
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLAreaElement.href_Getter(this);
+  String get href => _blink.BlinkHTMLAreaElement.instance.href_Getter_(this);
 
   @DomName('HTMLAreaElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLAreaElement.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkHTMLAreaElement.instance.href_Setter_(this, value);
 
   @DomName('HTMLAreaElement.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkHTMLAreaElement.origin_Getter(this);
+  String get origin => _blink.BlinkHTMLAreaElement.instance.origin_Getter_(this);
 
   @DomName('HTMLAreaElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkHTMLAreaElement.password_Getter(this);
+  String get password => _blink.BlinkHTMLAreaElement.instance.password_Getter_(this);
 
   @DomName('HTMLAreaElement.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkHTMLAreaElement.password_Setter(this, value);
+  void set password(String value) => _blink.BlinkHTMLAreaElement.instance.password_Setter_(this, value);
 
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkHTMLAreaElement.pathname_Getter(this);
+  String get pathname => _blink.BlinkHTMLAreaElement.instance.pathname_Getter_(this);
 
   @DomName('HTMLAreaElement.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkHTMLAreaElement.pathname_Setter(this, value);
+  void set pathname(String value) => _blink.BlinkHTMLAreaElement.instance.pathname_Setter_(this, value);
 
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
-  String get port => _blink.BlinkHTMLAreaElement.port_Getter(this);
+  String get port => _blink.BlinkHTMLAreaElement.instance.port_Getter_(this);
 
   @DomName('HTMLAreaElement.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkHTMLAreaElement.port_Setter(this, value);
+  void set port(String value) => _blink.BlinkHTMLAreaElement.instance.port_Setter_(this, value);
 
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkHTMLAreaElement.protocol_Getter(this);
+  String get protocol => _blink.BlinkHTMLAreaElement.instance.protocol_Getter_(this);
 
   @DomName('HTMLAreaElement.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkHTMLAreaElement.protocol_Setter(this, value);
+  void set protocol(String value) => _blink.BlinkHTMLAreaElement.instance.protocol_Setter_(this, value);
 
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
-  String get search => _blink.BlinkHTMLAreaElement.search_Getter(this);
+  String get search => _blink.BlinkHTMLAreaElement.instance.search_Getter_(this);
 
   @DomName('HTMLAreaElement.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkHTMLAreaElement.search_Setter(this, value);
+  void set search(String value) => _blink.BlinkHTMLAreaElement.instance.search_Setter_(this, value);
 
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkHTMLAreaElement.username_Getter(this);
+  String get username => _blink.BlinkHTMLAreaElement.instance.username_Getter_(this);
 
   @DomName('HTMLAreaElement.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkHTMLAreaElement.username_Setter(this, value);
+  void set username(String value) => _blink.BlinkHTMLAreaElement.instance.username_Setter_(this, value);
 
   @DomName('HTMLAreaElement.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkHTMLAreaElement.toString_Callback(this);
+  String toString() => _blink.BlinkHTMLAreaElement.instance.toString_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1476,7 +1476,7 @@
   @DomName('HTMLAudioElement.HTMLAudioElement')
   @DocsEditable()
   factory AudioElement([String src]) {
-    return _blink.BlinkHTMLAudioElement.constructorCallback_1(src);
+    return _blink.BlinkHTMLAudioElement.instance.constructorCallback_1_(src);
   }
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
@@ -1503,32 +1503,32 @@
   @DomName('AudioTrack.enabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get enabled => _blink.BlinkAudioTrack.enabled_Getter(this);
+  bool get enabled => _blink.BlinkAudioTrack.instance.enabled_Getter_(this);
 
   @DomName('AudioTrack.enabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set enabled(bool value) => _blink.BlinkAudioTrack.enabled_Setter(this, value);
+  void set enabled(bool value) => _blink.BlinkAudioTrack.instance.enabled_Setter_(this, value);
 
   @DomName('AudioTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkAudioTrack.id_Getter(this);
+  String get id => _blink.BlinkAudioTrack.instance.id_Getter_(this);
 
   @DomName('AudioTrack.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkAudioTrack.kind_Getter(this);
+  String get kind => _blink.BlinkAudioTrack.instance.kind_Getter_(this);
 
   @DomName('AudioTrack.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkAudioTrack.label_Getter(this);
+  String get label => _blink.BlinkAudioTrack.instance.label_Getter_(this);
 
   @DomName('AudioTrack.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkAudioTrack.language_Getter(this);
+  String get language => _blink.BlinkAudioTrack.instance.language_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1553,17 +1553,17 @@
   @DomName('AudioTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkAudioTrackList.length_Getter(this);
+  int get length => _blink.BlinkAudioTrackList.instance.length_Getter_(this);
 
   @DomName('AudioTrackList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrack __getter__(int index) => _blink.BlinkAudioTrackList.$__getter___Callback_1(this, index);
+  AudioTrack __getter__(int index) => _blink.BlinkAudioTrackList.instance.$__getter___Callback_1_(this, index);
 
   @DomName('AudioTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrack getTrackById(String id) => _blink.BlinkAudioTrackList.getTrackById_Callback_1(this, id);
+  AudioTrack getTrackById(String id) => _blink.BlinkAudioTrackList.instance.getTrackById_Callback_1_(this, id);
 
   @DomName('AudioTrackList.onchange')
   @DocsEditable()
@@ -1588,7 +1588,7 @@
 
   @DomName('AutocompleteErrorEvent.reason')
   @DocsEditable()
-  String get reason => _blink.BlinkAutocompleteErrorEvent.reason_Getter(this);
+  String get reason => _blink.BlinkAutocompleteErrorEvent.instance.reason_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1632,7 +1632,7 @@
 
   @DomName('BarProp.visible')
   @DocsEditable()
-  bool get visible => _blink.BlinkBarProp.visible_Getter(this);
+  bool get visible => _blink.BlinkBarProp.instance.visible_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1660,19 +1660,19 @@
 
   @DomName('HTMLBaseElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLBaseElement.href_Getter(this);
+  String get href => _blink.BlinkHTMLBaseElement.instance.href_Getter_(this);
 
   @DomName('HTMLBaseElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLBaseElement.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkHTMLBaseElement.instance.href_Setter_(this, value);
 
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLBaseElement.target_Getter(this);
+  String get target => _blink.BlinkHTMLBaseElement.instance.target_Getter_(this);
 
   @DomName('HTMLBaseElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLBaseElement.target_Setter(this, value);
+  void set target(String value) => _blink.BlinkHTMLBaseElement.instance.target_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1692,19 +1692,19 @@
 
   @DomName('BatteryManager.charging')
   @DocsEditable()
-  bool get charging => _blink.BlinkBatteryManager.charging_Getter(this);
+  bool get charging => _blink.BlinkBatteryManager.instance.charging_Getter_(this);
 
   @DomName('BatteryManager.chargingTime')
   @DocsEditable()
-  double get chargingTime => _blink.BlinkBatteryManager.chargingTime_Getter(this);
+  double get chargingTime => _blink.BlinkBatteryManager.instance.chargingTime_Getter_(this);
 
   @DomName('BatteryManager.dischargingTime')
   @DocsEditable()
-  double get dischargingTime => _blink.BlinkBatteryManager.dischargingTime_Getter(this);
+  double get dischargingTime => _blink.BlinkBatteryManager.instance.dischargingTime_Getter_(this);
 
   @DomName('BatteryManager.level')
   @DocsEditable()
-  double get level => _blink.BlinkBatteryManager.level_Getter(this);
+  double get level => _blink.BlinkBatteryManager.instance.level_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1722,11 +1722,11 @@
 
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
-  String get returnValue => _blink.BlinkBeforeUnloadEvent.returnValue_Getter(this);
+  String get returnValue => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Getter_(this);
 
   @DomName('BeforeUnloadEvent.returnValue')
   @DocsEditable()
-  void set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.returnValue_Setter(this, value);
+  void set returnValue(String value) => _blink.BlinkBeforeUnloadEvent.instance.returnValue_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1744,32 +1744,32 @@
   factory Blob(List blobParts, [String type, String endings]) => _create(blobParts, type, endings);
 
   @DocsEditable()
-  static Blob _create(blobParts, type, endings) => _blink.BlinkBlob.constructorCallback_3(blobParts, type, endings);
+  static Blob _create(blobParts, type, endings) => _blink.BlinkBlob.instance.constructorCallback_3_(blobParts, type, endings);
 
   @DomName('Blob.size')
   @DocsEditable()
-  int get size => _blink.BlinkBlob.size_Getter(this);
+  int get size => _blink.BlinkBlob.instance.size_Getter_(this);
 
   @DomName('Blob.type')
   @DocsEditable()
-  String get type => _blink.BlinkBlob.type_Getter(this);
+  String get type => _blink.BlinkBlob.instance.type_Getter_(this);
 
   @DomName('Blob.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkBlob.close_Callback(this);
+  void close() => _blink.BlinkBlob.instance.close_Callback_0_(this);
 
   Blob slice([int start, int end, String contentType]) {
     if (contentType != null) {
-      return _blink.BlinkBlob.slice_Callback_3(this, start, end, contentType);
+      return _blink.BlinkBlob.instance.slice_Callback_3_(this, start, end, contentType);
     }
     if (end != null) {
-      return _blink.BlinkBlob.slice_Callback_2(this, start, end);
+      return _blink.BlinkBlob.instance.slice_Callback_2_(this, start, end);
     }
     if (start != null) {
-      return _blink.BlinkBlob.slice_Callback_1(this, start);
+      return _blink.BlinkBlob.instance.slice_Callback_1_(this, start);
     }
-    return _blink.BlinkBlob.slice_Callback(this);
+    return _blink.BlinkBlob.instance.slice_Callback_0_(this);
   }
 
 }
@@ -2012,112 +2012,112 @@
 
   @DomName('HTMLButtonElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLButtonElement.autofocus_Getter(this);
+  bool get autofocus => _blink.BlinkHTMLButtonElement.instance.autofocus_Getter_(this);
 
   @DomName('HTMLButtonElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLButtonElement.autofocus_Setter(this, value);
+  void set autofocus(bool value) => _blink.BlinkHTMLButtonElement.instance.autofocus_Setter_(this, value);
 
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLButtonElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLButtonElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLButtonElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLButtonElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLButtonElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLButtonElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLButtonElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLButtonElement.instance.form_Getter_(this);
 
   @DomName('HTMLButtonElement.formAction')
   @DocsEditable()
-  String get formAction => _blink.BlinkHTMLButtonElement.formAction_Getter(this);
+  String get formAction => _blink.BlinkHTMLButtonElement.instance.formAction_Getter_(this);
 
   @DomName('HTMLButtonElement.formAction')
   @DocsEditable()
-  void set formAction(String value) => _blink.BlinkHTMLButtonElement.formAction_Setter(this, value);
+  void set formAction(String value) => _blink.BlinkHTMLButtonElement.instance.formAction_Setter_(this, value);
 
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
-  String get formEnctype => _blink.BlinkHTMLButtonElement.formEnctype_Getter(this);
+  String get formEnctype => _blink.BlinkHTMLButtonElement.instance.formEnctype_Getter_(this);
 
   @DomName('HTMLButtonElement.formEnctype')
   @DocsEditable()
-  void set formEnctype(String value) => _blink.BlinkHTMLButtonElement.formEnctype_Setter(this, value);
+  void set formEnctype(String value) => _blink.BlinkHTMLButtonElement.instance.formEnctype_Setter_(this, value);
 
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
-  String get formMethod => _blink.BlinkHTMLButtonElement.formMethod_Getter(this);
+  String get formMethod => _blink.BlinkHTMLButtonElement.instance.formMethod_Getter_(this);
 
   @DomName('HTMLButtonElement.formMethod')
   @DocsEditable()
-  void set formMethod(String value) => _blink.BlinkHTMLButtonElement.formMethod_Setter(this, value);
+  void set formMethod(String value) => _blink.BlinkHTMLButtonElement.instance.formMethod_Setter_(this, value);
 
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
-  bool get formNoValidate => _blink.BlinkHTMLButtonElement.formNoValidate_Getter(this);
+  bool get formNoValidate => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Getter_(this);
 
   @DomName('HTMLButtonElement.formNoValidate')
   @DocsEditable()
-  void set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.formNoValidate_Setter(this, value);
+  void set formNoValidate(bool value) => _blink.BlinkHTMLButtonElement.instance.formNoValidate_Setter_(this, value);
 
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
-  String get formTarget => _blink.BlinkHTMLButtonElement.formTarget_Getter(this);
+  String get formTarget => _blink.BlinkHTMLButtonElement.instance.formTarget_Getter_(this);
 
   @DomName('HTMLButtonElement.formTarget')
   @DocsEditable()
-  void set formTarget(String value) => _blink.BlinkHTMLButtonElement.formTarget_Setter(this, value);
+  void set formTarget(String value) => _blink.BlinkHTMLButtonElement.instance.formTarget_Setter_(this, value);
 
   @DomName('HTMLButtonElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLButtonElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLButtonElement.instance.labels_Getter_(this);
 
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLButtonElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLButtonElement.instance.name_Getter_(this);
 
   @DomName('HTMLButtonElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLButtonElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLButtonElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLButtonElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLButtonElement.instance.type_Getter_(this);
 
   @DomName('HTMLButtonElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLButtonElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLButtonElement.instance.type_Setter_(this, value);
 
   @DomName('HTMLButtonElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLButtonElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLButtonElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLButtonElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLButtonElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLButtonElement.instance.validity_Getter_(this);
 
   @DomName('HTMLButtonElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLButtonElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLButtonElement.instance.value_Getter_(this);
 
   @DomName('HTMLButtonElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLButtonElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLButtonElement.instance.value_Setter_(this, value);
 
   @DomName('HTMLButtonElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLButtonElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLButtonElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLButtonElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLButtonElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLButtonElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLButtonElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLButtonElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLButtonElement.instance.setCustomValidity_Callback_1_(this, error);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2153,27 +2153,27 @@
   @DomName('CacheStorage.create')
   @DocsEditable()
   @Experimental() // untriaged
-  Future create(String cacheName) => _blink.BlinkCacheStorage.create_Callback_1(this, cacheName);
+  Future create(String cacheName) => _blink.BlinkCacheStorage.instance.create_Callback_1_(this, cacheName);
 
   @DomName('CacheStorage.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  Future delete(String cacheName) => _blink.BlinkCacheStorage.delete_Callback_1(this, cacheName);
+  Future delete(String cacheName) => _blink.BlinkCacheStorage.instance.delete_Callback_1_(this, cacheName);
 
   @DomName('CacheStorage.get')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get(String cacheName) => _blink.BlinkCacheStorage.get_Callback_1(this, cacheName);
+  Future get(String cacheName) => _blink.BlinkCacheStorage.instance.get_Callback_1_(this, cacheName);
 
   @DomName('CacheStorage.has')
   @DocsEditable()
   @Experimental() // untriaged
-  Future has(String cacheName) => _blink.BlinkCacheStorage.has_Callback_1(this, cacheName);
+  Future has(String cacheName) => _blink.BlinkCacheStorage.instance.has_Callback_1_(this, cacheName);
 
   @DomName('CacheStorage.keys')
   @DocsEditable()
   @Experimental() // untriaged
-  Future keys() => _blink.BlinkCacheStorage.keys_Callback(this);
+  Future keys() => _blink.BlinkCacheStorage.instance.keys_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2193,21 +2193,21 @@
 
   @DomName('Canvas2DContextAttributes.alpha')
   @DocsEditable()
-  bool get alpha => _blink.BlinkCanvas2DContextAttributes.alpha_Getter(this);
+  bool get alpha => _blink.BlinkCanvas2DContextAttributes.instance.alpha_Getter_(this);
 
   @DomName('Canvas2DContextAttributes.alpha')
   @DocsEditable()
-  void set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.alpha_Setter(this, value);
+  void set alpha(bool value) => _blink.BlinkCanvas2DContextAttributes.instance.alpha_Setter_(this, value);
 
   @DomName('Canvas2DContextAttributes.storage')
   @DocsEditable()
   @Experimental() // untriaged
-  String get storage => _blink.BlinkCanvas2DContextAttributes.storage_Getter(this);
+  String get storage => _blink.BlinkCanvas2DContextAttributes.instance.storage_Getter_(this);
 
   @DomName('Canvas2DContextAttributes.storage')
   @DocsEditable()
   @Experimental() // untriaged
-  void set storage(String value) => _blink.BlinkCanvas2DContextAttributes.storage_Setter(this, value);
+  void set storage(String value) => _blink.BlinkCanvas2DContextAttributes.instance.storage_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2258,30 +2258,30 @@
   /// The height of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLCanvasElement.height_Getter(this);
+  int get height => _blink.BlinkHTMLCanvasElement.instance.height_Getter_(this);
 
   /// The height of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLCanvasElement.height_Setter(this, value);
+  void set height(int value) => _blink.BlinkHTMLCanvasElement.instance.height_Setter_(this, value);
 
   /// The width of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLCanvasElement.width_Getter(this);
+  int get width => _blink.BlinkHTMLCanvasElement.instance.width_Getter_(this);
 
   /// The width of this canvas element in CSS pixels.
   @DomName('HTMLCanvasElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLCanvasElement.width_Setter(this, value);
+  void set width(int value) => _blink.BlinkHTMLCanvasElement.instance.width_Setter_(this, value);
 
   @DomName('HTMLCanvasElement.getContext')
   @DocsEditable()
-  Object getContext(String contextId, [Map attrs]) => _blink.BlinkHTMLCanvasElement.getContext_Callback_2(this, contextId, attrs);
+  Object getContext(String contextId, [Map attrs]) => _blink.BlinkHTMLCanvasElement.instance.getContext_Callback_2_(this, contextId, attrs);
 
   @DomName('HTMLCanvasElement.toDataURL')
   @DocsEditable()
-  String _toDataUrl(String type, [num quality]) => _blink.BlinkHTMLCanvasElement.toDataURL_Callback_2(this, type, quality);
+  String _toDataUrl(String type, [num quality]) => _blink.BlinkHTMLCanvasElement.instance.toDataURL_Callback_2_(this, type, quality);
 
   /// Stream of `webglcontextlost` events handled by this [CanvasElement].
   @DomName('HTMLCanvasElement.onwebglcontextlost')
@@ -2424,7 +2424,7 @@
    */
   @DomName('CanvasGradient.addColorStop')
   @DocsEditable()
-  void addColorStop(num offset, String color) => _blink.BlinkCanvasGradient.addColorStop_Callback_2(this, offset, color);
+  void addColorStop(num offset, String color) => _blink.BlinkCanvasGradient.instance.addColorStop_Callback_2_(this, offset, color);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2485,49 +2485,49 @@
   @DomName('CanvasRenderingContext2D.canvas')
   @DocsEditable()
   @Experimental() // untriaged
-  CanvasElement get canvas => _blink.BlinkCanvasRenderingContext2D.canvas_Getter(this);
+  CanvasElement get canvas => _blink.BlinkCanvasRenderingContext2D.instance.canvas_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix get currentTransform => _blink.BlinkCanvasRenderingContext2D.currentTransform_Getter(this);
+  Matrix get currentTransform => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  void set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.currentTransform_Setter(this, value);
+  void set currentTransform(Matrix value) => _blink.BlinkCanvasRenderingContext2D.instance.currentTransform_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  Object get fillStyle => _blink.BlinkCanvasRenderingContext2D.fillStyle_Getter(this);
+  Object get fillStyle => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.fillStyle')
   @DocsEditable()
-  void set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.fillStyle_Setter(this, value);
+  void set fillStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.fillStyle_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
-  String get font => _blink.BlinkCanvasRenderingContext2D.font_Getter(this);
+  String get font => _blink.BlinkCanvasRenderingContext2D.instance.font_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.font')
   @DocsEditable()
-  void set font(String value) => _blink.BlinkCanvasRenderingContext2D.font_Setter(this, value);
+  void set font(String value) => _blink.BlinkCanvasRenderingContext2D.instance.font_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
-  num get globalAlpha => _blink.BlinkCanvasRenderingContext2D.globalAlpha_Getter(this);
+  num get globalAlpha => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.globalAlpha')
   @DocsEditable()
-  void set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.globalAlpha_Setter(this, value);
+  void set globalAlpha(num value) => _blink.BlinkCanvasRenderingContext2D.instance.globalAlpha_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
-  String get globalCompositeOperation => _blink.BlinkCanvasRenderingContext2D.globalCompositeOperation_Getter(this);
+  String get globalCompositeOperation => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.globalCompositeOperation')
   @DocsEditable()
-  void set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.globalCompositeOperation_Setter(this, value);
+  void set globalCompositeOperation(String value) => _blink.BlinkCanvasRenderingContext2D.instance.globalCompositeOperation_Setter_(this, value);
 
   /**
    * Whether images and patterns on this canvas will be smoothed when this
@@ -2542,7 +2542,7 @@
   @DomName('CanvasRenderingContext2D.imageSmoothingEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get imageSmoothingEnabled => _blink.BlinkCanvasRenderingContext2D.imageSmoothingEnabled_Getter(this);
+  bool get imageSmoothingEnabled => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Getter_(this);
 
   /**
    * Whether images and patterns on this canvas will be smoothed when this
@@ -2557,141 +2557,141 @@
   @DomName('CanvasRenderingContext2D.imageSmoothingEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.imageSmoothingEnabled_Setter(this, value);
+  void set imageSmoothingEnabled(bool value) => _blink.BlinkCanvasRenderingContext2D.instance.imageSmoothingEnabled_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
-  String get lineCap => _blink.BlinkCanvasRenderingContext2D.lineCap_Getter(this);
+  String get lineCap => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.lineCap')
   @DocsEditable()
-  void set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.lineCap_Setter(this, value);
+  void set lineCap(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineCap_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
-  num get lineDashOffset => _blink.BlinkCanvasRenderingContext2D.lineDashOffset_Getter(this);
+  num get lineDashOffset => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.lineDashOffset')
   @DocsEditable()
-  void set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.lineDashOffset_Setter(this, value);
+  void set lineDashOffset(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineDashOffset_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
-  String get lineJoin => _blink.BlinkCanvasRenderingContext2D.lineJoin_Getter(this);
+  String get lineJoin => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.lineJoin')
   @DocsEditable()
-  void set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.lineJoin_Setter(this, value);
+  void set lineJoin(String value) => _blink.BlinkCanvasRenderingContext2D.instance.lineJoin_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
-  num get lineWidth => _blink.BlinkCanvasRenderingContext2D.lineWidth_Getter(this);
+  num get lineWidth => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.lineWidth')
   @DocsEditable()
-  void set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.lineWidth_Setter(this, value);
+  void set lineWidth(num value) => _blink.BlinkCanvasRenderingContext2D.instance.lineWidth_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
-  num get miterLimit => _blink.BlinkCanvasRenderingContext2D.miterLimit_Getter(this);
+  num get miterLimit => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.miterLimit')
   @DocsEditable()
-  void set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.miterLimit_Setter(this, value);
+  void set miterLimit(num value) => _blink.BlinkCanvasRenderingContext2D.instance.miterLimit_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
-  num get shadowBlur => _blink.BlinkCanvasRenderingContext2D.shadowBlur_Getter(this);
+  num get shadowBlur => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.shadowBlur')
   @DocsEditable()
-  void set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.shadowBlur_Setter(this, value);
+  void set shadowBlur(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowBlur_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
-  String get shadowColor => _blink.BlinkCanvasRenderingContext2D.shadowColor_Getter(this);
+  String get shadowColor => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.shadowColor')
   @DocsEditable()
-  void set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.shadowColor_Setter(this, value);
+  void set shadowColor(String value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowColor_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
-  num get shadowOffsetX => _blink.BlinkCanvasRenderingContext2D.shadowOffsetX_Getter(this);
+  num get shadowOffsetX => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.shadowOffsetX')
   @DocsEditable()
-  void set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetX_Setter(this, value);
+  void set shadowOffsetX(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetX_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
-  num get shadowOffsetY => _blink.BlinkCanvasRenderingContext2D.shadowOffsetY_Getter(this);
+  num get shadowOffsetY => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.shadowOffsetY')
   @DocsEditable()
-  void set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.shadowOffsetY_Setter(this, value);
+  void set shadowOffsetY(num value) => _blink.BlinkCanvasRenderingContext2D.instance.shadowOffsetY_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  Object get strokeStyle => _blink.BlinkCanvasRenderingContext2D.strokeStyle_Getter(this);
+  Object get strokeStyle => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.strokeStyle')
   @DocsEditable()
-  void set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.strokeStyle_Setter(this, value);
+  void set strokeStyle(Object value) => _blink.BlinkCanvasRenderingContext2D.instance.strokeStyle_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
-  String get textAlign => _blink.BlinkCanvasRenderingContext2D.textAlign_Getter(this);
+  String get textAlign => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.textAlign')
   @DocsEditable()
-  void set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.textAlign_Setter(this, value);
+  void set textAlign(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textAlign_Setter_(this, value);
 
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
-  String get textBaseline => _blink.BlinkCanvasRenderingContext2D.textBaseline_Getter(this);
+  String get textBaseline => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Getter_(this);
 
   @DomName('CanvasRenderingContext2D.textBaseline')
   @DocsEditable()
-  void set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.textBaseline_Setter(this, value);
+  void set textBaseline(String value) => _blink.BlinkCanvasRenderingContext2D.instance.textBaseline_Setter_(this, value);
 
   void addHitRegion([Map options]) {
     if (options != null) {
-      _blink.BlinkCanvasRenderingContext2D.addHitRegion_Callback_1(this, options);
+      _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_1_(this, options);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.addHitRegion_Callback(this);
+    _blink.BlinkCanvasRenderingContext2D.instance.addHitRegion_Callback_0_(this);
     return;
   }
 
   @DomName('CanvasRenderingContext2D.beginPath')
   @DocsEditable()
-  void beginPath() => _blink.BlinkCanvasRenderingContext2D.beginPath_Callback(this);
+  void beginPath() => _blink.BlinkCanvasRenderingContext2D.instance.beginPath_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.clearHitRegions')
   @DocsEditable()
   @Experimental() // untriaged
-  void clearHitRegions() => _blink.BlinkCanvasRenderingContext2D.clearHitRegions_Callback(this);
+  void clearHitRegions() => _blink.BlinkCanvasRenderingContext2D.instance.clearHitRegions_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.clearRect')
   @DocsEditable()
-  void clearRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.clearRect_Callback_4(this, x, y, width, height);
+  void clearRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.clearRect_Callback_4_(this, x, y, width, height);
 
   void clip([path_OR_winding, String winding]) {
     if (path_OR_winding == null && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.clip_Callback(this);
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_0_(this);
       return;
     }
     if ((path_OR_winding is String) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.clip_Callback_1(this, path_OR_winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((path_OR_winding is Path2D) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.clip_Callback_1(this, path_OR_winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((winding is String) && (path_OR_winding is Path2D)) {
-      _blink.BlinkCanvasRenderingContext2D.clip_Callback_2(this, path_OR_winding, winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.clip_Callback_2_(this, path_OR_winding, winding);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2699,41 +2699,41 @@
 
   @DomName('CanvasRenderingContext2D.createImageData')
   @DocsEditable()
-  ImageData createImageData(num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_2(this, sw, sh);
+  ImageData createImageData(num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_2_(this, sw, sh);
 
   @DomName('CanvasRenderingContext2D.createImageDataFromImageData')
   @DocsEditable()
-  ImageData createImageDataFromImageData(ImageData imagedata) => _blink.BlinkCanvasRenderingContext2D.createImageData_Callback_1(this, imagedata);
+  ImageData createImageDataFromImageData(ImageData imagedata) => _blink.BlinkCanvasRenderingContext2D.instance.createImageData_Callback_1_(this, imagedata);
 
   @DomName('CanvasRenderingContext2D.createLinearGradient')
   @DocsEditable()
-  CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) => _blink.BlinkCanvasRenderingContext2D.createLinearGradient_Callback_4(this, x0, y0, x1, y1);
+  CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) => _blink.BlinkCanvasRenderingContext2D.instance.createLinearGradient_Callback_4_(this, x0, y0, x1, y1);
 
   CanvasPattern createPattern(canvas_OR_image, String repetitionType) {
     if ((repetitionType is String || repetitionType == null) && (canvas_OR_image is CanvasElement)) {
-      return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, canvas_OR_image, repetitionType);
+      return _blink.BlinkCanvasRenderingContext2D.instance.createPattern_Callback_2_(this, canvas_OR_image, repetitionType);
     }
     if ((repetitionType is String || repetitionType == null) && (canvas_OR_image is VideoElement)) {
-      return _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, canvas_OR_image, repetitionType);
+      return _blink.BlinkCanvasRenderingContext2D.instance.createPattern_Callback_2_(this, canvas_OR_image, repetitionType);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('CanvasRenderingContext2D.createPatternFromImage')
   @DocsEditable()
-  CanvasPattern createPatternFromImage(ImageElement image, String repetitionType) => _blink.BlinkCanvasRenderingContext2D.createPattern_Callback_2(this, image, repetitionType);
+  CanvasPattern createPatternFromImage(ImageElement image, String repetitionType) => _blink.BlinkCanvasRenderingContext2D.instance.createPattern_Callback_2_(this, image, repetitionType);
 
   @DomName('CanvasRenderingContext2D.createRadialGradient')
   @DocsEditable()
-  CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) => _blink.BlinkCanvasRenderingContext2D.createRadialGradient_Callback_6(this, x0, y0, r0, x1, y1, r1);
+  CanvasGradient createRadialGradient(num x0, num y0, num r0, num x1, num y1, num r1) => _blink.BlinkCanvasRenderingContext2D.instance.createRadialGradient_Callback_6_(this, x0, y0, r0, x1, y1, r1);
 
   void drawFocusIfNeeded(element_OR_path, [Element element]) {
     if ((element_OR_path is Element) && element == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_1(this, element_OR_path);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawFocusIfNeeded_Callback_1_(this, element_OR_path);
       return;
     }
     if ((element is Element) && (element_OR_path is Path2D)) {
-      _blink.BlinkCanvasRenderingContext2D.drawFocusIfNeeded_Callback_2(this, element_OR_path, element);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawFocusIfNeeded_Callback_2_(this, element_OR_path, element);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2741,51 +2741,51 @@
 
   void _drawImage(canvas_OR_image_OR_imageBitmap_OR_video, num sx_OR_x, num sy_OR_y, [num sw_OR_width, num height_OR_sh, num dx, num dy, num dw, num dh]) {
     if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
       return;
     }
     if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement) && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
       return;
     }
     if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageElement)) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
       return;
     }
     if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
       return;
     }
     if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement) && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
       return;
     }
     if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is CanvasElement)) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
       return;
     }
     if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
       return;
     }
     if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement) && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
       return;
     }
     if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is VideoElement)) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
       return;
     }
     if ((sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap) && sw_OR_width == null && height_OR_sh == null && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_3(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_3_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y);
       return;
     }
     if ((height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap) && dx == null && dy == null && dw == null && dh == null) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_5(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_5_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh);
       return;
     }
     if ((dh is num) && (dw is num) && (dy is num) && (dx is num) && (height_OR_sh is num) && (sw_OR_width is num) && (sy_OR_y is num) && (sx_OR_x is num) && (canvas_OR_image_OR_imageBitmap_OR_video is ImageBitmap)) {
-      _blink.BlinkCanvasRenderingContext2D.drawImage_Callback_9(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
+      _blink.BlinkCanvasRenderingContext2D.instance.drawImage_Callback_9_(this, canvas_OR_image_OR_imageBitmap_OR_video, sx_OR_x, sy_OR_y, sw_OR_width, height_OR_sh, dx, dy, dw, dh);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2793,19 +2793,19 @@
 
   void fill([path_OR_winding, String winding]) {
     if (path_OR_winding == null && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.fill_Callback(this);
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_0_(this);
       return;
     }
     if ((path_OR_winding is String) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.fill_Callback_1(this, path_OR_winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((path_OR_winding is Path2D) && winding == null) {
-      _blink.BlinkCanvasRenderingContext2D.fill_Callback_1(this, path_OR_winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_1_(this, path_OR_winding);
       return;
     }
     if ((winding is String) && (path_OR_winding is Path2D)) {
-      _blink.BlinkCanvasRenderingContext2D.fill_Callback_2(this, path_OR_winding, winding);
+      _blink.BlinkCanvasRenderingContext2D.instance.fill_Callback_2_(this, path_OR_winding, winding);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2813,14 +2813,14 @@
 
   @DomName('CanvasRenderingContext2D.fillRect')
   @DocsEditable()
-  void fillRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.fillRect_Callback_4(this, x, y, width, height);
+  void fillRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.fillRect_Callback_4_(this, x, y, width, height);
 
   void fillText(String text, num x, num y, [num maxWidth]) {
     if (maxWidth != null) {
-      _blink.BlinkCanvasRenderingContext2D.fillText_Callback_4(this, text, x, y, maxWidth);
+      _blink.BlinkCanvasRenderingContext2D.instance.fillText_Callback_4_(this, text, x, y, maxWidth);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.fillText_Callback_3(this, text, x, y);
+    _blink.BlinkCanvasRenderingContext2D.instance.fillText_Callback_3_(this, text, x, y);
     return;
   }
 
@@ -2828,58 +2828,58 @@
   @DocsEditable()
   // http://wiki.whatwg.org/wiki/CanvasOpaque#Suggested_IDL
   @Experimental()
-  Canvas2DContextAttributes getContextAttributes() => _blink.BlinkCanvasRenderingContext2D.getContextAttributes_Callback(this);
+  Canvas2DContextAttributes getContextAttributes() => _blink.BlinkCanvasRenderingContext2D.instance.getContextAttributes_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.getImageData')
   @DocsEditable()
-  ImageData getImageData(num sx, num sy, num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.getImageData_Callback_4(this, sx, sy, sw, sh);
+  ImageData getImageData(num sx, num sy, num sw, num sh) => _blink.BlinkCanvasRenderingContext2D.instance.getImageData_Callback_4_(this, sx, sy, sw, sh);
 
   @DomName('CanvasRenderingContext2D.getLineDash')
   @DocsEditable()
-  List<num> _getLineDash() => _blink.BlinkCanvasRenderingContext2D.getLineDash_Callback(this);
+  List<num> _getLineDash() => _blink.BlinkCanvasRenderingContext2D.instance.getLineDash_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.isContextLost')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isContextLost() => _blink.BlinkCanvasRenderingContext2D.isContextLost_Callback(this);
+  bool isContextLost() => _blink.BlinkCanvasRenderingContext2D.instance.isContextLost_Callback_0_(this);
 
   bool isPointInPath(path_OR_x, num x_OR_y, [winding_OR_y, String winding]) {
     if ((x_OR_y is num) && (path_OR_x is num) && winding_OR_y == null && winding == null) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_2(this, path_OR_x, x_OR_y);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInPath_Callback_2_(this, path_OR_x, x_OR_y);
     }
     if ((winding_OR_y is String) && (x_OR_y is num) && (path_OR_x is num) && winding == null) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_3(this, path_OR_x, x_OR_y, winding_OR_y);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInPath_Callback_3_(this, path_OR_x, x_OR_y, winding_OR_y);
     }
     if ((winding_OR_y is num) && (x_OR_y is num) && (path_OR_x is Path2D) && winding == null) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_3(this, path_OR_x, x_OR_y, winding_OR_y);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInPath_Callback_3_(this, path_OR_x, x_OR_y, winding_OR_y);
     }
     if ((winding is String) && (winding_OR_y is num) && (x_OR_y is num) && (path_OR_x is Path2D)) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInPath_Callback_4(this, path_OR_x, x_OR_y, winding_OR_y, winding);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInPath_Callback_4_(this, path_OR_x, x_OR_y, winding_OR_y, winding);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   bool isPointInStroke(path_OR_x, num x_OR_y, [num y]) {
     if ((x_OR_y is num) && (path_OR_x is num) && y == null) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_2(this, path_OR_x, x_OR_y);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInStroke_Callback_2_(this, path_OR_x, x_OR_y);
     }
     if ((y is num) && (x_OR_y is num) && (path_OR_x is Path2D)) {
-      return _blink.BlinkCanvasRenderingContext2D.isPointInStroke_Callback_3(this, path_OR_x, x_OR_y, y);
+      return _blink.BlinkCanvasRenderingContext2D.instance.isPointInStroke_Callback_3_(this, path_OR_x, x_OR_y, y);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('CanvasRenderingContext2D.measureText')
   @DocsEditable()
-  TextMetrics measureText(String text) => _blink.BlinkCanvasRenderingContext2D.measureText_Callback_1(this, text);
+  TextMetrics measureText(String text) => _blink.BlinkCanvasRenderingContext2D.instance.measureText_Callback_1_(this, text);
 
   void putImageData(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) {
     if ((dy is num) && (dx is num) && (imagedata is ImageData) && dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
-      _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_3(this, imagedata, dx, dy);
+      _blink.BlinkCanvasRenderingContext2D.instance.putImageData_Callback_3_(this, imagedata, dx, dy);
       return;
     }
     if ((dirtyHeight is num) && (dirtyWidth is num) && (dirtyY is num) && (dirtyX is num) && (dy is num) && (dx is num) && (imagedata is ImageData)) {
-      _blink.BlinkCanvasRenderingContext2D.putImageData_Callback_7(this, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
+      _blink.BlinkCanvasRenderingContext2D.instance.putImageData_Callback_7_(this, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2888,53 +2888,53 @@
   @DomName('CanvasRenderingContext2D.removeHitRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.removeHitRegion_Callback_1(this, id);
+  void removeHitRegion(String id) => _blink.BlinkCanvasRenderingContext2D.instance.removeHitRegion_Callback_1_(this, id);
 
   @DomName('CanvasRenderingContext2D.resetTransform')
   @DocsEditable()
   @Experimental() // untriaged
-  void resetTransform() => _blink.BlinkCanvasRenderingContext2D.resetTransform_Callback(this);
+  void resetTransform() => _blink.BlinkCanvasRenderingContext2D.instance.resetTransform_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.restore')
   @DocsEditable()
-  void restore() => _blink.BlinkCanvasRenderingContext2D.restore_Callback(this);
+  void restore() => _blink.BlinkCanvasRenderingContext2D.instance.restore_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.rotate')
   @DocsEditable()
-  void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.rotate_Callback_1(this, angle);
+  void rotate(num angle) => _blink.BlinkCanvasRenderingContext2D.instance.rotate_Callback_1_(this, angle);
 
   @DomName('CanvasRenderingContext2D.save')
   @DocsEditable()
-  void save() => _blink.BlinkCanvasRenderingContext2D.save_Callback(this);
+  void save() => _blink.BlinkCanvasRenderingContext2D.instance.save_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.scale')
   @DocsEditable()
-  void scale(num x, num y) => _blink.BlinkCanvasRenderingContext2D.scale_Callback_2(this, x, y);
+  void scale(num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.scale_Callback_2_(this, x, y);
 
   void scrollPathIntoView([Path2D path]) {
     if (path != null) {
-      _blink.BlinkCanvasRenderingContext2D.scrollPathIntoView_Callback_1(this, path);
+      _blink.BlinkCanvasRenderingContext2D.instance.scrollPathIntoView_Callback_1_(this, path);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.scrollPathIntoView_Callback(this);
+    _blink.BlinkCanvasRenderingContext2D.instance.scrollPathIntoView_Callback_0_(this);
     return;
   }
 
   @DomName('CanvasRenderingContext2D.setLineDash')
   @DocsEditable()
-  void setLineDash(List<num> dash) => _blink.BlinkCanvasRenderingContext2D.setLineDash_Callback_1(this, dash);
+  void setLineDash(List<num> dash) => _blink.BlinkCanvasRenderingContext2D.instance.setLineDash_Callback_1_(this, dash);
 
   @DomName('CanvasRenderingContext2D.setTransform')
   @DocsEditable()
-  void setTransform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.setTransform_Callback_6(this, a, b, c, d, e, f);
+  void setTransform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.instance.setTransform_Callback_6_(this, a, b, c, d, e, f);
 
   void stroke([Path2D path]) {
     if (path == null) {
-      _blink.BlinkCanvasRenderingContext2D.stroke_Callback(this);
+      _blink.BlinkCanvasRenderingContext2D.instance.stroke_Callback_0_(this);
       return;
     }
     if ((path is Path2D)) {
-      _blink.BlinkCanvasRenderingContext2D.stroke_Callback_1(this, path);
+      _blink.BlinkCanvasRenderingContext2D.instance.stroke_Callback_1_(this, path);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2942,61 +2942,61 @@
 
   @DomName('CanvasRenderingContext2D.strokeRect')
   @DocsEditable()
-  void strokeRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.strokeRect_Callback_4(this, x, y, width, height);
+  void strokeRect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.strokeRect_Callback_4_(this, x, y, width, height);
 
   void strokeText(String text, num x, num y, [num maxWidth]) {
     if (maxWidth != null) {
-      _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_4(this, text, x, y, maxWidth);
+      _blink.BlinkCanvasRenderingContext2D.instance.strokeText_Callback_4_(this, text, x, y, maxWidth);
       return;
     }
-    _blink.BlinkCanvasRenderingContext2D.strokeText_Callback_3(this, text, x, y);
+    _blink.BlinkCanvasRenderingContext2D.instance.strokeText_Callback_3_(this, text, x, y);
     return;
   }
 
   @DomName('CanvasRenderingContext2D.transform')
   @DocsEditable()
-  void transform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.transform_Callback_6(this, a, b, c, d, e, f);
+  void transform(num a, num b, num c, num d, num e, num f) => _blink.BlinkCanvasRenderingContext2D.instance.transform_Callback_6_(this, a, b, c, d, e, f);
 
   @DomName('CanvasRenderingContext2D.translate')
   @DocsEditable()
-  void translate(num x, num y) => _blink.BlinkCanvasRenderingContext2D.translate_Callback_2(this, x, y);
+  void translate(num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.translate_Callback_2_(this, x, y);
 
   @DomName('CanvasRenderingContext2D.arc')
   @DocsEditable()
-  void _arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.arc_Callback_6(this, x, y, radius, startAngle, endAngle, anticlockwise);
+  void _arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.instance.arc_Callback_6_(this, x, y, radius, startAngle, endAngle, anticlockwise);
 
   @DomName('CanvasRenderingContext2D.arcTo')
   @DocsEditable()
-  void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkCanvasRenderingContext2D.arcTo_Callback_5(this, x1, y1, x2, y2, radius);
+  void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkCanvasRenderingContext2D.instance.arcTo_Callback_5_(this, x1, y1, x2, y2, radius);
 
   @DomName('CanvasRenderingContext2D.bezierCurveTo')
   @DocsEditable()
-  void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkCanvasRenderingContext2D.bezierCurveTo_Callback_6(this, cp1x, cp1y, cp2x, cp2y, x, y);
+  void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.bezierCurveTo_Callback_6_(this, cp1x, cp1y, cp2x, cp2y, x, y);
 
   @DomName('CanvasRenderingContext2D.closePath')
   @DocsEditable()
-  void closePath() => _blink.BlinkCanvasRenderingContext2D.closePath_Callback(this);
+  void closePath() => _blink.BlinkCanvasRenderingContext2D.instance.closePath_Callback_0_(this);
 
   @DomName('CanvasRenderingContext2D.ellipse')
   @DocsEditable()
   @Experimental() // untriaged
-  void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.ellipse_Callback_8(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
+  void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkCanvasRenderingContext2D.instance.ellipse_Callback_8_(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
 
   @DomName('CanvasRenderingContext2D.lineTo')
   @DocsEditable()
-  void lineTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.lineTo_Callback_2(this, x, y);
+  void lineTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.lineTo_Callback_2_(this, x, y);
 
   @DomName('CanvasRenderingContext2D.moveTo')
   @DocsEditable()
-  void moveTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.moveTo_Callback_2(this, x, y);
+  void moveTo(num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.moveTo_Callback_2_(this, x, y);
 
   @DomName('CanvasRenderingContext2D.quadraticCurveTo')
   @DocsEditable()
-  void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkCanvasRenderingContext2D.quadraticCurveTo_Callback_4(this, cpx, cpy, x, y);
+  void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkCanvasRenderingContext2D.instance.quadraticCurveTo_Callback_4_(this, cpx, cpy, x, y);
 
   @DomName('CanvasRenderingContext2D.rect')
   @DocsEditable()
-  void rect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.rect_Callback_4(this, x, y, width, height);
+  void rect(num x, num y, num width, num height) => _blink.BlinkCanvasRenderingContext2D.instance.rect_Callback_4_(this, x, y, width, height);
 
 
   /**
@@ -3248,43 +3248,43 @@
 
   @DomName('CharacterData.data')
   @DocsEditable()
-  String get data => _blink.BlinkCharacterData.data_Getter(this);
+  String get data => _blink.BlinkCharacterData.instance.data_Getter_(this);
 
   @DomName('CharacterData.data')
   @DocsEditable()
-  void set data(String value) => _blink.BlinkCharacterData.data_Setter(this, value);
+  void set data(String value) => _blink.BlinkCharacterData.instance.data_Setter_(this, value);
 
   @DomName('CharacterData.length')
   @DocsEditable()
-  int get length => _blink.BlinkCharacterData.length_Getter(this);
+  int get length => _blink.BlinkCharacterData.instance.length_Getter_(this);
 
   @DomName('CharacterData.appendData')
   @DocsEditable()
-  void appendData(String data) => _blink.BlinkCharacterData.appendData_Callback_1(this, data);
+  void appendData(String data) => _blink.BlinkCharacterData.instance.appendData_Callback_1_(this, data);
 
   @DomName('CharacterData.deleteData')
   @DocsEditable()
-  void deleteData(int offset, int length) => _blink.BlinkCharacterData.deleteData_Callback_2(this, offset, length);
+  void deleteData(int offset, int length) => _blink.BlinkCharacterData.instance.deleteData_Callback_2_(this, offset, length);
 
   @DomName('CharacterData.insertData')
   @DocsEditable()
-  void insertData(int offset, String data) => _blink.BlinkCharacterData.insertData_Callback_2(this, offset, data);
+  void insertData(int offset, String data) => _blink.BlinkCharacterData.instance.insertData_Callback_2_(this, offset, data);
 
   @DomName('CharacterData.replaceData')
   @DocsEditable()
-  void replaceData(int offset, int length, String data) => _blink.BlinkCharacterData.replaceData_Callback_3(this, offset, length, data);
+  void replaceData(int offset, int length, String data) => _blink.BlinkCharacterData.instance.replaceData_Callback_3_(this, offset, length, data);
 
   @DomName('CharacterData.substringData')
   @DocsEditable()
-  String substringData(int offset, int length) => _blink.BlinkCharacterData.substringData_Callback_2(this, offset, length);
+  String substringData(int offset, int length) => _blink.BlinkCharacterData.instance.substringData_Callback_2_(this, offset, length);
 
   @DomName('CharacterData.nextElementSibling')
   @DocsEditable()
-  Element get nextElementSibling => _blink.BlinkCharacterData.nextElementSibling_Getter(this);
+  Element get nextElementSibling => _blink.BlinkCharacterData.instance.nextElementSibling_Getter_(this);
 
   @DomName('CharacterData.previousElementSibling')
   @DocsEditable()
-  Element get previousElementSibling => _blink.BlinkCharacterData.previousElementSibling_Getter(this);
+  Element get previousElementSibling => _blink.BlinkCharacterData.instance.previousElementSibling_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3304,17 +3304,17 @@
   @DomName('ChildNode.nextElementSibling')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get nextElementSibling => _blink.BlinkChildNode.nextElementSibling_Getter(this);
+  Element get nextElementSibling;
 
   @DomName('ChildNode.previousElementSibling')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get previousElementSibling => _blink.BlinkChildNode.previousElementSibling_Getter(this);
+  Element get previousElementSibling;
 
   @DomName('ChildNode.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  void remove() => _blink.BlinkChildNode.remove_Callback(this);
+  void remove();
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3334,7 +3334,7 @@
   @DomName('CircularRegion.CircularRegion')
   @DocsEditable()
   factory CircularRegion(Map init) {
-    return _blink.BlinkCircularRegion.constructorCallback_1(init);
+    return _blink.BlinkCircularRegion.instance.constructorCallback_1_(init);
   }
 
   @DomName('CircularRegion.MAX_RADIUS')
@@ -3350,17 +3350,17 @@
   @DomName('CircularRegion.latitude')
   @DocsEditable()
   @Experimental() // untriaged
-  double get latitude => _blink.BlinkCircularRegion.latitude_Getter(this);
+  double get latitude => _blink.BlinkCircularRegion.instance.latitude_Getter_(this);
 
   @DomName('CircularRegion.longitude')
   @DocsEditable()
   @Experimental() // untriaged
-  double get longitude => _blink.BlinkCircularRegion.longitude_Getter(this);
+  double get longitude => _blink.BlinkCircularRegion.instance.longitude_Getter_(this);
 
   @DomName('CircularRegion.radius')
   @DocsEditable()
   @Experimental() // untriaged
-  double get radius => _blink.BlinkCircularRegion.radius_Getter(this);
+  double get radius => _blink.BlinkCircularRegion.instance.radius_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3378,15 +3378,15 @@
 
   @DomName('CloseEvent.code')
   @DocsEditable()
-  int get code => _blink.BlinkCloseEvent.code_Getter(this);
+  int get code => _blink.BlinkCloseEvent.instance.code_Getter_(this);
 
   @DomName('CloseEvent.reason')
   @DocsEditable()
-  String get reason => _blink.BlinkCloseEvent.reason_Getter(this);
+  String get reason => _blink.BlinkCloseEvent.instance.reason_Getter_(this);
 
   @DomName('CloseEvent.wasClean')
   @DocsEditable()
-  bool get wasClean => _blink.BlinkCloseEvent.wasClean_Getter(this);
+  bool get wasClean => _blink.BlinkCloseEvent.instance.wasClean_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3404,9 +3404,9 @@
   @DocsEditable()
   factory Comment([String data]) {
     if (data != null) {
-      return _blink.BlinkComment.constructorCallback_1(data);
+      return _blink.BlinkComment.instance.constructorCallback_1_(data);
     }
-    return _blink.BlinkComment.constructorCallback();
+    return _blink.BlinkComment.instance.constructorCallback_0_();
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -3434,25 +3434,25 @@
   @DomName('CompositionEvent.activeSegmentEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  int get activeSegmentEnd => _blink.BlinkCompositionEvent.activeSegmentEnd_Getter(this);
+  int get activeSegmentEnd => _blink.BlinkCompositionEvent.instance.activeSegmentEnd_Getter_(this);
 
   @DomName('CompositionEvent.activeSegmentStart')
   @DocsEditable()
   @Experimental() // untriaged
-  int get activeSegmentStart => _blink.BlinkCompositionEvent.activeSegmentStart_Getter(this);
+  int get activeSegmentStart => _blink.BlinkCompositionEvent.instance.activeSegmentStart_Getter_(this);
 
   @DomName('CompositionEvent.data')
   @DocsEditable()
-  String get data => _blink.BlinkCompositionEvent.data_Getter(this);
+  String get data => _blink.BlinkCompositionEvent.instance.data_Getter_(this);
 
   @DomName('CompositionEvent.getSegments')
   @DocsEditable()
   @Experimental() // untriaged
-  List<int> getSegments() => _blink.BlinkCompositionEvent.getSegments_Callback(this);
+  List<int> getSegments() => _blink.BlinkCompositionEvent.instance.getSegments_Callback_0_(this);
 
   @DomName('CompositionEvent.initCompositionEvent')
   @DocsEditable()
-  void _initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkCompositionEvent.initCompositionEvent_Callback_5(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg);
+  void _initCompositionEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkCompositionEvent.instance.initCompositionEvent_Callback_5_(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3471,7 +3471,7 @@
   @DomName('Console.memory')
   @DocsEditable()
   @Experimental()
-  MemoryInfo get memory => _blink.BlinkConsole.memory_Getter(this);
+  MemoryInfo get memory => _blink.BlinkConsole.instance.memory_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3491,117 +3491,117 @@
   @DomName('ConsoleBase.assertCondition')
   @DocsEditable()
   @Experimental() // untriaged
-  void assertCondition(bool condition, Object arg) => _blink.BlinkConsoleBase.assert_Callback_2(this, condition, arg);
+  void assertCondition(bool condition, Object arg) => _blink.BlinkConsoleBase.instance.assert_Callback_2_(this, condition, arg);
 
   @DomName('ConsoleBase.clear')
   @DocsEditable()
   @Experimental() // untriaged
-  void clear(Object arg) => _blink.BlinkConsoleBase.clear_Callback_1(this, arg);
+  void clear(Object arg) => _blink.BlinkConsoleBase.instance.clear_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.count')
   @DocsEditable()
   @Experimental() // untriaged
-  void count(Object arg) => _blink.BlinkConsoleBase.count_Callback_1(this, arg);
+  void count(Object arg) => _blink.BlinkConsoleBase.instance.count_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.debug')
   @DocsEditable()
   @Experimental() // untriaged
-  void debug(Object arg) => _blink.BlinkConsoleBase.debug_Callback_1(this, arg);
+  void debug(Object arg) => _blink.BlinkConsoleBase.instance.debug_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.dir')
   @DocsEditable()
   @Experimental() // untriaged
-  void dir(Object arg) => _blink.BlinkConsoleBase.dir_Callback_1(this, arg);
+  void dir(Object arg) => _blink.BlinkConsoleBase.instance.dir_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.dirxml')
   @DocsEditable()
   @Experimental() // untriaged
-  void dirxml(Object arg) => _blink.BlinkConsoleBase.dirxml_Callback_1(this, arg);
+  void dirxml(Object arg) => _blink.BlinkConsoleBase.instance.dirxml_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.error')
   @DocsEditable()
   @Experimental() // untriaged
-  void error(Object arg) => _blink.BlinkConsoleBase.error_Callback_1(this, arg);
+  void error(Object arg) => _blink.BlinkConsoleBase.instance.error_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.group')
   @DocsEditable()
   @Experimental() // untriaged
-  void group(Object arg) => _blink.BlinkConsoleBase.group_Callback_1(this, arg);
+  void group(Object arg) => _blink.BlinkConsoleBase.instance.group_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.groupCollapsed')
   @DocsEditable()
   @Experimental() // untriaged
-  void groupCollapsed(Object arg) => _blink.BlinkConsoleBase.groupCollapsed_Callback_1(this, arg);
+  void groupCollapsed(Object arg) => _blink.BlinkConsoleBase.instance.groupCollapsed_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.groupEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void groupEnd() => _blink.BlinkConsoleBase.groupEnd_Callback(this);
+  void groupEnd() => _blink.BlinkConsoleBase.instance.groupEnd_Callback_0_(this);
 
   @DomName('ConsoleBase.info')
   @DocsEditable()
   @Experimental() // untriaged
-  void info(Object arg) => _blink.BlinkConsoleBase.info_Callback_1(this, arg);
+  void info(Object arg) => _blink.BlinkConsoleBase.instance.info_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.log')
   @DocsEditable()
   @Experimental() // untriaged
-  void log(Object arg) => _blink.BlinkConsoleBase.log_Callback_1(this, arg);
+  void log(Object arg) => _blink.BlinkConsoleBase.instance.log_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.markTimeline')
   @DocsEditable()
   @Experimental() // untriaged
-  void markTimeline(String title) => _blink.BlinkConsoleBase.markTimeline_Callback_1(this, title);
+  void markTimeline(String title) => _blink.BlinkConsoleBase.instance.markTimeline_Callback_1_(this, title);
 
   @DomName('ConsoleBase.profile')
   @DocsEditable()
   @Experimental() // untriaged
-  void profile(String title) => _blink.BlinkConsoleBase.profile_Callback_1(this, title);
+  void profile(String title) => _blink.BlinkConsoleBase.instance.profile_Callback_1_(this, title);
 
   @DomName('ConsoleBase.profileEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void profileEnd(String title) => _blink.BlinkConsoleBase.profileEnd_Callback_1(this, title);
+  void profileEnd(String title) => _blink.BlinkConsoleBase.instance.profileEnd_Callback_1_(this, title);
 
   @DomName('ConsoleBase.table')
   @DocsEditable()
   @Experimental() // untriaged
-  void table(Object arg) => _blink.BlinkConsoleBase.table_Callback_1(this, arg);
+  void table(Object arg) => _blink.BlinkConsoleBase.instance.table_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.time')
   @DocsEditable()
   @Experimental() // untriaged
-  void time(String title) => _blink.BlinkConsoleBase.time_Callback_1(this, title);
+  void time(String title) => _blink.BlinkConsoleBase.instance.time_Callback_1_(this, title);
 
   @DomName('ConsoleBase.timeEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void timeEnd(String title) => _blink.BlinkConsoleBase.timeEnd_Callback_1(this, title);
+  void timeEnd(String title) => _blink.BlinkConsoleBase.instance.timeEnd_Callback_1_(this, title);
 
   @DomName('ConsoleBase.timeStamp')
   @DocsEditable()
   @Experimental() // untriaged
-  void timeStamp(String title) => _blink.BlinkConsoleBase.timeStamp_Callback_1(this, title);
+  void timeStamp(String title) => _blink.BlinkConsoleBase.instance.timeStamp_Callback_1_(this, title);
 
   @DomName('ConsoleBase.timeline')
   @DocsEditable()
   @Experimental() // untriaged
-  void timeline(String title) => _blink.BlinkConsoleBase.timeline_Callback_1(this, title);
+  void timeline(String title) => _blink.BlinkConsoleBase.instance.timeline_Callback_1_(this, title);
 
   @DomName('ConsoleBase.timelineEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void timelineEnd(String title) => _blink.BlinkConsoleBase.timelineEnd_Callback_1(this, title);
+  void timelineEnd(String title) => _blink.BlinkConsoleBase.instance.timelineEnd_Callback_1_(this, title);
 
   @DomName('ConsoleBase.trace')
   @DocsEditable()
   @Experimental() // untriaged
-  void trace(Object arg) => _blink.BlinkConsoleBase.trace_Callback_1(this, arg);
+  void trace(Object arg) => _blink.BlinkConsoleBase.instance.trace_Callback_1_(this, arg);
 
   @DomName('ConsoleBase.warn')
   @DocsEditable()
   @Experimental() // untriaged
-  void warn(Object arg) => _blink.BlinkConsoleBase.warn_Callback_1(this, arg);
+  void warn(Object arg) => _blink.BlinkConsoleBase.instance.warn_Callback_1_(this, arg);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3635,15 +3635,15 @@
 
   @DomName('HTMLContentElement.select')
   @DocsEditable()
-  String get select => _blink.BlinkHTMLContentElement.select_Getter(this);
+  String get select => _blink.BlinkHTMLContentElement.instance.select_Getter_(this);
 
   @DomName('HTMLContentElement.select')
   @DocsEditable()
-  void set select(String value) => _blink.BlinkHTMLContentElement.select_Setter(this, value);
+  void set select(String value) => _blink.BlinkHTMLContentElement.instance.select_Setter_(this, value);
 
   @DomName('HTMLContentElement.getDistributedNodes')
   @DocsEditable()
-  List<Node> getDistributedNodes() => _blink.BlinkHTMLContentElement.getDistributedNodes_Callback(this);
+  List<Node> getDistributedNodes() => _blink.BlinkHTMLContentElement.instance.getDistributedNodes_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3661,31 +3661,31 @@
 
   @DomName('Coordinates.accuracy')
   @DocsEditable()
-  double get accuracy => _blink.BlinkCoordinates.accuracy_Getter(this);
+  double get accuracy => _blink.BlinkCoordinates.instance.accuracy_Getter_(this);
 
   @DomName('Coordinates.altitude')
   @DocsEditable()
-  double get altitude => _blink.BlinkCoordinates.altitude_Getter(this);
+  double get altitude => _blink.BlinkCoordinates.instance.altitude_Getter_(this);
 
   @DomName('Coordinates.altitudeAccuracy')
   @DocsEditable()
-  double get altitudeAccuracy => _blink.BlinkCoordinates.altitudeAccuracy_Getter(this);
+  double get altitudeAccuracy => _blink.BlinkCoordinates.instance.altitudeAccuracy_Getter_(this);
 
   @DomName('Coordinates.heading')
   @DocsEditable()
-  double get heading => _blink.BlinkCoordinates.heading_Getter(this);
+  double get heading => _blink.BlinkCoordinates.instance.heading_Getter_(this);
 
   @DomName('Coordinates.latitude')
   @DocsEditable()
-  double get latitude => _blink.BlinkCoordinates.latitude_Getter(this);
+  double get latitude => _blink.BlinkCoordinates.instance.latitude_Getter_(this);
 
   @DomName('Coordinates.longitude')
   @DocsEditable()
-  double get longitude => _blink.BlinkCoordinates.longitude_Getter(this);
+  double get longitude => _blink.BlinkCoordinates.instance.longitude_Getter_(this);
 
   @DomName('Coordinates.speed')
   @DocsEditable()
-  double get speed => _blink.BlinkCoordinates.speed_Getter(this);
+  double get speed => _blink.BlinkCoordinates.instance.speed_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3705,17 +3705,17 @@
   @DomName('Credential.avatarURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get avatarUrl => _blink.BlinkCredential.avatarURL_Getter(this);
+  String get avatarUrl => _blink.BlinkCredential.instance.avatarURL_Getter_(this);
 
   @DomName('Credential.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkCredential.id_Getter(this);
+  String get id => _blink.BlinkCredential.instance.id_Getter_(this);
 
   @DomName('Credential.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkCredential.name_Getter(this);
+  String get name => _blink.BlinkCredential.instance.name_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3734,28 +3734,28 @@
 
   Future notifyFailedSignIn([Credential credential]) {
     if (credential != null) {
-      return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback_1(this, credential);
+      return _blink.BlinkCredentialsContainer.instance.notifyFailedSignIn_Callback_1_(this, credential);
     }
-    return _blink.BlinkCredentialsContainer.notifyFailedSignIn_Callback(this);
+    return _blink.BlinkCredentialsContainer.instance.notifyFailedSignIn_Callback_0_(this);
   }
 
   Future notifySignedIn([Credential credential]) {
     if (credential != null) {
-      return _blink.BlinkCredentialsContainer.notifySignedIn_Callback_1(this, credential);
+      return _blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_1_(this, credential);
     }
-    return _blink.BlinkCredentialsContainer.notifySignedIn_Callback(this);
+    return _blink.BlinkCredentialsContainer.instance.notifySignedIn_Callback_0_(this);
   }
 
   @DomName('CredentialsContainer.notifySignedOut')
   @DocsEditable()
   @Experimental() // untriaged
-  Future notifySignedOut() => _blink.BlinkCredentialsContainer.notifySignedOut_Callback(this);
+  Future notifySignedOut() => _blink.BlinkCredentialsContainer.instance.notifySignedOut_Callback_0_(this);
 
   Future request([Map options]) {
     if (options != null) {
-      return _blink.BlinkCredentialsContainer.request_Callback_1(this, options);
+      return _blink.BlinkCredentialsContainer.instance.request_Callback_1_(this, options);
     }
-    return _blink.BlinkCredentialsContainer.request_Callback(this);
+    return _blink.BlinkCredentialsContainer.instance.request_Callback_0_(this);
   }
 
 }
@@ -3782,11 +3782,11 @@
   @DomName('Crypto.subtle')
   @DocsEditable()
   @Experimental() // untriaged
-  _SubtleCrypto get subtle => _blink.BlinkCrypto.subtle_Getter(this);
+  _SubtleCrypto get subtle => _blink.BlinkCrypto.instance.subtle_Getter_(this);
 
   @DomName('Crypto.getRandomValues')
   @DocsEditable()
-  TypedData getRandomValues(TypedData array) => _blink.BlinkCrypto.getRandomValues_Callback_1(this, array);
+  TypedData getRandomValues(TypedData array) => _blink.BlinkCrypto.instance.getRandomValues_Callback_1_(this, array);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3806,22 +3806,22 @@
   @DomName('CryptoKey.algorithm')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get algorithm => _blink.BlinkCryptoKey.algorithm_Getter(this);
+  Object get algorithm => _blink.BlinkCryptoKey.instance.algorithm_Getter_(this);
 
   @DomName('CryptoKey.extractable')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get extractable => _blink.BlinkCryptoKey.extractable_Getter(this);
+  bool get extractable => _blink.BlinkCryptoKey.instance.extractable_Getter_(this);
 
   @DomName('CryptoKey.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkCryptoKey.type_Getter(this);
+  String get type => _blink.BlinkCryptoKey.instance.type_Getter_(this);
 
   @DomName('CryptoKey.usages')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get usages => _blink.BlinkCryptoKey.usages_Getter(this);
+  List<String> get usages => _blink.BlinkCryptoKey.instance.usages_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3841,11 +3841,11 @@
 
   @DomName('CSS.supports')
   @DocsEditable()
-  bool supports(String property, String value) => _blink.BlinkCSS.supports_Callback_2(this, property, value);
+  bool supports(String property, String value) => _blink.BlinkCSS.instance.supports_Callback_2_(this, property, value);
 
   @DomName('CSS.supportsCondition')
   @DocsEditable()
-  bool supportsCondition(String conditionText) => _blink.BlinkCSS.supports_Callback_1(this, conditionText);
+  bool supportsCondition(String conditionText) => _blink.BlinkCSS.instance.supports_Callback_1_(this, conditionText);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3865,11 +3865,11 @@
 
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
-  String get encoding => _blink.BlinkCSSCharsetRule.encoding_Getter(this);
+  String get encoding => _blink.BlinkCSSCharsetRule.instance.encoding_Getter_(this);
 
   @DomName('CSSCharsetRule.encoding')
   @DocsEditable()
-  void set encoding(String value) => _blink.BlinkCSSCharsetRule.encoding_Setter(this, value);
+  void set encoding(String value) => _blink.BlinkCSSCharsetRule.instance.encoding_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3891,7 +3891,7 @@
 
   @DomName('WebKitCSSFilterRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => _blink.BlinkWebKitCSSFilterRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkWebKitCSSFilterRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3909,7 +3909,7 @@
 
   @DomName('CSSFontFaceRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => _blink.BlinkCSSFontFaceRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkCSSFontFaceRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3927,15 +3927,15 @@
 
   @DomName('CSSImportRule.href')
   @DocsEditable()
-  String get href => _blink.BlinkCSSImportRule.href_Getter(this);
+  String get href => _blink.BlinkCSSImportRule.instance.href_Getter_(this);
 
   @DomName('CSSImportRule.media')
   @DocsEditable()
-  MediaList get media => _blink.BlinkCSSImportRule.media_Getter(this);
+  MediaList get media => _blink.BlinkCSSImportRule.instance.media_Getter_(this);
 
   @DomName('CSSImportRule.styleSheet')
   @DocsEditable()
-  CssStyleSheet get styleSheet => _blink.BlinkCSSImportRule.styleSheet_Getter(this);
+  CssStyleSheet get styleSheet => _blink.BlinkCSSImportRule.instance.styleSheet_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3955,17 +3955,17 @@
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
-  String get keyText => _blink.BlinkCSSKeyframeRule.keyText_Getter(this);
+  String get keyText => _blink.BlinkCSSKeyframeRule.instance.keyText_Getter_(this);
 
   @DomName('CSSKeyframeRule.keyText')
   @DocsEditable()
   @Experimental() // untriaged
-  void set keyText(String value) => _blink.BlinkCSSKeyframeRule.keyText_Setter(this, value);
+  void set keyText(String value) => _blink.BlinkCSSKeyframeRule.instance.keyText_Setter_(this, value);
 
   @DomName('CSSKeyframeRule.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => _blink.BlinkCSSKeyframeRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkCSSKeyframeRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3985,37 +3985,37 @@
   @DomName('CSSKeyframesRule.cssRules')
   @DocsEditable()
   @Experimental() // untriaged
-  List<CssRule> get cssRules => _blink.BlinkCSSKeyframesRule.cssRules_Getter(this);
+  List<CssRule> get cssRules => _blink.BlinkCSSKeyframesRule.instance.cssRules_Getter_(this);
 
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkCSSKeyframesRule.name_Getter(this);
+  String get name => _blink.BlinkCSSKeyframesRule.instance.name_Getter_(this);
 
   @DomName('CSSKeyframesRule.name')
   @DocsEditable()
   @Experimental() // untriaged
-  void set name(String value) => _blink.BlinkCSSKeyframesRule.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkCSSKeyframesRule.instance.name_Setter_(this, value);
 
   @DomName('CSSKeyframesRule.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.$__getter___Callback_1(this, index);
+  CssKeyframeRule __getter__(int index) => _blink.BlinkCSSKeyframesRule.instance.$__getter___Callback_1_(this, index);
 
   @DomName('CSSKeyframesRule.deleteRule')
   @DocsEditable()
   @Experimental() // untriaged
-  void deleteRule(String key) => _blink.BlinkCSSKeyframesRule.deleteRule_Callback_1(this, key);
+  void deleteRule(String key) => _blink.BlinkCSSKeyframesRule.instance.deleteRule_Callback_1_(this, key);
 
   @DomName('CSSKeyframesRule.findRule')
   @DocsEditable()
   @Experimental() // untriaged
-  CssKeyframeRule findRule(String key) => _blink.BlinkCSSKeyframesRule.findRule_Callback_1(this, key);
+  CssKeyframeRule findRule(String key) => _blink.BlinkCSSKeyframesRule.instance.findRule_Callback_1_(this, key);
 
   @DomName('CSSKeyframesRule.insertRule')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.insertRule_Callback_1(this, rule);
+  void appendRule(String rule) => _blink.BlinkCSSKeyframesRule.instance.insertRule_Callback_1_(this, rule);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4033,19 +4033,19 @@
 
   @DomName('CSSMediaRule.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => _blink.BlinkCSSMediaRule.cssRules_Getter(this);
+  List<CssRule> get cssRules => _blink.BlinkCSSMediaRule.instance.cssRules_Getter_(this);
 
   @DomName('CSSMediaRule.media')
   @DocsEditable()
-  MediaList get media => _blink.BlinkCSSMediaRule.media_Getter(this);
+  MediaList get media => _blink.BlinkCSSMediaRule.instance.media_Getter_(this);
 
   @DomName('CSSMediaRule.deleteRule')
   @DocsEditable()
-  void deleteRule(int index) => _blink.BlinkCSSMediaRule.deleteRule_Callback_1(this, index);
+  void deleteRule(int index) => _blink.BlinkCSSMediaRule.instance.deleteRule_Callback_1_(this, index);
 
   @DomName('CSSMediaRule.insertRule')
   @DocsEditable()
-  int insertRule(String rule, int index) => _blink.BlinkCSSMediaRule.insertRule_Callback_2(this, rule, index);
+  int insertRule(String rule, int index) => _blink.BlinkCSSMediaRule.instance.insertRule_Callback_2_(this, rule, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4063,15 +4063,15 @@
 
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
-  String get selectorText => _blink.BlinkCSSPageRule.selectorText_Getter(this);
+  String get selectorText => _blink.BlinkCSSPageRule.instance.selectorText_Getter_(this);
 
   @DomName('CSSPageRule.selectorText')
   @DocsEditable()
-  void set selectorText(String value) => _blink.BlinkCSSPageRule.selectorText_Setter(this, value);
+  void set selectorText(String value) => _blink.BlinkCSSPageRule.instance.selectorText_Setter_(this, value);
 
   @DomName('CSSPageRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => _blink.BlinkCSSPageRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkCSSPageRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4150,23 +4150,23 @@
 
   @DomName('CSSRule.cssText')
   @DocsEditable()
-  String get cssText => _blink.BlinkCSSRule.cssText_Getter(this);
+  String get cssText => _blink.BlinkCSSRule.instance.cssText_Getter_(this);
 
   @DomName('CSSRule.cssText')
   @DocsEditable()
-  void set cssText(String value) => _blink.BlinkCSSRule.cssText_Setter(this, value);
+  void set cssText(String value) => _blink.BlinkCSSRule.instance.cssText_Setter_(this, value);
 
   @DomName('CSSRule.parentRule')
   @DocsEditable()
-  CssRule get parentRule => _blink.BlinkCSSRule.parentRule_Getter(this);
+  CssRule get parentRule => _blink.BlinkCSSRule.instance.parentRule_Getter_(this);
 
   @DomName('CSSRule.parentStyleSheet')
   @DocsEditable()
-  CssStyleSheet get parentStyleSheet => _blink.BlinkCSSRule.parentStyleSheet_Getter(this);
+  CssStyleSheet get parentStyleSheet => _blink.BlinkCSSRule.instance.parentStyleSheet_Getter_(this);
 
   @DomName('CSSRule.type')
   @DocsEditable()
-  int get type => _blink.BlinkCSSRule.type_Getter(this);
+  int get type => _blink.BlinkCSSRule.instance.type_Getter_(this);
 
 }
 
@@ -4263,53 +4263,53 @@
 
   @DomName('CSSStyleDeclaration.cssText')
   @DocsEditable()
-  String get cssText => _blink.BlinkCSSStyleDeclaration.cssText_Getter(this);
+  String get cssText => _blink.BlinkCSSStyleDeclaration.instance.cssText_Getter_(this);
 
   @DomName('CSSStyleDeclaration.cssText')
   @DocsEditable()
-  void set cssText(String value) => _blink.BlinkCSSStyleDeclaration.cssText_Setter(this, value);
+  void set cssText(String value) => _blink.BlinkCSSStyleDeclaration.instance.cssText_Setter_(this, value);
 
   @DomName('CSSStyleDeclaration.length')
   @DocsEditable()
-  int get length => _blink.BlinkCSSStyleDeclaration.length_Getter(this);
+  int get length => _blink.BlinkCSSStyleDeclaration.instance.length_Getter_(this);
 
   @DomName('CSSStyleDeclaration.parentRule')
   @DocsEditable()
-  CssRule get parentRule => _blink.BlinkCSSStyleDeclaration.parentRule_Getter(this);
+  CssRule get parentRule => _blink.BlinkCSSStyleDeclaration.instance.parentRule_Getter_(this);
 
   @DomName('CSSStyleDeclaration.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  Object __getter__(String name) => _blink.BlinkCSSStyleDeclaration.$__getter___Callback_1(this, name);
+  Object __getter__(String name) => _blink.BlinkCSSStyleDeclaration.instance.$__getter___Callback_1_(this, name);
 
   @DomName('CSSStyleDeclaration.__propertyQuery__')
   @DocsEditable()
   @Experimental() // untriaged
-  bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.$__propertyQuery___Callback_1(this, name);
+  bool __propertyQuery__(String name) => _blink.BlinkCSSStyleDeclaration.instance.$__propertyQuery___Callback_1_(this, name);
 
   @DomName('CSSStyleDeclaration.__setter__')
   @DocsEditable()
-  void __setter__(String propertyName, String propertyValue) => _blink.BlinkCSSStyleDeclaration.$__setter___Callback_2(this, propertyName, propertyValue);
+  void __setter__(String propertyName, String propertyValue) => _blink.BlinkCSSStyleDeclaration.instance.$__setter___Callback_2_(this, propertyName, propertyValue);
 
   @DomName('CSSStyleDeclaration.getPropertyPriority')
   @DocsEditable()
-  String getPropertyPriority(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyPriority_Callback_1(this, propertyName);
+  String getPropertyPriority(String propertyName) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyPriority_Callback_1_(this, propertyName);
 
   @DomName('CSSStyleDeclaration.getPropertyValue')
   @DocsEditable()
-  String _getPropertyValue(String propertyName) => _blink.BlinkCSSStyleDeclaration.getPropertyValue_Callback_1(this, propertyName);
+  String _getPropertyValue(String propertyName) => _blink.BlinkCSSStyleDeclaration.instance.getPropertyValue_Callback_1_(this, propertyName);
 
   @DomName('CSSStyleDeclaration.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkCSSStyleDeclaration.item_Callback_1(this, index);
+  String item(int index) => _blink.BlinkCSSStyleDeclaration.instance.item_Callback_1_(this, index);
 
   @DomName('CSSStyleDeclaration.removeProperty')
   @DocsEditable()
-  String removeProperty(String propertyName) => _blink.BlinkCSSStyleDeclaration.removeProperty_Callback_1(this, propertyName);
+  String removeProperty(String propertyName) => _blink.BlinkCSSStyleDeclaration.instance.removeProperty_Callback_1_(this, propertyName);
 
   @DomName('CSSStyleDeclaration.setProperty')
   @DocsEditable()
-  void _setProperty(String propertyName, String value, String priority) => _blink.BlinkCSSStyleDeclaration.setProperty_Callback_3(this, propertyName, value, priority);
+  void _setProperty(String propertyName, String value, String priority) => _blink.BlinkCSSStyleDeclaration.instance.setProperty_Callback_3_(this, propertyName, value, priority);
 
 }
 
@@ -7440,15 +7440,15 @@
 
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
-  String get selectorText => _blink.BlinkCSSStyleRule.selectorText_Getter(this);
+  String get selectorText => _blink.BlinkCSSStyleRule.instance.selectorText_Getter_(this);
 
   @DomName('CSSStyleRule.selectorText')
   @DocsEditable()
-  void set selectorText(String value) => _blink.BlinkCSSStyleRule.selectorText_Setter(this, value);
+  void set selectorText(String value) => _blink.BlinkCSSStyleRule.instance.selectorText_Setter_(this, value);
 
   @DomName('CSSStyleRule.style')
   @DocsEditable()
-  CssStyleDeclaration get style => _blink.BlinkCSSStyleRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkCSSStyleRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7466,39 +7466,39 @@
 
   @DomName('CSSStyleSheet.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => _blink.BlinkCSSStyleSheet.cssRules_Getter(this);
+  List<CssRule> get cssRules => _blink.BlinkCSSStyleSheet.instance.cssRules_Getter_(this);
 
   @DomName('CSSStyleSheet.ownerRule')
   @DocsEditable()
-  CssRule get ownerRule => _blink.BlinkCSSStyleSheet.ownerRule_Getter(this);
+  CssRule get ownerRule => _blink.BlinkCSSStyleSheet.instance.ownerRule_Getter_(this);
 
   @DomName('CSSStyleSheet.rules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> get rules => _blink.BlinkCSSStyleSheet.rules_Getter(this);
+  List<CssRule> get rules => _blink.BlinkCSSStyleSheet.instance.rules_Getter_(this);
 
   int addRule(String selector, String style, [int index]) {
     if (index != null) {
-      return _blink.BlinkCSSStyleSheet.addRule_Callback_3(this, selector, style, index);
+      return _blink.BlinkCSSStyleSheet.instance.addRule_Callback_3_(this, selector, style, index);
     }
-    return _blink.BlinkCSSStyleSheet.addRule_Callback_2(this, selector, style);
+    return _blink.BlinkCSSStyleSheet.instance.addRule_Callback_2_(this, selector, style);
   }
 
   @DomName('CSSStyleSheet.deleteRule')
   @DocsEditable()
-  void deleteRule(int index) => _blink.BlinkCSSStyleSheet.deleteRule_Callback_1(this, index);
+  void deleteRule(int index) => _blink.BlinkCSSStyleSheet.instance.deleteRule_Callback_1_(this, index);
 
   int insertRule(String rule, [int index]) {
     if (index != null) {
-      return _blink.BlinkCSSStyleSheet.insertRule_Callback_2(this, rule, index);
+      return _blink.BlinkCSSStyleSheet.instance.insertRule_Callback_2_(this, rule, index);
     }
-    return _blink.BlinkCSSStyleSheet.insertRule_Callback_1(this, rule);
+    return _blink.BlinkCSSStyleSheet.instance.insertRule_Callback_1_(this, rule);
   }
 
   @DomName('CSSStyleSheet.removeRule')
   @DocsEditable()
   @Experimental() // non-standard
-  void removeRule(int index) => _blink.BlinkCSSStyleSheet.removeRule_Callback_1(this, index);
+  void removeRule(int index) => _blink.BlinkCSSStyleSheet.instance.removeRule_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7516,19 +7516,19 @@
 
   @DomName('CSSSupportsRule.conditionText')
   @DocsEditable()
-  String get conditionText => _blink.BlinkCSSSupportsRule.conditionText_Getter(this);
+  String get conditionText => _blink.BlinkCSSSupportsRule.instance.conditionText_Getter_(this);
 
   @DomName('CSSSupportsRule.cssRules')
   @DocsEditable()
-  List<CssRule> get cssRules => _blink.BlinkCSSSupportsRule.cssRules_Getter(this);
+  List<CssRule> get cssRules => _blink.BlinkCSSSupportsRule.instance.cssRules_Getter_(this);
 
   @DomName('CSSSupportsRule.deleteRule')
   @DocsEditable()
-  void deleteRule(int index) => _blink.BlinkCSSSupportsRule.deleteRule_Callback_1(this, index);
+  void deleteRule(int index) => _blink.BlinkCSSSupportsRule.instance.deleteRule_Callback_1_(this, index);
 
   @DomName('CSSSupportsRule.insertRule')
   @DocsEditable()
-  int insertRule(String rule, int index) => _blink.BlinkCSSSupportsRule.insertRule_Callback_2(this, rule, index);
+  int insertRule(String rule, int index) => _blink.BlinkCSSSupportsRule.instance.insertRule_Callback_2_(this, rule, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7548,7 +7548,7 @@
   @DomName('CSSViewportRule.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => _blink.BlinkCSSViewportRule.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkCSSViewportRule.instance.style_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7596,11 +7596,11 @@
 
   @DomName('CustomEvent.detail')
   @DocsEditable()
-  Object get _detail => _blink.BlinkCustomEvent.detail_Getter(this);
+  Object get _detail => _blink.BlinkCustomEvent.instance.detail_Getter_(this);
 
   @DomName('CustomEvent.initCustomEvent')
   @DocsEditable()
-  void _initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) => _blink.BlinkCustomEvent.initCustomEvent_Callback_4(this, typeArg, canBubbleArg, cancelableArg, detailArg);
+  void _initCustomEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object detailArg) => _blink.BlinkCustomEvent.instance.initCustomEvent_Callback_4_(this, typeArg, canBubbleArg, cancelableArg, detailArg);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7659,7 +7659,7 @@
 
   @DomName('HTMLDataListElement.options')
   @DocsEditable()
-  List<Node> get options => _blink.BlinkHTMLDataListElement.options_Getter(this);
+  List<Node> get options => _blink.BlinkHTMLDataListElement.instance.options_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7679,61 +7679,61 @@
   @DomName('DataTransfer.dropEffect')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dropEffect => _blink.BlinkDataTransfer.dropEffect_Getter(this);
+  String get dropEffect => _blink.BlinkDataTransfer.instance.dropEffect_Getter_(this);
 
   @DomName('DataTransfer.dropEffect')
   @DocsEditable()
   @Experimental() // untriaged
-  void set dropEffect(String value) => _blink.BlinkDataTransfer.dropEffect_Setter(this, value);
+  void set dropEffect(String value) => _blink.BlinkDataTransfer.instance.dropEffect_Setter_(this, value);
 
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
   @Experimental() // untriaged
-  String get effectAllowed => _blink.BlinkDataTransfer.effectAllowed_Getter(this);
+  String get effectAllowed => _blink.BlinkDataTransfer.instance.effectAllowed_Getter_(this);
 
   @DomName('DataTransfer.effectAllowed')
   @DocsEditable()
   @Experimental() // untriaged
-  void set effectAllowed(String value) => _blink.BlinkDataTransfer.effectAllowed_Setter(this, value);
+  void set effectAllowed(String value) => _blink.BlinkDataTransfer.instance.effectAllowed_Setter_(this, value);
 
   @DomName('DataTransfer.files')
   @DocsEditable()
   @Experimental() // untriaged
-  List<File> get files => _blink.BlinkDataTransfer.files_Getter(this);
+  List<File> get files => _blink.BlinkDataTransfer.instance.files_Getter_(this);
 
   @DomName('DataTransfer.items')
   @DocsEditable()
   @Experimental() // untriaged
-  DataTransferItemList get items => _blink.BlinkDataTransfer.items_Getter(this);
+  DataTransferItemList get items => _blink.BlinkDataTransfer.instance.items_Getter_(this);
 
   @DomName('DataTransfer.types')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get types => _blink.BlinkDataTransfer.types_Getter(this);
+  List<String> get types => _blink.BlinkDataTransfer.instance.types_Getter_(this);
 
   void clearData([String type]) {
     if (type != null) {
-      _blink.BlinkDataTransfer.clearData_Callback_1(this, type);
+      _blink.BlinkDataTransfer.instance.clearData_Callback_1_(this, type);
       return;
     }
-    _blink.BlinkDataTransfer.clearData_Callback(this);
+    _blink.BlinkDataTransfer.instance.clearData_Callback_0_(this);
     return;
   }
 
   @DomName('DataTransfer.getData')
   @DocsEditable()
   @Experimental() // untriaged
-  String getData(String type) => _blink.BlinkDataTransfer.getData_Callback_1(this, type);
+  String getData(String type) => _blink.BlinkDataTransfer.instance.getData_Callback_1_(this, type);
 
   @DomName('DataTransfer.setData')
   @DocsEditable()
   @Experimental() // untriaged
-  void setData(String type, String data) => _blink.BlinkDataTransfer.setData_Callback_2(this, type, data);
+  void setData(String type, String data) => _blink.BlinkDataTransfer.instance.setData_Callback_2_(this, type, data);
 
   @DomName('DataTransfer.setDragImage')
   @DocsEditable()
   @Experimental() // untriaged
-  void setDragImage(Element image, int x, int y) => _blink.BlinkDataTransfer.setDragImage_Callback_3(this, image, x, y);
+  void setDragImage(Element image, int x, int y) => _blink.BlinkDataTransfer.instance.setDragImage_Callback_3_(this, image, x, y);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7753,19 +7753,19 @@
 
   @DomName('DataTransferItem.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkDataTransferItem.kind_Getter(this);
+  String get kind => _blink.BlinkDataTransferItem.instance.kind_Getter_(this);
 
   @DomName('DataTransferItem.type')
   @DocsEditable()
-  String get type => _blink.BlinkDataTransferItem.type_Getter(this);
+  String get type => _blink.BlinkDataTransferItem.instance.type_Getter_(this);
 
   @DomName('DataTransferItem.getAsFile')
   @DocsEditable()
-  Blob getAsFile() => _blink.BlinkDataTransferItem.getAsFile_Callback(this);
+  Blob getAsFile() => _blink.BlinkDataTransferItem.instance.getAsFile_Callback_0_(this);
 
   @DomName('DataTransferItem.getAsString')
   @DocsEditable()
-  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.getAsString_Callback_1(this, callback);
+  void _getAsString(_StringCallback callback) => _blink.BlinkDataTransferItem.instance.getAsString_Callback_1_(this, callback);
 
   Future<String> getAsString() {
     var completer = new Completer<String>();
@@ -7779,7 +7779,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  Entry getAsEntry() => _blink.BlinkDataTransferItem.webkitGetAsEntry_Callback(this);
+  Entry getAsEntry() => _blink.BlinkDataTransferItem.instance.webkitGetAsEntry_Callback_0_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -7797,39 +7797,39 @@
 
   @DomName('DataTransferItemList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDataTransferItemList.length_Getter(this);
+  int get length => _blink.BlinkDataTransferItemList.instance.length_Getter_(this);
 
   @DomName('DataTransferItemList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  DataTransferItem __getter__(int index) => _blink.BlinkDataTransferItemList.$__getter___Callback_1(this, index);
+  DataTransferItem __getter__(int index) => _blink.BlinkDataTransferItemList.instance.$__getter___Callback_1_(this, index);
 
   DataTransferItem add(data_OR_file, [String type]) {
     if ((type is String) && (data_OR_file is String)) {
-      return _blink.BlinkDataTransferItemList.add_Callback_2(this, data_OR_file, type);
+      return _blink.BlinkDataTransferItemList.instance.add_Callback_2_(this, data_OR_file, type);
     }
     if ((data_OR_file is File || data_OR_file == null) && type == null) {
-      return _blink.BlinkDataTransferItemList.add_Callback_1(this, data_OR_file);
+      return _blink.BlinkDataTransferItemList.instance.add_Callback_1_(this, data_OR_file);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('DataTransferItemList.addData')
   @DocsEditable()
-  DataTransferItem addData(String data, String type) => _blink.BlinkDataTransferItemList.add_Callback_2(this, data, type);
+  DataTransferItem addData(String data, String type) => _blink.BlinkDataTransferItemList.instance.add_Callback_2_(this, data, type);
 
   @DomName('DataTransferItemList.addFile')
   @DocsEditable()
-  DataTransferItem addFile(File file) => _blink.BlinkDataTransferItemList.add_Callback_1(this, file);
+  DataTransferItem addFile(File file) => _blink.BlinkDataTransferItemList.instance.add_Callback_1_(this, file);
 
   @DomName('DataTransferItemList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkDataTransferItemList.clear_Callback(this);
+  void clear() => _blink.BlinkDataTransferItemList.instance.clear_Callback_0_(this);
 
   @DomName('DataTransferItemList.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  void remove(int index) => _blink.BlinkDataTransferItemList.remove_Callback_1(this, index);
+  void remove(int index) => _blink.BlinkDataTransferItemList.instance.remove_Callback_1_(this, index);
 
 
   DataTransferItem operator[] (int index) {
@@ -7876,7 +7876,7 @@
   @DomName('DedicatedWorkerGlobalScope.postMessage')
   @DocsEditable()
   @Experimental() // untriaged
-  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.postMessage_Callback_2(this, message, transfer);
+  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_2_(this, message, transfer);
 
   /// Stream of `message` events handled by this [DedicatedWorkerGlobalScope].
   @DomName('DedicatedWorkerGlobalScope.onmessage')
@@ -7911,27 +7911,27 @@
 
   void queryUsageAndQuota(int storageType, [StorageUsageCallback usageCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_3(this, storageType, usageCallback, errorCallback);
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_3_(this, storageType, usageCallback, errorCallback);
       return;
     }
     if (usageCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_2(this, storageType, usageCallback);
+      _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_2_(this, storageType, usageCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageInfo.queryUsageAndQuota_Callback_1(this, storageType);
+    _blink.BlinkDeprecatedStorageInfo.instance.queryUsageAndQuota_Callback_1_(this, storageType);
     return;
   }
 
   void requestQuota(int storageType, int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_4(this, storageType, newQuotaInBytes, quotaCallback, errorCallback);
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_4_(this, storageType, newQuotaInBytes, quotaCallback, errorCallback);
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_3(this, storageType, newQuotaInBytes, quotaCallback);
+      _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_3_(this, storageType, newQuotaInBytes, quotaCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageInfo.requestQuota_Callback_2(this, storageType, newQuotaInBytes);
+    _blink.BlinkDeprecatedStorageInfo.instance.requestQuota_Callback_2_(this, storageType, newQuotaInBytes);
     return;
   }
 
@@ -7952,23 +7952,23 @@
 
   void queryUsageAndQuota(StorageUsageCallback usageCallback, [StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.queryUsageAndQuota_Callback_2(this, usageCallback, errorCallback);
+      _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_2_(this, usageCallback, errorCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageQuota.queryUsageAndQuota_Callback_1(this, usageCallback);
+    _blink.BlinkDeprecatedStorageQuota.instance.queryUsageAndQuota_Callback_1_(this, usageCallback);
     return;
   }
 
   void requestQuota(int newQuotaInBytes, [StorageQuotaCallback quotaCallback, StorageErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_3(this, newQuotaInBytes, quotaCallback, errorCallback);
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_3_(this, newQuotaInBytes, quotaCallback, errorCallback);
       return;
     }
     if (quotaCallback != null) {
-      _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_2(this, newQuotaInBytes, quotaCallback);
+      _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_2_(this, newQuotaInBytes, quotaCallback);
       return;
     }
-    _blink.BlinkDeprecatedStorageQuota.requestQuota_Callback_1(this, newQuotaInBytes);
+    _blink.BlinkDeprecatedStorageQuota.instance.requestQuota_Callback_1_(this, newQuotaInBytes);
     return;
   }
 
@@ -8004,11 +8004,11 @@
 
   @DomName('HTMLDetailsElement.open')
   @DocsEditable()
-  bool get open => _blink.BlinkHTMLDetailsElement.open_Getter(this);
+  bool get open => _blink.BlinkHTMLDetailsElement.instance.open_Getter_(this);
 
   @DomName('HTMLDetailsElement.open')
   @DocsEditable()
-  void set open(bool value) => _blink.BlinkHTMLDetailsElement.open_Setter(this, value);
+  void set open(bool value) => _blink.BlinkHTMLDetailsElement.instance.open_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8028,15 +8028,15 @@
 
   @DomName('DeviceAcceleration.x')
   @DocsEditable()
-  double get x => _blink.BlinkDeviceAcceleration.x_Getter(this);
+  double get x => _blink.BlinkDeviceAcceleration.instance.x_Getter_(this);
 
   @DomName('DeviceAcceleration.y')
   @DocsEditable()
-  double get y => _blink.BlinkDeviceAcceleration.y_Getter(this);
+  double get y => _blink.BlinkDeviceAcceleration.instance.y_Getter_(this);
 
   @DomName('DeviceAcceleration.z')
   @DocsEditable()
-  double get z => _blink.BlinkDeviceAcceleration.z_Getter(this);
+  double get z => _blink.BlinkDeviceAcceleration.instance.z_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8056,7 +8056,7 @@
   @DomName('DeviceLightEvent.value')
   @DocsEditable()
   @Experimental() // untriaged
-  double get value => _blink.BlinkDeviceLightEvent.value_Getter(this);
+  double get value => _blink.BlinkDeviceLightEvent.instance.value_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8076,24 +8076,24 @@
 
   @DomName('DeviceMotionEvent.acceleration')
   @DocsEditable()
-  DeviceAcceleration get acceleration => _blink.BlinkDeviceMotionEvent.acceleration_Getter(this);
+  DeviceAcceleration get acceleration => _blink.BlinkDeviceMotionEvent.instance.acceleration_Getter_(this);
 
   @DomName('DeviceMotionEvent.accelerationIncludingGravity')
   @DocsEditable()
-  DeviceAcceleration get accelerationIncludingGravity => _blink.BlinkDeviceMotionEvent.accelerationIncludingGravity_Getter(this);
+  DeviceAcceleration get accelerationIncludingGravity => _blink.BlinkDeviceMotionEvent.instance.accelerationIncludingGravity_Getter_(this);
 
   @DomName('DeviceMotionEvent.interval')
   @DocsEditable()
-  double get interval => _blink.BlinkDeviceMotionEvent.interval_Getter(this);
+  double get interval => _blink.BlinkDeviceMotionEvent.instance.interval_Getter_(this);
 
   @DomName('DeviceMotionEvent.rotationRate')
   @DocsEditable()
-  DeviceRotationRate get rotationRate => _blink.BlinkDeviceMotionEvent.rotationRate_Getter(this);
+  DeviceRotationRate get rotationRate => _blink.BlinkDeviceMotionEvent.instance.rotationRate_Getter_(this);
 
   @DomName('DeviceMotionEvent.initDeviceMotionEvent')
   @DocsEditable()
   @Experimental() // untriaged
-  void initDeviceMotionEvent(String type, bool bubbles, bool cancelable, DeviceAcceleration acceleration, DeviceAcceleration accelerationIncludingGravity, DeviceRotationRate rotationRate, num interval) => _blink.BlinkDeviceMotionEvent.initDeviceMotionEvent_Callback_7(this, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval);
+  void initDeviceMotionEvent(String type, bool bubbles, bool cancelable, DeviceAcceleration acceleration, DeviceAcceleration accelerationIncludingGravity, DeviceRotationRate rotationRate, num interval) => _blink.BlinkDeviceMotionEvent.instance.initDeviceMotionEvent_Callback_7_(this, type, bubbles, cancelable, acceleration, accelerationIncludingGravity, rotationRate, interval);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -8119,23 +8119,23 @@
 
   @DomName('DeviceOrientationEvent.absolute')
   @DocsEditable()
-  bool get absolute => _blink.BlinkDeviceOrientationEvent.absolute_Getter(this);
+  bool get absolute => _blink.BlinkDeviceOrientationEvent.instance.absolute_Getter_(this);
 
   @DomName('DeviceOrientationEvent.alpha')
   @DocsEditable()
-  double get alpha => _blink.BlinkDeviceOrientationEvent.alpha_Getter(this);
+  double get alpha => _blink.BlinkDeviceOrientationEvent.instance.alpha_Getter_(this);
 
   @DomName('DeviceOrientationEvent.beta')
   @DocsEditable()
-  double get beta => _blink.BlinkDeviceOrientationEvent.beta_Getter(this);
+  double get beta => _blink.BlinkDeviceOrientationEvent.instance.beta_Getter_(this);
 
   @DomName('DeviceOrientationEvent.gamma')
   @DocsEditable()
-  double get gamma => _blink.BlinkDeviceOrientationEvent.gamma_Getter(this);
+  double get gamma => _blink.BlinkDeviceOrientationEvent.instance.gamma_Getter_(this);
 
   @DomName('DeviceOrientationEvent.initDeviceOrientationEvent')
   @DocsEditable()
-  void _initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) => _blink.BlinkDeviceOrientationEvent.initDeviceOrientationEvent_Callback_7(this, type, bubbles, cancelable, alpha, beta, gamma, absolute);
+  void _initDeviceOrientationEvent(String type, bool bubbles, bool cancelable, num alpha, num beta, num gamma, bool absolute) => _blink.BlinkDeviceOrientationEvent.instance.initDeviceOrientationEvent_Callback_7_(this, type, bubbles, cancelable, alpha, beta, gamma, absolute);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8155,15 +8155,15 @@
 
   @DomName('DeviceRotationRate.alpha')
   @DocsEditable()
-  double get alpha => _blink.BlinkDeviceRotationRate.alpha_Getter(this);
+  double get alpha => _blink.BlinkDeviceRotationRate.instance.alpha_Getter_(this);
 
   @DomName('DeviceRotationRate.beta')
   @DocsEditable()
-  double get beta => _blink.BlinkDeviceRotationRate.beta_Getter(this);
+  double get beta => _blink.BlinkDeviceRotationRate.instance.beta_Getter_(this);
 
   @DomName('DeviceRotationRate.gamma')
   @DocsEditable()
-  double get gamma => _blink.BlinkDeviceRotationRate.gamma_Getter(this);
+  double get gamma => _blink.BlinkDeviceRotationRate.instance.gamma_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -8188,33 +8188,33 @@
 
   @DomName('HTMLDialogElement.open')
   @DocsEditable()
-  bool get open => _blink.BlinkHTMLDialogElement.open_Getter(this);
+  bool get open => _blink.BlinkHTMLDialogElement.instance.open_Getter_(this);
 
   @DomName('HTMLDialogElement.open')
   @DocsEditable()
-  void set open(bool value) => _blink.BlinkHTMLDialogElement.open_Setter(this, value);
+  void set open(bool value) => _blink.BlinkHTMLDialogElement.instance.open_Setter_(this, value);
 
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
   @Experimental() // untriaged
-  String get returnValue => _blink.BlinkHTMLDialogElement.returnValue_Getter(this);
+  String get returnValue => _blink.BlinkHTMLDialogElement.instance.returnValue_Getter_(this);
 
   @DomName('HTMLDialogElement.returnValue')
   @DocsEditable()
   @Experimental() // untriaged
-  void set returnValue(String value) => _blink.BlinkHTMLDialogElement.returnValue_Setter(this, value);
+  void set returnValue(String value) => _blink.BlinkHTMLDialogElement.instance.returnValue_Setter_(this, value);
 
   @DomName('HTMLDialogElement.close')
   @DocsEditable()
-  void close(String returnValue) => _blink.BlinkHTMLDialogElement.close_Callback_1(this, returnValue);
+  void close(String returnValue) => _blink.BlinkHTMLDialogElement.instance.close_Callback_1_(this, returnValue);
 
   @DomName('HTMLDialogElement.show')
   @DocsEditable()
-  void show() => _blink.BlinkHTMLDialogElement.show_Callback(this);
+  void show() => _blink.BlinkHTMLDialogElement.instance.show_Callback_0_(this);
 
   @DomName('HTMLDialogElement.showModal')
   @DocsEditable()
-  void showModal() => _blink.BlinkHTMLDialogElement.showModal_Callback(this);
+  void showModal() => _blink.BlinkHTMLDialogElement.instance.showModal_Callback_0_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -8268,22 +8268,22 @@
 
   @DomName('DirectoryEntry.createReader')
   @DocsEditable()
-  DirectoryReader createReader() => _blink.BlinkDirectoryEntry.createReader_Callback(this);
+  DirectoryReader createReader() => _blink.BlinkDirectoryEntry.instance.createReader_Callback_0_(this);
 
   void __getDirectory(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.getDirectory_Callback_4(this, path, options, successCallback, errorCallback);
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_4_(this, path, options, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.getDirectory_Callback_3(this, path, options, successCallback);
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_3_(this, path, options, successCallback);
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.getDirectory_Callback_2(this, path, options);
+      _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_2_(this, path, options);
       return;
     }
-    _blink.BlinkDirectoryEntry.getDirectory_Callback_1(this, path);
+    _blink.BlinkDirectoryEntry.instance.getDirectory_Callback_1_(this, path);
     return;
   }
 
@@ -8297,18 +8297,18 @@
 
   void __getFile(String path, {Map options, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.getFile_Callback_4(this, path, options, successCallback, errorCallback);
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_4_(this, path, options, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkDirectoryEntry.getFile_Callback_3(this, path, options, successCallback);
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_3_(this, path, options, successCallback);
       return;
     }
     if (options != null) {
-      _blink.BlinkDirectoryEntry.getFile_Callback_2(this, path, options);
+      _blink.BlinkDirectoryEntry.instance.getFile_Callback_2_(this, path, options);
       return;
     }
-    _blink.BlinkDirectoryEntry.getFile_Callback_1(this, path);
+    _blink.BlinkDirectoryEntry.instance.getFile_Callback_1_(this, path);
     return;
   }
 
@@ -8322,10 +8322,10 @@
 
   void _removeRecursively(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryEntry.removeRecursively_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkDirectoryEntry.removeRecursively_Callback_1(this, successCallback);
+    _blink.BlinkDirectoryEntry.instance.removeRecursively_Callback_1_(this, successCallback);
     return;
   }
 
@@ -8355,10 +8355,10 @@
 
   void _readEntries(_EntriesCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkDirectoryReader.readEntries_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkDirectoryReader.instance.readEntries_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkDirectoryReader.readEntries_Callback_1(this, successCallback);
+    _blink.BlinkDirectoryReader.instance.readEntries_Callback_1_(this, successCallback);
     return;
   }
 
@@ -8474,129 +8474,129 @@
   @DomName('Document.activeElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get activeElement => _blink.BlinkDocument.activeElement_Getter(this);
+  Element get activeElement => _blink.BlinkDocument.instance.activeElement_Getter_(this);
 
   @DomName('Document.body')
   @DocsEditable()
-  HtmlElement get _body => _blink.BlinkDocument.body_Getter(this);
+  HtmlElement get _body => _blink.BlinkDocument.instance.body_Getter_(this);
 
   @DomName('Document.body')
   @DocsEditable()
-  void set _body(HtmlElement value) => _blink.BlinkDocument.body_Setter(this, value);
+  void set _body(HtmlElement value) => _blink.BlinkDocument.instance.body_Setter_(this, value);
 
   @DomName('Document.contentType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get contentType => _blink.BlinkDocument.contentType_Getter(this);
+  String get contentType => _blink.BlinkDocument.instance.contentType_Getter_(this);
 
   @DomName('Document.cookie')
   @DocsEditable()
-  String get cookie => _blink.BlinkDocument.cookie_Getter(this);
+  String get cookie => _blink.BlinkDocument.instance.cookie_Getter_(this);
 
   @DomName('Document.cookie')
   @DocsEditable()
-  void set cookie(String value) => _blink.BlinkDocument.cookie_Setter(this, value);
+  void set cookie(String value) => _blink.BlinkDocument.instance.cookie_Setter_(this, value);
 
   @DomName('Document.currentScript')
   @DocsEditable()
   @Experimental() // untriaged
-  ScriptElement get currentScript => _blink.BlinkDocument.currentScript_Getter(this);
+  ScriptElement get currentScript => _blink.BlinkDocument.instance.currentScript_Getter_(this);
 
   @DomName('Document.defaultView')
   @DocsEditable()
-  WindowBase get window => _blink.BlinkDocument.defaultView_Getter(this);
+  WindowBase get window => _blink.BlinkDocument.instance.defaultView_Getter_(this);
 
   @DomName('Document.documentElement')
   @DocsEditable()
-  Element get documentElement => _blink.BlinkDocument.documentElement_Getter(this);
+  Element get documentElement => _blink.BlinkDocument.instance.documentElement_Getter_(this);
 
   @DomName('Document.domain')
   @DocsEditable()
-  String get domain => _blink.BlinkDocument.domain_Getter(this);
+  String get domain => _blink.BlinkDocument.instance.domain_Getter_(this);
 
   @DomName('Document.fonts')
   @DocsEditable()
   @Experimental() // untriaged
-  FontFaceSet get fonts => _blink.BlinkDocument.fonts_Getter(this);
+  FontFaceSet get fonts => _blink.BlinkDocument.instance.fonts_Getter_(this);
 
   @DomName('Document.fullscreenElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get fullscreenElement => _blink.BlinkDocument.fullscreenElement_Getter(this);
+  Element get fullscreenElement => _blink.BlinkDocument.instance.fullscreenElement_Getter_(this);
 
   @DomName('Document.fullscreenEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get fullscreenEnabled => _blink.BlinkDocument.fullscreenEnabled_Getter(this);
+  bool get fullscreenEnabled => _blink.BlinkDocument.instance.fullscreenEnabled_Getter_(this);
 
   @DomName('Document.head')
   @DocsEditable()
-  HeadElement get _head => _blink.BlinkDocument.head_Getter(this);
+  HeadElement get _head => _blink.BlinkDocument.instance.head_Getter_(this);
 
   @DomName('Document.hidden')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get hidden => _blink.BlinkDocument.hidden_Getter(this);
+  bool get hidden => _blink.BlinkDocument.instance.hidden_Getter_(this);
 
   @DomName('Document.implementation')
   @DocsEditable()
-  DomImplementation get implementation => _blink.BlinkDocument.implementation_Getter(this);
+  DomImplementation get implementation => _blink.BlinkDocument.instance.implementation_Getter_(this);
 
   @DomName('Document.lastModified')
   @DocsEditable()
-  String get _lastModified => _blink.BlinkDocument.lastModified_Getter(this);
+  String get _lastModified => _blink.BlinkDocument.instance.lastModified_Getter_(this);
 
   @DomName('Document.pointerLockElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get pointerLockElement => _blink.BlinkDocument.pointerLockElement_Getter(this);
+  Element get pointerLockElement => _blink.BlinkDocument.instance.pointerLockElement_Getter_(this);
 
   @DomName('Document.preferredStylesheetSet')
   @DocsEditable()
-  String get _preferredStylesheetSet => _blink.BlinkDocument.preferredStylesheetSet_Getter(this);
+  String get _preferredStylesheetSet => _blink.BlinkDocument.instance.preferredStylesheetSet_Getter_(this);
 
   @DomName('Document.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkDocument.readyState_Getter(this);
+  String get readyState => _blink.BlinkDocument.instance.readyState_Getter_(this);
 
   @DomName('Document.referrer')
   @DocsEditable()
-  String get _referrer => _blink.BlinkDocument.referrer_Getter(this);
+  String get _referrer => _blink.BlinkDocument.instance.referrer_Getter_(this);
 
   @DomName('Document.rootElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgSvgElement get rootElement => _blink.BlinkDocument.rootElement_Getter(this);
+  SvgSvgElement get rootElement => _blink.BlinkDocument.instance.rootElement_Getter_(this);
 
   @DomName('Document.selectedStylesheetSet')
   @DocsEditable()
-  String get _selectedStylesheetSet => _blink.BlinkDocument.selectedStylesheetSet_Getter(this);
+  String get _selectedStylesheetSet => _blink.BlinkDocument.instance.selectedStylesheetSet_Getter_(this);
 
   @DomName('Document.selectedStylesheetSet')
   @DocsEditable()
-  void set _selectedStylesheetSet(String value) => _blink.BlinkDocument.selectedStylesheetSet_Setter(this, value);
+  void set _selectedStylesheetSet(String value) => _blink.BlinkDocument.instance.selectedStylesheetSet_Setter_(this, value);
 
   @DomName('Document.styleSheets')
   @DocsEditable()
-  List<StyleSheet> get _styleSheets => _blink.BlinkDocument.styleSheets_Getter(this);
+  List<StyleSheet> get _styleSheets => _blink.BlinkDocument.instance.styleSheets_Getter_(this);
 
   @DomName('Document.timeline')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationTimeline get timeline => _blink.BlinkDocument.timeline_Getter(this);
+  AnimationTimeline get timeline => _blink.BlinkDocument.instance.timeline_Getter_(this);
 
   @DomName('Document.title')
   @DocsEditable()
-  String get _title => _blink.BlinkDocument.title_Getter(this);
+  String get _title => _blink.BlinkDocument.instance.title_Getter_(this);
 
   @DomName('Document.title')
   @DocsEditable()
-  void set _title(String value) => _blink.BlinkDocument.title_Setter(this, value);
+  void set _title(String value) => _blink.BlinkDocument.instance.title_Setter_(this, value);
 
   @DomName('Document.visibilityState')
   @DocsEditable()
   @Experimental() // untriaged
-  String get visibilityState => _blink.BlinkDocument.visibilityState_Getter(this);
+  String get visibilityState => _blink.BlinkDocument.instance.visibilityState_Getter_(this);
 
   @DomName('Document.webkitFullscreenElement')
   @DocsEditable()
@@ -8604,7 +8604,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenelement
-  Element get _webkitFullscreenElement => _blink.BlinkDocument.webkitFullscreenElement_Getter(this);
+  Element get _webkitFullscreenElement => _blink.BlinkDocument.instance.webkitFullscreenElement_Getter_(this);
 
   @DomName('Document.webkitFullscreenEnabled')
   @DocsEditable()
@@ -8612,7 +8612,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-fullscreenenabled
-  bool get _webkitFullscreenEnabled => _blink.BlinkDocument.webkitFullscreenEnabled_Getter(this);
+  bool get _webkitFullscreenEnabled => _blink.BlinkDocument.instance.webkitFullscreenEnabled_Getter_(this);
 
   @DomName('Document.webkitHidden')
   @DocsEditable()
@@ -8620,7 +8620,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#document
-  bool get _webkitHidden => _blink.BlinkDocument.webkitHidden_Getter(this);
+  bool get _webkitHidden => _blink.BlinkDocument.instance.webkitHidden_Getter_(this);
 
   @DomName('Document.webkitVisibilityState')
   @DocsEditable()
@@ -8628,134 +8628,134 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html#dom-document-visibilitystate
-  String get _webkitVisibilityState => _blink.BlinkDocument.webkitVisibilityState_Getter(this);
+  String get _webkitVisibilityState => _blink.BlinkDocument.instance.webkitVisibilityState_Getter_(this);
 
   @DomName('Document.adoptNode')
   @DocsEditable()
-  Node adoptNode(Node node) => _blink.BlinkDocument.adoptNode_Callback_1(this, node);
+  Node adoptNode(Node node) => _blink.BlinkDocument.instance.adoptNode_Callback_1_(this, node);
 
   @DomName('Document.caretRangeFromPoint')
   @DocsEditable()
   // http://www.w3.org/TR/2009/WD-cssom-view-20090804/#dom-documentview-caretrangefrompoint
   @Experimental()
-  Range _caretRangeFromPoint(int x, int y) => _blink.BlinkDocument.caretRangeFromPoint_Callback_2(this, x, y);
+  Range _caretRangeFromPoint(int x, int y) => _blink.BlinkDocument.instance.caretRangeFromPoint_Callback_2_(this, x, y);
 
   @DomName('Document.createDocumentFragment')
   @DocsEditable()
-  DocumentFragment createDocumentFragment() => _blink.BlinkDocument.createDocumentFragment_Callback(this);
+  DocumentFragment createDocumentFragment() => _blink.BlinkDocument.instance.createDocumentFragment_Callback_0_(this);
 
   @DomName('Document.createElement')
   @DocsEditable()
-  Element _createElement(String localName_OR_tagName, [String typeExtension]) => _blink.BlinkDocument.createElement_Callback_2(this, localName_OR_tagName, typeExtension);
+  Element _createElement(String localName_OR_tagName, [String typeExtension]) => _blink.BlinkDocument.instance.createElement_Callback_2_(this, localName_OR_tagName, typeExtension);
 
   @DomName('Document.createElementNS')
   @DocsEditable()
-  Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) => _blink.BlinkDocument.createElementNS_Callback_3(this, namespaceURI, qualifiedName, typeExtension);
+  Element createElementNS(String namespaceURI, String qualifiedName, [String typeExtension]) => _blink.BlinkDocument.instance.createElementNS_Callback_3_(this, namespaceURI, qualifiedName, typeExtension);
 
   @DomName('Document.createEvent')
   @DocsEditable()
-  Event _createEvent(String eventType) => _blink.BlinkDocument.createEvent_Callback_1(this, eventType);
+  Event _createEvent(String eventType) => _blink.BlinkDocument.instance.createEvent_Callback_1_(this, eventType);
 
   NodeIterator _createNodeIterator(Node root, [int whatToShow, NodeFilter filter]) {
     if (whatToShow != null) {
-      return _blink.BlinkDocument.createNodeIterator_Callback_3(this, root, whatToShow, filter);
+      return _blink.BlinkDocument.instance.createNodeIterator_Callback_3_(this, root, whatToShow, filter);
     }
-    return _blink.BlinkDocument.createNodeIterator_Callback_1(this, root);
+    return _blink.BlinkDocument.instance.createNodeIterator_Callback_1_(this, root);
   }
 
   @DomName('Document.createRange')
   @DocsEditable()
-  Range createRange() => _blink.BlinkDocument.createRange_Callback(this);
+  Range createRange() => _blink.BlinkDocument.instance.createRange_Callback_0_(this);
 
   @DomName('Document.createTextNode')
   @DocsEditable()
-  Text _createTextNode(String data) => _blink.BlinkDocument.createTextNode_Callback_1(this, data);
+  Text _createTextNode(String data) => _blink.BlinkDocument.instance.createTextNode_Callback_1_(this, data);
 
   @DomName('Document.createTouch')
   @DocsEditable()
   // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features
   @Experimental()
-  Touch _createTouch(Window window, EventTarget target, int identifier, num pageX, num pageY, num screenX, num screenY, num webkitRadiusX, num webkitRadiusY, num webkitRotationAngle, num webkitForce) => _blink.BlinkDocument.createTouch_Callback_11(this, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce);
+  Touch _createTouch(Window window, EventTarget target, int identifier, num pageX, num pageY, num screenX, num screenY, num webkitRadiusX, num webkitRadiusY, num webkitRotationAngle, num webkitForce) => _blink.BlinkDocument.instance.createTouch_Callback_11_(this, window, target, identifier, pageX, pageY, screenX, screenY, webkitRadiusX, webkitRadiusY, webkitRotationAngle, webkitForce);
 
   @DomName('Document.createTouchList')
   @DocsEditable()
   // http://www.w3.org/TR/touch-events/, http://www.chromestatus.com/features
   @Experimental()
-  TouchList _createTouchList(Touch touches) => _blink.BlinkDocument.createTouchList_Callback_1(this, touches);
+  TouchList _createTouchList(Touch touches) => _blink.BlinkDocument.instance.createTouchList_Callback_1_(this, touches);
 
   TreeWalker _createTreeWalker(Node root, [int whatToShow, NodeFilter filter]) {
     if (whatToShow != null) {
-      return _blink.BlinkDocument.createTreeWalker_Callback_3(this, root, whatToShow, filter);
+      return _blink.BlinkDocument.instance.createTreeWalker_Callback_3_(this, root, whatToShow, filter);
     }
-    return _blink.BlinkDocument.createTreeWalker_Callback_1(this, root);
+    return _blink.BlinkDocument.instance.createTreeWalker_Callback_1_(this, root);
   }
 
   @DomName('Document.elementFromPoint')
   @DocsEditable()
-  Element _elementFromPoint(int x, int y) => _blink.BlinkDocument.elementFromPoint_Callback_2(this, x, y);
+  Element _elementFromPoint(int x, int y) => _blink.BlinkDocument.instance.elementFromPoint_Callback_2_(this, x, y);
 
   @DomName('Document.execCommand')
   @DocsEditable()
-  bool execCommand(String command, bool userInterface, String value) => _blink.BlinkDocument.execCommand_Callback_3(this, command, userInterface, value);
+  bool execCommand(String command, bool userInterface, String value) => _blink.BlinkDocument.instance.execCommand_Callback_3_(this, command, userInterface, value);
 
   @DomName('Document.exitFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  void exitFullscreen() => _blink.BlinkDocument.exitFullscreen_Callback(this);
+  void exitFullscreen() => _blink.BlinkDocument.instance.exitFullscreen_Callback_0_(this);
 
   @DomName('Document.exitPointerLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void exitPointerLock() => _blink.BlinkDocument.exitPointerLock_Callback(this);
+  void exitPointerLock() => _blink.BlinkDocument.instance.exitPointerLock_Callback_0_(this);
 
   @DomName('Document.getCSSCanvasContext')
   @DocsEditable()
   // https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariCSSRef/Articles/Functions.html
   @Experimental() // non-standard
-  Object _getCssCanvasContext(String contextId, String name, int width, int height) => _blink.BlinkDocument.getCSSCanvasContext_Callback_4(this, contextId, name, width, height);
+  Object _getCssCanvasContext(String contextId, String name, int width, int height) => _blink.BlinkDocument.instance.getCSSCanvasContext_Callback_4_(this, contextId, name, width, height);
 
   @DomName('Document.getElementById')
   @DocsEditable()
-  Element getElementById(String elementId) => _blink.BlinkDocument.getElementById_Callback_1(this, elementId);
+  Element getElementById(String elementId) => _blink.BlinkDocument.instance.getElementById_Callback_1_(this, elementId);
 
   @DomName('Document.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => _blink.BlinkDocument.getElementsByClassName_Callback_1(this, classNames);
+  List<Node> getElementsByClassName(String classNames) => _blink.BlinkDocument.instance.getElementsByClassName_Callback_1_(this, classNames);
 
   @DomName('Document.getElementsByName')
   @DocsEditable()
-  List<Node> getElementsByName(String elementName) => _blink.BlinkDocument.getElementsByName_Callback_1(this, elementName);
+  List<Node> getElementsByName(String elementName) => _blink.BlinkDocument.instance.getElementsByName_Callback_1_(this, elementName);
 
   @DomName('Document.getElementsByTagName')
   @DocsEditable()
-  List<Node> getElementsByTagName(String localName) => _blink.BlinkDocument.getElementsByTagName_Callback_1(this, localName);
+  List<Node> getElementsByTagName(String localName) => _blink.BlinkDocument.instance.getElementsByTagName_Callback_1_(this, localName);
 
   Node importNode(Node node, [bool deep]) {
     if (deep != null) {
-      return _blink.BlinkDocument.importNode_Callback_2(this, node, deep);
+      return _blink.BlinkDocument.instance.importNode_Callback_2_(this, node, deep);
     }
-    return _blink.BlinkDocument.importNode_Callback_1(this, node);
+    return _blink.BlinkDocument.instance.importNode_Callback_1_(this, node);
   }
 
   @DomName('Document.queryCommandEnabled')
   @DocsEditable()
-  bool queryCommandEnabled(String command) => _blink.BlinkDocument.queryCommandEnabled_Callback_1(this, command);
+  bool queryCommandEnabled(String command) => _blink.BlinkDocument.instance.queryCommandEnabled_Callback_1_(this, command);
 
   @DomName('Document.queryCommandIndeterm')
   @DocsEditable()
-  bool queryCommandIndeterm(String command) => _blink.BlinkDocument.queryCommandIndeterm_Callback_1(this, command);
+  bool queryCommandIndeterm(String command) => _blink.BlinkDocument.instance.queryCommandIndeterm_Callback_1_(this, command);
 
   @DomName('Document.queryCommandState')
   @DocsEditable()
-  bool queryCommandState(String command) => _blink.BlinkDocument.queryCommandState_Callback_1(this, command);
+  bool queryCommandState(String command) => _blink.BlinkDocument.instance.queryCommandState_Callback_1_(this, command);
 
   @DomName('Document.queryCommandSupported')
   @DocsEditable()
-  bool queryCommandSupported(String command) => _blink.BlinkDocument.queryCommandSupported_Callback_1(this, command);
+  bool queryCommandSupported(String command) => _blink.BlinkDocument.instance.queryCommandSupported_Callback_1_(this, command);
 
   @DomName('Document.queryCommandValue')
   @DocsEditable()
-  String queryCommandValue(String command) => _blink.BlinkDocument.queryCommandValue_Callback_1(this, command);
+  String queryCommandValue(String command) => _blink.BlinkDocument.instance.queryCommandValue_Callback_1_(this, command);
 
   @DomName('Document.webkitExitFullscreen')
   @DocsEditable()
@@ -8763,23 +8763,23 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
-  void _webkitExitFullscreen() => _blink.BlinkDocument.webkitExitFullscreen_Callback(this);
+  void _webkitExitFullscreen() => _blink.BlinkDocument.instance.webkitExitFullscreen_Callback_0_(this);
 
   @DomName('Document.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkDocument.childElementCount_Getter(this);
+  int get _childElementCount => _blink.BlinkDocument.instance.childElementCount_Getter_(this);
 
   @DomName('Document.children')
   @DocsEditable()
-  List<Node> get _children => _blink.BlinkDocument.children_Getter(this);
+  List<Node> get _children => _blink.BlinkDocument.instance.children_Getter_(this);
 
   @DomName('Document.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => _blink.BlinkDocument.firstElementChild_Getter(this);
+  Element get _firstElementChild => _blink.BlinkDocument.instance.firstElementChild_Getter_(this);
 
   @DomName('Document.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => _blink.BlinkDocument.lastElementChild_Getter(this);
+  Element get _lastElementChild => _blink.BlinkDocument.instance.lastElementChild_Getter_(this);
 
   /**
    * Finds the first descendant element of this document that matches the
@@ -8800,11 +8800,11 @@
    */
   @DomName('Document.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => _blink.BlinkDocument.querySelector_Callback_1(this, selectors);
+  Element querySelector(String selectors) => _blink.BlinkDocument.instance.querySelector_Callback_1_(this, selectors);
 
   @DomName('Document.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => _blink.BlinkDocument.querySelectorAll_Callback_1(this, selectors);
+  List<Node> _querySelectorAll(String selectors) => _blink.BlinkDocument.instance.querySelectorAll_Callback_1_(this, selectors);
 
   /// Stream of `abort` events handled by this [Document].
   @DomName('Document.onabort')
@@ -9349,19 +9349,19 @@
   @DomName('DocumentFragment.getElementById')
   @DocsEditable()
   @Experimental() // untriaged
-  Element getElementById(String elementId) => _blink.BlinkDocumentFragment.getElementById_Callback_1(this, elementId);
+  Element getElementById(String elementId) => _blink.BlinkDocumentFragment.instance.getElementById_Callback_1_(this, elementId);
 
   @DomName('DocumentFragment.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkDocumentFragment.childElementCount_Getter(this);
+  int get _childElementCount => _blink.BlinkDocumentFragment.instance.childElementCount_Getter_(this);
 
   @DomName('DocumentFragment.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => _blink.BlinkDocumentFragment.firstElementChild_Getter(this);
+  Element get _firstElementChild => _blink.BlinkDocumentFragment.instance.firstElementChild_Getter_(this);
 
   @DomName('DocumentFragment.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => _blink.BlinkDocumentFragment.lastElementChild_Getter(this);
+  Element get _lastElementChild => _blink.BlinkDocumentFragment.instance.lastElementChild_Getter_(this);
 
   /**
    * Finds the first descendant element of this document fragment that matches
@@ -9377,11 +9377,11 @@
    */
   @DomName('DocumentFragment.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => _blink.BlinkDocumentFragment.querySelector_Callback_1(this, selectors);
+  Element querySelector(String selectors) => _blink.BlinkDocumentFragment.instance.querySelector_Callback_1_(this, selectors);
 
   @DomName('DocumentFragment.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => _blink.BlinkDocumentFragment.querySelectorAll_Callback_1(this, selectors);
+  List<Node> _querySelectorAll(String selectors) => _blink.BlinkDocumentFragment.instance.querySelectorAll_Callback_1_(this, selectors);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9400,17 +9400,17 @@
   @DomName('DOMError.DOMError')
   @DocsEditable()
   factory DomError(String name, [String message]) {
-    return _blink.BlinkDOMError.constructorCallback_2(name, message);
+    return _blink.BlinkDOMError.instance.constructorCallback_2_(name, message);
   }
 
   @DomName('DOMError.message')
   @DocsEditable()
   @Experimental() // untriaged
-  String get message => _blink.BlinkDOMError.message_Getter(this);
+  String get message => _blink.BlinkDOMError.instance.message_Getter_(this);
 
   @DomName('DOMError.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMError.name_Getter(this);
+  String get name => _blink.BlinkDOMError.instance.name_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -9449,15 +9449,15 @@
 
   @DomName('DOMException.message')
   @DocsEditable()
-  String get message => _blink.BlinkDOMException.message_Getter(this);
+  String get message => _blink.BlinkDOMException.instance.message_Getter_(this);
 
   @DomName('DOMException.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMException.name_Getter(this);
+  String get name => _blink.BlinkDOMException.instance.name_Getter_(this);
 
   @DomName('DOMException.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkDOMException.toString_Callback(this);
+  String toString() => _blink.BlinkDOMException.instance.toString_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9475,19 +9475,19 @@
 
   @DomName('DOMImplementation.createDocument')
   @DocsEditable()
-  XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => _blink.BlinkDOMImplementation.createDocument_Callback_3(this, namespaceURI, qualifiedName, doctype);
+  XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => _blink.BlinkDOMImplementation.instance.createDocument_Callback_3_(this, namespaceURI, qualifiedName, doctype);
 
   @DomName('DOMImplementation.createDocumentType')
   @DocsEditable()
-  _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => _blink.BlinkDOMImplementation.createDocumentType_Callback_3(this, qualifiedName, publicId, systemId);
+  _DocumentType createDocumentType(String qualifiedName, String publicId, String systemId) => _blink.BlinkDOMImplementation.instance.createDocumentType_Callback_3_(this, qualifiedName, publicId, systemId);
 
   @DomName('DOMImplementation.createHTMLDocument')
   @DocsEditable()
-  HtmlDocument createHtmlDocument(String title) => _blink.BlinkDOMImplementation.createHTMLDocument_Callback_1(this, title);
+  HtmlDocument createHtmlDocument(String title) => _blink.BlinkDOMImplementation.instance.createHTMLDocument_Callback_1_(this, title);
 
   @DomName('DOMImplementation.hasFeature')
   @DocsEditable()
-  bool hasFeature(String feature, String version) => _blink.BlinkDOMImplementation.hasFeature_Callback_2(this, feature, version);
+  bool hasFeature(String feature, String version) => _blink.BlinkDOMImplementation.instance.hasFeature_Callback_2_(this, feature, version);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9508,10 +9508,10 @@
   @DocsEditable()
   factory DomMatrix([DomMatrixReadOnly other]) {
     if (other == null) {
-      return _blink.BlinkDOMMatrix.constructorCallback();
+      return _blink.BlinkDOMMatrix.instance.constructorCallback_0_();
     }
     if ((other is DomMatrixReadOnly || other == null)) {
-      return _blink.BlinkDOMMatrix.constructorCallback_1(other);
+      return _blink.BlinkDOMMatrix.instance.constructorCallback_1_(other);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -9519,222 +9519,222 @@
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
-  num get a => _blink.BlinkDOMMatrix.a_Getter(this);
+  num get a => _blink.BlinkDOMMatrix.instance.a_Getter_(this);
 
   @DomName('DOMMatrix.a')
   @DocsEditable()
   @Experimental() // untriaged
-  void set a(num value) => _blink.BlinkDOMMatrix.a_Setter(this, value);
+  void set a(num value) => _blink.BlinkDOMMatrix.instance.a_Setter_(this, value);
 
   @DomName('DOMMatrix.b')
   @DocsEditable()
   @Experimental() // untriaged
-  num get b => _blink.BlinkDOMMatrix.b_Getter(this);
+  num get b => _blink.BlinkDOMMatrix.instance.b_Getter_(this);
 
   @DomName('DOMMatrix.b')
   @DocsEditable()
   @Experimental() // untriaged
-  void set b(num value) => _blink.BlinkDOMMatrix.b_Setter(this, value);
+  void set b(num value) => _blink.BlinkDOMMatrix.instance.b_Setter_(this, value);
 
   @DomName('DOMMatrix.c')
   @DocsEditable()
   @Experimental() // untriaged
-  num get c => _blink.BlinkDOMMatrix.c_Getter(this);
+  num get c => _blink.BlinkDOMMatrix.instance.c_Getter_(this);
 
   @DomName('DOMMatrix.c')
   @DocsEditable()
   @Experimental() // untriaged
-  void set c(num value) => _blink.BlinkDOMMatrix.c_Setter(this, value);
+  void set c(num value) => _blink.BlinkDOMMatrix.instance.c_Setter_(this, value);
 
   @DomName('DOMMatrix.d')
   @DocsEditable()
   @Experimental() // untriaged
-  num get d => _blink.BlinkDOMMatrix.d_Getter(this);
+  num get d => _blink.BlinkDOMMatrix.instance.d_Getter_(this);
 
   @DomName('DOMMatrix.d')
   @DocsEditable()
   @Experimental() // untriaged
-  void set d(num value) => _blink.BlinkDOMMatrix.d_Setter(this, value);
+  void set d(num value) => _blink.BlinkDOMMatrix.instance.d_Setter_(this, value);
 
   @DomName('DOMMatrix.e')
   @DocsEditable()
   @Experimental() // untriaged
-  num get e => _blink.BlinkDOMMatrix.e_Getter(this);
+  num get e => _blink.BlinkDOMMatrix.instance.e_Getter_(this);
 
   @DomName('DOMMatrix.e')
   @DocsEditable()
   @Experimental() // untriaged
-  void set e(num value) => _blink.BlinkDOMMatrix.e_Setter(this, value);
+  void set e(num value) => _blink.BlinkDOMMatrix.instance.e_Setter_(this, value);
 
   @DomName('DOMMatrix.f')
   @DocsEditable()
   @Experimental() // untriaged
-  num get f => _blink.BlinkDOMMatrix.f_Getter(this);
+  num get f => _blink.BlinkDOMMatrix.instance.f_Getter_(this);
 
   @DomName('DOMMatrix.f')
   @DocsEditable()
   @Experimental() // untriaged
-  void set f(num value) => _blink.BlinkDOMMatrix.f_Setter(this, value);
+  void set f(num value) => _blink.BlinkDOMMatrix.instance.f_Setter_(this, value);
 
   @DomName('DOMMatrix.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m11 => _blink.BlinkDOMMatrix.m11_Getter(this);
+  num get m11 => _blink.BlinkDOMMatrix.instance.m11_Getter_(this);
 
   @DomName('DOMMatrix.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m11(num value) => _blink.BlinkDOMMatrix.m11_Setter(this, value);
+  void set m11(num value) => _blink.BlinkDOMMatrix.instance.m11_Setter_(this, value);
 
   @DomName('DOMMatrix.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m12 => _blink.BlinkDOMMatrix.m12_Getter(this);
+  num get m12 => _blink.BlinkDOMMatrix.instance.m12_Getter_(this);
 
   @DomName('DOMMatrix.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m12(num value) => _blink.BlinkDOMMatrix.m12_Setter(this, value);
+  void set m12(num value) => _blink.BlinkDOMMatrix.instance.m12_Setter_(this, value);
 
   @DomName('DOMMatrix.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m13 => _blink.BlinkDOMMatrix.m13_Getter(this);
+  num get m13 => _blink.BlinkDOMMatrix.instance.m13_Getter_(this);
 
   @DomName('DOMMatrix.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m13(num value) => _blink.BlinkDOMMatrix.m13_Setter(this, value);
+  void set m13(num value) => _blink.BlinkDOMMatrix.instance.m13_Setter_(this, value);
 
   @DomName('DOMMatrix.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m14 => _blink.BlinkDOMMatrix.m14_Getter(this);
+  num get m14 => _blink.BlinkDOMMatrix.instance.m14_Getter_(this);
 
   @DomName('DOMMatrix.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m14(num value) => _blink.BlinkDOMMatrix.m14_Setter(this, value);
+  void set m14(num value) => _blink.BlinkDOMMatrix.instance.m14_Setter_(this, value);
 
   @DomName('DOMMatrix.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m21 => _blink.BlinkDOMMatrix.m21_Getter(this);
+  num get m21 => _blink.BlinkDOMMatrix.instance.m21_Getter_(this);
 
   @DomName('DOMMatrix.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m21(num value) => _blink.BlinkDOMMatrix.m21_Setter(this, value);
+  void set m21(num value) => _blink.BlinkDOMMatrix.instance.m21_Setter_(this, value);
 
   @DomName('DOMMatrix.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m22 => _blink.BlinkDOMMatrix.m22_Getter(this);
+  num get m22 => _blink.BlinkDOMMatrix.instance.m22_Getter_(this);
 
   @DomName('DOMMatrix.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m22(num value) => _blink.BlinkDOMMatrix.m22_Setter(this, value);
+  void set m22(num value) => _blink.BlinkDOMMatrix.instance.m22_Setter_(this, value);
 
   @DomName('DOMMatrix.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m23 => _blink.BlinkDOMMatrix.m23_Getter(this);
+  num get m23 => _blink.BlinkDOMMatrix.instance.m23_Getter_(this);
 
   @DomName('DOMMatrix.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m23(num value) => _blink.BlinkDOMMatrix.m23_Setter(this, value);
+  void set m23(num value) => _blink.BlinkDOMMatrix.instance.m23_Setter_(this, value);
 
   @DomName('DOMMatrix.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m24 => _blink.BlinkDOMMatrix.m24_Getter(this);
+  num get m24 => _blink.BlinkDOMMatrix.instance.m24_Getter_(this);
 
   @DomName('DOMMatrix.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m24(num value) => _blink.BlinkDOMMatrix.m24_Setter(this, value);
+  void set m24(num value) => _blink.BlinkDOMMatrix.instance.m24_Setter_(this, value);
 
   @DomName('DOMMatrix.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m31 => _blink.BlinkDOMMatrix.m31_Getter(this);
+  num get m31 => _blink.BlinkDOMMatrix.instance.m31_Getter_(this);
 
   @DomName('DOMMatrix.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m31(num value) => _blink.BlinkDOMMatrix.m31_Setter(this, value);
+  void set m31(num value) => _blink.BlinkDOMMatrix.instance.m31_Setter_(this, value);
 
   @DomName('DOMMatrix.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m32 => _blink.BlinkDOMMatrix.m32_Getter(this);
+  num get m32 => _blink.BlinkDOMMatrix.instance.m32_Getter_(this);
 
   @DomName('DOMMatrix.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m32(num value) => _blink.BlinkDOMMatrix.m32_Setter(this, value);
+  void set m32(num value) => _blink.BlinkDOMMatrix.instance.m32_Setter_(this, value);
 
   @DomName('DOMMatrix.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m33 => _blink.BlinkDOMMatrix.m33_Getter(this);
+  num get m33 => _blink.BlinkDOMMatrix.instance.m33_Getter_(this);
 
   @DomName('DOMMatrix.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m33(num value) => _blink.BlinkDOMMatrix.m33_Setter(this, value);
+  void set m33(num value) => _blink.BlinkDOMMatrix.instance.m33_Setter_(this, value);
 
   @DomName('DOMMatrix.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m34 => _blink.BlinkDOMMatrix.m34_Getter(this);
+  num get m34 => _blink.BlinkDOMMatrix.instance.m34_Getter_(this);
 
   @DomName('DOMMatrix.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m34(num value) => _blink.BlinkDOMMatrix.m34_Setter(this, value);
+  void set m34(num value) => _blink.BlinkDOMMatrix.instance.m34_Setter_(this, value);
 
   @DomName('DOMMatrix.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m41 => _blink.BlinkDOMMatrix.m41_Getter(this);
+  num get m41 => _blink.BlinkDOMMatrix.instance.m41_Getter_(this);
 
   @DomName('DOMMatrix.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m41(num value) => _blink.BlinkDOMMatrix.m41_Setter(this, value);
+  void set m41(num value) => _blink.BlinkDOMMatrix.instance.m41_Setter_(this, value);
 
   @DomName('DOMMatrix.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m42 => _blink.BlinkDOMMatrix.m42_Getter(this);
+  num get m42 => _blink.BlinkDOMMatrix.instance.m42_Getter_(this);
 
   @DomName('DOMMatrix.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m42(num value) => _blink.BlinkDOMMatrix.m42_Setter(this, value);
+  void set m42(num value) => _blink.BlinkDOMMatrix.instance.m42_Setter_(this, value);
 
   @DomName('DOMMatrix.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m43 => _blink.BlinkDOMMatrix.m43_Getter(this);
+  num get m43 => _blink.BlinkDOMMatrix.instance.m43_Getter_(this);
 
   @DomName('DOMMatrix.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m43(num value) => _blink.BlinkDOMMatrix.m43_Setter(this, value);
+  void set m43(num value) => _blink.BlinkDOMMatrix.instance.m43_Setter_(this, value);
 
   @DomName('DOMMatrix.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  num get m44 => _blink.BlinkDOMMatrix.m44_Getter(this);
+  num get m44 => _blink.BlinkDOMMatrix.instance.m44_Getter_(this);
 
   @DomName('DOMMatrix.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  void set m44(num value) => _blink.BlinkDOMMatrix.m44_Setter(this, value);
+  void set m44(num value) => _blink.BlinkDOMMatrix.instance.m44_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9754,122 +9754,122 @@
   @DomName('DOMMatrixReadOnly.a')
   @DocsEditable()
   @Experimental() // untriaged
-  double get a => _blink.BlinkDOMMatrixReadOnly.a_Getter(this);
+  double get a => _blink.BlinkDOMMatrixReadOnly.instance.a_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.b')
   @DocsEditable()
   @Experimental() // untriaged
-  double get b => _blink.BlinkDOMMatrixReadOnly.b_Getter(this);
+  double get b => _blink.BlinkDOMMatrixReadOnly.instance.b_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.c')
   @DocsEditable()
   @Experimental() // untriaged
-  double get c => _blink.BlinkDOMMatrixReadOnly.c_Getter(this);
+  double get c => _blink.BlinkDOMMatrixReadOnly.instance.c_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.d')
   @DocsEditable()
   @Experimental() // untriaged
-  double get d => _blink.BlinkDOMMatrixReadOnly.d_Getter(this);
+  double get d => _blink.BlinkDOMMatrixReadOnly.instance.d_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.e')
   @DocsEditable()
   @Experimental() // untriaged
-  double get e => _blink.BlinkDOMMatrixReadOnly.e_Getter(this);
+  double get e => _blink.BlinkDOMMatrixReadOnly.instance.e_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.f')
   @DocsEditable()
   @Experimental() // untriaged
-  double get f => _blink.BlinkDOMMatrixReadOnly.f_Getter(this);
+  double get f => _blink.BlinkDOMMatrixReadOnly.instance.f_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.is2D')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get is2D => _blink.BlinkDOMMatrixReadOnly.is2D_Getter(this);
+  bool get is2D => _blink.BlinkDOMMatrixReadOnly.instance.is2D_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.isIdentity')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isIdentity => _blink.BlinkDOMMatrixReadOnly.isIdentity_Getter(this);
+  bool get isIdentity => _blink.BlinkDOMMatrixReadOnly.instance.isIdentity_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m11')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m11 => _blink.BlinkDOMMatrixReadOnly.m11_Getter(this);
+  double get m11 => _blink.BlinkDOMMatrixReadOnly.instance.m11_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m12')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m12 => _blink.BlinkDOMMatrixReadOnly.m12_Getter(this);
+  double get m12 => _blink.BlinkDOMMatrixReadOnly.instance.m12_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m13')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m13 => _blink.BlinkDOMMatrixReadOnly.m13_Getter(this);
+  double get m13 => _blink.BlinkDOMMatrixReadOnly.instance.m13_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m14')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m14 => _blink.BlinkDOMMatrixReadOnly.m14_Getter(this);
+  double get m14 => _blink.BlinkDOMMatrixReadOnly.instance.m14_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m21')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m21 => _blink.BlinkDOMMatrixReadOnly.m21_Getter(this);
+  double get m21 => _blink.BlinkDOMMatrixReadOnly.instance.m21_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m22')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m22 => _blink.BlinkDOMMatrixReadOnly.m22_Getter(this);
+  double get m22 => _blink.BlinkDOMMatrixReadOnly.instance.m22_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m23')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m23 => _blink.BlinkDOMMatrixReadOnly.m23_Getter(this);
+  double get m23 => _blink.BlinkDOMMatrixReadOnly.instance.m23_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m24')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m24 => _blink.BlinkDOMMatrixReadOnly.m24_Getter(this);
+  double get m24 => _blink.BlinkDOMMatrixReadOnly.instance.m24_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m31')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m31 => _blink.BlinkDOMMatrixReadOnly.m31_Getter(this);
+  double get m31 => _blink.BlinkDOMMatrixReadOnly.instance.m31_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m32')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m32 => _blink.BlinkDOMMatrixReadOnly.m32_Getter(this);
+  double get m32 => _blink.BlinkDOMMatrixReadOnly.instance.m32_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m33')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m33 => _blink.BlinkDOMMatrixReadOnly.m33_Getter(this);
+  double get m33 => _blink.BlinkDOMMatrixReadOnly.instance.m33_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m34')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m34 => _blink.BlinkDOMMatrixReadOnly.m34_Getter(this);
+  double get m34 => _blink.BlinkDOMMatrixReadOnly.instance.m34_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m41')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m41 => _blink.BlinkDOMMatrixReadOnly.m41_Getter(this);
+  double get m41 => _blink.BlinkDOMMatrixReadOnly.instance.m41_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m42')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m42 => _blink.BlinkDOMMatrixReadOnly.m42_Getter(this);
+  double get m42 => _blink.BlinkDOMMatrixReadOnly.instance.m42_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m43')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m43 => _blink.BlinkDOMMatrixReadOnly.m43_Getter(this);
+  double get m43 => _blink.BlinkDOMMatrixReadOnly.instance.m43_Getter_(this);
 
   @DomName('DOMMatrixReadOnly.m44')
   @DocsEditable()
   @Experimental() // untriaged
-  double get m44 => _blink.BlinkDOMMatrixReadOnly.m44_Getter(this);
+  double get m44 => _blink.BlinkDOMMatrixReadOnly.instance.m44_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9888,12 +9888,12 @@
   @DomName('DOMParser.DOMParser')
   @DocsEditable()
   factory DomParser() {
-    return _blink.BlinkDOMParser.constructorCallback();
+    return _blink.BlinkDOMParser.instance.constructorCallback_0_();
   }
 
   @DomName('DOMParser.parseFromString')
   @DocsEditable()
-  Document parseFromString(String str, String contentType) => _blink.BlinkDOMParser.parseFromString_Callback_2(this, str, contentType);
+  Document parseFromString(String str, String contentType) => _blink.BlinkDOMParser.instance.parseFromString_Callback_2_(this, str, contentType);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9914,19 +9914,19 @@
   @DocsEditable()
   factory DomPoint([point_OR_x, num y, num z, num w]) {
     if (point_OR_x == null && y == null && z == null && w == null) {
-      return _blink.BlinkDOMPoint.constructorCallback();
+      return _blink.BlinkDOMPoint.instance.constructorCallback_0_();
     }
     if ((point_OR_x is Map || point_OR_x == null) && y == null && z == null && w == null) {
-      return _blink.BlinkDOMPoint.constructorCallback_1(point_OR_x);
+      return _blink.BlinkDOMPoint.instance.constructorCallback_1_(point_OR_x);
     }
     if ((y is num || y == null) && (point_OR_x is num || point_OR_x == null) && z == null && w == null) {
-      return _blink.BlinkDOMPoint.constructorCallback_2(point_OR_x, y);
+      return _blink.BlinkDOMPoint.instance.constructorCallback_2_(point_OR_x, y);
     }
     if ((z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null) && w == null) {
-      return _blink.BlinkDOMPoint.constructorCallback_3(point_OR_x, y, z);
+      return _blink.BlinkDOMPoint.instance.constructorCallback_3_(point_OR_x, y, z);
     }
     if ((w is num || w == null) && (z is num || z == null) && (y is num || y == null) && (point_OR_x is num || point_OR_x == null)) {
-      return _blink.BlinkDOMPoint.constructorCallback_4(point_OR_x, y, z, w);
+      return _blink.BlinkDOMPoint.instance.constructorCallback_4_(point_OR_x, y, z, w);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -9934,42 +9934,42 @@
   @DomName('DOMPoint.w')
   @DocsEditable()
   @Experimental() // untriaged
-  num get w => _blink.BlinkDOMPoint.w_Getter(this);
+  num get w => _blink.BlinkDOMPoint.instance.w_Getter_(this);
 
   @DomName('DOMPoint.w')
   @DocsEditable()
   @Experimental() // untriaged
-  void set w(num value) => _blink.BlinkDOMPoint.w_Setter(this, value);
+  void set w(num value) => _blink.BlinkDOMPoint.instance.w_Setter_(this, value);
 
   @DomName('DOMPoint.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMPoint.x_Getter(this);
+  num get x => _blink.BlinkDOMPoint.instance.x_Getter_(this);
 
   @DomName('DOMPoint.x')
   @DocsEditable()
   @Experimental() // untriaged
-  void set x(num value) => _blink.BlinkDOMPoint.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkDOMPoint.instance.x_Setter_(this, value);
 
   @DomName('DOMPoint.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMPoint.y_Getter(this);
+  num get y => _blink.BlinkDOMPoint.instance.y_Getter_(this);
 
   @DomName('DOMPoint.y')
   @DocsEditable()
   @Experimental() // untriaged
-  void set y(num value) => _blink.BlinkDOMPoint.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkDOMPoint.instance.y_Setter_(this, value);
 
   @DomName('DOMPoint.z')
   @DocsEditable()
   @Experimental() // untriaged
-  num get z => _blink.BlinkDOMPoint.z_Getter(this);
+  num get z => _blink.BlinkDOMPoint.instance.z_Getter_(this);
 
   @DomName('DOMPoint.z')
   @DocsEditable()
   @Experimental() // untriaged
-  void set z(num value) => _blink.BlinkDOMPoint.z_Setter(this, value);
+  void set z(num value) => _blink.BlinkDOMPoint.instance.z_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -9989,28 +9989,28 @@
   @DomName('DOMPointReadOnly.DOMPointReadOnly')
   @DocsEditable()
   factory DomPointReadOnly(num x, num y, num z, num w) {
-    return _blink.BlinkDOMPointReadOnly.constructorCallback_4(x, y, z, w);
+    return _blink.BlinkDOMPointReadOnly.instance.constructorCallback_4_(x, y, z, w);
   }
 
   @DomName('DOMPointReadOnly.w')
   @DocsEditable()
   @Experimental() // untriaged
-  double get w => _blink.BlinkDOMPointReadOnly.w_Getter(this);
+  double get w => _blink.BlinkDOMPointReadOnly.instance.w_Getter_(this);
 
   @DomName('DOMPointReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  double get x => _blink.BlinkDOMPointReadOnly.x_Getter(this);
+  double get x => _blink.BlinkDOMPointReadOnly.instance.x_Getter_(this);
 
   @DomName('DOMPointReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  double get y => _blink.BlinkDOMPointReadOnly.y_Getter(this);
+  double get y => _blink.BlinkDOMPointReadOnly.instance.y_Getter_(this);
 
   @DomName('DOMPointReadOnly.z')
   @DocsEditable()
   @Experimental() // untriaged
-  double get z => _blink.BlinkDOMPointReadOnly.z_Getter(this);
+  double get z => _blink.BlinkDOMPointReadOnly.instance.z_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -10118,48 +10118,48 @@
   @DomName('DOMRectReadOnly.DOMRectReadOnly')
   @DocsEditable()
   factory DomRectReadOnly(num x, num y, num width, num height) {
-    return _blink.BlinkDOMRectReadOnly.constructorCallback_4(x, y, width, height);
+    return _blink.BlinkDOMRectReadOnly.instance.constructorCallback_4_(x, y, width, height);
   }
 
   @DomName('DOMRectReadOnly.bottom')
   @DocsEditable()
   @Experimental() // untriaged
-  double get bottom => _blink.BlinkDOMRectReadOnly.bottom_Getter(this);
+  double get bottom => _blink.BlinkDOMRectReadOnly.instance.bottom_Getter_(this);
 
   @DomName('DOMRectReadOnly.height')
   @DocsEditable()
   @Experimental() // untriaged
-  double get height => _blink.BlinkDOMRectReadOnly.height_Getter(this);
+  double get height => _blink.BlinkDOMRectReadOnly.instance.height_Getter_(this);
 
   @DomName('DOMRectReadOnly.left')
   @DocsEditable()
   @Experimental() // untriaged
-  double get left => _blink.BlinkDOMRectReadOnly.left_Getter(this);
+  double get left => _blink.BlinkDOMRectReadOnly.instance.left_Getter_(this);
 
   @DomName('DOMRectReadOnly.right')
   @DocsEditable()
   @Experimental() // untriaged
-  double get right => _blink.BlinkDOMRectReadOnly.right_Getter(this);
+  double get right => _blink.BlinkDOMRectReadOnly.instance.right_Getter_(this);
 
   @DomName('DOMRectReadOnly.top')
   @DocsEditable()
   @Experimental() // untriaged
-  double get top => _blink.BlinkDOMRectReadOnly.top_Getter(this);
+  double get top => _blink.BlinkDOMRectReadOnly.instance.top_Getter_(this);
 
   @DomName('DOMRectReadOnly.width')
   @DocsEditable()
   @Experimental() // untriaged
-  double get width => _blink.BlinkDOMRectReadOnly.width_Getter(this);
+  double get width => _blink.BlinkDOMRectReadOnly.instance.width_Getter_(this);
 
   @DomName('DOMRectReadOnly.x')
   @DocsEditable()
   @Experimental() // untriaged
-  double get x => _blink.BlinkDOMRectReadOnly.x_Getter(this);
+  double get x => _blink.BlinkDOMRectReadOnly.instance.x_Getter_(this);
 
   @DomName('DOMRectReadOnly.y')
   @DocsEditable()
   @Experimental() // untriaged
-  double get y => _blink.BlinkDOMRectReadOnly.y_Getter(this);
+  double get y => _blink.BlinkDOMRectReadOnly.instance.y_Getter_(this);
 }
 
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10177,15 +10177,15 @@
 
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
-  String get value => _blink.BlinkDOMSettableTokenList.value_Getter(this);
+  String get value => _blink.BlinkDOMSettableTokenList.instance.value_Getter_(this);
 
   @DomName('DOMSettableTokenList.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkDOMSettableTokenList.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkDOMSettableTokenList.instance.value_Setter_(this, value);
 
   @DomName('DOMSettableTokenList.__getter__')
   @DocsEditable()
-  String __getter__(int index) => _blink.BlinkDOMSettableTokenList.$__getter___Callback_1(this, index);
+  String __getter__(int index) => _blink.BlinkDOMSettableTokenList.instance.$__getter___Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10203,15 +10203,15 @@
 
   @DomName('DOMStringList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDOMStringList.length_Getter(this);
+  int get length => _blink.BlinkDOMStringList.instance.length_Getter_(this);
 
   String operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkDOMStringList.item_Callback_1(this, index);
+    return _blink.BlinkDOMStringList.instance.item_Callback_1_(this, index);
   }
 
-  String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.item_Callback_1(this, index);
+  String _nativeIndexedGetter(int index) => _blink.BlinkDOMStringList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, String value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -10253,11 +10253,11 @@
 
   @DomName('DOMStringList.contains')
   @DocsEditable()
-  bool contains(String string) => _blink.BlinkDOMStringList.contains_Callback_1(this, string);
+  bool contains(String string) => _blink.BlinkDOMStringList.instance.contains_Callback_1_(this, string);
 
   @DomName('DOMStringList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkDOMStringList.item_Callback_1(this, index);
+  String item(int index) => _blink.BlinkDOMStringList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -10275,31 +10275,31 @@
 
   bool __delete__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
-      return _blink.BlinkDOMStringMap.$__delete___Callback_1(this, index_OR_name);
+      return _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkDOMStringMap.$__delete___Callback_1(this, index_OR_name);
+      return _blink.BlinkDOMStringMap.instance.$__delete___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   String __getter__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
-      return _blink.BlinkDOMStringMap.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkDOMStringMap.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkDOMStringMap.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkDOMStringMap.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   void __setter__(index_OR_name, String value) {
     if ((value is String || value == null) && (index_OR_name is int || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.$__setter___Callback_2(this, index_OR_name, value);
+      _blink.BlinkDOMStringMap.instance.$__setter___Callback_2_(this, index_OR_name, value);
       return;
     }
     if ((value is String || value == null) && (index_OR_name is String || index_OR_name == null)) {
-      _blink.BlinkDOMStringMap.$__setter___Callback_2(this, index_OR_name, value);
+      _blink.BlinkDOMStringMap.instance.$__setter___Callback_2_(this, index_OR_name, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -10321,31 +10321,31 @@
 
   @DomName('DOMTokenList.length')
   @DocsEditable()
-  int get length => _blink.BlinkDOMTokenList.length_Getter(this);
+  int get length => _blink.BlinkDOMTokenList.instance.length_Getter_(this);
 
   @DomName('DOMTokenList.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(String tokens) => _blink.BlinkDOMTokenList.add_Callback_1(this, tokens);
+  void add(String tokens) => _blink.BlinkDOMTokenList.instance.add_Callback_1_(this, tokens);
 
   @DomName('DOMTokenList.contains')
   @DocsEditable()
-  bool contains(String token) => _blink.BlinkDOMTokenList.contains_Callback_1(this, token);
+  bool contains(String token) => _blink.BlinkDOMTokenList.instance.contains_Callback_1_(this, token);
 
   @DomName('DOMTokenList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkDOMTokenList.item_Callback_1(this, index);
+  String item(int index) => _blink.BlinkDOMTokenList.instance.item_Callback_1_(this, index);
 
   @DomName('DOMTokenList.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  void remove(String tokens) => _blink.BlinkDOMTokenList.remove_Callback_1(this, tokens);
+  void remove(String tokens) => _blink.BlinkDOMTokenList.instance.remove_Callback_1_(this, tokens);
 
   bool toggle(String token, [bool force]) {
     if (force != null) {
-      return _blink.BlinkDOMTokenList.toggle_Callback_2(this, token, force);
+      return _blink.BlinkDOMTokenList.instance.toggle_Callback_2_(this, token, force);
     }
-    return _blink.BlinkDOMTokenList.toggle_Callback_1(this, token);
+    return _blink.BlinkDOMTokenList.instance.toggle_Callback_1_(this, token);
   }
 
 }
@@ -13157,154 +13157,154 @@
 
   @DomName('Element.attributes')
   @DocsEditable()
-  _NamedNodeMap get _attributes => _blink.BlinkElement.attributes_Getter(this);
+  _NamedNodeMap get _attributes => _blink.BlinkElement.instance.attributes_Getter_(this);
 
   @DomName('Element.className')
   @DocsEditable()
-  String get className => _blink.BlinkElement.className_Getter(this);
+  String get className => _blink.BlinkElement.instance.className_Getter_(this);
 
   @DomName('Element.className')
   @DocsEditable()
-  void set className(String value) => _blink.BlinkElement.className_Setter(this, value);
+  void set className(String value) => _blink.BlinkElement.instance.className_Setter_(this, value);
 
   @DomName('Element.clientHeight')
   @DocsEditable()
-  int get _clientHeight => _blink.BlinkElement.clientHeight_Getter(this);
+  int get _clientHeight => _blink.BlinkElement.instance.clientHeight_Getter_(this);
 
   @DomName('Element.clientLeft')
   @DocsEditable()
-  int get _clientLeft => _blink.BlinkElement.clientLeft_Getter(this);
+  int get _clientLeft => _blink.BlinkElement.instance.clientLeft_Getter_(this);
 
   @DomName('Element.clientTop')
   @DocsEditable()
-  int get _clientTop => _blink.BlinkElement.clientTop_Getter(this);
+  int get _clientTop => _blink.BlinkElement.instance.clientTop_Getter_(this);
 
   @DomName('Element.clientWidth')
   @DocsEditable()
-  int get _clientWidth => _blink.BlinkElement.clientWidth_Getter(this);
+  int get _clientWidth => _blink.BlinkElement.instance.clientWidth_Getter_(this);
 
   @DomName('Element.id')
   @DocsEditable()
-  String get id => _blink.BlinkElement.id_Getter(this);
+  String get id => _blink.BlinkElement.instance.id_Getter_(this);
 
   @DomName('Element.id')
   @DocsEditable()
-  void set id(String value) => _blink.BlinkElement.id_Setter(this, value);
+  void set id(String value) => _blink.BlinkElement.instance.id_Setter_(this, value);
 
   @DomName('Element.innerHTML')
   @DocsEditable()
-  String get _innerHtml => _blink.BlinkElement.innerHTML_Getter(this);
+  String get _innerHtml => _blink.BlinkElement.instance.innerHTML_Getter_(this);
 
   @DomName('Element.innerHTML')
   @DocsEditable()
-  void set _innerHtml(String value) => _blink.BlinkElement.innerHTML_Setter(this, value);
+  void set _innerHtml(String value) => _blink.BlinkElement.instance.innerHTML_Setter_(this, value);
 
   @DomName('Element.localName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _localName => _blink.BlinkElement.localName_Getter(this);
+  String get _localName => _blink.BlinkElement.instance.localName_Getter_(this);
 
   @DomName('Element.namespaceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _namespaceUri => _blink.BlinkElement.namespaceURI_Getter(this);
+  String get _namespaceUri => _blink.BlinkElement.instance.namespaceURI_Getter_(this);
 
   @DomName('Element.offsetHeight')
   @DocsEditable()
-  int get _offsetHeight => _blink.BlinkElement.offsetHeight_Getter(this);
+  int get _offsetHeight => _blink.BlinkElement.instance.offsetHeight_Getter_(this);
 
   @DomName('Element.offsetLeft')
   @DocsEditable()
-  int get _offsetLeft => _blink.BlinkElement.offsetLeft_Getter(this);
+  int get _offsetLeft => _blink.BlinkElement.instance.offsetLeft_Getter_(this);
 
   @DomName('Element.offsetParent')
   @DocsEditable()
-  Element get offsetParent => _blink.BlinkElement.offsetParent_Getter(this);
+  Element get offsetParent => _blink.BlinkElement.instance.offsetParent_Getter_(this);
 
   @DomName('Element.offsetTop')
   @DocsEditable()
-  int get _offsetTop => _blink.BlinkElement.offsetTop_Getter(this);
+  int get _offsetTop => _blink.BlinkElement.instance.offsetTop_Getter_(this);
 
   @DomName('Element.offsetWidth')
   @DocsEditable()
-  int get _offsetWidth => _blink.BlinkElement.offsetWidth_Getter(this);
+  int get _offsetWidth => _blink.BlinkElement.instance.offsetWidth_Getter_(this);
 
   @DomName('Element.outerHTML')
   @DocsEditable()
-  String get outerHtml => _blink.BlinkElement.outerHTML_Getter(this);
+  String get outerHtml => _blink.BlinkElement.instance.outerHTML_Getter_(this);
 
   @DomName('Element.scrollHeight')
   @DocsEditable()
-  int get _scrollHeight => _blink.BlinkElement.scrollHeight_Getter(this);
+  int get _scrollHeight => _blink.BlinkElement.instance.scrollHeight_Getter_(this);
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  int get _scrollLeft => _blink.BlinkElement.scrollLeft_Getter(this);
+  int get _scrollLeft => _blink.BlinkElement.instance.scrollLeft_Getter_(this);
 
   @DomName('Element.scrollLeft')
   @DocsEditable()
-  void set _scrollLeft(int value) => _blink.BlinkElement.scrollLeft_Setter(this, value);
+  void set _scrollLeft(int value) => _blink.BlinkElement.instance.scrollLeft_Setter_(this, value);
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  int get _scrollTop => _blink.BlinkElement.scrollTop_Getter(this);
+  int get _scrollTop => _blink.BlinkElement.instance.scrollTop_Getter_(this);
 
   @DomName('Element.scrollTop')
   @DocsEditable()
-  void set _scrollTop(int value) => _blink.BlinkElement.scrollTop_Setter(this, value);
+  void set _scrollTop(int value) => _blink.BlinkElement.instance.scrollTop_Setter_(this, value);
 
   @DomName('Element.scrollWidth')
   @DocsEditable()
-  int get _scrollWidth => _blink.BlinkElement.scrollWidth_Getter(this);
+  int get _scrollWidth => _blink.BlinkElement.instance.scrollWidth_Getter_(this);
 
   @DomName('Element.shadowRoot')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-aware-create-shadow-root
   @Experimental()
-  ShadowRoot get shadowRoot => _blink.BlinkElement.shadowRoot_Getter(this);
+  ShadowRoot get shadowRoot => _blink.BlinkElement.instance.shadowRoot_Getter_(this);
 
   @DomName('Element.style')
   @DocsEditable()
-  CssStyleDeclaration get style => _blink.BlinkElement.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkElement.instance.style_Getter_(this);
 
   @DomName('Element.tagName')
   @DocsEditable()
-  String get tagName => _blink.BlinkElement.tagName_Getter(this);
+  String get tagName => _blink.BlinkElement.instance.tagName_Getter_(this);
 
   @DomName('Element.animate')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimationPlayer animate(Object effect, [Object timing]) => _blink.BlinkElement.animate_Callback_2(this, effect, timing);
+  AnimationPlayer animate(Object effect, [Object timing]) => _blink.BlinkElement.instance.animate_Callback_2_(this, effect, timing);
 
   @DomName('Element.blur')
   @DocsEditable()
-  void blur() => _blink.BlinkElement.blur_Callback(this);
+  void blur() => _blink.BlinkElement.instance.blur_Callback_0_(this);
 
   @DomName('Element.createShadowRoot')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME, '25')
   @Experimental()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#api-shadow-aware-create-shadow-root
-  ShadowRoot createShadowRoot() => _blink.BlinkElement.createShadowRoot_Callback(this);
+  ShadowRoot createShadowRoot() => _blink.BlinkElement.instance.createShadowRoot_Callback_0_(this);
 
   @DomName('Element.focus')
   @DocsEditable()
-  void focus() => _blink.BlinkElement.focus_Callback(this);
+  void focus() => _blink.BlinkElement.instance.focus_Callback_0_(this);
 
   @DomName('Element.getAnimationPlayers')
   @DocsEditable()
   @Experimental() // untriaged
-  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkElement.getAnimationPlayers_Callback(this);
+  List<AnimationPlayer> getAnimationPlayers() => _blink.BlinkElement.instance.getAnimationPlayers_Callback_0_(this);
 
   @DomName('Element.getAttribute')
   @DocsEditable()
   @Experimental() // untriaged
-  String getAttribute(String name) => _blink.BlinkElement.getAttribute_Callback_1(this, name);
+  String getAttribute(String name) => _blink.BlinkElement.instance.getAttribute_Callback_1_(this, name);
 
   @DomName('Element.getAttributeNS')
   @DocsEditable()
   @Experimental() // untriaged
-  String getAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.getAttributeNS_Callback_2(this, namespaceURI, localName);
+  String getAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.instance.getAttributeNS_Callback_2_(this, namespaceURI, localName);
 
   /**
    * Returns the smallest bounding rectangle that encompasses this element's
@@ -13321,7 +13321,7 @@
    */
   @DomName('Element.getBoundingClientRect')
   @DocsEditable()
-  Rectangle getBoundingClientRect() => _blink.BlinkElement.getBoundingClientRect_Callback(this);
+  Rectangle getBoundingClientRect() => _blink.BlinkElement.instance.getBoundingClientRect_Callback_0_(this);
 
   /**
    * Returns a list of bounding rectangles for each box associated with this
@@ -13338,7 +13338,7 @@
    */
   @DomName('Element.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => _blink.BlinkElement.getClientRects_Callback(this);
+  List<Rectangle> getClientRects() => _blink.BlinkElement.instance.getClientRects_Callback_0_(this);
 
   /**
    * Returns a list of shadow DOM insertion points to which this element is
@@ -13353,7 +13353,7 @@
   @DomName('Element.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => _blink.BlinkElement.getDestinationInsertionPoints_Callback(this);
+  List<Node> getDestinationInsertionPoints() => _blink.BlinkElement.instance.getDestinationInsertionPoints_Callback_0_(this);
 
   /**
    * Returns a list of nodes with the given class name inside this element.
@@ -13368,111 +13368,111 @@
    */
   @DomName('Element.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String classNames) => _blink.BlinkElement.getElementsByClassName_Callback_1(this, classNames);
+  List<Node> getElementsByClassName(String classNames) => _blink.BlinkElement.instance.getElementsByClassName_Callback_1_(this, classNames);
 
   @DomName('Element.getElementsByTagName')
   @DocsEditable()
-  List<Node> _getElementsByTagName(String name) => _blink.BlinkElement.getElementsByTagName_Callback_1(this, name);
+  List<Node> _getElementsByTagName(String name) => _blink.BlinkElement.instance.getElementsByTagName_Callback_1_(this, name);
 
   @DomName('Element.hasAttribute')
   @DocsEditable()
-  bool _hasAttribute(String name) => _blink.BlinkElement.hasAttribute_Callback_1(this, name);
+  bool _hasAttribute(String name) => _blink.BlinkElement.instance.hasAttribute_Callback_1_(this, name);
 
   @DomName('Element.hasAttributeNS')
   @DocsEditable()
-  bool _hasAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.hasAttributeNS_Callback_2(this, namespaceURI, localName);
+  bool _hasAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.instance.hasAttributeNS_Callback_2_(this, namespaceURI, localName);
 
   @DomName('Element.insertAdjacentElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Element insertAdjacentElement(String where, Element element) => _blink.BlinkElement.insertAdjacentElement_Callback_2(this, where, element);
+  Element insertAdjacentElement(String where, Element element) => _blink.BlinkElement.instance.insertAdjacentElement_Callback_2_(this, where, element);
 
   @DomName('Element.insertAdjacentHTML')
   @DocsEditable()
   @Experimental() // untriaged
-  void insertAdjacentHtml(String where, String html) => _blink.BlinkElement.insertAdjacentHTML_Callback_2(this, where, html);
+  void insertAdjacentHtml(String where, String html) => _blink.BlinkElement.instance.insertAdjacentHTML_Callback_2_(this, where, html);
 
   @DomName('Element.insertAdjacentText')
   @DocsEditable()
   @Experimental() // untriaged
-  void insertAdjacentText(String where, String text) => _blink.BlinkElement.insertAdjacentText_Callback_2(this, where, text);
+  void insertAdjacentText(String where, String text) => _blink.BlinkElement.instance.insertAdjacentText_Callback_2_(this, where, text);
 
   @DomName('Element.matches')
   @DocsEditable()
   @Experimental() // untriaged
-  bool matches(String selectors) => _blink.BlinkElement.matches_Callback_1(this, selectors);
+  bool matches(String selectors) => _blink.BlinkElement.instance.matches_Callback_1_(this, selectors);
 
   @DomName('Element.removeAttribute')
   @DocsEditable()
-  void _removeAttribute(String name) => _blink.BlinkElement.removeAttribute_Callback_1(this, name);
+  void _removeAttribute(String name) => _blink.BlinkElement.instance.removeAttribute_Callback_1_(this, name);
 
   @DomName('Element.removeAttributeNS')
   @DocsEditable()
-  void _removeAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.removeAttributeNS_Callback_2(this, namespaceURI, localName);
+  void _removeAttributeNS(String namespaceURI, String localName) => _blink.BlinkElement.instance.removeAttributeNS_Callback_2_(this, namespaceURI, localName);
 
   @DomName('Element.requestFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  void requestFullscreen() => _blink.BlinkElement.requestFullscreen_Callback(this);
+  void requestFullscreen() => _blink.BlinkElement.instance.requestFullscreen_Callback_0_(this);
 
   @DomName('Element.requestPointerLock')
   @DocsEditable()
   @Experimental() // untriaged
-  void requestPointerLock() => _blink.BlinkElement.requestPointerLock_Callback(this);
+  void requestPointerLock() => _blink.BlinkElement.instance.requestPointerLock_Callback_0_(this);
 
   void _scrollIntoView([bool alignWithTop]) {
     if (alignWithTop != null) {
-      _blink.BlinkElement.scrollIntoView_Callback_1(this, alignWithTop);
+      _blink.BlinkElement.instance.scrollIntoView_Callback_1_(this, alignWithTop);
       return;
     }
-    _blink.BlinkElement.scrollIntoView_Callback(this);
+    _blink.BlinkElement.instance.scrollIntoView_Callback_0_(this);
     return;
   }
 
   void _scrollIntoViewIfNeeded([bool centerIfNeeded]) {
     if (centerIfNeeded != null) {
-      _blink.BlinkElement.scrollIntoViewIfNeeded_Callback_1(this, centerIfNeeded);
+      _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_1_(this, centerIfNeeded);
       return;
     }
-    _blink.BlinkElement.scrollIntoViewIfNeeded_Callback(this);
+    _blink.BlinkElement.instance.scrollIntoViewIfNeeded_Callback_0_(this);
     return;
   }
 
   @DomName('Element.setAttribute')
   @DocsEditable()
-  void setAttribute(String name, String value) => _blink.BlinkElement.setAttribute_Callback_2(this, name, value);
+  void setAttribute(String name, String value) => _blink.BlinkElement.instance.setAttribute_Callback_2_(this, name, value);
 
   @DomName('Element.setAttributeNS')
   @DocsEditable()
-  void setAttributeNS(String namespaceURI, String qualifiedName, String value) => _blink.BlinkElement.setAttributeNS_Callback_3(this, namespaceURI, qualifiedName, value);
+  void setAttributeNS(String namespaceURI, String qualifiedName, String value) => _blink.BlinkElement.instance.setAttributeNS_Callback_3_(this, namespaceURI, qualifiedName, value);
 
   @DomName('Element.nextElementSibling')
   @DocsEditable()
-  Element get nextElementSibling => _blink.BlinkElement.nextElementSibling_Getter(this);
+  Element get nextElementSibling => _blink.BlinkElement.instance.nextElementSibling_Getter_(this);
 
   @DomName('Element.previousElementSibling')
   @DocsEditable()
-  Element get previousElementSibling => _blink.BlinkElement.previousElementSibling_Getter(this);
+  Element get previousElementSibling => _blink.BlinkElement.instance.previousElementSibling_Getter_(this);
 
   @DomName('Element.remove')
   @DocsEditable()
-  void remove() => _blink.BlinkElement.remove_Callback(this);
+  void remove() => _blink.BlinkElement.instance.remove_Callback_0_(this);
 
   @DomName('Element.childElementCount')
   @DocsEditable()
-  int get _childElementCount => _blink.BlinkElement.childElementCount_Getter(this);
+  int get _childElementCount => _blink.BlinkElement.instance.childElementCount_Getter_(this);
 
   @DomName('Element.children')
   @DocsEditable()
-  List<Node> get _children => _blink.BlinkElement.children_Getter(this);
+  List<Node> get _children => _blink.BlinkElement.instance.children_Getter_(this);
 
   @DomName('Element.firstElementChild')
   @DocsEditable()
-  Element get _firstElementChild => _blink.BlinkElement.firstElementChild_Getter(this);
+  Element get _firstElementChild => _blink.BlinkElement.instance.firstElementChild_Getter_(this);
 
   @DomName('Element.lastElementChild')
   @DocsEditable()
-  Element get _lastElementChild => _blink.BlinkElement.lastElementChild_Getter(this);
+  Element get _lastElementChild => _blink.BlinkElement.instance.lastElementChild_Getter_(this);
 
   /**
    * Finds the first descendant element of this element that matches the
@@ -13492,11 +13492,11 @@
    */
   @DomName('Element.querySelector')
   @DocsEditable()
-  Element querySelector(String selectors) => _blink.BlinkElement.querySelector_Callback_1(this, selectors);
+  Element querySelector(String selectors) => _blink.BlinkElement.instance.querySelector_Callback_1_(this, selectors);
 
   @DomName('Element.querySelectorAll')
   @DocsEditable()
-  List<Node> _querySelectorAll(String selectors) => _blink.BlinkElement.querySelectorAll_Callback_1(this, selectors);
+  List<Node> _querySelectorAll(String selectors) => _blink.BlinkElement.instance.querySelectorAll_Callback_1_(this, selectors);
 
   /// Stream of `abort` events handled by this [Element].
   @DomName('Element.onabort')
@@ -14022,61 +14022,61 @@
 
   @DomName('HTMLEmbedElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLEmbedElement.height_Getter(this);
+  String get height => _blink.BlinkHTMLEmbedElement.instance.height_Getter_(this);
 
   @DomName('HTMLEmbedElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLEmbedElement.height_Setter(this, value);
+  void set height(String value) => _blink.BlinkHTMLEmbedElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLEmbedElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLEmbedElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLEmbedElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLEmbedElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLEmbedElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLEmbedElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLEmbedElement.instance.name_Getter_(this);
 
   @DomName('HTMLEmbedElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLEmbedElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLEmbedElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLEmbedElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLEmbedElement.instance.src_Getter_(this);
 
   @DomName('HTMLEmbedElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLEmbedElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLEmbedElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLEmbedElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLEmbedElement.instance.type_Getter_(this);
 
   @DomName('HTMLEmbedElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLEmbedElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLEmbedElement.instance.type_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLEmbedElement.width_Getter(this);
+  String get width => _blink.BlinkHTMLEmbedElement.instance.width_Getter_(this);
 
   @DomName('HTMLEmbedElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLEmbedElement.width_Setter(this, value);
+  void set width(String value) => _blink.BlinkHTMLEmbedElement.instance.width_Setter_(this, value);
 
   @DomName('HTMLEmbedElement.__getter__')
   @DocsEditable()
-  bool __getter__(index_OR_name) => _blink.BlinkHTMLEmbedElement.$__getter___Callback_1(this, index_OR_name);
+  bool __getter__(index_OR_name) => _blink.BlinkHTMLEmbedElement.instance.$__getter___Callback_1_(this, index_OR_name);
 
   @DomName('HTMLEmbedElement.__setter__')
   @DocsEditable()
-  void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLEmbedElement.$__setter___Callback_2(this, index_OR_name, value);
+  void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLEmbedElement.instance.$__setter___Callback_2_(this, index_OR_name, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14107,38 +14107,38 @@
 
   @DomName('Entry.filesystem')
   @DocsEditable()
-  FileSystem get filesystem => _blink.BlinkEntry.filesystem_Getter(this);
+  FileSystem get filesystem => _blink.BlinkEntry.instance.filesystem_Getter_(this);
 
   @DomName('Entry.fullPath')
   @DocsEditable()
-  String get fullPath => _blink.BlinkEntry.fullPath_Getter(this);
+  String get fullPath => _blink.BlinkEntry.instance.fullPath_Getter_(this);
 
   @DomName('Entry.isDirectory')
   @DocsEditable()
-  bool get isDirectory => _blink.BlinkEntry.isDirectory_Getter(this);
+  bool get isDirectory => _blink.BlinkEntry.instance.isDirectory_Getter_(this);
 
   @DomName('Entry.isFile')
   @DocsEditable()
-  bool get isFile => _blink.BlinkEntry.isFile_Getter(this);
+  bool get isFile => _blink.BlinkEntry.instance.isFile_Getter_(this);
 
   @DomName('Entry.name')
   @DocsEditable()
-  String get name => _blink.BlinkEntry.name_Getter(this);
+  String get name => _blink.BlinkEntry.instance.name_Getter_(this);
 
   void _copyTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.copyTo_Callback_4(this, parent, name, successCallback, errorCallback);
+      _blink.BlinkEntry.instance.copyTo_Callback_4_(this, parent, name, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.copyTo_Callback_3(this, parent, name, successCallback);
+      _blink.BlinkEntry.instance.copyTo_Callback_3_(this, parent, name, successCallback);
       return;
     }
     if (name != null) {
-      _blink.BlinkEntry.copyTo_Callback_2(this, parent, name);
+      _blink.BlinkEntry.instance.copyTo_Callback_2_(this, parent, name);
       return;
     }
-    _blink.BlinkEntry.copyTo_Callback_1(this, parent);
+    _blink.BlinkEntry.instance.copyTo_Callback_1_(this, parent);
     return;
   }
 
@@ -14152,10 +14152,10 @@
 
   void _getMetadata(MetadataCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.getMetadata_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkEntry.instance.getMetadata_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkEntry.getMetadata_Callback_1(this, successCallback);
+    _blink.BlinkEntry.instance.getMetadata_Callback_1_(this, successCallback);
     return;
   }
 
@@ -14169,14 +14169,14 @@
 
   void _getParent([_EntryCallback successCallback, _ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.getParent_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkEntry.instance.getParent_Callback_2_(this, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.getParent_Callback_1(this, successCallback);
+      _blink.BlinkEntry.instance.getParent_Callback_1_(this, successCallback);
       return;
     }
-    _blink.BlinkEntry.getParent_Callback(this);
+    _blink.BlinkEntry.instance.getParent_Callback_0_(this);
     return;
   }
 
@@ -14190,18 +14190,18 @@
 
   void _moveTo(DirectoryEntry parent, {String name, _EntryCallback successCallback, _ErrorCallback errorCallback}) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.moveTo_Callback_4(this, parent, name, successCallback, errorCallback);
+      _blink.BlinkEntry.instance.moveTo_Callback_4_(this, parent, name, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkEntry.moveTo_Callback_3(this, parent, name, successCallback);
+      _blink.BlinkEntry.instance.moveTo_Callback_3_(this, parent, name, successCallback);
       return;
     }
     if (name != null) {
-      _blink.BlinkEntry.moveTo_Callback_2(this, parent, name);
+      _blink.BlinkEntry.instance.moveTo_Callback_2_(this, parent, name);
       return;
     }
-    _blink.BlinkEntry.moveTo_Callback_1(this, parent);
+    _blink.BlinkEntry.instance.moveTo_Callback_1_(this, parent);
     return;
   }
 
@@ -14215,10 +14215,10 @@
 
   void _remove(VoidCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkEntry.remove_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkEntry.instance.remove_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkEntry.remove_Callback_1(this, successCallback);
+    _blink.BlinkEntry.instance.remove_Callback_1_(this, successCallback);
     return;
   }
 
@@ -14232,7 +14232,7 @@
 
   @DomName('Entry.toURL')
   @DocsEditable()
-  String toUrl() => _blink.BlinkEntry.toURL_Callback(this);
+  String toUrl() => _blink.BlinkEntry.instance.toURL_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14274,24 +14274,24 @@
   @DomName('ErrorEvent.colno')
   @DocsEditable()
   @Experimental() // untriaged
-  int get colno => _blink.BlinkErrorEvent.colno_Getter(this);
+  int get colno => _blink.BlinkErrorEvent.instance.colno_Getter_(this);
 
   @DomName('ErrorEvent.error')
   @DocsEditable()
   @Experimental() // untriaged
-  Object get error => _blink.BlinkErrorEvent.error_Getter(this);
+  Object get error => _blink.BlinkErrorEvent.instance.error_Getter_(this);
 
   @DomName('ErrorEvent.filename')
   @DocsEditable()
-  String get filename => _blink.BlinkErrorEvent.filename_Getter(this);
+  String get filename => _blink.BlinkErrorEvent.instance.filename_Getter_(this);
 
   @DomName('ErrorEvent.lineno')
   @DocsEditable()
-  int get lineno => _blink.BlinkErrorEvent.lineno_Getter(this);
+  int get lineno => _blink.BlinkErrorEvent.instance.lineno_Getter_(this);
 
   @DomName('ErrorEvent.message')
   @DocsEditable()
-  String get message => _blink.BlinkErrorEvent.message_Getter(this);
+  String get message => _blink.BlinkErrorEvent.instance.message_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14394,11 +14394,11 @@
 
   @DomName('Event.bubbles')
   @DocsEditable()
-  bool get bubbles => _blink.BlinkEvent.bubbles_Getter(this);
+  bool get bubbles => _blink.BlinkEvent.instance.bubbles_Getter_(this);
 
   @DomName('Event.cancelable')
   @DocsEditable()
-  bool get cancelable => _blink.BlinkEvent.cancelable_Getter(this);
+  bool get cancelable => _blink.BlinkEvent.instance.cancelable_Getter_(this);
 
   /**
    * Access to the system's clipboard data during copy, cut, and paste events.
@@ -14416,19 +14416,19 @@
   @Experimental()
   // Part of copy/paste
   @Experimental() // nonstandard
-  DataTransfer get clipboardData => _blink.BlinkEvent.clipboardData_Getter(this);
+  DataTransfer get clipboardData => _blink.BlinkEvent.instance.clipboardData_Getter_(this);
 
   @DomName('Event.currentTarget')
   @DocsEditable()
-  EventTarget get currentTarget => _blink.BlinkEvent.currentTarget_Getter(this);
+  EventTarget get currentTarget => _blink.BlinkEvent.instance.currentTarget_Getter_(this);
 
   @DomName('Event.defaultPrevented')
   @DocsEditable()
-  bool get defaultPrevented => _blink.BlinkEvent.defaultPrevented_Getter(this);
+  bool get defaultPrevented => _blink.BlinkEvent.instance.defaultPrevented_Getter_(this);
 
   @DomName('Event.eventPhase')
   @DocsEditable()
-  int get eventPhase => _blink.BlinkEvent.eventPhase_Getter(this);
+  int get eventPhase => _blink.BlinkEvent.instance.eventPhase_Getter_(this);
 
   /**
    * This event's path, taking into account shadow DOM.
@@ -14443,35 +14443,35 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#extensions-to-event
   @Experimental()
-  List<Node> get path => _blink.BlinkEvent.path_Getter(this);
+  List<Node> get path => _blink.BlinkEvent.instance.path_Getter_(this);
 
   @DomName('Event.target')
   @DocsEditable()
-  EventTarget get target => _blink.BlinkEvent.target_Getter(this);
+  EventTarget get target => _blink.BlinkEvent.instance.target_Getter_(this);
 
   @DomName('Event.timeStamp')
   @DocsEditable()
-  int get timeStamp => _blink.BlinkEvent.timeStamp_Getter(this);
+  int get timeStamp => _blink.BlinkEvent.instance.timeStamp_Getter_(this);
 
   @DomName('Event.type')
   @DocsEditable()
-  String get type => _blink.BlinkEvent.type_Getter(this);
+  String get type => _blink.BlinkEvent.instance.type_Getter_(this);
 
   @DomName('Event.initEvent')
   @DocsEditable()
-  void _initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) => _blink.BlinkEvent.initEvent_Callback_3(this, eventTypeArg, canBubbleArg, cancelableArg);
+  void _initEvent(String eventTypeArg, bool canBubbleArg, bool cancelableArg) => _blink.BlinkEvent.instance.initEvent_Callback_3_(this, eventTypeArg, canBubbleArg, cancelableArg);
 
   @DomName('Event.preventDefault')
   @DocsEditable()
-  void preventDefault() => _blink.BlinkEvent.preventDefault_Callback(this);
+  void preventDefault() => _blink.BlinkEvent.instance.preventDefault_Callback_0_(this);
 
   @DomName('Event.stopImmediatePropagation')
   @DocsEditable()
-  void stopImmediatePropagation() => _blink.BlinkEvent.stopImmediatePropagation_Callback(this);
+  void stopImmediatePropagation() => _blink.BlinkEvent.instance.stopImmediatePropagation_Callback_0_(this);
 
   @DomName('Event.stopPropagation')
   @DocsEditable()
-  void stopPropagation() => _blink.BlinkEvent.stopPropagation_Callback(this);
+  void stopPropagation() => _blink.BlinkEvent.instance.stopPropagation_Callback_0_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -14526,9 +14526,9 @@
   @DocsEditable()
   static EventSource _factoryEventSource(String url, [Map eventSourceInit]) {
     if (eventSourceInit != null) {
-      return _blink.BlinkEventSource.constructorCallback_2(url, eventSourceInit);
+      return _blink.BlinkEventSource.instance.constructorCallback_2_(url, eventSourceInit);
     }
-    return _blink.BlinkEventSource.constructorCallback_1(url);
+    return _blink.BlinkEventSource.instance.constructorCallback_1_(url);
   }
 
   @DomName('EventSource.CLOSED')
@@ -14545,19 +14545,19 @@
 
   @DomName('EventSource.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkEventSource.readyState_Getter(this);
+  int get readyState => _blink.BlinkEventSource.instance.readyState_Getter_(this);
 
   @DomName('EventSource.url')
   @DocsEditable()
-  String get url => _blink.BlinkEventSource.url_Getter(this);
+  String get url => _blink.BlinkEventSource.instance.url_Getter_(this);
 
   @DomName('EventSource.withCredentials')
   @DocsEditable()
-  bool get withCredentials => _blink.BlinkEventSource.withCredentials_Getter(this);
+  bool get withCredentials => _blink.BlinkEventSource.instance.withCredentials_Getter_(this);
 
   @DomName('EventSource.close')
   @DocsEditable()
-  void close() => _blink.BlinkEventSource.close_Callback(this);
+  void close() => _blink.BlinkEventSource.instance.close_Callback_0_(this);
 
   /// Stream of `error` events handled by this [EventSource].
   @DomName('EventSource.onerror')
@@ -14701,39 +14701,39 @@
 
   void _addEventListener([String type, EventListener listener, bool useCapture]) {
     if (useCapture != null) {
-      _blink.BlinkEventTarget.addEventListener_Callback_3(this, type, listener, useCapture);
+      _blink.BlinkEventTarget.instance.addEventListener_Callback_3_(this, type, listener, useCapture);
       return;
     }
     if (listener != null) {
-      _blink.BlinkEventTarget.addEventListener_Callback_2(this, type, listener);
+      _blink.BlinkEventTarget.instance.addEventListener_Callback_2_(this, type, listener);
       return;
     }
     if (type != null) {
-      _blink.BlinkEventTarget.addEventListener_Callback_1(this, type);
+      _blink.BlinkEventTarget.instance.addEventListener_Callback_1_(this, type);
       return;
     }
-    _blink.BlinkEventTarget.addEventListener_Callback(this);
+    _blink.BlinkEventTarget.instance.addEventListener_Callback_0_(this);
     return;
   }
 
   @DomName('EventTarget.dispatchEvent')
   @DocsEditable()
-  bool dispatchEvent(Event event) => _blink.BlinkEventTarget.dispatchEvent_Callback_1(this, event);
+  bool dispatchEvent(Event event) => _blink.BlinkEventTarget.instance.dispatchEvent_Callback_1_(this, event);
 
   void _removeEventListener([String type, EventListener listener, bool useCapture]) {
     if (useCapture != null) {
-      _blink.BlinkEventTarget.removeEventListener_Callback_3(this, type, listener, useCapture);
+      _blink.BlinkEventTarget.instance.removeEventListener_Callback_3_(this, type, listener, useCapture);
       return;
     }
     if (listener != null) {
-      _blink.BlinkEventTarget.removeEventListener_Callback_2(this, type, listener);
+      _blink.BlinkEventTarget.instance.removeEventListener_Callback_2_(this, type, listener);
       return;
     }
     if (type != null) {
-      _blink.BlinkEventTarget.removeEventListener_Callback_1(this, type);
+      _blink.BlinkEventTarget.instance.removeEventListener_Callback_1_(this, type);
       return;
     }
-    _blink.BlinkEventTarget.removeEventListener_Callback(this);
+    _blink.BlinkEventTarget.instance.removeEventListener_Callback_0_(this);
     return;
   }
 
@@ -14755,13 +14755,13 @@
   @DomName('FederatedCredential.FederatedCredential')
   @DocsEditable()
   factory FederatedCredential(String id, String name, String avatarURL, String federation) {
-    return _blink.BlinkFederatedCredential.constructorCallback_4(id, name, avatarURL, federation);
+    return _blink.BlinkFederatedCredential.instance.constructorCallback_4_(id, name, avatarURL, federation);
   }
 
   @DomName('FederatedCredential.federation')
   @DocsEditable()
   @Experimental() // untriaged
-  String get federation => _blink.BlinkFederatedCredential.federation_Getter(this);
+  String get federation => _blink.BlinkFederatedCredential.instance.federation_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14781,22 +14781,22 @@
   @DomName('FetchBodyStream.asArrayBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  Future asArrayBuffer() => _blink.BlinkFetchBodyStream.asArrayBuffer_Callback(this);
+  Future asArrayBuffer() => _blink.BlinkFetchBodyStream.instance.asArrayBuffer_Callback_0_(this);
 
   @DomName('FetchBodyStream.asBlob')
   @DocsEditable()
   @Experimental() // untriaged
-  Future asBlob() => _blink.BlinkFetchBodyStream.asBlob_Callback(this);
+  Future asBlob() => _blink.BlinkFetchBodyStream.instance.asBlob_Callback_0_(this);
 
   @DomName('FetchBodyStream.asJSON')
   @DocsEditable()
   @Experimental() // untriaged
-  Future asJson() => _blink.BlinkFetchBodyStream.asJSON_Callback(this);
+  Future asJson() => _blink.BlinkFetchBodyStream.instance.asJSON_Callback_0_(this);
 
   @DomName('FetchBodyStream.asText')
   @DocsEditable()
   @Experimental() // untriaged
-  Future asText() => _blink.BlinkFetchBodyStream.asText_Callback(this);
+  Future asText() => _blink.BlinkFetchBodyStream.instance.asText_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14816,17 +14816,17 @@
   @DomName('FetchEvent.isReload')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get isReload => _blink.BlinkFetchEvent.isReload_Getter(this);
+  bool get isReload => _blink.BlinkFetchEvent.instance.isReload_Getter_(this);
 
   @DomName('FetchEvent.request')
   @DocsEditable()
   @Experimental() // untriaged
-  _Request get request => _blink.BlinkFetchEvent.request_Getter(this);
+  _Request get request => _blink.BlinkFetchEvent.instance.request_Getter_(this);
 
   @DomName('FetchEvent.respondWith')
   @DocsEditable()
   @Experimental() // untriaged
-  void respondWith(Object value) => _blink.BlinkFetchEvent.respondWith_Callback_1(this, value);
+  void respondWith(Object value) => _blink.BlinkFetchEvent.instance.respondWith_Callback_1_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14855,51 +14855,51 @@
 
   @DomName('HTMLFieldSetElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLFieldSetElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLFieldSetElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLFieldSetElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLFieldSetElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLFieldSetElement.elements')
   @DocsEditable()
-  List<Node> get elements => _blink.BlinkHTMLFieldSetElement.elements_Getter(this);
+  List<Node> get elements => _blink.BlinkHTMLFieldSetElement.instance.elements_Getter_(this);
 
   @DomName('HTMLFieldSetElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLFieldSetElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLFieldSetElement.instance.form_Getter_(this);
 
   @DomName('HTMLFieldSetElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLFieldSetElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLFieldSetElement.instance.name_Getter_(this);
 
   @DomName('HTMLFieldSetElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLFieldSetElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLFieldSetElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLFieldSetElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLFieldSetElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLFieldSetElement.instance.type_Getter_(this);
 
   @DomName('HTMLFieldSetElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLFieldSetElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLFieldSetElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLFieldSetElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLFieldSetElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLFieldSetElement.instance.validity_Getter_(this);
 
   @DomName('HTMLFieldSetElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLFieldSetElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLFieldSetElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLFieldSetElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLFieldSetElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLFieldSetElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLFieldSetElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLFieldSetElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLFieldSetElement.instance.setCustomValidity_Callback_1_(this, error);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14918,15 +14918,15 @@
   @DomName('File.lastModified')
   @DocsEditable()
   @Experimental() // untriaged
-  int get lastModified => _blink.BlinkFile.lastModified_Getter(this);
+  int get lastModified => _blink.BlinkFile.instance.lastModified_Getter_(this);
 
   @DomName('File.lastModifiedDate')
   @DocsEditable()
-  DateTime get lastModifiedDate => _blink.BlinkFile.lastModifiedDate_Getter(this);
+  DateTime get lastModifiedDate => _blink.BlinkFile.instance.lastModifiedDate_Getter_(this);
 
   @DomName('File.name')
   @DocsEditable()
-  String get name => _blink.BlinkFile.name_Getter(this);
+  String get name => _blink.BlinkFile.instance.name_Getter_(this);
 
   @DomName('File.webkitRelativePath')
   @DocsEditable()
@@ -14934,7 +14934,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  String get relativePath => _blink.BlinkFile.webkitRelativePath_Getter(this);
+  String get relativePath => _blink.BlinkFile.instance.webkitRelativePath_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -14965,10 +14965,10 @@
 
   void _createWriter(_FileWriterCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.createWriter_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkFileEntry.instance.createWriter_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkFileEntry.createWriter_Callback_1(this, successCallback);
+    _blink.BlinkFileEntry.instance.createWriter_Callback_1_(this, successCallback);
     return;
   }
 
@@ -14982,10 +14982,10 @@
 
   void _file(_FileCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkFileEntry.file_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkFileEntry.instance.file_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkFileEntry.file_Callback_1(this, successCallback);
+    _blink.BlinkFileEntry.instance.file_Callback_1_(this, successCallback);
     return;
   }
 
@@ -15063,7 +15063,7 @@
 
   @DomName('FileError.code')
   @DocsEditable()
-  int get code => _blink.BlinkFileError.code_Getter(this);
+  int get code => _blink.BlinkFileError.instance.code_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15081,15 +15081,15 @@
 
   @DomName('FileList.length')
   @DocsEditable()
-  int get length => _blink.BlinkFileList.length_Getter(this);
+  int get length => _blink.BlinkFileList.instance.length_Getter_(this);
 
   File operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkFileList.item_Callback_1(this, index);
+    return _blink.BlinkFileList.instance.item_Callback_1_(this, index);
   }
 
-  File _nativeIndexedGetter(int index) => _blink.BlinkFileList.item_Callback_1(this, index);
+  File _nativeIndexedGetter(int index) => _blink.BlinkFileList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, File value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -15131,7 +15131,7 @@
 
   @DomName('FileList.item')
   @DocsEditable()
-  File item(int index) => _blink.BlinkFileList.item_Callback_1(this, index);
+  File item(int index) => _blink.BlinkFileList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
@@ -15219,7 +15219,7 @@
   @DomName('FileReader.FileReader')
   @DocsEditable()
   factory FileReader() {
-    return _blink.BlinkFileReader.constructorCallback();
+    return _blink.BlinkFileReader.instance.constructorCallback_0_();
   }
 
   @DomName('FileReader.DONE')
@@ -15236,34 +15236,34 @@
 
   @DomName('FileReader.error')
   @DocsEditable()
-  FileError get error => _blink.BlinkFileReader.error_Getter(this);
+  FileError get error => _blink.BlinkFileReader.instance.error_Getter_(this);
 
   @DomName('FileReader.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkFileReader.readyState_Getter(this);
+  int get readyState => _blink.BlinkFileReader.instance.readyState_Getter_(this);
 
   @DomName('FileReader.result')
   @DocsEditable()
-  Object get _result => _blink.BlinkFileReader.result_Getter(this);
+  Object get _result => _blink.BlinkFileReader.instance.result_Getter_(this);
 
   @DomName('FileReader.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkFileReader.abort_Callback(this);
+  void abort() => _blink.BlinkFileReader.instance.abort_Callback_0_(this);
 
   @DomName('FileReader.readAsArrayBuffer')
   @DocsEditable()
-  void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.readAsArrayBuffer_Callback_1(this, blob);
+  void readAsArrayBuffer(Blob blob) => _blink.BlinkFileReader.instance.readAsArrayBuffer_Callback_1_(this, blob);
 
   @DomName('FileReader.readAsDataURL')
   @DocsEditable()
-  void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.readAsDataURL_Callback_1(this, blob);
+  void readAsDataUrl(Blob blob) => _blink.BlinkFileReader.instance.readAsDataURL_Callback_1_(this, blob);
 
   void readAsText(Blob blob, [String encoding]) {
     if (encoding != null) {
-      _blink.BlinkFileReader.readAsText_Callback_2(this, blob, encoding);
+      _blink.BlinkFileReader.instance.readAsText_Callback_2_(this, blob, encoding);
       return;
     }
-    _blink.BlinkFileReader.readAsText_Callback_1(this, blob);
+    _blink.BlinkFileReader.instance.readAsText_Callback_1_(this, blob);
     return;
   }
 
@@ -15315,7 +15315,7 @@
   @DomName('Stream.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkStream.type_Getter(this);
+  String get type => _blink.BlinkStream.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15339,11 +15339,11 @@
 
   @DomName('DOMFileSystem.name')
   @DocsEditable()
-  String get name => _blink.BlinkDOMFileSystem.name_Getter(this);
+  String get name => _blink.BlinkDOMFileSystem.instance.name_Getter_(this);
 
   @DomName('DOMFileSystem.root')
   @DocsEditable()
-  DirectoryEntry get root => _blink.BlinkDOMFileSystem.root_Getter(this);
+  DirectoryEntry get root => _blink.BlinkDOMFileSystem.instance.root_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15446,35 +15446,35 @@
 
   @DomName('FileWriter.error')
   @DocsEditable()
-  FileError get error => _blink.BlinkFileWriter.error_Getter(this);
+  FileError get error => _blink.BlinkFileWriter.instance.error_Getter_(this);
 
   @DomName('FileWriter.length')
   @DocsEditable()
-  int get length => _blink.BlinkFileWriter.length_Getter(this);
+  int get length => _blink.BlinkFileWriter.instance.length_Getter_(this);
 
   @DomName('FileWriter.position')
   @DocsEditable()
-  int get position => _blink.BlinkFileWriter.position_Getter(this);
+  int get position => _blink.BlinkFileWriter.instance.position_Getter_(this);
 
   @DomName('FileWriter.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkFileWriter.readyState_Getter(this);
+  int get readyState => _blink.BlinkFileWriter.instance.readyState_Getter_(this);
 
   @DomName('FileWriter.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkFileWriter.abort_Callback(this);
+  void abort() => _blink.BlinkFileWriter.instance.abort_Callback_0_(this);
 
   @DomName('FileWriter.seek')
   @DocsEditable()
-  void seek(int position) => _blink.BlinkFileWriter.seek_Callback_1(this, position);
+  void seek(int position) => _blink.BlinkFileWriter.instance.seek_Callback_1_(this, position);
 
   @DomName('FileWriter.truncate')
   @DocsEditable()
-  void truncate(int size) => _blink.BlinkFileWriter.truncate_Callback_1(this, size);
+  void truncate(int size) => _blink.BlinkFileWriter.instance.truncate_Callback_1_(this, size);
 
   @DomName('FileWriter.write')
   @DocsEditable()
-  void write(Blob data) => _blink.BlinkFileWriter.write_Callback_1(this, data);
+  void write(Blob data) => _blink.BlinkFileWriter.instance.write_Callback_1_(this, data);
 
   /// Stream of `abort` events handled by this [FileWriter].
   @DomName('FileWriter.onabort')
@@ -15533,7 +15533,7 @@
 
   @DomName('FocusEvent.relatedTarget')
   @DocsEditable()
-  EventTarget get relatedTarget => _blink.BlinkFocusEvent.relatedTarget_Getter(this);
+  EventTarget get relatedTarget => _blink.BlinkFocusEvent.instance.relatedTarget_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15554,22 +15554,22 @@
   @DocsEditable()
   factory FontFace(String family, source, [Map descriptors]) {
     if ((source is String || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.constructorCallback_2(family, source);
+      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
     }
     if ((descriptors is Map || descriptors == null) && (source is String || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors);
+      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
     }
     if ((source is TypedData || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.constructorCallback_2(family, source);
+      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
     }
     if ((descriptors is Map || descriptors == null) && (source is TypedData || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors);
+      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
     }
     if ((source is ByteBuffer || source == null) && (family is String || family == null) && descriptors == null) {
-      return _blink.BlinkFontFace.constructorCallback_2(family, source);
+      return _blink.BlinkFontFace.instance.constructorCallback_2_(family, source);
     }
     if ((descriptors is Map || descriptors == null) && (source is ByteBuffer || source == null) && (family is String || family == null)) {
-      return _blink.BlinkFontFace.constructorCallback_3(family, source, descriptors);
+      return _blink.BlinkFontFace.instance.constructorCallback_3_(family, source, descriptors);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -15577,87 +15577,87 @@
   @DomName('FontFace.family')
   @DocsEditable()
   @Experimental() // untriaged
-  String get family => _blink.BlinkFontFace.family_Getter(this);
+  String get family => _blink.BlinkFontFace.instance.family_Getter_(this);
 
   @DomName('FontFace.family')
   @DocsEditable()
   @Experimental() // untriaged
-  void set family(String value) => _blink.BlinkFontFace.family_Setter(this, value);
+  void set family(String value) => _blink.BlinkFontFace.instance.family_Setter_(this, value);
 
   @DomName('FontFace.featureSettings')
   @DocsEditable()
   @Experimental() // untriaged
-  String get featureSettings => _blink.BlinkFontFace.featureSettings_Getter(this);
+  String get featureSettings => _blink.BlinkFontFace.instance.featureSettings_Getter_(this);
 
   @DomName('FontFace.featureSettings')
   @DocsEditable()
   @Experimental() // untriaged
-  void set featureSettings(String value) => _blink.BlinkFontFace.featureSettings_Setter(this, value);
+  void set featureSettings(String value) => _blink.BlinkFontFace.instance.featureSettings_Setter_(this, value);
 
   @DomName('FontFace.loaded')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get loaded => _blink.BlinkFontFace.loaded_Getter(this);
+  Future get loaded => _blink.BlinkFontFace.instance.loaded_Getter_(this);
 
   @DomName('FontFace.status')
   @DocsEditable()
   @Experimental() // untriaged
-  String get status => _blink.BlinkFontFace.status_Getter(this);
+  String get status => _blink.BlinkFontFace.instance.status_Getter_(this);
 
   @DomName('FontFace.stretch')
   @DocsEditable()
   @Experimental() // untriaged
-  String get stretch => _blink.BlinkFontFace.stretch_Getter(this);
+  String get stretch => _blink.BlinkFontFace.instance.stretch_Getter_(this);
 
   @DomName('FontFace.stretch')
   @DocsEditable()
   @Experimental() // untriaged
-  void set stretch(String value) => _blink.BlinkFontFace.stretch_Setter(this, value);
+  void set stretch(String value) => _blink.BlinkFontFace.instance.stretch_Setter_(this, value);
 
   @DomName('FontFace.style')
   @DocsEditable()
   @Experimental() // untriaged
-  String get style => _blink.BlinkFontFace.style_Getter(this);
+  String get style => _blink.BlinkFontFace.instance.style_Getter_(this);
 
   @DomName('FontFace.style')
   @DocsEditable()
   @Experimental() // untriaged
-  void set style(String value) => _blink.BlinkFontFace.style_Setter(this, value);
+  void set style(String value) => _blink.BlinkFontFace.instance.style_Setter_(this, value);
 
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
   @Experimental() // untriaged
-  String get unicodeRange => _blink.BlinkFontFace.unicodeRange_Getter(this);
+  String get unicodeRange => _blink.BlinkFontFace.instance.unicodeRange_Getter_(this);
 
   @DomName('FontFace.unicodeRange')
   @DocsEditable()
   @Experimental() // untriaged
-  void set unicodeRange(String value) => _blink.BlinkFontFace.unicodeRange_Setter(this, value);
+  void set unicodeRange(String value) => _blink.BlinkFontFace.instance.unicodeRange_Setter_(this, value);
 
   @DomName('FontFace.variant')
   @DocsEditable()
   @Experimental() // untriaged
-  String get variant => _blink.BlinkFontFace.variant_Getter(this);
+  String get variant => _blink.BlinkFontFace.instance.variant_Getter_(this);
 
   @DomName('FontFace.variant')
   @DocsEditable()
   @Experimental() // untriaged
-  void set variant(String value) => _blink.BlinkFontFace.variant_Setter(this, value);
+  void set variant(String value) => _blink.BlinkFontFace.instance.variant_Setter_(this, value);
 
   @DomName('FontFace.weight')
   @DocsEditable()
   @Experimental() // untriaged
-  String get weight => _blink.BlinkFontFace.weight_Getter(this);
+  String get weight => _blink.BlinkFontFace.instance.weight_Getter_(this);
 
   @DomName('FontFace.weight')
   @DocsEditable()
   @Experimental() // untriaged
-  void set weight(String value) => _blink.BlinkFontFace.weight_Setter(this, value);
+  void set weight(String value) => _blink.BlinkFontFace.instance.weight_Setter_(this, value);
 
   @DomName('FontFace.load')
   @DocsEditable()
   @Experimental() // untriaged
-  Future load() => _blink.BlinkFontFace.load_Callback(this);
+  Future load() => _blink.BlinkFontFace.instance.load_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15677,46 +15677,46 @@
   @DomName('FontFaceSet.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkFontFaceSet.size_Getter(this);
+  int get size => _blink.BlinkFontFaceSet.instance.size_Getter_(this);
 
   @DomName('FontFaceSet.status')
   @DocsEditable()
   @Experimental() // untriaged
-  String get status => _blink.BlinkFontFaceSet.status_Getter(this);
+  String get status => _blink.BlinkFontFaceSet.instance.status_Getter_(this);
 
   @DomName('FontFaceSet.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(FontFace fontFace) => _blink.BlinkFontFaceSet.add_Callback_1(this, fontFace);
+  void add(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.add_Callback_1_(this, fontFace);
 
   @DomName('FontFaceSet.check')
   @DocsEditable()
   @Experimental() // untriaged
-  bool check(String font, String text) => _blink.BlinkFontFaceSet.check_Callback_2(this, font, text);
+  bool check(String font, String text) => _blink.BlinkFontFaceSet.instance.check_Callback_2_(this, font, text);
 
   @DomName('FontFaceSet.clear')
   @DocsEditable()
   @Experimental() // untriaged
-  void clear() => _blink.BlinkFontFaceSet.clear_Callback(this);
+  void clear() => _blink.BlinkFontFaceSet.instance.clear_Callback_0_(this);
 
   @DomName('FontFaceSet.delete')
   @DocsEditable()
   @Experimental() // untriaged
-  bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.delete_Callback_1(this, fontFace);
+  bool delete(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.delete_Callback_1_(this, fontFace);
 
   void forEach(FontFaceSetForEachCallback callback, [Object thisArg]) {
     if (thisArg != null) {
-      _blink.BlinkFontFaceSet.forEach_Callback_2(this, callback, thisArg);
+      _blink.BlinkFontFaceSet.instance.forEach_Callback_2_(this, callback, thisArg);
       return;
     }
-    _blink.BlinkFontFaceSet.forEach_Callback_1(this, callback);
+    _blink.BlinkFontFaceSet.instance.forEach_Callback_1_(this, callback);
     return;
   }
 
   @DomName('FontFaceSet.has')
   @DocsEditable()
   @Experimental() // untriaged
-  bool has(FontFace fontFace) => _blink.BlinkFontFaceSet.has_Callback_1(this, fontFace);
+  bool has(FontFace fontFace) => _blink.BlinkFontFaceSet.instance.has_Callback_1_(this, fontFace);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15746,7 +15746,7 @@
   @DomName('FontFaceSetLoadEvent.fontfaces')
   @DocsEditable()
   @Experimental() // untriaged
-  List<FontFace> get fontfaces => _blink.BlinkFontFaceSetLoadEvent.fontfaces_Getter(this);
+  List<FontFace> get fontfaces => _blink.BlinkFontFaceSetLoadEvent.instance.fontfaces_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15771,18 +15771,18 @@
   factory FormData([FormElement form]) => _create(form);
 
   @DocsEditable()
-  static FormData _create(form) => _blink.BlinkFormData.constructorCallback_1(form);
+  static FormData _create(form) => _blink.BlinkFormData.instance.constructorCallback_1_(form);
 
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('FormData.append')
   @DocsEditable()
-  void append(String name, String value) => _blink.BlinkFormData.append_Callback_2(this, name, value);
+  void append(String name, String value) => _blink.BlinkFormData.instance.append_Callback_2_(this, name, value);
 
   @DomName('FormData.appendBlob')
   @DocsEditable()
-  void appendBlob(String name, Blob value, [String filename]) => _blink.BlinkFormData.append_Callback_3(this, name, value, filename);
+  void appendBlob(String name, Blob value, [String filename]) => _blink.BlinkFormData.instance.append_Callback_3_(this, name, value, filename);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15810,111 +15810,111 @@
 
   @DomName('HTMLFormElement.acceptCharset')
   @DocsEditable()
-  String get acceptCharset => _blink.BlinkHTMLFormElement.acceptCharset_Getter(this);
+  String get acceptCharset => _blink.BlinkHTMLFormElement.instance.acceptCharset_Getter_(this);
 
   @DomName('HTMLFormElement.acceptCharset')
   @DocsEditable()
-  void set acceptCharset(String value) => _blink.BlinkHTMLFormElement.acceptCharset_Setter(this, value);
+  void set acceptCharset(String value) => _blink.BlinkHTMLFormElement.instance.acceptCharset_Setter_(this, value);
 
   @DomName('HTMLFormElement.action')
   @DocsEditable()
-  String get action => _blink.BlinkHTMLFormElement.action_Getter(this);
+  String get action => _blink.BlinkHTMLFormElement.instance.action_Getter_(this);
 
   @DomName('HTMLFormElement.action')
   @DocsEditable()
-  void set action(String value) => _blink.BlinkHTMLFormElement.action_Setter(this, value);
+  void set action(String value) => _blink.BlinkHTMLFormElement.instance.action_Setter_(this, value);
 
   @DomName('HTMLFormElement.autocomplete')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute
   @Experimental()
-  String get autocomplete => _blink.BlinkHTMLFormElement.autocomplete_Getter(this);
+  String get autocomplete => _blink.BlinkHTMLFormElement.instance.autocomplete_Getter_(this);
 
   @DomName('HTMLFormElement.autocomplete')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofilling-form-controls:-the-autocomplete-attribute
   @Experimental()
-  void set autocomplete(String value) => _blink.BlinkHTMLFormElement.autocomplete_Setter(this, value);
+  void set autocomplete(String value) => _blink.BlinkHTMLFormElement.instance.autocomplete_Setter_(this, value);
 
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
-  String get encoding => _blink.BlinkHTMLFormElement.encoding_Getter(this);
+  String get encoding => _blink.BlinkHTMLFormElement.instance.encoding_Getter_(this);
 
   @DomName('HTMLFormElement.encoding')
   @DocsEditable()
-  void set encoding(String value) => _blink.BlinkHTMLFormElement.encoding_Setter(this, value);
+  void set encoding(String value) => _blink.BlinkHTMLFormElement.instance.encoding_Setter_(this, value);
 
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
-  String get enctype => _blink.BlinkHTMLFormElement.enctype_Getter(this);
+  String get enctype => _blink.BlinkHTMLFormElement.instance.enctype_Getter_(this);
 
   @DomName('HTMLFormElement.enctype')
   @DocsEditable()
-  void set enctype(String value) => _blink.BlinkHTMLFormElement.enctype_Setter(this, value);
+  void set enctype(String value) => _blink.BlinkHTMLFormElement.instance.enctype_Setter_(this, value);
 
   @DomName('HTMLFormElement.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLFormElement.length_Getter(this);
+  int get length => _blink.BlinkHTMLFormElement.instance.length_Getter_(this);
 
   @DomName('HTMLFormElement.method')
   @DocsEditable()
-  String get method => _blink.BlinkHTMLFormElement.method_Getter(this);
+  String get method => _blink.BlinkHTMLFormElement.instance.method_Getter_(this);
 
   @DomName('HTMLFormElement.method')
   @DocsEditable()
-  void set method(String value) => _blink.BlinkHTMLFormElement.method_Setter(this, value);
+  void set method(String value) => _blink.BlinkHTMLFormElement.instance.method_Setter_(this, value);
 
   @DomName('HTMLFormElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLFormElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLFormElement.instance.name_Getter_(this);
 
   @DomName('HTMLFormElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLFormElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLFormElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
-  bool get noValidate => _blink.BlinkHTMLFormElement.noValidate_Getter(this);
+  bool get noValidate => _blink.BlinkHTMLFormElement.instance.noValidate_Getter_(this);
 
   @DomName('HTMLFormElement.noValidate')
   @DocsEditable()
-  void set noValidate(bool value) => _blink.BlinkHTMLFormElement.noValidate_Setter(this, value);
+  void set noValidate(bool value) => _blink.BlinkHTMLFormElement.instance.noValidate_Setter_(this, value);
 
   @DomName('HTMLFormElement.target')
   @DocsEditable()
-  String get target => _blink.BlinkHTMLFormElement.target_Getter(this);
+  String get target => _blink.BlinkHTMLFormElement.instance.target_Getter_(this);
 
   @DomName('HTMLFormElement.target')
   @DocsEditable()
-  void set target(String value) => _blink.BlinkHTMLFormElement.target_Setter(this, value);
+  void set target(String value) => _blink.BlinkHTMLFormElement.instance.target_Setter_(this, value);
 
   Element __getter__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
-      return _blink.BlinkHTMLFormElement.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkHTMLFormElement.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkHTMLFormElement.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('HTMLFormElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLFormElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLFormElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLFormElement.requestAutocomplete')
   @DocsEditable()
   // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html
   @Experimental()
-  void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.requestAutocomplete_Callback_1(this, details);
+  void requestAutocomplete(Map details) => _blink.BlinkHTMLFormElement.instance.requestAutocomplete_Callback_1_(this, details);
 
   @DomName('HTMLFormElement.reset')
   @DocsEditable()
-  void reset() => _blink.BlinkHTMLFormElement.reset_Callback(this);
+  void reset() => _blink.BlinkHTMLFormElement.instance.reset_Callback_0_(this);
 
   @DomName('HTMLFormElement.submit')
   @DocsEditable()
-  void submit() => _blink.BlinkHTMLFormElement.submit_Callback(this);
+  void submit() => _blink.BlinkHTMLFormElement.instance.submit_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15934,29 +15934,29 @@
 
   @DomName('Gamepad.axes')
   @DocsEditable()
-  List<num> get axes => _blink.BlinkGamepad.axes_Getter(this);
+  List<num> get axes => _blink.BlinkGamepad.instance.axes_Getter_(this);
 
   @DomName('Gamepad.connected')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get connected => _blink.BlinkGamepad.connected_Getter(this);
+  bool get connected => _blink.BlinkGamepad.instance.connected_Getter_(this);
 
   @DomName('Gamepad.id')
   @DocsEditable()
-  String get id => _blink.BlinkGamepad.id_Getter(this);
+  String get id => _blink.BlinkGamepad.instance.id_Getter_(this);
 
   @DomName('Gamepad.index')
   @DocsEditable()
-  int get index => _blink.BlinkGamepad.index_Getter(this);
+  int get index => _blink.BlinkGamepad.instance.index_Getter_(this);
 
   @DomName('Gamepad.mapping')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mapping => _blink.BlinkGamepad.mapping_Getter(this);
+  String get mapping => _blink.BlinkGamepad.instance.mapping_Getter_(this);
 
   @DomName('Gamepad.timestamp')
   @DocsEditable()
-  int get timestamp => _blink.BlinkGamepad.timestamp_Getter(this);
+  int get timestamp => _blink.BlinkGamepad.instance.timestamp_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -15976,12 +15976,12 @@
   @DomName('GamepadButton.pressed')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get pressed => _blink.BlinkGamepadButton.pressed_Getter(this);
+  bool get pressed => _blink.BlinkGamepadButton.instance.pressed_Getter_(this);
 
   @DomName('GamepadButton.value')
   @DocsEditable()
   @Experimental() // untriaged
-  double get value => _blink.BlinkGamepadButton.value_Getter(this);
+  double get value => _blink.BlinkGamepadButton.instance.value_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16001,7 +16001,7 @@
   @DomName('GamepadEvent.gamepad')
   @DocsEditable()
   @Experimental() // untriaged
-  Gamepad get gamepad => _blink.BlinkGamepadEvent.gamepad_Getter(this);
+  Gamepad get gamepad => _blink.BlinkGamepadEvent.instance.gamepad_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16021,17 +16021,17 @@
   @DomName('Geofencing.getRegisteredRegions')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getRegisteredRegions() => _blink.BlinkGeofencing.getRegisteredRegions_Callback(this);
+  Future getRegisteredRegions() => _blink.BlinkGeofencing.instance.getRegisteredRegions_Callback_0_(this);
 
   @DomName('Geofencing.registerRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.registerRegion_Callback_1(this, region);
+  Future registerRegion(GeofencingRegion region) => _blink.BlinkGeofencing.instance.registerRegion_Callback_1_(this, region);
 
   @DomName('Geofencing.unregisterRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.unregisterRegion_Callback_1(this, regionId);
+  Future unregisterRegion(String regionId) => _blink.BlinkGeofencing.instance.unregisterRegion_Callback_1_(this, regionId);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16051,7 +16051,7 @@
   @DomName('GeofencingRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkGeofencingRegion.id_Getter(this);
+  String get id => _blink.BlinkGeofencingRegion.instance.id_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16139,29 +16139,29 @@
 
   @DomName('Geolocation.clearWatch')
   @DocsEditable()
-  void _clearWatch(int watchID) => _blink.BlinkGeolocation.clearWatch_Callback_1(this, watchID);
+  void _clearWatch(int watchID) => _blink.BlinkGeolocation.instance.clearWatch_Callback_1_(this, watchID);
 
   void _getCurrentPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) {
     if (options != null) {
-      _blink.BlinkGeolocation.getCurrentPosition_Callback_3(this, successCallback, errorCallback, options);
+      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_3_(this, successCallback, errorCallback, options);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkGeolocation.getCurrentPosition_Callback_2(this, successCallback, errorCallback);
+      _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_2_(this, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkGeolocation.getCurrentPosition_Callback_1(this, successCallback);
+    _blink.BlinkGeolocation.instance.getCurrentPosition_Callback_1_(this, successCallback);
     return;
   }
 
   int _watchPosition(_PositionCallback successCallback, [_PositionErrorCallback errorCallback, Map options]) {
     if (options != null) {
-      return _blink.BlinkGeolocation.watchPosition_Callback_3(this, successCallback, errorCallback, options);
+      return _blink.BlinkGeolocation.instance.watchPosition_Callback_3_(this, successCallback, errorCallback, options);
     }
     if (errorCallback != null) {
-      return _blink.BlinkGeolocation.watchPosition_Callback_2(this, successCallback, errorCallback);
+      return _blink.BlinkGeolocation.instance.watchPosition_Callback_2_(this, successCallback, errorCallback);
     }
-    return _blink.BlinkGeolocation.watchPosition_Callback_1(this, successCallback);
+    return _blink.BlinkGeolocation.instance.watchPosition_Callback_1_(this, successCallback);
   }
 }
 
@@ -16181,11 +16181,11 @@
 
   @DomName('Geoposition.coords')
   @DocsEditable()
-  Coordinates get coords => _blink.BlinkGeoposition.coords_Getter(this);
+  Coordinates get coords => _blink.BlinkGeoposition.instance.coords_Getter_(this);
 
   @DomName('Geoposition.timestamp')
   @DocsEditable()
-  int get timestamp => _blink.BlinkGeoposition.timestamp_Getter(this);
+  int get timestamp => _blink.BlinkGeoposition.instance.timestamp_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16749,12 +16749,12 @@
   @DomName('HTMLHRElement.color')
   @DocsEditable()
   @Experimental() // untriaged
-  String get color => _blink.BlinkHTMLHRElement.color_Getter(this);
+  String get color => _blink.BlinkHTMLHRElement.instance.color_Getter_(this);
 
   @DomName('HTMLHRElement.color')
   @DocsEditable()
   @Experimental() // untriaged
-  void set color(String value) => _blink.BlinkHTMLHRElement.color_Setter(this, value);
+  void set color(String value) => _blink.BlinkHTMLHRElement.instance.color_Setter_(this, value);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -16784,15 +16784,15 @@
 
   @DomName('HashChangeEvent.newURL')
   @DocsEditable()
-  String get newUrl => _blink.BlinkHashChangeEvent.newURL_Getter(this);
+  String get newUrl => _blink.BlinkHashChangeEvent.instance.newURL_Getter_(this);
 
   @DomName('HashChangeEvent.oldURL')
   @DocsEditable()
-  String get oldUrl => _blink.BlinkHashChangeEvent.oldURL_Getter(this);
+  String get oldUrl => _blink.BlinkHashChangeEvent.instance.oldURL_Getter_(this);
 
   @DomName('HashChangeEvent.initHashChangeEvent')
   @DocsEditable()
-  void _initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) => _blink.BlinkHashChangeEvent.initHashChangeEvent_Callback_5(this, type, canBubble, cancelable, oldURL, newURL);
+  void _initHashChangeEvent(String type, bool canBubble, bool cancelable, String oldURL, String newURL) => _blink.BlinkHashChangeEvent.instance.initHashChangeEvent_Callback_5_(this, type, canBubble, cancelable, oldURL, newURL);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -16837,13 +16837,13 @@
   @DocsEditable()
   factory Headers([input]) {
     if (input == null) {
-      return _blink.BlinkHeaders.constructorCallback();
+      return _blink.BlinkHeaders.instance.constructorCallback_0_();
     }
     if ((input is Headers || input == null)) {
-      return _blink.BlinkHeaders.constructorCallback_1(input);
+      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
     }
     if ((input is Map || input == null)) {
-      return _blink.BlinkHeaders.constructorCallback_1(input);
+      return _blink.BlinkHeaders.instance.constructorCallback_1_(input);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -16851,14 +16851,14 @@
   @DomName('Headers.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkHeaders.size_Getter(this);
+  int get size => _blink.BlinkHeaders.instance.size_Getter_(this);
 
   void forEach(HeadersForEachCallback callback, [Object thisArg]) {
     if (thisArg != null) {
-      _blink.BlinkHeaders.forEach_Callback_2(this, callback, thisArg);
+      _blink.BlinkHeaders.instance.forEach_Callback_2_(this, callback, thisArg);
       return;
     }
-    _blink.BlinkHeaders.forEach_Callback_1(this, callback);
+    _blink.BlinkHeaders.instance.forEach_Callback_1_(this, callback);
     return;
   }
 
@@ -16940,23 +16940,23 @@
 
   @DomName('History.length')
   @DocsEditable()
-  int get length => _blink.BlinkHistory.length_Getter(this);
+  int get length => _blink.BlinkHistory.instance.length_Getter_(this);
 
   @DomName('History.state')
   @DocsEditable()
-  dynamic get state => _blink.BlinkHistory.state_Getter(this);
+  dynamic get state => _blink.BlinkHistory.instance.state_Getter_(this);
 
   @DomName('History.back')
   @DocsEditable()
-  void back() => _blink.BlinkHistory.back_Callback(this);
+  void back() => _blink.BlinkHistory.instance.back_Callback_0_(this);
 
   @DomName('History.forward')
   @DocsEditable()
-  void forward() => _blink.BlinkHistory.forward_Callback(this);
+  void forward() => _blink.BlinkHistory.instance.forward_Callback_0_(this);
 
   @DomName('History.go')
   @DocsEditable()
-  void go(int distance) => _blink.BlinkHistory.go_Callback_1(this, distance);
+  void go(int distance) => _blink.BlinkHistory.instance.go_Callback_1_(this, distance);
 
   @DomName('History.pushState')
   @DocsEditable()
@@ -16964,7 +16964,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void pushState(Object data, String title, [String url]) => _blink.BlinkHistory.pushState_Callback_3(this, data, title, url);
+  void pushState(Object data, String title, [String url]) => _blink.BlinkHistory.instance.pushState_Callback_3_(this, data, title, url);
 
   @DomName('History.replaceState')
   @DocsEditable()
@@ -16972,7 +16972,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void replaceState(Object data, String title, [String url]) => _blink.BlinkHistory.replaceState_Callback_3(this, data, title, url);
+  void replaceState(Object data, String title, [String url]) => _blink.BlinkHistory.instance.replaceState_Callback_3_(this, data, title, url);
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -16989,15 +16989,15 @@
 
   @DomName('HTMLCollection.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLCollection.length_Getter(this);
+  int get length => _blink.BlinkHTMLCollection.instance.length_Getter_(this);
 
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkHTMLCollection.item_Callback_1(this, index);
+    return _blink.BlinkHTMLCollection.instance.item_Callback_1_(this, index);
   }
 
-  Node _nativeIndexedGetter(int index) => _blink.BlinkHTMLCollection.item_Callback_1(this, index);
+  Node _nativeIndexedGetter(int index) => _blink.BlinkHTMLCollection.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -17039,11 +17039,11 @@
 
   @DomName('HTMLCollection.item')
   @DocsEditable()
-  Element item(int index) => _blink.BlinkHTMLCollection.item_Callback_1(this, index);
+  Element item(int index) => _blink.BlinkHTMLCollection.instance.item_Callback_1_(this, index);
 
   @DomName('HTMLCollection.namedItem')
   @DocsEditable()
-  Element namedItem(String name) => _blink.BlinkHTMLCollection.namedItem_Callback_1(this, name);
+  Element namedItem(String name) => _blink.BlinkHTMLCollection.instance.namedItem_Callback_1_(this, name);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -17596,88 +17596,88 @@
 
   @DomName('HTMLElement.contentEditable')
   @DocsEditable()
-  String get contentEditable => _blink.BlinkHTMLElement.contentEditable_Getter(this);
+  String get contentEditable => _blink.BlinkHTMLElement.instance.contentEditable_Getter_(this);
 
   @DomName('HTMLElement.contentEditable')
   @DocsEditable()
-  void set contentEditable(String value) => _blink.BlinkHTMLElement.contentEditable_Setter(this, value);
+  void set contentEditable(String value) => _blink.BlinkHTMLElement.instance.contentEditable_Setter_(this, value);
 
   @DomName('HTMLElement.dir')
   @DocsEditable()
-  String get dir => _blink.BlinkHTMLElement.dir_Getter(this);
+  String get dir => _blink.BlinkHTMLElement.instance.dir_Getter_(this);
 
   @DomName('HTMLElement.dir')
   @DocsEditable()
-  void set dir(String value) => _blink.BlinkHTMLElement.dir_Setter(this, value);
+  void set dir(String value) => _blink.BlinkHTMLElement.instance.dir_Setter_(this, value);
 
   @DomName('HTMLElement.draggable')
   @DocsEditable()
-  bool get draggable => _blink.BlinkHTMLElement.draggable_Getter(this);
+  bool get draggable => _blink.BlinkHTMLElement.instance.draggable_Getter_(this);
 
   @DomName('HTMLElement.draggable')
   @DocsEditable()
-  void set draggable(bool value) => _blink.BlinkHTMLElement.draggable_Setter(this, value);
+  void set draggable(bool value) => _blink.BlinkHTMLElement.instance.draggable_Setter_(this, value);
 
   @DomName('HTMLElement.hidden')
   @DocsEditable()
-  bool get hidden => _blink.BlinkHTMLElement.hidden_Getter(this);
+  bool get hidden => _blink.BlinkHTMLElement.instance.hidden_Getter_(this);
 
   @DomName('HTMLElement.hidden')
   @DocsEditable()
-  void set hidden(bool value) => _blink.BlinkHTMLElement.hidden_Setter(this, value);
+  void set hidden(bool value) => _blink.BlinkHTMLElement.instance.hidden_Setter_(this, value);
 
   @DomName('HTMLElement.inputMethodContext')
   @DocsEditable()
   @Experimental() // untriaged
-  InputMethodContext get inputMethodContext => _blink.BlinkHTMLElement.inputMethodContext_Getter(this);
+  InputMethodContext get inputMethodContext => _blink.BlinkHTMLElement.instance.inputMethodContext_Getter_(this);
 
   @DomName('HTMLElement.isContentEditable')
   @DocsEditable()
-  bool get isContentEditable => _blink.BlinkHTMLElement.isContentEditable_Getter(this);
+  bool get isContentEditable => _blink.BlinkHTMLElement.instance.isContentEditable_Getter_(this);
 
   @DomName('HTMLElement.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkHTMLElement.lang_Getter(this);
+  String get lang => _blink.BlinkHTMLElement.instance.lang_Getter_(this);
 
   @DomName('HTMLElement.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkHTMLElement.lang_Setter(this, value);
+  void set lang(String value) => _blink.BlinkHTMLElement.instance.lang_Setter_(this, value);
 
   @DomName('HTMLElement.spellcheck')
   @DocsEditable()
   // http://blog.whatwg.org/the-road-to-html-5-spellchecking
   @Experimental() // nonstandard
-  bool get spellcheck => _blink.BlinkHTMLElement.spellcheck_Getter(this);
+  bool get spellcheck => _blink.BlinkHTMLElement.instance.spellcheck_Getter_(this);
 
   @DomName('HTMLElement.spellcheck')
   @DocsEditable()
   // http://blog.whatwg.org/the-road-to-html-5-spellchecking
   @Experimental() // nonstandard
-  void set spellcheck(bool value) => _blink.BlinkHTMLElement.spellcheck_Setter(this, value);
+  void set spellcheck(bool value) => _blink.BlinkHTMLElement.instance.spellcheck_Setter_(this, value);
 
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
-  int get tabIndex => _blink.BlinkHTMLElement.tabIndex_Getter(this);
+  int get tabIndex => _blink.BlinkHTMLElement.instance.tabIndex_Getter_(this);
 
   @DomName('HTMLElement.tabIndex')
   @DocsEditable()
-  void set tabIndex(int value) => _blink.BlinkHTMLElement.tabIndex_Setter(this, value);
+  void set tabIndex(int value) => _blink.BlinkHTMLElement.instance.tabIndex_Setter_(this, value);
 
   @DomName('HTMLElement.title')
   @DocsEditable()
-  String get title => _blink.BlinkHTMLElement.title_Getter(this);
+  String get title => _blink.BlinkHTMLElement.instance.title_Getter_(this);
 
   @DomName('HTMLElement.title')
   @DocsEditable()
-  void set title(String value) => _blink.BlinkHTMLElement.title_Setter(this, value);
+  void set title(String value) => _blink.BlinkHTMLElement.instance.title_Setter_(this, value);
 
   @DomName('HTMLElement.translate')
   @DocsEditable()
-  bool get translate => _blink.BlinkHTMLElement.translate_Getter(this);
+  bool get translate => _blink.BlinkHTMLElement.instance.translate_Getter_(this);
 
   @DomName('HTMLElement.translate')
   @DocsEditable()
-  void set translate(bool value) => _blink.BlinkHTMLElement.translate_Setter(this, value);
+  void set translate(bool value) => _blink.BlinkHTMLElement.instance.translate_Setter_(this, value);
 
   @DomName('HTMLElement.webkitdropzone')
   @DocsEditable()
@@ -17685,7 +17685,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
-  String get dropzone => _blink.BlinkHTMLElement.webkitdropzone_Getter(this);
+  String get dropzone => _blink.BlinkHTMLElement.instance.webkitdropzone_Getter_(this);
 
   @DomName('HTMLElement.webkitdropzone')
   @DocsEditable()
@@ -17693,11 +17693,11 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#the-dropzone-attribute
-  void set dropzone(String value) => _blink.BlinkHTMLElement.webkitdropzone_Setter(this, value);
+  void set dropzone(String value) => _blink.BlinkHTMLElement.instance.webkitdropzone_Setter_(this, value);
 
   @DomName('HTMLElement.click')
   @DocsEditable()
-  void click() => _blink.BlinkHTMLElement.click_Callback(this);
+  void click() => _blink.BlinkHTMLElement.instance.click_Callback_0_(this);
 
   @DomName('HTMLElement.onabort')
   @DocsEditable()
@@ -17975,7 +17975,7 @@
 
   @DomName('HTMLFormControlsCollection.namedItem')
   @DocsEditable()
-  Object namedItem(String name) => _blink.BlinkHTMLFormControlsCollection.namedItem_Callback_1(this, name);
+  Object namedItem(String name) => _blink.BlinkHTMLFormControlsCollection.instance.namedItem_Callback_1_(this, name);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18378,7 +18378,7 @@
   factory HttpRequest() => _create();
 
   @DocsEditable()
-  static HttpRequest _create() => _blink.BlinkXMLHttpRequest.constructorCallback();
+  static HttpRequest _create() => _blink.BlinkXMLHttpRequest.instance.constructorCallback_0_();
 
   @DomName('XMLHttpRequest.DONE')
   @DocsEditable()
@@ -18434,7 +18434,7 @@
    */
   @DomName('XMLHttpRequest.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkXMLHttpRequest.readyState_Getter(this);
+  int get readyState => _blink.BlinkXMLHttpRequest.instance.readyState_Getter_(this);
 
   /**
    * The data received as a reponse from the request.
@@ -18449,14 +18449,14 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  Object get response => _blink.BlinkXMLHttpRequest.response_Getter(this);
+  Object get response => _blink.BlinkXMLHttpRequest.instance.response_Getter_(this);
 
   /**
    * The response in String form or empty String on failure.
    */
   @DomName('XMLHttpRequest.responseText')
   @DocsEditable()
-  String get responseText => _blink.BlinkXMLHttpRequest.responseText_Getter(this);
+  String get responseText => _blink.BlinkXMLHttpRequest.instance.responseText_Getter_(this);
 
   /**
    * [String] telling the server the desired response format.
@@ -18470,7 +18470,7 @@
    */
   @DomName('XMLHttpRequest.responseType')
   @DocsEditable()
-  String get responseType => _blink.BlinkXMLHttpRequest.responseType_Getter(this);
+  String get responseType => _blink.BlinkXMLHttpRequest.instance.responseType_Getter_(this);
 
   /**
    * [String] telling the server the desired response format.
@@ -18484,12 +18484,12 @@
    */
   @DomName('XMLHttpRequest.responseType')
   @DocsEditable()
-  void set responseType(String value) => _blink.BlinkXMLHttpRequest.responseType_Setter(this, value);
+  void set responseType(String value) => _blink.BlinkXMLHttpRequest.instance.responseType_Setter_(this, value);
 
   @DomName('XMLHttpRequest.responseURL')
   @DocsEditable()
   @Experimental() // untriaged
-  String get responseUrl => _blink.BlinkXMLHttpRequest.responseURL_Getter(this);
+  String get responseUrl => _blink.BlinkXMLHttpRequest.instance.responseURL_Getter_(this);
 
   /**
    * The request response, or null on failure.
@@ -18500,7 +18500,7 @@
    */
   @DomName('XMLHttpRequest.responseXML')
   @DocsEditable()
-  Document get responseXml => _blink.BlinkXMLHttpRequest.responseXML_Getter(this);
+  Document get responseXml => _blink.BlinkXMLHttpRequest.instance.responseXML_Getter_(this);
 
   /**
    * The http result code from the request (200, 404, etc).
@@ -18508,7 +18508,7 @@
    */
   @DomName('XMLHttpRequest.status')
   @DocsEditable()
-  int get status => _blink.BlinkXMLHttpRequest.status_Getter(this);
+  int get status => _blink.BlinkXMLHttpRequest.instance.status_Getter_(this);
 
   /**
    * The request response string (such as \"200 OK\").
@@ -18516,7 +18516,7 @@
    */
   @DomName('XMLHttpRequest.statusText')
   @DocsEditable()
-  String get statusText => _blink.BlinkXMLHttpRequest.statusText_Getter(this);
+  String get statusText => _blink.BlinkXMLHttpRequest.instance.statusText_Getter_(this);
 
   /**
    * Length of time before a request is automatically terminated.
@@ -18537,7 +18537,7 @@
   @DomName('XMLHttpRequest.timeout')
   @DocsEditable()
   @Experimental() // untriaged
-  int get timeout => _blink.BlinkXMLHttpRequest.timeout_Getter(this);
+  int get timeout => _blink.BlinkXMLHttpRequest.instance.timeout_Getter_(this);
 
   /**
    * Length of time before a request is automatically terminated.
@@ -18558,7 +18558,7 @@
   @DomName('XMLHttpRequest.timeout')
   @DocsEditable()
   @Experimental() // untriaged
-  void set timeout(int value) => _blink.BlinkXMLHttpRequest.timeout_Setter(this, value);
+  void set timeout(int value) => _blink.BlinkXMLHttpRequest.instance.timeout_Setter_(this, value);
 
   /**
    * [EventTarget] that can hold listeners to track the progress of the request.
@@ -18567,7 +18567,7 @@
   @DomName('XMLHttpRequest.upload')
   @DocsEditable()
   @Unstable()
-  HttpRequestUpload get upload => _blink.BlinkXMLHttpRequest.upload_Getter(this);
+  HttpRequestUpload get upload => _blink.BlinkXMLHttpRequest.instance.upload_Getter_(this);
 
   /**
    * True if cross-site requests should use credentials such as cookies
@@ -18577,7 +18577,7 @@
    */
   @DomName('XMLHttpRequest.withCredentials')
   @DocsEditable()
-  bool get withCredentials => _blink.BlinkXMLHttpRequest.withCredentials_Getter(this);
+  bool get withCredentials => _blink.BlinkXMLHttpRequest.instance.withCredentials_Getter_(this);
 
   /**
    * True if cross-site requests should use credentials such as cookies
@@ -18587,7 +18587,7 @@
    */
   @DomName('XMLHttpRequest.withCredentials')
   @DocsEditable()
-  void set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.withCredentials_Setter(this, value);
+  void set withCredentials(bool value) => _blink.BlinkXMLHttpRequest.instance.withCredentials_Setter_(this, value);
 
   /**
    * Stop the current request.
@@ -18598,7 +18598,7 @@
    */
   @DomName('XMLHttpRequest.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkXMLHttpRequest.abort_Callback(this);
+  void abort() => _blink.BlinkXMLHttpRequest.instance.abort_Callback_0_(this);
 
   /**
    * Retrieve all the response headers from a request.
@@ -18613,7 +18613,7 @@
   @DomName('XMLHttpRequest.getAllResponseHeaders')
   @DocsEditable()
   @Unstable()
-  String getAllResponseHeaders() => _blink.BlinkXMLHttpRequest.getAllResponseHeaders_Callback(this);
+  String getAllResponseHeaders() => _blink.BlinkXMLHttpRequest.instance.getAllResponseHeaders_Callback_0_(this);
 
   /**
    * Return the response header named `header`, or null if not found.
@@ -18624,7 +18624,7 @@
   @DomName('XMLHttpRequest.getResponseHeader')
   @DocsEditable()
   @Unstable()
-  String getResponseHeader(String header) => _blink.BlinkXMLHttpRequest.getResponseHeader_Callback_1(this, header);
+  String getResponseHeader(String header) => _blink.BlinkXMLHttpRequest.instance.getResponseHeader_Callback_1_(this, header);
 
   /**
    * Specify the desired `url`, and `method` to use in making the request.
@@ -18643,7 +18643,7 @@
    */
   @DomName('XMLHttpRequest.open')
   @DocsEditable()
-  void open(String method, String url, {bool async, String user, String password}) => _blink.BlinkXMLHttpRequest.open_Callback_5(this, method, url, async, user, password);
+  void open(String method, String url, {bool async, String user, String password}) => _blink.BlinkXMLHttpRequest.instance.open_Callback_5_(this, method, url, async, user, password);
 
   /**
    * Specify a particular MIME type (such as `text/xml`) desired for the
@@ -18657,7 +18657,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.SAFARI)
-  void overrideMimeType(String override) => _blink.BlinkXMLHttpRequest.overrideMimeType_Callback_1(this, override);
+  void overrideMimeType(String override) => _blink.BlinkXMLHttpRequest.instance.overrideMimeType_Callback_1_(this, override);
 
   /**
    * Send the request with any given `data`.
@@ -18675,7 +18675,7 @@
    */
   @DomName('XMLHttpRequest.send')
   @DocsEditable()
-  void send([data]) => _blink.BlinkXMLHttpRequest.send_Callback_1(this, data);
+  void send([data]) => _blink.BlinkXMLHttpRequest.instance.send_Callback_1_(this, data);
 
   /**
    * Sets the value of an HTTP requst header.
@@ -18697,7 +18697,7 @@
    */
   @DomName('XMLHttpRequest.setRequestHeader')
   @DocsEditable()
-  void setRequestHeader(String header, String value) => _blink.BlinkXMLHttpRequest.setRequestHeader_Callback_2(this, header, value);
+  void setRequestHeader(String header, String value) => _blink.BlinkXMLHttpRequest.instance.setRequestHeader_Callback_2_(this, header, value);
 
   /// Stream of `readystatechange` events handled by this [HttpRequest].
 /**
@@ -18893,74 +18893,74 @@
   @DomName('HTMLIFrameElement.allowFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get allowFullscreen => _blink.BlinkHTMLIFrameElement.allowFullscreen_Getter(this);
+  bool get allowFullscreen => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Getter_(this);
 
   @DomName('HTMLIFrameElement.allowFullscreen')
   @DocsEditable()
   @Experimental() // untriaged
-  void set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.allowFullscreen_Setter(this, value);
+  void set allowFullscreen(bool value) => _blink.BlinkHTMLIFrameElement.instance.allowFullscreen_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.contentWindow')
   @DocsEditable()
-  WindowBase get contentWindow => _blink.BlinkHTMLIFrameElement.contentWindow_Getter(this);
+  WindowBase get contentWindow => _blink.BlinkHTMLIFrameElement.instance.contentWindow_Getter_(this);
 
   @DomName('HTMLIFrameElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLIFrameElement.height_Getter(this);
+  String get height => _blink.BlinkHTMLIFrameElement.instance.height_Getter_(this);
 
   @DomName('HTMLIFrameElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLIFrameElement.height_Setter(this, value);
+  void set height(String value) => _blink.BlinkHTMLIFrameElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLIFrameElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLIFrameElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLIFrameElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLIFrameElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLIFrameElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLIFrameElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLIFrameElement.instance.name_Getter_(this);
 
   @DomName('HTMLIFrameElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLIFrameElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLIFrameElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.sandbox')
   @DocsEditable()
-  String get sandbox => _blink.BlinkHTMLIFrameElement.sandbox_Getter(this);
+  String get sandbox => _blink.BlinkHTMLIFrameElement.instance.sandbox_Getter_(this);
 
   @DomName('HTMLIFrameElement.sandbox')
   @DocsEditable()
-  void set sandbox(String value) => _blink.BlinkHTMLIFrameElement.sandbox_Setter(this, value);
+  void set sandbox(String value) => _blink.BlinkHTMLIFrameElement.instance.sandbox_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLIFrameElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLIFrameElement.instance.src_Getter_(this);
 
   @DomName('HTMLIFrameElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLIFrameElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLIFrameElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
-  String get srcdoc => _blink.BlinkHTMLIFrameElement.srcdoc_Getter(this);
+  String get srcdoc => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Getter_(this);
 
   @DomName('HTMLIFrameElement.srcdoc')
   @DocsEditable()
-  void set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.srcdoc_Setter(this, value);
+  void set srcdoc(String value) => _blink.BlinkHTMLIFrameElement.instance.srcdoc_Setter_(this, value);
 
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLIFrameElement.width_Getter(this);
+  String get width => _blink.BlinkHTMLIFrameElement.instance.width_Getter_(this);
 
   @DomName('HTMLIFrameElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLIFrameElement.width_Setter(this, value);
+  void set width(String value) => _blink.BlinkHTMLIFrameElement.instance.width_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -18980,12 +18980,12 @@
   @DomName('ImageBitmap.height')
   @DocsEditable()
   @Experimental() // untriaged
-  int get height => _blink.BlinkImageBitmap.height_Getter(this);
+  int get height => _blink.BlinkImageBitmap.instance.height_Getter_(this);
 
   @DomName('ImageBitmap.width')
   @DocsEditable()
   @Experimental() // untriaged
-  int get width => _blink.BlinkImageBitmap.width_Getter(this);
+  int get width => _blink.BlinkImageBitmap.instance.width_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -19010,25 +19010,25 @@
   @DocsEditable()
   factory ImageData(data_OR_width, int height_OR_width, [int height]) {
     if ((height_OR_width is int || height_OR_width == null) && (data_OR_width is int || data_OR_width == null) && height == null) {
-      return _blink.BlinkImageData.constructorCallback_2(data_OR_width, height_OR_width);
+      return _blink.BlinkImageData.instance.constructorCallback_2_(data_OR_width, height_OR_width);
     }
     if ((height is int || height == null) && (height_OR_width is int || height_OR_width == null) && (data_OR_width is Uint8ClampedList || data_OR_width == null)) {
-      return _blink.BlinkImageData.constructorCallback_3(data_OR_width, height_OR_width, height);
+      return _blink.BlinkImageData.instance.constructorCallback_3_(data_OR_width, height_OR_width, height);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('ImageData.data')
   @DocsEditable()
-  Uint8ClampedList get _data => _blink.BlinkImageData.data_Getter(this);
+  Uint8ClampedList get _data => _blink.BlinkImageData.instance.data_Getter_(this);
 
   @DomName('ImageData.height')
   @DocsEditable()
-  int get height => _blink.BlinkImageData.height_Getter(this);
+  int get height => _blink.BlinkImageData.instance.height_Getter_(this);
 
   @DomName('ImageData.width')
   @DocsEditable()
-  int get width => _blink.BlinkImageData.width_Getter(this);
+  int get width => _blink.BlinkImageData.instance.width_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19059,106 +19059,106 @@
 
   @DomName('HTMLImageElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLImageElement.alt_Getter(this);
+  String get alt => _blink.BlinkHTMLImageElement.instance.alt_Getter_(this);
 
   @DomName('HTMLImageElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLImageElement.alt_Setter(this, value);
+  void set alt(String value) => _blink.BlinkHTMLImageElement.instance.alt_Setter_(this, value);
 
   @DomName('HTMLImageElement.complete')
   @DocsEditable()
-  bool get complete => _blink.BlinkHTMLImageElement.complete_Getter(this);
+  bool get complete => _blink.BlinkHTMLImageElement.instance.complete_Getter_(this);
 
   @DomName('HTMLImageElement.crossOrigin')
   @DocsEditable()
-  String get crossOrigin => _blink.BlinkHTMLImageElement.crossOrigin_Getter(this);
+  String get crossOrigin => _blink.BlinkHTMLImageElement.instance.crossOrigin_Getter_(this);
 
   @DomName('HTMLImageElement.crossOrigin')
   @DocsEditable()
-  void set crossOrigin(String value) => _blink.BlinkHTMLImageElement.crossOrigin_Setter(this, value);
+  void set crossOrigin(String value) => _blink.BlinkHTMLImageElement.instance.crossOrigin_Setter_(this, value);
 
   @DomName('HTMLImageElement.currentSrc')
   @DocsEditable()
   @Experimental() // untriaged
-  String get currentSrc => _blink.BlinkHTMLImageElement.currentSrc_Getter(this);
+  String get currentSrc => _blink.BlinkHTMLImageElement.instance.currentSrc_Getter_(this);
 
   @DomName('HTMLImageElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLImageElement.height_Getter(this);
+  int get height => _blink.BlinkHTMLImageElement.instance.height_Getter_(this);
 
   @DomName('HTMLImageElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLImageElement.height_Setter(this, value);
+  void set height(int value) => _blink.BlinkHTMLImageElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLImageElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLImageElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLImageElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLImageElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLImageElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLImageElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
-  bool get isMap => _blink.BlinkHTMLImageElement.isMap_Getter(this);
+  bool get isMap => _blink.BlinkHTMLImageElement.instance.isMap_Getter_(this);
 
   @DomName('HTMLImageElement.isMap')
   @DocsEditable()
-  void set isMap(bool value) => _blink.BlinkHTMLImageElement.isMap_Setter(this, value);
+  void set isMap(bool value) => _blink.BlinkHTMLImageElement.instance.isMap_Setter_(this, value);
 
   @DomName('HTMLImageElement.naturalHeight')
   @DocsEditable()
-  int get naturalHeight => _blink.BlinkHTMLImageElement.naturalHeight_Getter(this);
+  int get naturalHeight => _blink.BlinkHTMLImageElement.instance.naturalHeight_Getter_(this);
 
   @DomName('HTMLImageElement.naturalWidth')
   @DocsEditable()
-  int get naturalWidth => _blink.BlinkHTMLImageElement.naturalWidth_Getter(this);
+  int get naturalWidth => _blink.BlinkHTMLImageElement.instance.naturalWidth_Getter_(this);
 
   @DomName('HTMLImageElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  String get sizes => _blink.BlinkHTMLImageElement.sizes_Getter(this);
+  String get sizes => _blink.BlinkHTMLImageElement.instance.sizes_Getter_(this);
 
   @DomName('HTMLImageElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  void set sizes(String value) => _blink.BlinkHTMLImageElement.sizes_Setter(this, value);
+  void set sizes(String value) => _blink.BlinkHTMLImageElement.instance.sizes_Setter_(this, value);
 
   @DomName('HTMLImageElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLImageElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLImageElement.instance.src_Getter_(this);
 
   @DomName('HTMLImageElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLImageElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLImageElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  String get srcset => _blink.BlinkHTMLImageElement.srcset_Getter(this);
+  String get srcset => _blink.BlinkHTMLImageElement.instance.srcset_Getter_(this);
 
   @DomName('HTMLImageElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  void set srcset(String value) => _blink.BlinkHTMLImageElement.srcset_Setter(this, value);
+  void set srcset(String value) => _blink.BlinkHTMLImageElement.instance.srcset_Setter_(this, value);
 
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
-  String get useMap => _blink.BlinkHTMLImageElement.useMap_Getter(this);
+  String get useMap => _blink.BlinkHTMLImageElement.instance.useMap_Getter_(this);
 
   @DomName('HTMLImageElement.useMap')
   @DocsEditable()
-  void set useMap(String value) => _blink.BlinkHTMLImageElement.useMap_Setter(this, value);
+  void set useMap(String value) => _blink.BlinkHTMLImageElement.instance.useMap_Setter_(this, value);
 
   @DomName('HTMLImageElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLImageElement.width_Getter(this);
+  int get width => _blink.BlinkHTMLImageElement.instance.width_Getter_(this);
 
   @DomName('HTMLImageElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLImageElement.width_Setter(this, value);
+  void set width(int value) => _blink.BlinkHTMLImageElement.instance.width_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19178,7 +19178,7 @@
   @DomName('InjectedScriptHost.inspect')
   @DocsEditable()
   @Experimental() // untriaged
-  void inspect(Object objectId, Object hints) => _blink.BlinkInjectedScriptHost.inspect_Callback_2(this, objectId, hints);
+  void inspect(Object objectId, Object hints) => _blink.BlinkInjectedScriptHost.instance.inspect_Callback_2_(this, objectId, hints);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -19232,343 +19232,343 @@
 
   @DomName('HTMLInputElement.accept')
   @DocsEditable()
-  String get accept => _blink.BlinkHTMLInputElement.accept_Getter(this);
+  String get accept => _blink.BlinkHTMLInputElement.instance.accept_Getter_(this);
 
   @DomName('HTMLInputElement.accept')
   @DocsEditable()
-  void set accept(String value) => _blink.BlinkHTMLInputElement.accept_Setter(this, value);
+  void set accept(String value) => _blink.BlinkHTMLInputElement.instance.accept_Setter_(this, value);
 
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
-  String get alt => _blink.BlinkHTMLInputElement.alt_Getter(this);
+  String get alt => _blink.BlinkHTMLInputElement.instance.alt_Getter_(this);
 
   @DomName('HTMLInputElement.alt')
   @DocsEditable()
-  void set alt(String value) => _blink.BlinkHTMLInputElement.alt_Setter(this, value);
+  void set alt(String value) => _blink.BlinkHTMLInputElement.instance.alt_Setter_(this, value);
 
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
-  String get autocomplete => _blink.BlinkHTMLInputElement.autocomplete_Getter(this);
+  String get autocomplete => _blink.BlinkHTMLInputElement.instance.autocomplete_Getter_(this);
 
   @DomName('HTMLInputElement.autocomplete')
   @DocsEditable()
-  void set autocomplete(String value) => _blink.BlinkHTMLInputElement.autocomplete_Setter(this, value);
+  void set autocomplete(String value) => _blink.BlinkHTMLInputElement.instance.autocomplete_Setter_(this, value);
 
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLInputElement.autofocus_Getter(this);
+  bool get autofocus => _blink.BlinkHTMLInputElement.instance.autofocus_Getter_(this);
 
   @DomName('HTMLInputElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLInputElement.autofocus_Setter(this, value);
+  void set autofocus(bool value) => _blink.BlinkHTMLInputElement.instance.autofocus_Setter_(this, value);
 
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get capture => _blink.BlinkHTMLInputElement.capture_Getter(this);
+  bool get capture => _blink.BlinkHTMLInputElement.instance.capture_Getter_(this);
 
   @DomName('HTMLInputElement.capture')
   @DocsEditable()
   @Experimental() // untriaged
-  void set capture(bool value) => _blink.BlinkHTMLInputElement.capture_Setter(this, value);
+  void set capture(bool value) => _blink.BlinkHTMLInputElement.instance.capture_Setter_(this, value);
 
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
-  bool get checked => _blink.BlinkHTMLInputElement.checked_Getter(this);
+  bool get checked => _blink.BlinkHTMLInputElement.instance.checked_Getter_(this);
 
   @DomName('HTMLInputElement.checked')
   @DocsEditable()
-  void set checked(bool value) => _blink.BlinkHTMLInputElement.checked_Setter(this, value);
+  void set checked(bool value) => _blink.BlinkHTMLInputElement.instance.checked_Setter_(this, value);
 
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
-  bool get defaultChecked => _blink.BlinkHTMLInputElement.defaultChecked_Getter(this);
+  bool get defaultChecked => _blink.BlinkHTMLInputElement.instance.defaultChecked_Getter_(this);
 
   @DomName('HTMLInputElement.defaultChecked')
   @DocsEditable()
-  void set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.defaultChecked_Setter(this, value);
+  void set defaultChecked(bool value) => _blink.BlinkHTMLInputElement.instance.defaultChecked_Setter_(this, value);
 
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLInputElement.defaultValue_Getter(this);
+  String get defaultValue => _blink.BlinkHTMLInputElement.instance.defaultValue_Getter_(this);
 
   @DomName('HTMLInputElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLInputElement.defaultValue_Setter(this, value);
+  void set defaultValue(String value) => _blink.BlinkHTMLInputElement.instance.defaultValue_Setter_(this, value);
 
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
-  String get dirName => _blink.BlinkHTMLInputElement.dirName_Getter(this);
+  String get dirName => _blink.BlinkHTMLInputElement.instance.dirName_Getter_(this);
 
   @DomName('HTMLInputElement.dirName')
   @DocsEditable()
-  void set dirName(String value) => _blink.BlinkHTMLInputElement.dirName_Setter(this, value);
+  void set dirName(String value) => _blink.BlinkHTMLInputElement.instance.dirName_Setter_(this, value);
 
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLInputElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLInputElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLInputElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLInputElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLInputElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  List<File> get files => _blink.BlinkHTMLInputElement.files_Getter(this);
+  List<File> get files => _blink.BlinkHTMLInputElement.instance.files_Getter_(this);
 
   @DomName('HTMLInputElement.files')
   @DocsEditable()
-  void set files(List<File> value) => _blink.BlinkHTMLInputElement.files_Setter(this, value);
+  void set files(List<File> value) => _blink.BlinkHTMLInputElement.instance.files_Setter_(this, value);
 
   @DomName('HTMLInputElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLInputElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLInputElement.instance.form_Getter_(this);
 
   @DomName('HTMLInputElement.formAction')
   @DocsEditable()
-  String get formAction => _blink.BlinkHTMLInputElement.formAction_Getter(this);
+  String get formAction => _blink.BlinkHTMLInputElement.instance.formAction_Getter_(this);
 
   @DomName('HTMLInputElement.formAction')
   @DocsEditable()
-  void set formAction(String value) => _blink.BlinkHTMLInputElement.formAction_Setter(this, value);
+  void set formAction(String value) => _blink.BlinkHTMLInputElement.instance.formAction_Setter_(this, value);
 
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
-  String get formEnctype => _blink.BlinkHTMLInputElement.formEnctype_Getter(this);
+  String get formEnctype => _blink.BlinkHTMLInputElement.instance.formEnctype_Getter_(this);
 
   @DomName('HTMLInputElement.formEnctype')
   @DocsEditable()
-  void set formEnctype(String value) => _blink.BlinkHTMLInputElement.formEnctype_Setter(this, value);
+  void set formEnctype(String value) => _blink.BlinkHTMLInputElement.instance.formEnctype_Setter_(this, value);
 
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
-  String get formMethod => _blink.BlinkHTMLInputElement.formMethod_Getter(this);
+  String get formMethod => _blink.BlinkHTMLInputElement.instance.formMethod_Getter_(this);
 
   @DomName('HTMLInputElement.formMethod')
   @DocsEditable()
-  void set formMethod(String value) => _blink.BlinkHTMLInputElement.formMethod_Setter(this, value);
+  void set formMethod(String value) => _blink.BlinkHTMLInputElement.instance.formMethod_Setter_(this, value);
 
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
-  bool get formNoValidate => _blink.BlinkHTMLInputElement.formNoValidate_Getter(this);
+  bool get formNoValidate => _blink.BlinkHTMLInputElement.instance.formNoValidate_Getter_(this);
 
   @DomName('HTMLInputElement.formNoValidate')
   @DocsEditable()
-  void set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.formNoValidate_Setter(this, value);
+  void set formNoValidate(bool value) => _blink.BlinkHTMLInputElement.instance.formNoValidate_Setter_(this, value);
 
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
-  String get formTarget => _blink.BlinkHTMLInputElement.formTarget_Getter(this);
+  String get formTarget => _blink.BlinkHTMLInputElement.instance.formTarget_Getter_(this);
 
   @DomName('HTMLInputElement.formTarget')
   @DocsEditable()
-  void set formTarget(String value) => _blink.BlinkHTMLInputElement.formTarget_Setter(this, value);
+  void set formTarget(String value) => _blink.BlinkHTMLInputElement.instance.formTarget_Setter_(this, value);
 
   @DomName('HTMLInputElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLInputElement.height_Getter(this);
+  int get height => _blink.BlinkHTMLInputElement.instance.height_Getter_(this);
 
   @DomName('HTMLInputElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLInputElement.height_Setter(this, value);
+  void set height(int value) => _blink.BlinkHTMLInputElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLInputElement.incremental')
   @DocsEditable()
   // http://www.w3.org/TR/html-markup/input.search.html
   @Experimental()
-  bool get incremental => _blink.BlinkHTMLInputElement.incremental_Getter(this);
+  bool get incremental => _blink.BlinkHTMLInputElement.instance.incremental_Getter_(this);
 
   @DomName('HTMLInputElement.incremental')
   @DocsEditable()
   // http://www.w3.org/TR/html-markup/input.search.html
   @Experimental()
-  void set incremental(bool value) => _blink.BlinkHTMLInputElement.incremental_Setter(this, value);
+  void set incremental(bool value) => _blink.BlinkHTMLInputElement.instance.incremental_Setter_(this, value);
 
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
-  bool get indeterminate => _blink.BlinkHTMLInputElement.indeterminate_Getter(this);
+  bool get indeterminate => _blink.BlinkHTMLInputElement.instance.indeterminate_Getter_(this);
 
   @DomName('HTMLInputElement.indeterminate')
   @DocsEditable()
-  void set indeterminate(bool value) => _blink.BlinkHTMLInputElement.indeterminate_Setter(this, value);
+  void set indeterminate(bool value) => _blink.BlinkHTMLInputElement.instance.indeterminate_Setter_(this, value);
 
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get inputMode => _blink.BlinkHTMLInputElement.inputMode_Getter(this);
+  String get inputMode => _blink.BlinkHTMLInputElement.instance.inputMode_Getter_(this);
 
   @DomName('HTMLInputElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set inputMode(String value) => _blink.BlinkHTMLInputElement.inputMode_Setter(this, value);
+  void set inputMode(String value) => _blink.BlinkHTMLInputElement.instance.inputMode_Setter_(this, value);
 
   @DomName('HTMLInputElement.labels')
   @DocsEditable()
-  List<Node> get labels => _blink.BlinkHTMLInputElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLInputElement.instance.labels_Getter_(this);
 
   @DomName('HTMLInputElement.list')
   @DocsEditable()
-  HtmlElement get list => _blink.BlinkHTMLInputElement.list_Getter(this);
+  HtmlElement get list => _blink.BlinkHTMLInputElement.instance.list_Getter_(this);
 
   @DomName('HTMLInputElement.max')
   @DocsEditable()
-  String get max => _blink.BlinkHTMLInputElement.max_Getter(this);
+  String get max => _blink.BlinkHTMLInputElement.instance.max_Getter_(this);
 
   @DomName('HTMLInputElement.max')
   @DocsEditable()
-  void set max(String value) => _blink.BlinkHTMLInputElement.max_Setter(this, value);
+  void set max(String value) => _blink.BlinkHTMLInputElement.instance.max_Setter_(this, value);
 
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
-  int get maxLength => _blink.BlinkHTMLInputElement.maxLength_Getter(this);
+  int get maxLength => _blink.BlinkHTMLInputElement.instance.maxLength_Getter_(this);
 
   @DomName('HTMLInputElement.maxLength')
   @DocsEditable()
-  void set maxLength(int value) => _blink.BlinkHTMLInputElement.maxLength_Setter(this, value);
+  void set maxLength(int value) => _blink.BlinkHTMLInputElement.instance.maxLength_Setter_(this, value);
 
   @DomName('HTMLInputElement.min')
   @DocsEditable()
-  String get min => _blink.BlinkHTMLInputElement.min_Getter(this);
+  String get min => _blink.BlinkHTMLInputElement.instance.min_Getter_(this);
 
   @DomName('HTMLInputElement.min')
   @DocsEditable()
-  void set min(String value) => _blink.BlinkHTMLInputElement.min_Setter(this, value);
+  void set min(String value) => _blink.BlinkHTMLInputElement.instance.min_Setter_(this, value);
 
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
-  bool get multiple => _blink.BlinkHTMLInputElement.multiple_Getter(this);
+  bool get multiple => _blink.BlinkHTMLInputElement.instance.multiple_Getter_(this);
 
   @DomName('HTMLInputElement.multiple')
   @DocsEditable()
-  void set multiple(bool value) => _blink.BlinkHTMLInputElement.multiple_Setter(this, value);
+  void set multiple(bool value) => _blink.BlinkHTMLInputElement.instance.multiple_Setter_(this, value);
 
   @DomName('HTMLInputElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLInputElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLInputElement.instance.name_Getter_(this);
 
   @DomName('HTMLInputElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLInputElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLInputElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
-  String get pattern => _blink.BlinkHTMLInputElement.pattern_Getter(this);
+  String get pattern => _blink.BlinkHTMLInputElement.instance.pattern_Getter_(this);
 
   @DomName('HTMLInputElement.pattern')
   @DocsEditable()
-  void set pattern(String value) => _blink.BlinkHTMLInputElement.pattern_Setter(this, value);
+  void set pattern(String value) => _blink.BlinkHTMLInputElement.instance.pattern_Setter_(this, value);
 
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
-  String get placeholder => _blink.BlinkHTMLInputElement.placeholder_Getter(this);
+  String get placeholder => _blink.BlinkHTMLInputElement.instance.placeholder_Getter_(this);
 
   @DomName('HTMLInputElement.placeholder')
   @DocsEditable()
-  void set placeholder(String value) => _blink.BlinkHTMLInputElement.placeholder_Setter(this, value);
+  void set placeholder(String value) => _blink.BlinkHTMLInputElement.instance.placeholder_Setter_(this, value);
 
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
-  bool get readOnly => _blink.BlinkHTMLInputElement.readOnly_Getter(this);
+  bool get readOnly => _blink.BlinkHTMLInputElement.instance.readOnly_Getter_(this);
 
   @DomName('HTMLInputElement.readOnly')
   @DocsEditable()
-  void set readOnly(bool value) => _blink.BlinkHTMLInputElement.readOnly_Setter(this, value);
+  void set readOnly(bool value) => _blink.BlinkHTMLInputElement.instance.readOnly_Setter_(this, value);
 
   @DomName('HTMLInputElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLInputElement.required_Getter(this);
+  bool get required => _blink.BlinkHTMLInputElement.instance.required_Getter_(this);
 
   @DomName('HTMLInputElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLInputElement.required_Setter(this, value);
+  void set required(bool value) => _blink.BlinkHTMLInputElement.instance.required_Setter_(this, value);
 
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
-  String get selectionDirection => _blink.BlinkHTMLInputElement.selectionDirection_Getter(this);
+  String get selectionDirection => _blink.BlinkHTMLInputElement.instance.selectionDirection_Getter_(this);
 
   @DomName('HTMLInputElement.selectionDirection')
   @DocsEditable()
-  void set selectionDirection(String value) => _blink.BlinkHTMLInputElement.selectionDirection_Setter(this, value);
+  void set selectionDirection(String value) => _blink.BlinkHTMLInputElement.instance.selectionDirection_Setter_(this, value);
 
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
-  int get selectionEnd => _blink.BlinkHTMLInputElement.selectionEnd_Getter(this);
+  int get selectionEnd => _blink.BlinkHTMLInputElement.instance.selectionEnd_Getter_(this);
 
   @DomName('HTMLInputElement.selectionEnd')
   @DocsEditable()
-  void set selectionEnd(int value) => _blink.BlinkHTMLInputElement.selectionEnd_Setter(this, value);
+  void set selectionEnd(int value) => _blink.BlinkHTMLInputElement.instance.selectionEnd_Setter_(this, value);
 
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
-  int get selectionStart => _blink.BlinkHTMLInputElement.selectionStart_Getter(this);
+  int get selectionStart => _blink.BlinkHTMLInputElement.instance.selectionStart_Getter_(this);
 
   @DomName('HTMLInputElement.selectionStart')
   @DocsEditable()
-  void set selectionStart(int value) => _blink.BlinkHTMLInputElement.selectionStart_Setter(this, value);
+  void set selectionStart(int value) => _blink.BlinkHTMLInputElement.instance.selectionStart_Setter_(this, value);
 
   @DomName('HTMLInputElement.size')
   @DocsEditable()
-  int get size => _blink.BlinkHTMLInputElement.size_Getter(this);
+  int get size => _blink.BlinkHTMLInputElement.instance.size_Getter_(this);
 
   @DomName('HTMLInputElement.size')
   @DocsEditable()
-  void set size(int value) => _blink.BlinkHTMLInputElement.size_Setter(this, value);
+  void set size(int value) => _blink.BlinkHTMLInputElement.instance.size_Setter_(this, value);
 
   @DomName('HTMLInputElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLInputElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLInputElement.instance.src_Getter_(this);
 
   @DomName('HTMLInputElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLInputElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLInputElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLInputElement.step')
   @DocsEditable()
-  String get step => _blink.BlinkHTMLInputElement.step_Getter(this);
+  String get step => _blink.BlinkHTMLInputElement.instance.step_Getter_(this);
 
   @DomName('HTMLInputElement.step')
   @DocsEditable()
-  void set step(String value) => _blink.BlinkHTMLInputElement.step_Setter(this, value);
+  void set step(String value) => _blink.BlinkHTMLInputElement.instance.step_Setter_(this, value);
 
   @DomName('HTMLInputElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLInputElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLInputElement.instance.type_Getter_(this);
 
   @DomName('HTMLInputElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLInputElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLInputElement.instance.type_Setter_(this, value);
 
   @DomName('HTMLInputElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLInputElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLInputElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLInputElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLInputElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLInputElement.instance.validity_Getter_(this);
 
   @DomName('HTMLInputElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLInputElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLInputElement.instance.value_Getter_(this);
 
   @DomName('HTMLInputElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLInputElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLInputElement.instance.value_Setter_(this, value);
 
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
-  DateTime get valueAsDate => _blink.BlinkHTMLInputElement.valueAsDate_Getter(this);
+  DateTime get valueAsDate => _blink.BlinkHTMLInputElement.instance.valueAsDate_Getter_(this);
 
   @DomName('HTMLInputElement.valueAsDate')
   @DocsEditable()
-  void set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.valueAsDate_Setter(this, value);
+  void set valueAsDate(DateTime value) => _blink.BlinkHTMLInputElement.instance.valueAsDate_Setter_(this, value);
 
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
-  num get valueAsNumber => _blink.BlinkHTMLInputElement.valueAsNumber_Getter(this);
+  num get valueAsNumber => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Getter_(this);
 
   @DomName('HTMLInputElement.valueAsNumber')
   @DocsEditable()
-  void set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.valueAsNumber_Setter(this, value);
+  void set valueAsNumber(num value) => _blink.BlinkHTMLInputElement.instance.valueAsNumber_Setter_(this, value);
 
   @DomName('HTMLInputElement.webkitEntries')
   @DocsEditable()
@@ -19576,7 +19576,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#concept-input-type-file-selected
-  List<Entry> get entries => _blink.BlinkHTMLInputElement.webkitEntries_Getter(this);
+  List<Entry> get entries => _blink.BlinkHTMLInputElement.instance.webkitEntries_Getter_(this);
 
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
@@ -19584,7 +19584,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  bool get directory => _blink.BlinkHTMLInputElement.webkitdirectory_Getter(this);
+  bool get directory => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Getter_(this);
 
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
@@ -19592,39 +19592,39 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://plus.sandbox.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3
-  void set directory(bool value) => _blink.BlinkHTMLInputElement.webkitdirectory_Setter(this, value);
+  void set directory(bool value) => _blink.BlinkHTMLInputElement.instance.webkitdirectory_Setter_(this, value);
 
   @DomName('HTMLInputElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLInputElement.width_Getter(this);
+  int get width => _blink.BlinkHTMLInputElement.instance.width_Getter_(this);
 
   @DomName('HTMLInputElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLInputElement.width_Setter(this, value);
+  void set width(int value) => _blink.BlinkHTMLInputElement.instance.width_Setter_(this, value);
 
   @DomName('HTMLInputElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLInputElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLInputElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLInputElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLInputElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLInputElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLInputElement.select')
   @DocsEditable()
-  void select() => _blink.BlinkHTMLInputElement.select_Callback(this);
+  void select() => _blink.BlinkHTMLInputElement.instance.select_Callback_0_(this);
 
   @DomName('HTMLInputElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLInputElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLInputElement.instance.setCustomValidity_Callback_1_(this, error);
 
   void setRangeText(String replacement, {int start, int end, String selectionMode}) {
     if ((replacement is String || replacement == null) && start == null && end == null && selectionMode == null) {
-      _blink.BlinkHTMLInputElement.setRangeText_Callback_1(this, replacement);
+      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_1_(this, replacement);
       return;
     }
     if ((selectionMode is String || selectionMode == null) && (end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null)) {
-      _blink.BlinkHTMLInputElement.setRangeText_Callback_4(this, replacement, start, end, selectionMode);
+      _blink.BlinkHTMLInputElement.instance.setRangeText_Callback_4_(this, replacement, start, end, selectionMode);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -19632,28 +19632,28 @@
 
   void setSelectionRange(int start, int end, [String direction]) {
     if (direction != null) {
-      _blink.BlinkHTMLInputElement.setSelectionRange_Callback_3(this, start, end, direction);
+      _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_3_(this, start, end, direction);
       return;
     }
-    _blink.BlinkHTMLInputElement.setSelectionRange_Callback_2(this, start, end);
+    _blink.BlinkHTMLInputElement.instance.setSelectionRange_Callback_2_(this, start, end);
     return;
   }
 
   void stepDown([int n]) {
     if (n != null) {
-      _blink.BlinkHTMLInputElement.stepDown_Callback_1(this, n);
+      _blink.BlinkHTMLInputElement.instance.stepDown_Callback_1_(this, n);
       return;
     }
-    _blink.BlinkHTMLInputElement.stepDown_Callback(this);
+    _blink.BlinkHTMLInputElement.instance.stepDown_Callback_0_(this);
     return;
   }
 
   void stepUp([int n]) {
     if (n != null) {
-      _blink.BlinkHTMLInputElement.stepUp_Callback_1(this, n);
+      _blink.BlinkHTMLInputElement.instance.stepUp_Callback_1_(this, n);
       return;
     }
-    _blink.BlinkHTMLInputElement.stepUp_Callback(this);
+    _blink.BlinkHTMLInputElement.instance.stepUp_Callback_0_(this);
     return;
   }
 
@@ -20231,25 +20231,25 @@
   @DomName('InputMethodContext.compositionEndOffset')
   @DocsEditable()
   @Experimental() // untriaged
-  int get compositionEndOffset => _blink.BlinkInputMethodContext.compositionEndOffset_Getter(this);
+  int get compositionEndOffset => _blink.BlinkInputMethodContext.instance.compositionEndOffset_Getter_(this);
 
   @DomName('InputMethodContext.compositionStartOffset')
   @DocsEditable()
   @Experimental() // untriaged
-  int get compositionStartOffset => _blink.BlinkInputMethodContext.compositionStartOffset_Getter(this);
+  int get compositionStartOffset => _blink.BlinkInputMethodContext.instance.compositionStartOffset_Getter_(this);
 
   @DomName('InputMethodContext.locale')
   @DocsEditable()
-  String get locale => _blink.BlinkInputMethodContext.locale_Getter(this);
+  String get locale => _blink.BlinkInputMethodContext.instance.locale_Getter_(this);
 
   @DomName('InputMethodContext.target')
   @DocsEditable()
   @Experimental() // untriaged
-  HtmlElement get target => _blink.BlinkInputMethodContext.target_Getter(this);
+  HtmlElement get target => _blink.BlinkInputMethodContext.instance.target_Getter_(this);
 
   @DomName('InputMethodContext.confirmComposition')
   @DocsEditable()
-  void confirmComposition() => _blink.BlinkInputMethodContext.confirmComposition_Callback(this);
+  void confirmComposition() => _blink.BlinkInputMethodContext.instance.confirmComposition_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20269,12 +20269,12 @@
   @DomName('InstallEvent.reloadAll')
   @DocsEditable()
   @Experimental() // untriaged
-  Future reloadAll() => _blink.BlinkInstallEvent.reloadAll_Callback(this);
+  Future reloadAll() => _blink.BlinkInstallEvent.instance.reloadAll_Callback_0_(this);
 
   @DomName('InstallEvent.replace')
   @DocsEditable()
   @Experimental() // untriaged
-  void replace() => _blink.BlinkInstallEvent.replace_Callback(this);
+  void replace() => _blink.BlinkInstallEvent.instance.replace_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20294,7 +20294,7 @@
   @DomName('InstallPhaseEvent.waitUntil')
   @DocsEditable()
   @Experimental() // untriaged
-  void waitUntil(Object value) => _blink.BlinkInstallPhaseEvent.waitUntil_Callback_1(this, value);
+  void waitUntil(Object value) => _blink.BlinkInstallPhaseEvent.instance.waitUntil_Callback_1_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20348,48 +20348,48 @@
 
   @DomName('KeyboardEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkKeyboardEvent.altKey_Getter(this);
+  bool get altKey => _blink.BlinkKeyboardEvent.instance.altKey_Getter_(this);
 
   @DomName('KeyboardEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkKeyboardEvent.ctrlKey_Getter(this);
+  bool get ctrlKey => _blink.BlinkKeyboardEvent.instance.ctrlKey_Getter_(this);
 
   @DomName('KeyboardEvent.keyIdentifier')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get _keyIdentifier => _blink.BlinkKeyboardEvent.keyIdentifier_Getter(this);
+  String get _keyIdentifier => _blink.BlinkKeyboardEvent.instance.keyIdentifier_Getter_(this);
 
   @DomName('KeyboardEvent.keyLocation')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get keyLocation => _blink.BlinkKeyboardEvent.keyLocation_Getter(this);
+  int get keyLocation => _blink.BlinkKeyboardEvent.instance.keyLocation_Getter_(this);
 
   @DomName('KeyboardEvent.location')
   @DocsEditable()
   @Experimental() // untriaged
-  int get location => _blink.BlinkKeyboardEvent.location_Getter(this);
+  int get location => _blink.BlinkKeyboardEvent.instance.location_Getter_(this);
 
   @DomName('KeyboardEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkKeyboardEvent.metaKey_Getter(this);
+  bool get metaKey => _blink.BlinkKeyboardEvent.instance.metaKey_Getter_(this);
 
   @DomName('KeyboardEvent.repeat')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get repeat => _blink.BlinkKeyboardEvent.repeat_Getter(this);
+  bool get repeat => _blink.BlinkKeyboardEvent.instance.repeat_Getter_(this);
 
   @DomName('KeyboardEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkKeyboardEvent.shiftKey_Getter(this);
+  bool get shiftKey => _blink.BlinkKeyboardEvent.instance.shiftKey_Getter_(this);
 
   @DomName('KeyboardEvent.getModifierState')
   @DocsEditable()
   @Experimental() // untriaged
-  bool getModifierState(String keyArgument) => _blink.BlinkKeyboardEvent.getModifierState_Callback_1(this, keyArgument);
+  bool getModifierState(String keyArgument) => _blink.BlinkKeyboardEvent.instance.getModifierState_Callback_1_(this, keyArgument);
 
   @DomName('KeyboardEvent.initKeyboardEvent')
   @DocsEditable()
-  void _initKeyboardEvent(String type, bool canBubble, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.initKeyboardEvent_Callback_10(this, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
+  void _initKeyboardEvent(String type, bool canBubble, bool cancelable, Window view, String keyIdentifier, int location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkKeyboardEvent.instance.initKeyboardEvent_Callback_10_(this, type, canBubble, cancelable, view, keyIdentifier, location, ctrlKey, altKey, shiftKey, metaKey);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20424,76 +20424,76 @@
 
   @DomName('HTMLKeygenElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLKeygenElement.autofocus_Getter(this);
+  bool get autofocus => _blink.BlinkHTMLKeygenElement.instance.autofocus_Getter_(this);
 
   @DomName('HTMLKeygenElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.autofocus_Setter(this, value);
+  void set autofocus(bool value) => _blink.BlinkHTMLKeygenElement.instance.autofocus_Setter_(this, value);
 
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
-  String get challenge => _blink.BlinkHTMLKeygenElement.challenge_Getter(this);
+  String get challenge => _blink.BlinkHTMLKeygenElement.instance.challenge_Getter_(this);
 
   @DomName('HTMLKeygenElement.challenge')
   @DocsEditable()
-  void set challenge(String value) => _blink.BlinkHTMLKeygenElement.challenge_Setter(this, value);
+  void set challenge(String value) => _blink.BlinkHTMLKeygenElement.instance.challenge_Setter_(this, value);
 
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLKeygenElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLKeygenElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLKeygenElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLKeygenElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLKeygenElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLKeygenElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLKeygenElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLKeygenElement.instance.form_Getter_(this);
 
   @DomName('HTMLKeygenElement.keytype')
   @DocsEditable()
-  String get keytype => _blink.BlinkHTMLKeygenElement.keytype_Getter(this);
+  String get keytype => _blink.BlinkHTMLKeygenElement.instance.keytype_Getter_(this);
 
   @DomName('HTMLKeygenElement.keytype')
   @DocsEditable()
-  void set keytype(String value) => _blink.BlinkHTMLKeygenElement.keytype_Setter(this, value);
+  void set keytype(String value) => _blink.BlinkHTMLKeygenElement.instance.keytype_Setter_(this, value);
 
   @DomName('HTMLKeygenElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLKeygenElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLKeygenElement.instance.labels_Getter_(this);
 
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLKeygenElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLKeygenElement.instance.name_Getter_(this);
 
   @DomName('HTMLKeygenElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLKeygenElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLKeygenElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLKeygenElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLKeygenElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLKeygenElement.instance.type_Getter_(this);
 
   @DomName('HTMLKeygenElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLKeygenElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLKeygenElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLKeygenElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLKeygenElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLKeygenElement.instance.validity_Getter_(this);
 
   @DomName('HTMLKeygenElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLKeygenElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLKeygenElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLKeygenElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLKeygenElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLKeygenElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLKeygenElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLKeygenElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLKeygenElement.instance.setCustomValidity_Callback_1_(this, error);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20521,11 +20521,11 @@
 
   @DomName('HTMLLIElement.value')
   @DocsEditable()
-  int get value => _blink.BlinkHTMLLIElement.value_Getter(this);
+  int get value => _blink.BlinkHTMLLIElement.instance.value_Getter_(this);
 
   @DomName('HTMLLIElement.value')
   @DocsEditable()
-  void set value(int value) => _blink.BlinkHTMLLIElement.value_Setter(this, value);
+  void set value(int value) => _blink.BlinkHTMLLIElement.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20553,19 +20553,19 @@
 
   @DomName('HTMLLabelElement.control')
   @DocsEditable()
-  HtmlElement get control => _blink.BlinkHTMLLabelElement.control_Getter(this);
+  HtmlElement get control => _blink.BlinkHTMLLabelElement.instance.control_Getter_(this);
 
   @DomName('HTMLLabelElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLLabelElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLLabelElement.instance.form_Getter_(this);
 
   @DomName('HTMLLabelElement.htmlFor')
   @DocsEditable()
-  String get htmlFor => _blink.BlinkHTMLLabelElement.htmlFor_Getter(this);
+  String get htmlFor => _blink.BlinkHTMLLabelElement.instance.htmlFor_Getter_(this);
 
   @DomName('HTMLLabelElement.htmlFor')
   @DocsEditable()
-  void set htmlFor(String value) => _blink.BlinkHTMLLabelElement.htmlFor_Setter(this, value);
+  void set htmlFor(String value) => _blink.BlinkHTMLLabelElement.instance.htmlFor_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20593,7 +20593,7 @@
 
   @DomName('HTMLLegendElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLLegendElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLLegendElement.instance.form_Getter_(this);
 
 }
 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
@@ -20620,84 +20620,84 @@
   @DomName('HTMLLinkElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get crossOrigin => _blink.BlinkHTMLLinkElement.crossOrigin_Getter(this);
+  String get crossOrigin => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Getter_(this);
 
   @DomName('HTMLLinkElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  void set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.crossOrigin_Setter(this, value);
+  void set crossOrigin(String value) => _blink.BlinkHTMLLinkElement.instance.crossOrigin_Setter_(this, value);
 
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLLinkElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLLinkElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLLinkElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLLinkElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLLinkElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
-  String get href => _blink.BlinkHTMLLinkElement.href_Getter(this);
+  String get href => _blink.BlinkHTMLLinkElement.instance.href_Getter_(this);
 
   @DomName('HTMLLinkElement.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkHTMLLinkElement.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkHTMLLinkElement.instance.href_Setter_(this, value);
 
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
-  String get hreflang => _blink.BlinkHTMLLinkElement.hreflang_Getter(this);
+  String get hreflang => _blink.BlinkHTMLLinkElement.instance.hreflang_Getter_(this);
 
   @DomName('HTMLLinkElement.hreflang')
   @DocsEditable()
-  void set hreflang(String value) => _blink.BlinkHTMLLinkElement.hreflang_Setter(this, value);
+  void set hreflang(String value) => _blink.BlinkHTMLLinkElement.instance.hreflang_Setter_(this, value);
 
   @DomName('HTMLLinkElement.import')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/imports/index.html#interface-import
   @Experimental()
-  Document get import => _blink.BlinkHTMLLinkElement.import_Getter(this);
+  Document get import => _blink.BlinkHTMLLinkElement.instance.import_Getter_(this);
 
   @DomName('HTMLLinkElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLLinkElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLLinkElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLLinkElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLLinkElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLLinkElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLLinkElement.media_Getter(this);
+  String get media => _blink.BlinkHTMLLinkElement.instance.media_Getter_(this);
 
   @DomName('HTMLLinkElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLLinkElement.media_Setter(this, value);
+  void set media(String value) => _blink.BlinkHTMLLinkElement.instance.media_Setter_(this, value);
 
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
-  String get rel => _blink.BlinkHTMLLinkElement.rel_Getter(this);
+  String get rel => _blink.BlinkHTMLLinkElement.instance.rel_Getter_(this);
 
   @DomName('HTMLLinkElement.rel')
   @DocsEditable()
-  void set rel(String value) => _blink.BlinkHTMLLinkElement.rel_Setter(this, value);
+  void set rel(String value) => _blink.BlinkHTMLLinkElement.instance.rel_Setter_(this, value);
 
   @DomName('HTMLLinkElement.sheet')
   @DocsEditable()
-  StyleSheet get sheet => _blink.BlinkHTMLLinkElement.sheet_Getter(this);
+  StyleSheet get sheet => _blink.BlinkHTMLLinkElement.instance.sheet_Getter_(this);
 
   @DomName('HTMLLinkElement.sizes')
   @DocsEditable()
-  DomSettableTokenList get sizes => _blink.BlinkHTMLLinkElement.sizes_Getter(this);
+  DomSettableTokenList get sizes => _blink.BlinkHTMLLinkElement.instance.sizes_Getter_(this);
 
   @DomName('HTMLLinkElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLLinkElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLLinkElement.instance.type_Getter_(this);
 
   @DomName('HTMLLinkElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLLinkElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLLinkElement.instance.type_Setter_(this, value);
 
 
     /// Checks if HTML imports are supported on the current platform.
@@ -20722,13 +20722,13 @@
   @DomName('LocalCredential.LocalCredential')
   @DocsEditable()
   factory LocalCredential(String id, String name, String avatarURL, String password) {
-    return _blink.BlinkLocalCredential.constructorCallback_4(id, name, avatarURL, password);
+    return _blink.BlinkLocalCredential.instance.constructorCallback_4_(id, name, avatarURL, password);
   }
 
   @DomName('LocalCredential.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkLocalCredential.password_Getter(this);
+  String get password => _blink.BlinkLocalCredential.instance.password_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -20745,93 +20745,93 @@
   @DomName('Location.ancestorOrigins')
   @DocsEditable()
   @Experimental() // nonstandard
-  List<String> get ancestorOrigins => _blink.BlinkLocation.ancestorOrigins_Getter(this);
+  List<String> get ancestorOrigins => _blink.BlinkLocation.instance.ancestorOrigins_Getter_(this);
 
   @DomName('Location.hash')
   @DocsEditable()
-  String get hash => _blink.BlinkLocation.hash_Getter(this);
+  String get hash => _blink.BlinkLocation.instance.hash_Getter_(this);
 
   @DomName('Location.hash')
   @DocsEditable()
-  void set hash(String value) => _blink.BlinkLocation.hash_Setter(this, value);
+  void set hash(String value) => _blink.BlinkLocation.instance.hash_Setter_(this, value);
 
   @DomName('Location.host')
   @DocsEditable()
-  String get host => _blink.BlinkLocation.host_Getter(this);
+  String get host => _blink.BlinkLocation.instance.host_Getter_(this);
 
   @DomName('Location.host')
   @DocsEditable()
-  void set host(String value) => _blink.BlinkLocation.host_Setter(this, value);
+  void set host(String value) => _blink.BlinkLocation.instance.host_Setter_(this, value);
 
   @DomName('Location.hostname')
   @DocsEditable()
-  String get hostname => _blink.BlinkLocation.hostname_Getter(this);
+  String get hostname => _blink.BlinkLocation.instance.hostname_Getter_(this);
 
   @DomName('Location.hostname')
   @DocsEditable()
-  void set hostname(String value) => _blink.BlinkLocation.hostname_Setter(this, value);
+  void set hostname(String value) => _blink.BlinkLocation.instance.hostname_Setter_(this, value);
 
   @DomName('Location.href')
   @DocsEditable()
-  String get href => _blink.BlinkLocation.href_Getter(this);
+  String get href => _blink.BlinkLocation.instance.href_Getter_(this);
 
   @DomName('Location.href')
   @DocsEditable()
-  void set href(String value) => _blink.BlinkLocation.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkLocation.instance.href_Setter_(this, value);
 
   @DomName('Location.origin')
   @DocsEditable()
   // http://url.spec.whatwg.org/#urlutils Webkit Only
   @Experimental() // non-standard
-  String get origin => _blink.BlinkLocation.origin_Getter(this);
+  String get origin => _blink.BlinkLocation.instance.origin_Getter_(this);
 
   @DomName('Location.pathname')
   @DocsEditable()
-  String get pathname => _blink.BlinkLocation.pathname_Getter(this);
+  String get pathname => _blink.BlinkLocation.instance.pathname_Getter_(this);
 
   @DomName('Location.pathname')
   @DocsEditable()
-  void set pathname(String value) => _blink.BlinkLocation.pathname_Setter(this, value);
+  void set pathname(String value) => _blink.BlinkLocation.instance.pathname_Setter_(this, value);
 
   @DomName('Location.port')
   @DocsEditable()
-  String get port => _blink.BlinkLocation.port_Getter(this);
+  String get port => _blink.BlinkLocation.instance.port_Getter_(this);
 
   @DomName('Location.port')
   @DocsEditable()
-  void set port(String value) => _blink.BlinkLocation.port_Setter(this, value);
+  void set port(String value) => _blink.BlinkLocation.instance.port_Setter_(this, value);
 
   @DomName('Location.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkLocation.protocol_Getter(this);
+  String get protocol => _blink.BlinkLocation.instance.protocol_Getter_(this);
 
   @DomName('Location.protocol')
   @DocsEditable()
-  void set protocol(String value) => _blink.BlinkLocation.protocol_Setter(this, value);
+  void set protocol(String value) => _blink.BlinkLocation.instance.protocol_Setter_(this, value);
 
   @DomName('Location.search')
   @DocsEditable()
-  String get search => _blink.BlinkLocation.search_Getter(this);
+  String get search => _blink.BlinkLocation.instance.search_Getter_(this);
 
   @DomName('Location.search')
   @DocsEditable()
-  void set search(String value) => _blink.BlinkLocation.search_Setter(this, value);
+  void set search(String value) => _blink.BlinkLocation.instance.search_Setter_(this, value);
 
   @DomName('Location.assign')
   @DocsEditable()
-  void assign([String url]) => _blink.BlinkLocation.assign_Callback_1(this, url);
+  void assign([String url]) => _blink.BlinkLocation.instance.assign_Callback_1_(this, url);
 
   @DomName('Location.reload')
   @DocsEditable()
-  void reload() => _blink.BlinkLocation.reload_Callback(this);
+  void reload() => _blink.BlinkLocation.instance.reload_Callback_0_(this);
 
   @DomName('Location.replace')
   @DocsEditable()
-  void replace(String url) => _blink.BlinkLocation.replace_Callback_1(this, url);
+  void replace(String url) => _blink.BlinkLocation.instance.replace_Callback_1_(this, url);
 
   @DomName('Location.toString')
   @DocsEditable()
-  String toString() => _blink.BlinkLocation.toString_Callback(this);
+  String toString() => _blink.BlinkLocation.instance.toString_Callback_0_(this);
 
 
 }
@@ -20881,15 +20881,15 @@
 
   @DomName('HTMLMapElement.areas')
   @DocsEditable()
-  List<Node> get areas => _blink.BlinkHTMLMapElement.areas_Getter(this);
+  List<Node> get areas => _blink.BlinkHTMLMapElement.instance.areas_Getter_(this);
 
   @DomName('HTMLMapElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLMapElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLMapElement.instance.name_Getter_(this);
 
   @DomName('HTMLMapElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLMapElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLMapElement.instance.name_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -20910,84 +20910,84 @@
   @DomName('MediaController.MediaController')
   @DocsEditable()
   factory MediaController() {
-    return _blink.BlinkMediaController.constructorCallback();
+    return _blink.BlinkMediaController.instance.constructorCallback_0_();
   }
 
   @DomName('MediaController.buffered')
   @DocsEditable()
-  TimeRanges get buffered => _blink.BlinkMediaController.buffered_Getter(this);
+  TimeRanges get buffered => _blink.BlinkMediaController.instance.buffered_Getter_(this);
 
   @DomName('MediaController.currentTime')
   @DocsEditable()
-  num get currentTime => _blink.BlinkMediaController.currentTime_Getter(this);
+  num get currentTime => _blink.BlinkMediaController.instance.currentTime_Getter_(this);
 
   @DomName('MediaController.currentTime')
   @DocsEditable()
-  void set currentTime(num value) => _blink.BlinkMediaController.currentTime_Setter(this, value);
+  void set currentTime(num value) => _blink.BlinkMediaController.instance.currentTime_Setter_(this, value);
 
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
-  num get defaultPlaybackRate => _blink.BlinkMediaController.defaultPlaybackRate_Getter(this);
+  num get defaultPlaybackRate => _blink.BlinkMediaController.instance.defaultPlaybackRate_Getter_(this);
 
   @DomName('MediaController.defaultPlaybackRate')
   @DocsEditable()
-  void set defaultPlaybackRate(num value) => _blink.BlinkMediaController.defaultPlaybackRate_Setter(this, value);
+  void set defaultPlaybackRate(num value) => _blink.BlinkMediaController.instance.defaultPlaybackRate_Setter_(this, value);
 
   @DomName('MediaController.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkMediaController.duration_Getter(this);
+  double get duration => _blink.BlinkMediaController.instance.duration_Getter_(this);
 
   @DomName('MediaController.muted')
   @DocsEditable()
-  bool get muted => _blink.BlinkMediaController.muted_Getter(this);
+  bool get muted => _blink.BlinkMediaController.instance.muted_Getter_(this);
 
   @DomName('MediaController.muted')
   @DocsEditable()
-  void set muted(bool value) => _blink.BlinkMediaController.muted_Setter(this, value);
+  void set muted(bool value) => _blink.BlinkMediaController.instance.muted_Setter_(this, value);
 
   @DomName('MediaController.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkMediaController.paused_Getter(this);
+  bool get paused => _blink.BlinkMediaController.instance.paused_Getter_(this);
 
   @DomName('MediaController.playbackRate')
   @DocsEditable()
-  num get playbackRate => _blink.BlinkMediaController.playbackRate_Getter(this);
+  num get playbackRate => _blink.BlinkMediaController.instance.playbackRate_Getter_(this);
 
   @DomName('MediaController.playbackRate')
   @DocsEditable()
-  void set playbackRate(num value) => _blink.BlinkMediaController.playbackRate_Setter(this, value);
+  void set playbackRate(num value) => _blink.BlinkMediaController.instance.playbackRate_Setter_(this, value);
 
   @DomName('MediaController.playbackState')
   @DocsEditable()
-  String get playbackState => _blink.BlinkMediaController.playbackState_Getter(this);
+  String get playbackState => _blink.BlinkMediaController.instance.playbackState_Getter_(this);
 
   @DomName('MediaController.played')
   @DocsEditable()
-  TimeRanges get played => _blink.BlinkMediaController.played_Getter(this);
+  TimeRanges get played => _blink.BlinkMediaController.instance.played_Getter_(this);
 
   @DomName('MediaController.seekable')
   @DocsEditable()
-  TimeRanges get seekable => _blink.BlinkMediaController.seekable_Getter(this);
+  TimeRanges get seekable => _blink.BlinkMediaController.instance.seekable_Getter_(this);
 
   @DomName('MediaController.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkMediaController.volume_Getter(this);
+  num get volume => _blink.BlinkMediaController.instance.volume_Getter_(this);
 
   @DomName('MediaController.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkMediaController.volume_Setter(this, value);
+  void set volume(num value) => _blink.BlinkMediaController.instance.volume_Setter_(this, value);
 
   @DomName('MediaController.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkMediaController.pause_Callback(this);
+  void pause() => _blink.BlinkMediaController.instance.pause_Callback_0_(this);
 
   @DomName('MediaController.play')
   @DocsEditable()
-  void play() => _blink.BlinkMediaController.play_Callback(this);
+  void play() => _blink.BlinkMediaController.instance.play_Callback_0_(this);
 
   @DomName('MediaController.unpause')
   @DocsEditable()
-  void unpause() => _blink.BlinkMediaController.unpause_Callback(this);
+  void unpause() => _blink.BlinkMediaController.instance.unpause_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21007,22 +21007,22 @@
   @DomName('MediaDeviceInfo.deviceId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get deviceId => _blink.BlinkMediaDeviceInfo.deviceId_Getter(this);
+  String get deviceId => _blink.BlinkMediaDeviceInfo.instance.deviceId_Getter_(this);
 
   @DomName('MediaDeviceInfo.groupId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get groupId => _blink.BlinkMediaDeviceInfo.groupId_Getter(this);
+  String get groupId => _blink.BlinkMediaDeviceInfo.instance.groupId_Getter_(this);
 
   @DomName('MediaDeviceInfo.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkMediaDeviceInfo.kind_Getter(this);
+  String get kind => _blink.BlinkMediaDeviceInfo.instance.kind_Getter_(this);
 
   @DomName('MediaDeviceInfo.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkMediaDeviceInfo.label_Getter(this);
+  String get label => _blink.BlinkMediaDeviceInfo.instance.label_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21150,192 +21150,192 @@
   @DomName('HTMLMediaElement.audioTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  AudioTrackList get audioTracks => _blink.BlinkHTMLMediaElement.audioTracks_Getter(this);
+  AudioTrackList get audioTracks => _blink.BlinkHTMLMediaElement.instance.audioTracks_Getter_(this);
 
   @DomName('HTMLMediaElement.autoplay')
   @DocsEditable()
-  bool get autoplay => _blink.BlinkHTMLMediaElement.autoplay_Getter(this);
+  bool get autoplay => _blink.BlinkHTMLMediaElement.instance.autoplay_Getter_(this);
 
   @DomName('HTMLMediaElement.autoplay')
   @DocsEditable()
-  void set autoplay(bool value) => _blink.BlinkHTMLMediaElement.autoplay_Setter(this, value);
+  void set autoplay(bool value) => _blink.BlinkHTMLMediaElement.instance.autoplay_Setter_(this, value);
 
   @DomName('HTMLMediaElement.buffered')
   @DocsEditable()
-  TimeRanges get buffered => _blink.BlinkHTMLMediaElement.buffered_Getter(this);
+  TimeRanges get buffered => _blink.BlinkHTMLMediaElement.instance.buffered_Getter_(this);
 
   @DomName('HTMLMediaElement.controller')
   @DocsEditable()
-  MediaController get controller => _blink.BlinkHTMLMediaElement.controller_Getter(this);
+  MediaController get controller => _blink.BlinkHTMLMediaElement.instance.controller_Getter_(this);
 
   @DomName('HTMLMediaElement.controller')
   @DocsEditable()
-  void set controller(MediaController value) => _blink.BlinkHTMLMediaElement.controller_Setter(this, value);
+  void set controller(MediaController value) => _blink.BlinkHTMLMediaElement.instance.controller_Setter_(this, value);
 
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
-  bool get controls => _blink.BlinkHTMLMediaElement.controls_Getter(this);
+  bool get controls => _blink.BlinkHTMLMediaElement.instance.controls_Getter_(this);
 
   @DomName('HTMLMediaElement.controls')
   @DocsEditable()
-  void set controls(bool value) => _blink.BlinkHTMLMediaElement.controls_Setter(this, value);
+  void set controls(bool value) => _blink.BlinkHTMLMediaElement.instance.controls_Setter_(this, value);
 
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get crossOrigin => _blink.BlinkHTMLMediaElement.crossOrigin_Getter(this);
+  String get crossOrigin => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Getter_(this);
 
   @DomName('HTMLMediaElement.crossOrigin')
   @DocsEditable()
   @Experimental() // untriaged
-  void set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.crossOrigin_Setter(this, value);
+  void set crossOrigin(String value) => _blink.BlinkHTMLMediaElement.instance.crossOrigin_Setter_(this, value);
 
   @DomName('HTMLMediaElement.currentSrc')
   @DocsEditable()
-  String get currentSrc => _blink.BlinkHTMLMediaElement.currentSrc_Getter(this);
+  String get currentSrc => _blink.BlinkHTMLMediaElement.instance.currentSrc_Getter_(this);
 
   @DomName('HTMLMediaElement.currentTime')
   @DocsEditable()
-  num get currentTime => _blink.BlinkHTMLMediaElement.currentTime_Getter(this);
+  num get currentTime => _blink.BlinkHTMLMediaElement.instance.currentTime_Getter_(this);
 
   @DomName('HTMLMediaElement.currentTime')
   @DocsEditable()
-  void set currentTime(num value) => _blink.BlinkHTMLMediaElement.currentTime_Setter(this, value);
+  void set currentTime(num value) => _blink.BlinkHTMLMediaElement.instance.currentTime_Setter_(this, value);
 
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
-  bool get defaultMuted => _blink.BlinkHTMLMediaElement.defaultMuted_Getter(this);
+  bool get defaultMuted => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Getter_(this);
 
   @DomName('HTMLMediaElement.defaultMuted')
   @DocsEditable()
-  void set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.defaultMuted_Setter(this, value);
+  void set defaultMuted(bool value) => _blink.BlinkHTMLMediaElement.instance.defaultMuted_Setter_(this, value);
 
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
-  num get defaultPlaybackRate => _blink.BlinkHTMLMediaElement.defaultPlaybackRate_Getter(this);
+  num get defaultPlaybackRate => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Getter_(this);
 
   @DomName('HTMLMediaElement.defaultPlaybackRate')
   @DocsEditable()
-  void set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.defaultPlaybackRate_Setter(this, value);
+  void set defaultPlaybackRate(num value) => _blink.BlinkHTMLMediaElement.instance.defaultPlaybackRate_Setter_(this, value);
 
   @DomName('HTMLMediaElement.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkHTMLMediaElement.duration_Getter(this);
+  double get duration => _blink.BlinkHTMLMediaElement.instance.duration_Getter_(this);
 
   @DomName('HTMLMediaElement.ended')
   @DocsEditable()
-  bool get ended => _blink.BlinkHTMLMediaElement.ended_Getter(this);
+  bool get ended => _blink.BlinkHTMLMediaElement.instance.ended_Getter_(this);
 
   @DomName('HTMLMediaElement.error')
   @DocsEditable()
-  MediaError get error => _blink.BlinkHTMLMediaElement.error_Getter(this);
+  MediaError get error => _blink.BlinkHTMLMediaElement.instance.error_Getter_(this);
 
   @DomName('HTMLMediaElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLMediaElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLMediaElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLMediaElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLMediaElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLMediaElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
-  bool get loop => _blink.BlinkHTMLMediaElement.loop_Getter(this);
+  bool get loop => _blink.BlinkHTMLMediaElement.instance.loop_Getter_(this);
 
   @DomName('HTMLMediaElement.loop')
   @DocsEditable()
-  void set loop(bool value) => _blink.BlinkHTMLMediaElement.loop_Setter(this, value);
+  void set loop(bool value) => _blink.BlinkHTMLMediaElement.instance.loop_Setter_(this, value);
 
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
-  String get mediaGroup => _blink.BlinkHTMLMediaElement.mediaGroup_Getter(this);
+  String get mediaGroup => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Getter_(this);
 
   @DomName('HTMLMediaElement.mediaGroup')
   @DocsEditable()
-  void set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.mediaGroup_Setter(this, value);
+  void set mediaGroup(String value) => _blink.BlinkHTMLMediaElement.instance.mediaGroup_Setter_(this, value);
 
   @DomName('HTMLMediaElement.mediaKeys')
   @DocsEditable()
   // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html
   @Experimental()
-  MediaKeys get mediaKeys => _blink.BlinkHTMLMediaElement.mediaKeys_Getter(this);
+  MediaKeys get mediaKeys => _blink.BlinkHTMLMediaElement.instance.mediaKeys_Getter_(this);
 
   @DomName('HTMLMediaElement.muted')
   @DocsEditable()
-  bool get muted => _blink.BlinkHTMLMediaElement.muted_Getter(this);
+  bool get muted => _blink.BlinkHTMLMediaElement.instance.muted_Getter_(this);
 
   @DomName('HTMLMediaElement.muted')
   @DocsEditable()
-  void set muted(bool value) => _blink.BlinkHTMLMediaElement.muted_Setter(this, value);
+  void set muted(bool value) => _blink.BlinkHTMLMediaElement.instance.muted_Setter_(this, value);
 
   @DomName('HTMLMediaElement.networkState')
   @DocsEditable()
-  int get networkState => _blink.BlinkHTMLMediaElement.networkState_Getter(this);
+  int get networkState => _blink.BlinkHTMLMediaElement.instance.networkState_Getter_(this);
 
   @DomName('HTMLMediaElement.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkHTMLMediaElement.paused_Getter(this);
+  bool get paused => _blink.BlinkHTMLMediaElement.instance.paused_Getter_(this);
 
   @DomName('HTMLMediaElement.playbackRate')
   @DocsEditable()
-  num get playbackRate => _blink.BlinkHTMLMediaElement.playbackRate_Getter(this);
+  num get playbackRate => _blink.BlinkHTMLMediaElement.instance.playbackRate_Getter_(this);
 
   @DomName('HTMLMediaElement.playbackRate')
   @DocsEditable()
-  void set playbackRate(num value) => _blink.BlinkHTMLMediaElement.playbackRate_Setter(this, value);
+  void set playbackRate(num value) => _blink.BlinkHTMLMediaElement.instance.playbackRate_Setter_(this, value);
 
   @DomName('HTMLMediaElement.played')
   @DocsEditable()
-  TimeRanges get played => _blink.BlinkHTMLMediaElement.played_Getter(this);
+  TimeRanges get played => _blink.BlinkHTMLMediaElement.instance.played_Getter_(this);
 
   @DomName('HTMLMediaElement.preload')
   @DocsEditable()
-  String get preload => _blink.BlinkHTMLMediaElement.preload_Getter(this);
+  String get preload => _blink.BlinkHTMLMediaElement.instance.preload_Getter_(this);
 
   @DomName('HTMLMediaElement.preload')
   @DocsEditable()
-  void set preload(String value) => _blink.BlinkHTMLMediaElement.preload_Setter(this, value);
+  void set preload(String value) => _blink.BlinkHTMLMediaElement.instance.preload_Setter_(this, value);
 
   @DomName('HTMLMediaElement.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkHTMLMediaElement.readyState_Getter(this);
+  int get readyState => _blink.BlinkHTMLMediaElement.instance.readyState_Getter_(this);
 
   @DomName('HTMLMediaElement.seekable')
   @DocsEditable()
-  TimeRanges get seekable => _blink.BlinkHTMLMediaElement.seekable_Getter(this);
+  TimeRanges get seekable => _blink.BlinkHTMLMediaElement.instance.seekable_Getter_(this);
 
   @DomName('HTMLMediaElement.seeking')
   @DocsEditable()
-  bool get seeking => _blink.BlinkHTMLMediaElement.seeking_Getter(this);
+  bool get seeking => _blink.BlinkHTMLMediaElement.instance.seeking_Getter_(this);
 
   @DomName('HTMLMediaElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLMediaElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLMediaElement.instance.src_Getter_(this);
 
   @DomName('HTMLMediaElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLMediaElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLMediaElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLMediaElement.textTracks')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-texttracks
   @Experimental()
-  TextTrackList get textTracks => _blink.BlinkHTMLMediaElement.textTracks_Getter(this);
+  TextTrackList get textTracks => _blink.BlinkHTMLMediaElement.instance.textTracks_Getter_(this);
 
   @DomName('HTMLMediaElement.videoTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrackList get videoTracks => _blink.BlinkHTMLMediaElement.videoTracks_Getter(this);
+  VideoTrackList get videoTracks => _blink.BlinkHTMLMediaElement.instance.videoTracks_Getter_(this);
 
   @DomName('HTMLMediaElement.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkHTMLMediaElement.volume_Getter(this);
+  num get volume => _blink.BlinkHTMLMediaElement.instance.volume_Getter_(this);
 
   @DomName('HTMLMediaElement.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkHTMLMediaElement.volume_Setter(this, value);
+  void set volume(num value) => _blink.BlinkHTMLMediaElement.instance.volume_Setter_(this, value);
 
   @DomName('HTMLMediaElement.webkitAudioDecodedByteCount')
   @DocsEditable()
@@ -21343,7 +21343,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // nonstandard
-  int get audioDecodedByteCount => _blink.BlinkHTMLMediaElement.webkitAudioDecodedByteCount_Getter(this);
+  int get audioDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitAudioDecodedByteCount_Getter_(this);
 
   @DomName('HTMLMediaElement.webkitVideoDecodedByteCount')
   @DocsEditable()
@@ -21351,48 +21351,48 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // nonstandard
-  int get videoDecodedByteCount => _blink.BlinkHTMLMediaElement.webkitVideoDecodedByteCount_Getter(this);
+  int get videoDecodedByteCount => _blink.BlinkHTMLMediaElement.instance.webkitVideoDecodedByteCount_Getter_(this);
 
   TextTrack addTextTrack(String kind, [String label, String language]) {
     if (language != null) {
-      return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_3(this, kind, label, language);
+      return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_3_(this, kind, label, language);
     }
     if (label != null) {
-      return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_2(this, kind, label);
+      return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_2_(this, kind, label);
     }
-    return _blink.BlinkHTMLMediaElement.addTextTrack_Callback_1(this, kind);
+    return _blink.BlinkHTMLMediaElement.instance.addTextTrack_Callback_1_(this, kind);
   }
 
   String canPlayType(String type, [String keySystem]) {
     if (keySystem != null) {
-      return _blink.BlinkHTMLMediaElement.canPlayType_Callback_2(this, type, keySystem);
+      return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_2_(this, type, keySystem);
     }
-    return _blink.BlinkHTMLMediaElement.canPlayType_Callback_1(this, type);
+    return _blink.BlinkHTMLMediaElement.instance.canPlayType_Callback_1_(this, type);
   }
 
   @DomName('HTMLMediaElement.load')
   @DocsEditable()
-  void load() => _blink.BlinkHTMLMediaElement.load_Callback(this);
+  void load() => _blink.BlinkHTMLMediaElement.instance.load_Callback_0_(this);
 
   @DomName('HTMLMediaElement.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkHTMLMediaElement.pause_Callback(this);
+  void pause() => _blink.BlinkHTMLMediaElement.instance.pause_Callback_0_(this);
 
   @DomName('HTMLMediaElement.play')
   @DocsEditable()
-  void play() => _blink.BlinkHTMLMediaElement.play_Callback(this);
+  void play() => _blink.BlinkHTMLMediaElement.instance.play_Callback_0_(this);
 
   @DomName('HTMLMediaElement.setMediaKeys')
   @DocsEditable()
   @Experimental() // untriaged
-  void setMediaKeys(MediaKeys mediaKeys) => _blink.BlinkHTMLMediaElement.setMediaKeys_Callback_1(this, mediaKeys);
+  void setMediaKeys(MediaKeys mediaKeys) => _blink.BlinkHTMLMediaElement.instance.setMediaKeys_Callback_1_(this, mediaKeys);
 
   void addKey(String keySystem, Uint8List key, [Uint8List initData, String sessionId]) {
     if (initData != null) {
-      _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_4(this, keySystem, key, initData, sessionId);
+      _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_4_(this, keySystem, key, initData, sessionId);
       return;
     }
-    _blink.BlinkHTMLMediaElement.webkitAddKey_Callback_2(this, keySystem, key);
+    _blink.BlinkHTMLMediaElement.instance.webkitAddKey_Callback_2_(this, keySystem, key);
     return;
   }
 
@@ -21402,14 +21402,14 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#extensions
-  void cancelKeyRequest(String keySystem, String sessionId) => _blink.BlinkHTMLMediaElement.webkitCancelKeyRequest_Callback_2(this, keySystem, sessionId);
+  void cancelKeyRequest(String keySystem, String sessionId) => _blink.BlinkHTMLMediaElement.instance.webkitCancelKeyRequest_Callback_2_(this, keySystem, sessionId);
 
   void generateKeyRequest(String keySystem, [Uint8List initData]) {
     if (initData != null) {
-      _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_2(this, keySystem, initData);
+      _blink.BlinkHTMLMediaElement.instance.webkitGenerateKeyRequest_Callback_2_(this, keySystem, initData);
       return;
     }
-    _blink.BlinkHTMLMediaElement.webkitGenerateKeyRequest_Callback_1(this, keySystem);
+    _blink.BlinkHTMLMediaElement.instance.webkitGenerateKeyRequest_Callback_1_(this, keySystem);
     return;
   }
 
@@ -21480,7 +21480,7 @@
 
   @DomName('MediaError.code')
   @DocsEditable()
-  int get code => _blink.BlinkMediaError.code_Getter(this);
+  int get code => _blink.BlinkMediaError.instance.code_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21524,12 +21524,12 @@
 
   @DomName('MediaKeyError.code')
   @DocsEditable()
-  int get code => _blink.BlinkMediaKeyError.code_Getter(this);
+  int get code => _blink.BlinkMediaKeyError.instance.code_Getter_(this);
 
   @DomName('MediaKeyError.systemCode')
   @DocsEditable()
   @Experimental() // non-standard
-  int get systemCode => _blink.BlinkMediaKeyError.systemCode_Getter(this);
+  int get systemCode => _blink.BlinkMediaKeyError.instance.systemCode_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21549,31 +21549,31 @@
 
   @DomName('MediaKeyEvent.defaultURL')
   @DocsEditable()
-  String get defaultUrl => _blink.BlinkMediaKeyEvent.defaultURL_Getter(this);
+  String get defaultUrl => _blink.BlinkMediaKeyEvent.instance.defaultURL_Getter_(this);
 
   @DomName('MediaKeyEvent.errorCode')
   @DocsEditable()
-  MediaKeyError get errorCode => _blink.BlinkMediaKeyEvent.errorCode_Getter(this);
+  MediaKeyError get errorCode => _blink.BlinkMediaKeyEvent.instance.errorCode_Getter_(this);
 
   @DomName('MediaKeyEvent.initData')
   @DocsEditable()
-  Uint8List get initData => _blink.BlinkMediaKeyEvent.initData_Getter(this);
+  Uint8List get initData => _blink.BlinkMediaKeyEvent.instance.initData_Getter_(this);
 
   @DomName('MediaKeyEvent.keySystem')
   @DocsEditable()
-  String get keySystem => _blink.BlinkMediaKeyEvent.keySystem_Getter(this);
+  String get keySystem => _blink.BlinkMediaKeyEvent.instance.keySystem_Getter_(this);
 
   @DomName('MediaKeyEvent.message')
   @DocsEditable()
-  Uint8List get message => _blink.BlinkMediaKeyEvent.message_Getter(this);
+  Uint8List get message => _blink.BlinkMediaKeyEvent.instance.message_Getter_(this);
 
   @DomName('MediaKeyEvent.sessionId')
   @DocsEditable()
-  String get sessionId => _blink.BlinkMediaKeyEvent.sessionId_Getter(this);
+  String get sessionId => _blink.BlinkMediaKeyEvent.instance.sessionId_Getter_(this);
 
   @DomName('MediaKeyEvent.systemCode')
   @DocsEditable()
-  int get systemCode => _blink.BlinkMediaKeyEvent.systemCode_Getter(this);
+  int get systemCode => _blink.BlinkMediaKeyEvent.instance.systemCode_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21593,11 +21593,11 @@
 
   @DomName('MediaKeyMessageEvent.destinationURL')
   @DocsEditable()
-  String get destinationUrl => _blink.BlinkMediaKeyMessageEvent.destinationURL_Getter(this);
+  String get destinationUrl => _blink.BlinkMediaKeyMessageEvent.instance.destinationURL_Getter_(this);
 
   @DomName('MediaKeyMessageEvent.message')
   @DocsEditable()
-  ByteBuffer get message => _blink.BlinkMediaKeyMessageEvent.message_Getter(this);
+  ByteBuffer get message => _blink.BlinkMediaKeyMessageEvent.instance.message_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21618,11 +21618,11 @@
   @DomName('MediaKeyNeededEvent.contentType')
   @DocsEditable()
   @Experimental() // untriaged
-  String get contentType => _blink.BlinkMediaKeyNeededEvent.contentType_Getter(this);
+  String get contentType => _blink.BlinkMediaKeyNeededEvent.instance.contentType_Getter_(this);
 
   @DomName('MediaKeyNeededEvent.initData')
   @DocsEditable()
-  Uint8List get initData => _blink.BlinkMediaKeyNeededEvent.initData_Getter(this);
+  Uint8List get initData => _blink.BlinkMediaKeyNeededEvent.instance.initData_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21643,31 +21643,31 @@
   @DomName('MediaKeySession.closed')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get closed => _blink.BlinkMediaKeySession.closed_Getter(this);
+  Future get closed => _blink.BlinkMediaKeySession.instance.closed_Getter_(this);
 
   @DomName('MediaKeySession.error')
   @DocsEditable()
-  MediaKeyError get error => _blink.BlinkMediaKeySession.error_Getter(this);
+  MediaKeyError get error => _blink.BlinkMediaKeySession.instance.error_Getter_(this);
 
   @DomName('MediaKeySession.keySystem')
   @DocsEditable()
-  String get keySystem => _blink.BlinkMediaKeySession.keySystem_Getter(this);
+  String get keySystem => _blink.BlinkMediaKeySession.instance.keySystem_Getter_(this);
 
   @DomName('MediaKeySession.sessionId')
   @DocsEditable()
-  String get sessionId => _blink.BlinkMediaKeySession.sessionId_Getter(this);
+  String get sessionId => _blink.BlinkMediaKeySession.instance.sessionId_Getter_(this);
 
   @DomName('MediaKeySession.release')
   @DocsEditable()
   @Experimental() // untriaged
-  Future release() => _blink.BlinkMediaKeySession.release_Callback(this);
+  Future release() => _blink.BlinkMediaKeySession.instance.release_Callback_0_(this);
 
   Future _update(response) {
     if ((response is TypedData)) {
-      return _blink.BlinkMediaKeySession.update_Callback_1(this, response);
+      return _blink.BlinkMediaKeySession.instance.update_Callback_1_(this, response);
     }
     if ((response is ByteBuffer)) {
-      return _blink.BlinkMediaKeySession.update_Callback_1(this, response);
+      return _blink.BlinkMediaKeySession.instance.update_Callback_1_(this, response);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -21690,25 +21690,25 @@
 
   @DomName('MediaKeys.keySystem')
   @DocsEditable()
-  String get keySystem => _blink.BlinkMediaKeys.keySystem_Getter(this);
+  String get keySystem => _blink.BlinkMediaKeys.instance.keySystem_Getter_(this);
 
   @DomName('MediaKeys.create')
   @DocsEditable()
   @Experimental() // untriaged
-  static Future create(String keySystem) => _blink.BlinkMediaKeys.create_Callback_1(keySystem);
+  static Future create(String keySystem) => _blink.BlinkMediaKeys.instance.create_Callback_1_(keySystem);
 
   Future _createSession(String initDataType, initData, [String sessionType]) {
     if ((initData is TypedData) && (initDataType is String) && sessionType == null) {
-      return _blink.BlinkMediaKeys.createSession_Callback_2(this, initDataType, initData);
+      return _blink.BlinkMediaKeys.instance.createSession_Callback_2_(this, initDataType, initData);
     }
     if ((sessionType is String || sessionType == null) && (initData is TypedData) && (initDataType is String)) {
-      return _blink.BlinkMediaKeys.createSession_Callback_3(this, initDataType, initData, sessionType);
+      return _blink.BlinkMediaKeys.instance.createSession_Callback_3_(this, initDataType, initData, sessionType);
     }
     if ((initData is ByteBuffer) && (initDataType is String) && sessionType == null) {
-      return _blink.BlinkMediaKeys.createSession_Callback_2(this, initDataType, initData);
+      return _blink.BlinkMediaKeys.instance.createSession_Callback_2_(this, initDataType, initData);
     }
     if ((sessionType is String || sessionType == null) && (initData is ByteBuffer) && (initDataType is String)) {
-      return _blink.BlinkMediaKeys.createSession_Callback_3(this, initDataType, initData, sessionType);
+      return _blink.BlinkMediaKeys.instance.createSession_Callback_3_(this, initDataType, initData, sessionType);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -21716,7 +21716,7 @@
   @DomName('MediaKeys.isTypeSupported')
   @DocsEditable()
   @Experimental() // untriaged
-  static bool isTypeSupported(String keySystem, String contentType) => _blink.BlinkMediaKeys.isTypeSupported_Callback_2(keySystem, contentType);
+  static bool isTypeSupported(String keySystem, String contentType) => _blink.BlinkMediaKeys.instance.isTypeSupported_Callback_2_(keySystem, contentType);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21735,27 +21735,27 @@
 
   @DomName('MediaList.length')
   @DocsEditable()
-  int get length => _blink.BlinkMediaList.length_Getter(this);
+  int get length => _blink.BlinkMediaList.instance.length_Getter_(this);
 
   @DomName('MediaList.mediaText')
   @DocsEditable()
-  String get mediaText => _blink.BlinkMediaList.mediaText_Getter(this);
+  String get mediaText => _blink.BlinkMediaList.instance.mediaText_Getter_(this);
 
   @DomName('MediaList.mediaText')
   @DocsEditable()
-  void set mediaText(String value) => _blink.BlinkMediaList.mediaText_Setter(this, value);
+  void set mediaText(String value) => _blink.BlinkMediaList.instance.mediaText_Setter_(this, value);
 
   @DomName('MediaList.appendMedium')
   @DocsEditable()
-  void appendMedium(String newMedium) => _blink.BlinkMediaList.appendMedium_Callback_1(this, newMedium);
+  void appendMedium(String newMedium) => _blink.BlinkMediaList.instance.appendMedium_Callback_1_(this, newMedium);
 
   @DomName('MediaList.deleteMedium')
   @DocsEditable()
-  void deleteMedium(String oldMedium) => _blink.BlinkMediaList.deleteMedium_Callback_1(this, oldMedium);
+  void deleteMedium(String oldMedium) => _blink.BlinkMediaList.instance.deleteMedium_Callback_1_(this, oldMedium);
 
   @DomName('MediaList.item')
   @DocsEditable()
-  String item(int index) => _blink.BlinkMediaList.item_Callback_1(this, index);
+  String item(int index) => _blink.BlinkMediaList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21774,11 +21774,11 @@
 
   @DomName('MediaQueryList.matches')
   @DocsEditable()
-  bool get matches => _blink.BlinkMediaQueryList.matches_Getter(this);
+  bool get matches => _blink.BlinkMediaQueryList.instance.matches_Getter_(this);
 
   @DomName('MediaQueryList.media')
   @DocsEditable()
-  String get media => _blink.BlinkMediaQueryList.media_Getter(this);
+  String get media => _blink.BlinkMediaQueryList.instance.media_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -21799,49 +21799,49 @@
   @DomName('MediaSource.MediaSource')
   @DocsEditable()
   factory MediaSource() {
-    return _blink.BlinkMediaSource.constructorCallback();
+    return _blink.BlinkMediaSource.instance.constructorCallback_0_();
   }
 
   @DomName('MediaSource.activeSourceBuffers')
   @DocsEditable()
-  SourceBufferList get activeSourceBuffers => _blink.BlinkMediaSource.activeSourceBuffers_Getter(this);
+  SourceBufferList get activeSourceBuffers => _blink.BlinkMediaSource.instance.activeSourceBuffers_Getter_(this);
 
   @DomName('MediaSource.duration')
   @DocsEditable()
-  num get duration => _blink.BlinkMediaSource.duration_Getter(this);
+  num get duration => _blink.BlinkMediaSource.instance.duration_Getter_(this);
 
   @DomName('MediaSource.duration')
   @DocsEditable()
-  void set duration(num value) => _blink.BlinkMediaSource.duration_Setter(this, value);
+  void set duration(num value) => _blink.BlinkMediaSource.instance.duration_Setter_(this, value);
 
   @DomName('MediaSource.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkMediaSource.readyState_Getter(this);
+  String get readyState => _blink.BlinkMediaSource.instance.readyState_Getter_(this);
 
   @DomName('MediaSource.sourceBuffers')
   @DocsEditable()
-  SourceBufferList get sourceBuffers => _blink.BlinkMediaSource.sourceBuffers_Getter(this);
+  SourceBufferList get sourceBuffers => _blink.BlinkMediaSource.instance.sourceBuffers_Getter_(this);
 
   @DomName('MediaSource.addSourceBuffer')
   @DocsEditable()
-  SourceBuffer addSourceBuffer(String type) => _blink.BlinkMediaSource.addSourceBuffer_Callback_1(this, type);
+  SourceBuffer addSourceBuffer(String type) => _blink.BlinkMediaSource.instance.addSourceBuffer_Callback_1_(this, type);
 
   void endOfStream([String error]) {
     if (error != null) {
-      _blink.BlinkMediaSource.endOfStream_Callback_1(this, error);
+      _blink.BlinkMediaSource.instance.endOfStream_Callback_1_(this, error);
       return;
     }
-    _blink.BlinkMediaSource.endOfStream_Callback(this);
+    _blink.BlinkMediaSource.instance.endOfStream_Callback_0_(this);
     return;
   }
 
   @DomName('MediaSource.isTypeSupported')
   @DocsEditable()
-  static bool isTypeSupported(String type) => _blink.BlinkMediaSource.isTypeSupported_Callback_1(type);
+  static bool isTypeSupported(String type) => _blink.BlinkMediaSource.instance.isTypeSupported_Callback_1_(type);
 
   @DomName('MediaSource.removeSourceBuffer')
   @DocsEditable()
-  void removeSourceBuffer(SourceBuffer buffer) => _blink.BlinkMediaSource.removeSourceBuffer_Callback_1(this, buffer);
+  void removeSourceBuffer(SourceBuffer buffer) => _blink.BlinkMediaSource.instance.removeSourceBuffer_Callback_1_(this, buffer);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -21891,63 +21891,63 @@
   @DocsEditable()
   factory MediaStream([stream_OR_tracks]) {
     if (stream_OR_tracks == null) {
-      return _blink.BlinkMediaStream.constructorCallback();
+      return _blink.BlinkMediaStream.instance.constructorCallback_0_();
     }
     if ((stream_OR_tracks is MediaStream || stream_OR_tracks == null)) {
-      return _blink.BlinkMediaStream.constructorCallback_1(stream_OR_tracks);
+      return _blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks);
     }
     if ((stream_OR_tracks is List<MediaStreamTrack> || stream_OR_tracks == null)) {
-      return _blink.BlinkMediaStream.constructorCallback_1(stream_OR_tracks);
+      return _blink.BlinkMediaStream.instance.constructorCallback_1_(stream_OR_tracks);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('MediaStream.ended')
   @DocsEditable()
-  bool get ended => _blink.BlinkMediaStream.ended_Getter(this);
+  bool get ended => _blink.BlinkMediaStream.instance.ended_Getter_(this);
 
   @DomName('MediaStream.id')
   @DocsEditable()
-  String get id => _blink.BlinkMediaStream.id_Getter(this);
+  String get id => _blink.BlinkMediaStream.instance.id_Getter_(this);
 
   @DomName('MediaStream.label')
   @DocsEditable()
   @Experimental() // non-standard
-  String get label => _blink.BlinkMediaStream.label_Getter(this);
+  String get label => _blink.BlinkMediaStream.instance.label_Getter_(this);
 
   @DomName('MediaStream.addTrack')
   @DocsEditable()
-  void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.addTrack_Callback_1(this, track);
+  void addTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.addTrack_Callback_1_(this, track);
 
   @DomName('MediaStream.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaStream clone() => _blink.BlinkMediaStream.clone_Callback(this);
+  MediaStream clone() => _blink.BlinkMediaStream.instance.clone_Callback_0_(this);
 
   @DomName('MediaStream.getAudioTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getAudioTracks() => _blink.BlinkMediaStream.getAudioTracks_Callback(this);
+  List<MediaStreamTrack> getAudioTracks() => _blink.BlinkMediaStream.instance.getAudioTracks_Callback_0_(this);
 
   @DomName('MediaStream.getTrackById')
   @DocsEditable()
-  MediaStreamTrack getTrackById(String trackId) => _blink.BlinkMediaStream.getTrackById_Callback_1(this, trackId);
+  MediaStreamTrack getTrackById(String trackId) => _blink.BlinkMediaStream.instance.getTrackById_Callback_1_(this, trackId);
 
   @DomName('MediaStream.getTracks')
   @DocsEditable()
   @Experimental() // untriaged
-  List<MediaStreamTrack> getTracks() => _blink.BlinkMediaStream.getTracks_Callback(this);
+  List<MediaStreamTrack> getTracks() => _blink.BlinkMediaStream.instance.getTracks_Callback_0_(this);
 
   @DomName('MediaStream.getVideoTracks')
   @DocsEditable()
-  List<MediaStreamTrack> getVideoTracks() => _blink.BlinkMediaStream.getVideoTracks_Callback(this);
+  List<MediaStreamTrack> getVideoTracks() => _blink.BlinkMediaStream.instance.getVideoTracks_Callback_0_(this);
 
   @DomName('MediaStream.removeTrack')
   @DocsEditable()
-  void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.removeTrack_Callback_1(this, track);
+  void removeTrack(MediaStreamTrack track) => _blink.BlinkMediaStream.instance.removeTrack_Callback_1_(this, track);
 
   @DomName('MediaStream.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkMediaStream.stop_Callback(this);
+  void stop() => _blink.BlinkMediaStream.instance.stop_Callback_0_(this);
 
   /// Stream of `addtrack` events handled by this [MediaStream].
   @DomName('MediaStream.onaddtrack')
@@ -21995,7 +21995,7 @@
 
   @DomName('MediaStreamEvent.stream')
   @DocsEditable()
-  MediaStream get stream => _blink.BlinkMediaStreamEvent.stream_Getter(this);
+  MediaStream get stream => _blink.BlinkMediaStreamEvent.instance.stream_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22046,42 +22046,42 @@
 
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
-  bool get enabled => _blink.BlinkMediaStreamTrack.enabled_Getter(this);
+  bool get enabled => _blink.BlinkMediaStreamTrack.instance.enabled_Getter_(this);
 
   @DomName('MediaStreamTrack.enabled')
   @DocsEditable()
-  void set enabled(bool value) => _blink.BlinkMediaStreamTrack.enabled_Setter(this, value);
+  void set enabled(bool value) => _blink.BlinkMediaStreamTrack.instance.enabled_Setter_(this, value);
 
   @DomName('MediaStreamTrack.id')
   @DocsEditable()
-  String get id => _blink.BlinkMediaStreamTrack.id_Getter(this);
+  String get id => _blink.BlinkMediaStreamTrack.instance.id_Getter_(this);
 
   @DomName('MediaStreamTrack.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkMediaStreamTrack.kind_Getter(this);
+  String get kind => _blink.BlinkMediaStreamTrack.instance.kind_Getter_(this);
 
   @DomName('MediaStreamTrack.label')
   @DocsEditable()
-  String get label => _blink.BlinkMediaStreamTrack.label_Getter(this);
+  String get label => _blink.BlinkMediaStreamTrack.instance.label_Getter_(this);
 
   @DomName('MediaStreamTrack.muted')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get muted => _blink.BlinkMediaStreamTrack.muted_Getter(this);
+  bool get muted => _blink.BlinkMediaStreamTrack.instance.muted_Getter_(this);
 
   @DomName('MediaStreamTrack.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkMediaStreamTrack.readyState_Getter(this);
+  String get readyState => _blink.BlinkMediaStreamTrack.instance.readyState_Getter_(this);
 
   @DomName('MediaStreamTrack.clone')
   @DocsEditable()
   @Experimental() // untriaged
-  MediaStreamTrack clone() => _blink.BlinkMediaStreamTrack.clone_Callback(this);
+  MediaStreamTrack clone() => _blink.BlinkMediaStreamTrack.instance.clone_Callback_0_(this);
 
   @DomName('MediaStreamTrack.getSources')
   @DocsEditable()
   @Experimental() // untriaged
-  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.getSources_Callback_1(callback);
+  static void _getSources(MediaStreamTrackSourcesCallback callback) => _blink.BlinkMediaStreamTrack.instance.getSources_Callback_1_(callback);
 
   static Future<List<SourceInfo>> getSources() {
     var completer = new Completer<List<SourceInfo>>();
@@ -22093,7 +22093,7 @@
   @DomName('MediaStreamTrack.stop')
   @DocsEditable()
   @Experimental() // untriaged
-  void stop() => _blink.BlinkMediaStreamTrack.stop_Callback(this);
+  void stop() => _blink.BlinkMediaStreamTrack.instance.stop_Callback_0_(this);
 
   /// Stream of `ended` events handled by this [MediaStreamTrack].
   @DomName('MediaStreamTrack.onended')
@@ -22132,7 +22132,7 @@
 
   @DomName('MediaStreamTrackEvent.track')
   @DocsEditable()
-  MediaStreamTrack get track => _blink.BlinkMediaStreamTrackEvent.track_Getter(this);
+  MediaStreamTrack get track => _blink.BlinkMediaStreamTrackEvent.instance.track_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22161,15 +22161,15 @@
 
   @DomName('MemoryInfo.jsHeapSizeLimit')
   @DocsEditable()
-  int get jsHeapSizeLimit => _blink.BlinkMemoryInfo.jsHeapSizeLimit_Getter(this);
+  int get jsHeapSizeLimit => _blink.BlinkMemoryInfo.instance.jsHeapSizeLimit_Getter_(this);
 
   @DomName('MemoryInfo.totalJSHeapSize')
   @DocsEditable()
-  int get totalJSHeapSize => _blink.BlinkMemoryInfo.totalJSHeapSize_Getter(this);
+  int get totalJSHeapSize => _blink.BlinkMemoryInfo.instance.totalJSHeapSize_Getter_(this);
 
   @DomName('MemoryInfo.usedJSHeapSize')
   @DocsEditable()
-  int get usedJSHeapSize => _blink.BlinkMemoryInfo.usedJSHeapSize_Getter(this);
+  int get usedJSHeapSize => _blink.BlinkMemoryInfo.instance.usedJSHeapSize_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22208,22 +22208,22 @@
   @DomName('HTMLMenuElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkHTMLMenuElement.label_Getter(this);
+  String get label => _blink.BlinkHTMLMenuElement.instance.label_Getter_(this);
 
   @DomName('HTMLMenuElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  void set label(String value) => _blink.BlinkHTMLMenuElement.label_Setter(this, value);
+  void set label(String value) => _blink.BlinkHTMLMenuElement.instance.label_Setter_(this, value);
 
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkHTMLMenuElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLMenuElement.instance.type_Getter_(this);
 
   @DomName('HTMLMenuElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  void set type(String value) => _blink.BlinkHTMLMenuElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLMenuElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22249,52 +22249,52 @@
   @DomName('HTMLMenuItemElement.checked')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get checked => _blink.BlinkHTMLMenuItemElement.checked_Getter(this);
+  bool get checked => _blink.BlinkHTMLMenuItemElement.instance.checked_Getter_(this);
 
   @DomName('HTMLMenuItemElement.checked')
   @DocsEditable()
   @Experimental() // untriaged
-  void set checked(bool value) => _blink.BlinkHTMLMenuItemElement.checked_Setter(this, value);
+  void set checked(bool value) => _blink.BlinkHTMLMenuItemElement.instance.checked_Setter_(this, value);
 
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get defaultValue => _blink.BlinkHTMLMenuItemElement.default_Getter(this);
+  bool get defaultValue => _blink.BlinkHTMLMenuItemElement.instance.default_Getter_(this);
 
   @DomName('HTMLMenuItemElement.default')
   @DocsEditable()
   @Experimental() // untriaged
-  void set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.default_Setter(this, value);
+  void set defaultValue(bool value) => _blink.BlinkHTMLMenuItemElement.instance.default_Setter_(this, value);
 
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get disabled => _blink.BlinkHTMLMenuItemElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLMenuItemElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLMenuItemElement.disabled')
   @DocsEditable()
   @Experimental() // untriaged
-  void set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLMenuItemElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkHTMLMenuItemElement.label_Getter(this);
+  String get label => _blink.BlinkHTMLMenuItemElement.instance.label_Getter_(this);
 
   @DomName('HTMLMenuItemElement.label')
   @DocsEditable()
   @Experimental() // untriaged
-  void set label(String value) => _blink.BlinkHTMLMenuItemElement.label_Setter(this, value);
+  void set label(String value) => _blink.BlinkHTMLMenuItemElement.instance.label_Setter_(this, value);
 
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkHTMLMenuItemElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLMenuItemElement.instance.type_Getter_(this);
 
   @DomName('HTMLMenuItemElement.type')
   @DocsEditable()
   @Experimental() // untriaged
-  void set type(String value) => _blink.BlinkHTMLMenuItemElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLMenuItemElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22313,11 +22313,11 @@
 
   @DomName('MessageChannel.port1')
   @DocsEditable()
-  MessagePort get port1 => _blink.BlinkMessageChannel.port1_Getter(this);
+  MessagePort get port1 => _blink.BlinkMessageChannel.instance.port1_Getter_(this);
 
   @DomName('MessageChannel.port2')
   @DocsEditable()
-  MessagePort get port2 => _blink.BlinkMessageChannel.port2_Getter(this);
+  MessagePort get port2 => _blink.BlinkMessageChannel.instance.port2_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -22346,24 +22346,24 @@
 
   @DomName('MessageEvent.data')
   @DocsEditable()
-  Object get data => _blink.BlinkMessageEvent.data_Getter(this);
+  Object get data => _blink.BlinkMessageEvent.instance.data_Getter_(this);
 
   @DomName('MessageEvent.lastEventId')
   @DocsEditable()
   @Unstable()
-  String get lastEventId => _blink.BlinkMessageEvent.lastEventId_Getter(this);
+  String get lastEventId => _blink.BlinkMessageEvent.instance.lastEventId_Getter_(this);
 
   @DomName('MessageEvent.origin')
   @DocsEditable()
-  String get origin => _blink.BlinkMessageEvent.origin_Getter(this);
+  String get origin => _blink.BlinkMessageEvent.instance.origin_Getter_(this);
 
   @DomName('MessageEvent.source')
   @DocsEditable()
-  EventTarget get source => _blink.BlinkMessageEvent.source_Getter(this);
+  EventTarget get source => _blink.BlinkMessageEvent.instance.source_Getter_(this);
 
   @DomName('MessageEvent.initMessageEvent')
   @DocsEditable()
-  void _initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List<MessagePort> messagePorts) => _blink.BlinkMessageEvent.initMessageEvent_Callback_8(this, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts);
+  void _initMessageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Object dataArg, String originArg, String lastEventIdArg, Window sourceArg, List<MessagePort> messagePorts) => _blink.BlinkMessageEvent.instance.initMessageEvent_Callback_8_(this, typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, messagePorts);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22392,15 +22392,15 @@
 
   @DomName('MessagePort.close')
   @DocsEditable()
-  void close() => _blink.BlinkMessagePort.close_Callback(this);
+  void close() => _blink.BlinkMessagePort.instance.close_Callback_0_(this);
 
   @DomName('MessagePort.postMessage')
   @DocsEditable()
-  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkMessagePort.postMessage_Callback_2(this, message, transfer);
+  void postMessage(Object message, [List<MessagePort> transfer]) => _blink.BlinkMessagePort.instance.postMessage_Callback_2_(this, message, transfer);
 
   @DomName('MessagePort.start')
   @DocsEditable()
-  void start() => _blink.BlinkMessagePort.start_Callback(this);
+  void start() => _blink.BlinkMessagePort.instance.start_Callback_0_(this);
 
   /// Stream of `message` events handled by this [MessagePort].
   @DomName('MessagePort.onmessage')
@@ -22433,27 +22433,27 @@
 
   @DomName('HTMLMetaElement.content')
   @DocsEditable()
-  String get content => _blink.BlinkHTMLMetaElement.content_Getter(this);
+  String get content => _blink.BlinkHTMLMetaElement.instance.content_Getter_(this);
 
   @DomName('HTMLMetaElement.content')
   @DocsEditable()
-  void set content(String value) => _blink.BlinkHTMLMetaElement.content_Setter(this, value);
+  void set content(String value) => _blink.BlinkHTMLMetaElement.instance.content_Setter_(this, value);
 
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
-  String get httpEquiv => _blink.BlinkHTMLMetaElement.httpEquiv_Getter(this);
+  String get httpEquiv => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Getter_(this);
 
   @DomName('HTMLMetaElement.httpEquiv')
   @DocsEditable()
-  void set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.httpEquiv_Setter(this, value);
+  void set httpEquiv(String value) => _blink.BlinkHTMLMetaElement.instance.httpEquiv_Setter_(this, value);
 
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLMetaElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLMetaElement.instance.name_Getter_(this);
 
   @DomName('HTMLMetaElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLMetaElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLMetaElement.instance.name_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22473,11 +22473,11 @@
 
   @DomName('Metadata.modificationTime')
   @DocsEditable()
-  DateTime get modificationTime => _blink.BlinkMetadata.modificationTime_Getter(this);
+  DateTime get modificationTime => _blink.BlinkMetadata.instance.modificationTime_Getter_(this);
 
   @DomName('Metadata.size')
   @DocsEditable()
-  int get size => _blink.BlinkMetadata.size_Getter(this);
+  int get size => _blink.BlinkMetadata.instance.size_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22523,56 +22523,56 @@
 
   @DomName('HTMLMeterElement.high')
   @DocsEditable()
-  num get high => _blink.BlinkHTMLMeterElement.high_Getter(this);
+  num get high => _blink.BlinkHTMLMeterElement.instance.high_Getter_(this);
 
   @DomName('HTMLMeterElement.high')
   @DocsEditable()
-  void set high(num value) => _blink.BlinkHTMLMeterElement.high_Setter(this, value);
+  void set high(num value) => _blink.BlinkHTMLMeterElement.instance.high_Setter_(this, value);
 
   @DomName('HTMLMeterElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLMeterElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLMeterElement.instance.labels_Getter_(this);
 
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
-  num get low => _blink.BlinkHTMLMeterElement.low_Getter(this);
+  num get low => _blink.BlinkHTMLMeterElement.instance.low_Getter_(this);
 
   @DomName('HTMLMeterElement.low')
   @DocsEditable()
-  void set low(num value) => _blink.BlinkHTMLMeterElement.low_Setter(this, value);
+  void set low(num value) => _blink.BlinkHTMLMeterElement.instance.low_Setter_(this, value);
 
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
-  num get max => _blink.BlinkHTMLMeterElement.max_Getter(this);
+  num get max => _blink.BlinkHTMLMeterElement.instance.max_Getter_(this);
 
   @DomName('HTMLMeterElement.max')
   @DocsEditable()
-  void set max(num value) => _blink.BlinkHTMLMeterElement.max_Setter(this, value);
+  void set max(num value) => _blink.BlinkHTMLMeterElement.instance.max_Setter_(this, value);
 
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
-  num get min => _blink.BlinkHTMLMeterElement.min_Getter(this);
+  num get min => _blink.BlinkHTMLMeterElement.instance.min_Getter_(this);
 
   @DomName('HTMLMeterElement.min')
   @DocsEditable()
-  void set min(num value) => _blink.BlinkHTMLMeterElement.min_Setter(this, value);
+  void set min(num value) => _blink.BlinkHTMLMeterElement.instance.min_Setter_(this, value);
 
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
-  num get optimum => _blink.BlinkHTMLMeterElement.optimum_Getter(this);
+  num get optimum => _blink.BlinkHTMLMeterElement.instance.optimum_Getter_(this);
 
   @DomName('HTMLMeterElement.optimum')
   @DocsEditable()
-  void set optimum(num value) => _blink.BlinkHTMLMeterElement.optimum_Setter(this, value);
+  void set optimum(num value) => _blink.BlinkHTMLMeterElement.instance.optimum_Setter_(this, value);
 
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
-  num get value => _blink.BlinkHTMLMeterElement.value_Getter(this);
+  num get value => _blink.BlinkHTMLMeterElement.instance.value_Getter_(this);
 
   @DomName('HTMLMeterElement.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkHTMLMeterElement.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkHTMLMeterElement.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22613,15 +22613,15 @@
   @DomName('MIDIAccess.sysexEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get sysexEnabled => _blink.BlinkMIDIAccess.sysexEnabled_Getter(this);
+  bool get sysexEnabled => _blink.BlinkMIDIAccess.instance.sysexEnabled_Getter_(this);
 
   @DomName('MIDIAccess.inputs')
   @DocsEditable()
-  List<MidiInput> inputs() => _blink.BlinkMIDIAccess.inputs_Callback(this);
+  List<MidiInput> inputs() => _blink.BlinkMIDIAccess.instance.inputs_Callback_0_(this);
 
   @DomName('MIDIAccess.outputs')
   @DocsEditable()
-  List<MidiOutput> outputs() => _blink.BlinkMIDIAccess.outputs_Callback(this);
+  List<MidiOutput> outputs() => _blink.BlinkMIDIAccess.instance.outputs_Callback_0_(this);
 
   /// Stream of `connect` events handled by this [MidiAccess].
   @DomName('MIDIAccess.onconnect')
@@ -22651,7 +22651,7 @@
 
   @DomName('MIDIConnectionEvent.port')
   @DocsEditable()
-  MidiPort get port => _blink.BlinkMIDIConnectionEvent.port_Getter(this);
+  MidiPort get port => _blink.BlinkMIDIConnectionEvent.instance.port_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22702,11 +22702,11 @@
 
   @DomName('MIDIMessageEvent.data')
   @DocsEditable()
-  Uint8List get data => _blink.BlinkMIDIMessageEvent.data_Getter(this);
+  Uint8List get data => _blink.BlinkMIDIMessageEvent.instance.data_Getter_(this);
 
   @DomName('MIDIMessageEvent.receivedTime')
   @DocsEditable()
-  double get receivedTime => _blink.BlinkMIDIMessageEvent.receivedTime_Getter(this);
+  double get receivedTime => _blink.BlinkMIDIMessageEvent.instance.receivedTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22726,10 +22726,10 @@
 
   void send(Uint8List data, [num timestamp]) {
     if (timestamp != null) {
-      _blink.BlinkMIDIOutput.send_Callback_2(this, data, timestamp);
+      _blink.BlinkMIDIOutput.instance.send_Callback_2_(this, data, timestamp);
       return;
     }
-    _blink.BlinkMIDIOutput.send_Callback_1(this, data);
+    _blink.BlinkMIDIOutput.instance.send_Callback_1_(this, data);
     return;
   }
 
@@ -22761,23 +22761,23 @@
 
   @DomName('MIDIPort.id')
   @DocsEditable()
-  String get id => _blink.BlinkMIDIPort.id_Getter(this);
+  String get id => _blink.BlinkMIDIPort.instance.id_Getter_(this);
 
   @DomName('MIDIPort.manufacturer')
   @DocsEditable()
-  String get manufacturer => _blink.BlinkMIDIPort.manufacturer_Getter(this);
+  String get manufacturer => _blink.BlinkMIDIPort.instance.manufacturer_Getter_(this);
 
   @DomName('MIDIPort.name')
   @DocsEditable()
-  String get name => _blink.BlinkMIDIPort.name_Getter(this);
+  String get name => _blink.BlinkMIDIPort.instance.name_Getter_(this);
 
   @DomName('MIDIPort.type')
   @DocsEditable()
-  String get type => _blink.BlinkMIDIPort.type_Getter(this);
+  String get type => _blink.BlinkMIDIPort.instance.type_Getter_(this);
 
   @DomName('MIDIPort.version')
   @DocsEditable()
-  String get version => _blink.BlinkMIDIPort.version_Getter(this);
+  String get version => _blink.BlinkMIDIPort.instance.version_Getter_(this);
 
   /// Stream of `disconnect` events handled by this [MidiPort].
   @DomName('MIDIPort.ondisconnect')
@@ -22801,19 +22801,19 @@
 
   @DomName('MimeType.description')
   @DocsEditable()
-  String get description => _blink.BlinkMimeType.description_Getter(this);
+  String get description => _blink.BlinkMimeType.instance.description_Getter_(this);
 
   @DomName('MimeType.enabledPlugin')
   @DocsEditable()
-  Plugin get enabledPlugin => _blink.BlinkMimeType.enabledPlugin_Getter(this);
+  Plugin get enabledPlugin => _blink.BlinkMimeType.instance.enabledPlugin_Getter_(this);
 
   @DomName('MimeType.suffixes')
   @DocsEditable()
-  String get suffixes => _blink.BlinkMimeType.suffixes_Getter(this);
+  String get suffixes => _blink.BlinkMimeType.instance.suffixes_Getter_(this);
 
   @DomName('MimeType.type')
   @DocsEditable()
-  String get type => _blink.BlinkMimeType.type_Getter(this);
+  String get type => _blink.BlinkMimeType.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22832,15 +22832,15 @@
 
   @DomName('MimeTypeArray.length')
   @DocsEditable()
-  int get length => _blink.BlinkMimeTypeArray.length_Getter(this);
+  int get length => _blink.BlinkMimeTypeArray.instance.length_Getter_(this);
 
   MimeType operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkMimeTypeArray.item_Callback_1(this, index);
+    return _blink.BlinkMimeTypeArray.instance.item_Callback_1_(this, index);
   }
 
-  MimeType _nativeIndexedGetter(int index) => _blink.BlinkMimeTypeArray.item_Callback_1(this, index);
+  MimeType _nativeIndexedGetter(int index) => _blink.BlinkMimeTypeArray.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, MimeType value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -22882,15 +22882,15 @@
 
   @DomName('MimeTypeArray.__getter__')
   @DocsEditable()
-  MimeType __getter__(String name) => _blink.BlinkMimeTypeArray.$__getter___Callback_1(this, name);
+  MimeType __getter__(String name) => _blink.BlinkMimeTypeArray.instance.$__getter___Callback_1_(this, name);
 
   @DomName('MimeTypeArray.item')
   @DocsEditable()
-  MimeType item(int index) => _blink.BlinkMimeTypeArray.item_Callback_1(this, index);
+  MimeType item(int index) => _blink.BlinkMimeTypeArray.instance.item_Callback_1_(this, index);
 
   @DomName('MimeTypeArray.namedItem')
   @DocsEditable()
-  MimeType namedItem(String name) => _blink.BlinkMimeTypeArray.namedItem_Callback_1(this, name);
+  MimeType namedItem(String name) => _blink.BlinkMimeTypeArray.instance.namedItem_Callback_1_(this, name);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22915,19 +22915,19 @@
 
   @DomName('HTMLModElement.cite')
   @DocsEditable()
-  String get cite => _blink.BlinkHTMLModElement.cite_Getter(this);
+  String get cite => _blink.BlinkHTMLModElement.instance.cite_Getter_(this);
 
   @DomName('HTMLModElement.cite')
   @DocsEditable()
-  void set cite(String value) => _blink.BlinkHTMLModElement.cite_Setter(this, value);
+  void set cite(String value) => _blink.BlinkHTMLModElement.instance.cite_Setter_(this, value);
 
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
-  String get dateTime => _blink.BlinkHTMLModElement.dateTime_Getter(this);
+  String get dateTime => _blink.BlinkHTMLModElement.instance.dateTime_Getter_(this);
 
   @DomName('HTMLModElement.dateTime')
   @DocsEditable()
-  void set dateTime(String value) => _blink.BlinkHTMLModElement.dateTime_Setter(this, value);
+  void set dateTime(String value) => _blink.BlinkHTMLModElement.instance.dateTime_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -22959,28 +22959,28 @@
 
   @DomName('MouseEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkMouseEvent.altKey_Getter(this);
+  bool get altKey => _blink.BlinkMouseEvent.instance.altKey_Getter_(this);
 
   @DomName('MouseEvent.button')
   @DocsEditable()
-  int get button => _blink.BlinkMouseEvent.button_Getter(this);
+  int get button => _blink.BlinkMouseEvent.instance.button_Getter_(this);
 
   @DomName('MouseEvent.clientX')
   @DocsEditable()
-  int get _clientX => _blink.BlinkMouseEvent.clientX_Getter(this);
+  int get _clientX => _blink.BlinkMouseEvent.instance.clientX_Getter_(this);
 
   @DomName('MouseEvent.clientY')
   @DocsEditable()
-  int get _clientY => _blink.BlinkMouseEvent.clientY_Getter(this);
+  int get _clientY => _blink.BlinkMouseEvent.instance.clientY_Getter_(this);
 
   @DomName('MouseEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkMouseEvent.ctrlKey_Getter(this);
+  bool get ctrlKey => _blink.BlinkMouseEvent.instance.ctrlKey_Getter_(this);
 
   @DomName('MouseEvent.dataTransfer')
   @DocsEditable()
   @Unstable()
-  DataTransfer get dataTransfer => _blink.BlinkMouseEvent.dataTransfer_Getter(this);
+  DataTransfer get dataTransfer => _blink.BlinkMouseEvent.instance.dataTransfer_Getter_(this);
 
   /**
    * The nonstandard way to access the element that the mouse comes
@@ -22992,52 +22992,52 @@
   @DomName('MouseEvent.fromElement')
   @DocsEditable()
   @deprecated
-  Node get fromElement => _blink.BlinkMouseEvent.fromElement_Getter(this);
+  Node get fromElement => _blink.BlinkMouseEvent.instance.fromElement_Getter_(this);
 
   @DomName('MouseEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkMouseEvent.metaKey_Getter(this);
+  bool get metaKey => _blink.BlinkMouseEvent.instance.metaKey_Getter_(this);
 
   @DomName('MouseEvent.movementX')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _movementX => _blink.BlinkMouseEvent.movementX_Getter(this);
+  int get _movementX => _blink.BlinkMouseEvent.instance.movementX_Getter_(this);
 
   @DomName('MouseEvent.movementY')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _movementY => _blink.BlinkMouseEvent.movementY_Getter(this);
+  int get _movementY => _blink.BlinkMouseEvent.instance.movementY_Getter_(this);
 
   @DomName('MouseEvent.offsetX')
   @DocsEditable()
   @Unstable()
-  int get _offsetX => _blink.BlinkMouseEvent.offsetX_Getter(this);
+  int get _offsetX => _blink.BlinkMouseEvent.instance.offsetX_Getter_(this);
 
   @DomName('MouseEvent.offsetY')
   @DocsEditable()
   @Unstable()
-  int get _offsetY => _blink.BlinkMouseEvent.offsetY_Getter(this);
+  int get _offsetY => _blink.BlinkMouseEvent.instance.offsetY_Getter_(this);
 
   @DomName('MouseEvent.region')
   @DocsEditable()
   @Experimental() // untriaged
-  String get region => _blink.BlinkMouseEvent.region_Getter(this);
+  String get region => _blink.BlinkMouseEvent.instance.region_Getter_(this);
 
   @DomName('MouseEvent.relatedTarget')
   @DocsEditable()
-  EventTarget get relatedTarget => _blink.BlinkMouseEvent.relatedTarget_Getter(this);
+  EventTarget get relatedTarget => _blink.BlinkMouseEvent.instance.relatedTarget_Getter_(this);
 
   @DomName('MouseEvent.screenX')
   @DocsEditable()
-  int get _screenX => _blink.BlinkMouseEvent.screenX_Getter(this);
+  int get _screenX => _blink.BlinkMouseEvent.instance.screenX_Getter_(this);
 
   @DomName('MouseEvent.screenY')
   @DocsEditable()
-  int get _screenY => _blink.BlinkMouseEvent.screenY_Getter(this);
+  int get _screenY => _blink.BlinkMouseEvent.instance.screenY_Getter_(this);
 
   @DomName('MouseEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkMouseEvent.shiftKey_Getter(this);
+  bool get shiftKey => _blink.BlinkMouseEvent.instance.shiftKey_Getter_(this);
 
   /**
    * The nonstandard way to access the element that the mouse goes
@@ -23049,25 +23049,25 @@
   @DomName('MouseEvent.toElement')
   @DocsEditable()
   @deprecated
-  Node get toElement => _blink.BlinkMouseEvent.toElement_Getter(this);
+  Node get toElement => _blink.BlinkMouseEvent.instance.toElement_Getter_(this);
 
   @DomName('MouseEvent.webkitMovementX')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get _webkitMovementX => _blink.BlinkMouseEvent.webkitMovementX_Getter(this);
+  int get _webkitMovementX => _blink.BlinkMouseEvent.instance.webkitMovementX_Getter_(this);
 
   @DomName('MouseEvent.webkitMovementY')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get _webkitMovementY => _blink.BlinkMouseEvent.webkitMovementY_Getter(this);
+  int get _webkitMovementY => _blink.BlinkMouseEvent.instance.webkitMovementY_Getter_(this);
 
   @DomName('MouseEvent.initMouseEvent')
   @DocsEditable()
-  void _initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) => _blink.BlinkMouseEvent.initMouseEvent_Callback_15(this, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
+  void _initMouseEvent(String type, bool canBubble, bool cancelable, Window view, int detail, int screenX, int screenY, int clientX, int clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, int button, EventTarget relatedTarget) => _blink.BlinkMouseEvent.instance.initMouseEvent_Callback_15_(this, type, canBubble, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
 
 
   @deprecated
@@ -23137,19 +23137,19 @@
   factory MutationObserver._(MutationCallback callback) => _create(callback);
 
   @DocsEditable()
-  static MutationObserver _create(callback) => _blink.BlinkMutationObserver.constructorCallback_1(callback);
+  static MutationObserver _create(callback) => _blink.BlinkMutationObserver.instance.constructorCallback_1_(callback);
 
   @DomName('MutationObserver.disconnect')
   @DocsEditable()
-  void disconnect() => _blink.BlinkMutationObserver.disconnect_Callback(this);
+  void disconnect() => _blink.BlinkMutationObserver.instance.disconnect_Callback_0_(this);
 
   @DomName('MutationObserver.observe')
   @DocsEditable()
-  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.observe_Callback_2(this, target, options);
+  void _observe(Node target, Map options) => _blink.BlinkMutationObserver.instance.observe_Callback_2_(this, target, options);
 
   @DomName('MutationObserver.takeRecords')
   @DocsEditable()
-  List<MutationRecord> takeRecords() => _blink.BlinkMutationObserver.takeRecords_Callback(this);
+  List<MutationRecord> takeRecords() => _blink.BlinkMutationObserver.instance.takeRecords_Callback_0_(this);
 
   /**
    * Checks to see if the mutation observer API is supported on the current
@@ -23234,39 +23234,39 @@
 
   @DomName('MutationRecord.addedNodes')
   @DocsEditable()
-  List<Node> get addedNodes => _blink.BlinkMutationRecord.addedNodes_Getter(this);
+  List<Node> get addedNodes => _blink.BlinkMutationRecord.instance.addedNodes_Getter_(this);
 
   @DomName('MutationRecord.attributeName')
   @DocsEditable()
-  String get attributeName => _blink.BlinkMutationRecord.attributeName_Getter(this);
+  String get attributeName => _blink.BlinkMutationRecord.instance.attributeName_Getter_(this);
 
   @DomName('MutationRecord.attributeNamespace')
   @DocsEditable()
-  String get attributeNamespace => _blink.BlinkMutationRecord.attributeNamespace_Getter(this);
+  String get attributeNamespace => _blink.BlinkMutationRecord.instance.attributeNamespace_Getter_(this);
 
   @DomName('MutationRecord.nextSibling')
   @DocsEditable()
-  Node get nextSibling => _blink.BlinkMutationRecord.nextSibling_Getter(this);
+  Node get nextSibling => _blink.BlinkMutationRecord.instance.nextSibling_Getter_(this);
 
   @DomName('MutationRecord.oldValue')
   @DocsEditable()
-  String get oldValue => _blink.BlinkMutationRecord.oldValue_Getter(this);
+  String get oldValue => _blink.BlinkMutationRecord.instance.oldValue_Getter_(this);
 
   @DomName('MutationRecord.previousSibling')
   @DocsEditable()
-  Node get previousSibling => _blink.BlinkMutationRecord.previousSibling_Getter(this);
+  Node get previousSibling => _blink.BlinkMutationRecord.instance.previousSibling_Getter_(this);
 
   @DomName('MutationRecord.removedNodes')
   @DocsEditable()
-  List<Node> get removedNodes => _blink.BlinkMutationRecord.removedNodes_Getter(this);
+  List<Node> get removedNodes => _blink.BlinkMutationRecord.instance.removedNodes_Getter_(this);
 
   @DomName('MutationRecord.target')
   @DocsEditable()
-  Node get target => _blink.BlinkMutationRecord.target_Getter(this);
+  Node get target => _blink.BlinkMutationRecord.instance.target_Getter_(this);
 
   @DomName('MutationRecord.type')
   @DocsEditable()
-  String get type => _blink.BlinkMutationRecord.type_Getter(this);
+  String get type => _blink.BlinkMutationRecord.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23275,7 +23275,7 @@
 
 
 @DomName('Navigator')
-class Navigator extends NavigatorCpu implements NavigatorLanguage, NavigatorOnLine, NavigatorID {
+class Navigator extends NativeFieldWrapperClass2 implements NavigatorCpu, NavigatorLanguage, NavigatorOnLine, NavigatorID {
 
 
   /**
@@ -23339,73 +23339,73 @@
   @DomName('Navigator.connection')
   @DocsEditable()
   @Experimental() // untriaged
-  NetworkInformation get connection => _blink.BlinkNavigator.connection_Getter(this);
+  NetworkInformation get connection => _blink.BlinkNavigator.instance.connection_Getter_(this);
 
   @DomName('Navigator.cookieEnabled')
   @DocsEditable()
   @Unstable()
-  bool get cookieEnabled => _blink.BlinkNavigator.cookieEnabled_Getter(this);
+  bool get cookieEnabled => _blink.BlinkNavigator.instance.cookieEnabled_Getter_(this);
 
   @DomName('Navigator.credentials')
   @DocsEditable()
   @Experimental() // untriaged
-  CredentialsContainer get credentials => _blink.BlinkNavigator.credentials_Getter(this);
+  CredentialsContainer get credentials => _blink.BlinkNavigator.instance.credentials_Getter_(this);
 
   @DomName('Navigator.doNotTrack')
   @DocsEditable()
   // http://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#js-dom
   @Experimental() // experimental
-  String get doNotTrack => _blink.BlinkNavigator.doNotTrack_Getter(this);
+  String get doNotTrack => _blink.BlinkNavigator.instance.doNotTrack_Getter_(this);
 
   @DomName('Navigator.geofencing')
   @DocsEditable()
   @Experimental() // untriaged
-  Geofencing get geofencing => _blink.BlinkNavigator.geofencing_Getter(this);
+  Geofencing get geofencing => _blink.BlinkNavigator.instance.geofencing_Getter_(this);
 
   @DomName('Navigator.geolocation')
   @DocsEditable()
   @Unstable()
-  Geolocation get geolocation => _blink.BlinkNavigator.geolocation_Getter(this);
+  Geolocation get geolocation => _blink.BlinkNavigator.instance.geolocation_Getter_(this);
 
   @DomName('Navigator.maxTouchPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxTouchPoints => _blink.BlinkNavigator.maxTouchPoints_Getter(this);
+  int get maxTouchPoints => _blink.BlinkNavigator.instance.maxTouchPoints_Getter_(this);
 
   @DomName('Navigator.mimeTypes')
   @DocsEditable()
   @Experimental() // nonstandard
-  MimeTypeArray get mimeTypes => _blink.BlinkNavigator.mimeTypes_Getter(this);
+  MimeTypeArray get mimeTypes => _blink.BlinkNavigator.instance.mimeTypes_Getter_(this);
 
   @DomName('Navigator.productSub')
   @DocsEditable()
   @Unstable()
-  String get productSub => _blink.BlinkNavigator.productSub_Getter(this);
+  String get productSub => _blink.BlinkNavigator.instance.productSub_Getter_(this);
 
   @DomName('Navigator.push')
   @DocsEditable()
   @Experimental() // untriaged
-  PushManager get push => _blink.BlinkNavigator.push_Getter(this);
+  PushManager get push => _blink.BlinkNavigator.instance.push_Getter_(this);
 
   @DomName('Navigator.serviceWorker')
   @DocsEditable()
   @Experimental() // untriaged
-  ServiceWorkerContainer get serviceWorker => _blink.BlinkNavigator.serviceWorker_Getter(this);
+  ServiceWorkerContainer get serviceWorker => _blink.BlinkNavigator.instance.serviceWorker_Getter_(this);
 
   @DomName('Navigator.storageQuota')
   @DocsEditable()
   @Experimental() // untriaged
-  StorageQuota get storageQuota => _blink.BlinkNavigator.storageQuota_Getter(this);
+  StorageQuota get storageQuota => _blink.BlinkNavigator.instance.storageQuota_Getter_(this);
 
   @DomName('Navigator.vendor')
   @DocsEditable()
   @Unstable()
-  String get vendor => _blink.BlinkNavigator.vendor_Getter(this);
+  String get vendor => _blink.BlinkNavigator.instance.vendor_Getter_(this);
 
   @DomName('Navigator.vendorSub')
   @DocsEditable()
   @Unstable()
-  String get vendorSub => _blink.BlinkNavigator.vendorSub_Getter(this);
+  String get vendorSub => _blink.BlinkNavigator.instance.vendorSub_Getter_(this);
 
   @DomName('Navigator.webkitPersistentStorage')
   @DocsEditable()
@@ -23413,7 +23413,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3.org/TR/quota-api/#accessing-storagequota
-  DeprecatedStorageQuota get persistentStorage => _blink.BlinkNavigator.webkitPersistentStorage_Getter(this);
+  DeprecatedStorageQuota get persistentStorage => _blink.BlinkNavigator.instance.webkitPersistentStorage_Getter_(this);
 
   @DomName('Navigator.webkitTemporaryStorage')
   @DocsEditable()
@@ -23421,46 +23421,46 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3.org/TR/quota-api/#accessing-storagequota
-  DeprecatedStorageQuota get temporaryStorage => _blink.BlinkNavigator.webkitTemporaryStorage_Getter(this);
+  DeprecatedStorageQuota get temporaryStorage => _blink.BlinkNavigator.instance.webkitTemporaryStorage_Getter_(this);
 
   @DomName('Navigator.getBattery')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getBattery() => _blink.BlinkNavigator.getBattery_Callback(this);
+  Future getBattery() => _blink.BlinkNavigator.instance.getBattery_Callback_0_(this);
 
   @DomName('Navigator.getGamepads')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Gamepad> getGamepads() => _blink.BlinkNavigator.getGamepads_Callback(this);
+  List<Gamepad> getGamepads() => _blink.BlinkNavigator.instance.getGamepads_Callback_0_(this);
 
   @DomName('Navigator.getStorageUpdates')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils
   @Experimental()
-  void getStorageUpdates() => _blink.BlinkNavigator.getStorageUpdates_Callback(this);
+  void getStorageUpdates() => _blink.BlinkNavigator.instance.getStorageUpdates_Callback_0_(this);
 
   @DomName('Navigator.isProtocolHandlerRegistered')
   @DocsEditable()
   @Experimental() // untriaged
-  String isProtocolHandlerRegistered(String scheme, String url) => _blink.BlinkNavigator.isProtocolHandlerRegistered_Callback_2(this, scheme, url);
+  String isProtocolHandlerRegistered(String scheme, String url) => _blink.BlinkNavigator.instance.isProtocolHandlerRegistered_Callback_2_(this, scheme, url);
 
   @DomName('Navigator.registerProtocolHandler')
   @DocsEditable()
   @Unstable()
-  void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.registerProtocolHandler_Callback_3(this, scheme, url, title);
+  void registerProtocolHandler(String scheme, String url, String title) => _blink.BlinkNavigator.instance.registerProtocolHandler_Callback_3_(this, scheme, url, title);
 
   bool sendBeacon(String url, data) {
     if ((data is String || data == null) && (url is String || url == null)) {
-      return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data);
+      return _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(this, url, data);
     }
     if ((data is TypedData || data == null) && (url is String || url == null)) {
-      return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data);
+      return _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(this, url, data);
     }
     if ((data is FormData || data == null) && (url is String || url == null)) {
-      return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data);
+      return _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(this, url, data);
     }
     if ((data is Blob || data == null) && (url is String || url == null)) {
-      return _blink.BlinkNavigator.sendBeacon_Callback_2(this, url, data);
+      return _blink.BlinkNavigator.instance.sendBeacon_Callback_2_(this, url, data);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -23468,58 +23468,63 @@
   @DomName('Navigator.unregisterProtocolHandler')
   @DocsEditable()
   @Experimental() // untriaged
-  void unregisterProtocolHandler(String scheme, String url) => _blink.BlinkNavigator.unregisterProtocolHandler_Callback_2(this, scheme, url);
+  void unregisterProtocolHandler(String scheme, String url) => _blink.BlinkNavigator.instance.unregisterProtocolHandler_Callback_2_(this, scheme, url);
 
   @DomName('Navigator.webkitGetUserMedia')
   @DocsEditable()
   // http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia
   @Experimental()
-  void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.webkitGetUserMedia_Callback_3(this, options, successCallback, errorCallback);
+  void _getUserMedia(Map options, _NavigatorUserMediaSuccessCallback successCallback, _NavigatorUserMediaErrorCallback errorCallback) => _blink.BlinkNavigator.instance.webkitGetUserMedia_Callback_3_(this, options, successCallback, errorCallback);
+
+  @DomName('Navigator.hardwareConcurrency')
+  @DocsEditable()
+  @Experimental() // untriaged
+  int get hardwareConcurrency => _blink.BlinkNavigator.instance.hardwareConcurrency_Getter_(this);
 
   @DomName('Navigator.appCodeName')
   @DocsEditable()
   @Experimental() // non-standard
-  String get appCodeName => _blink.BlinkNavigator.appCodeName_Getter(this);
+  String get appCodeName => _blink.BlinkNavigator.instance.appCodeName_Getter_(this);
 
   @DomName('Navigator.appName')
   @DocsEditable()
-  String get appName => _blink.BlinkNavigator.appName_Getter(this);
+  String get appName => _blink.BlinkNavigator.instance.appName_Getter_(this);
 
   @DomName('Navigator.appVersion')
   @DocsEditable()
-  String get appVersion => _blink.BlinkNavigator.appVersion_Getter(this);
+  String get appVersion => _blink.BlinkNavigator.instance.appVersion_Getter_(this);
 
   @DomName('Navigator.dartEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get dartEnabled => _blink.BlinkNavigator.dartEnabled_Getter(this);
+  bool get dartEnabled => _blink.BlinkNavigator.instance.dartEnabled_Getter_(this);
 
   @DomName('Navigator.platform')
   @DocsEditable()
-  String get platform => _blink.BlinkNavigator.platform_Getter(this);
+  String get platform => _blink.BlinkNavigator.instance.platform_Getter_(this);
 
   @DomName('Navigator.product')
   @DocsEditable()
   @Unstable()
-  String get product => _blink.BlinkNavigator.product_Getter(this);
+  String get product => _blink.BlinkNavigator.instance.product_Getter_(this);
 
   @DomName('Navigator.userAgent')
   @DocsEditable()
-  String get userAgent => _blink.BlinkNavigator.userAgent_Getter(this);
+  String get userAgent => _blink.BlinkNavigator.instance.userAgent_Getter_(this);
 
   @DomName('Navigator.language')
   @DocsEditable()
-  String get language => _blink.BlinkNavigator.language_Getter(this);
+  String get language => _blink.BlinkNavigator.instance.language_Getter_(this);
 
   @DomName('Navigator.languages')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get languages => _blink.BlinkNavigator.languages_Getter(this);
+  List<String> get languages => _blink.BlinkNavigator.instance.languages_Getter_(this);
 
   @DomName('Navigator.onLine')
   @DocsEditable()
   @Unstable()
-  bool get onLine => _blink.BlinkNavigator.onLine_Getter(this);
+  bool get onLine => _blink.BlinkNavigator.instance.onLine_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23532,14 +23537,14 @@
 @DocsEditable()
 @DomName('NavigatorCPU')
 @Experimental() // untriaged
-class NavigatorCpu extends NativeFieldWrapperClass2 {
+abstract class NavigatorCpu extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory NavigatorCpu._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('NavigatorCPU.hardwareConcurrency')
   @DocsEditable()
   @Experimental() // untriaged
-  int get hardwareConcurrency => _blink.BlinkNavigatorCPU.hardwareConcurrency_Getter(this);
+  int get hardwareConcurrency;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23559,37 +23564,37 @@
   @DomName('NavigatorID.appCodeName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get appCodeName => _blink.BlinkNavigatorID.appCodeName_Getter(this);
+  String get appCodeName;
 
   @DomName('NavigatorID.appName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get appName => _blink.BlinkNavigatorID.appName_Getter(this);
+  String get appName;
 
   @DomName('NavigatorID.appVersion')
   @DocsEditable()
   @Experimental() // untriaged
-  String get appVersion => _blink.BlinkNavigatorID.appVersion_Getter(this);
+  String get appVersion;
 
   @DomName('NavigatorID.dartEnabled')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get dartEnabled => _blink.BlinkNavigatorID.dartEnabled_Getter(this);
+  bool get dartEnabled;
 
   @DomName('NavigatorID.platform')
   @DocsEditable()
   @Experimental() // untriaged
-  String get platform => _blink.BlinkNavigatorID.platform_Getter(this);
+  String get platform;
 
   @DomName('NavigatorID.product')
   @DocsEditable()
   @Experimental() // untriaged
-  String get product => _blink.BlinkNavigatorID.product_Getter(this);
+  String get product;
 
   @DomName('NavigatorID.userAgent')
   @DocsEditable()
   @Experimental() // untriaged
-  String get userAgent => _blink.BlinkNavigatorID.userAgent_Getter(this);
+  String get userAgent;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23602,19 +23607,19 @@
 @DocsEditable()
 @DomName('NavigatorLanguage')
 @Experimental() // untriaged
-class NavigatorLanguage extends NativeFieldWrapperClass2 {
+abstract class NavigatorLanguage extends NativeFieldWrapperClass2 {
   // To suppress missing implicit constructor warnings.
   factory NavigatorLanguage._() { throw new UnsupportedError("Not supported"); }
 
   @DomName('NavigatorLanguage.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkNavigatorLanguage.language_Getter(this);
+  String get language;
 
   @DomName('NavigatorLanguage.languages')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get languages => _blink.BlinkNavigatorLanguage.languages_Getter(this);
+  List<String> get languages;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23634,7 +23639,7 @@
   @DomName('NavigatorOnLine.onLine')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get onLine => _blink.BlinkNavigatorOnLine.onLine_Getter(this);
+  bool get onLine;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23654,15 +23659,15 @@
 
   @DomName('NavigatorUserMediaError.constraintName')
   @DocsEditable()
-  String get constraintName => _blink.BlinkNavigatorUserMediaError.constraintName_Getter(this);
+  String get constraintName => _blink.BlinkNavigatorUserMediaError.instance.constraintName_Getter_(this);
 
   @DomName('NavigatorUserMediaError.message')
   @DocsEditable()
-  String get message => _blink.BlinkNavigatorUserMediaError.message_Getter(this);
+  String get message => _blink.BlinkNavigatorUserMediaError.instance.message_Getter_(this);
 
   @DomName('NavigatorUserMediaError.name')
   @DocsEditable()
-  String get name => _blink.BlinkNavigatorUserMediaError.name_Getter(this);
+  String get name => _blink.BlinkNavigatorUserMediaError.instance.name_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23704,7 +23709,7 @@
   @DomName('NetworkInformation.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkNetworkInformation.type_Getter(this);
+  String get type => _blink.BlinkNetworkInformation.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24016,7 +24021,7 @@
 
   @DomName('Node.baseURI')
   @DocsEditable()
-  String get baseUri => _blink.BlinkNode.baseURI_Getter(this);
+  String get baseUri => _blink.BlinkNode.instance.baseURI_Getter_(this);
 
   /**
    * A list of this node's children.
@@ -24029,7 +24034,7 @@
    */
   @DomName('Node.childNodes')
   @DocsEditable()
-  List<Node> get childNodes => _blink.BlinkNode.childNodes_Getter(this);
+  List<Node> get childNodes => _blink.BlinkNode.instance.childNodes_Getter_(this);
 
   /**
    * The first child of this node.
@@ -24042,7 +24047,7 @@
    */
   @DomName('Node.firstChild')
   @DocsEditable()
-  Node get firstChild => _blink.BlinkNode.firstChild_Getter(this);
+  Node get firstChild => _blink.BlinkNode.instance.firstChild_Getter_(this);
 
   /**
    * The last child of this node.
@@ -24055,15 +24060,15 @@
    */
   @DomName('Node.lastChild')
   @DocsEditable()
-  Node get lastChild => _blink.BlinkNode.lastChild_Getter(this);
+  Node get lastChild => _blink.BlinkNode.instance.lastChild_Getter_(this);
 
   @DomName('Node.localName')
   @DocsEditable()
-  String get _localName => _blink.BlinkNode.localName_Getter(this);
+  String get _localName => _blink.BlinkNode.instance.localName_Getter_(this);
 
   @DomName('Node.namespaceURI')
   @DocsEditable()
-  String get _namespaceUri => _blink.BlinkNode.namespaceURI_Getter(this);
+  String get _namespaceUri => _blink.BlinkNode.instance.namespaceURI_Getter_(this);
 
   /**
    * The next sibling node.
@@ -24076,7 +24081,7 @@
    */
   @DomName('Node.nextSibling')
   @DocsEditable()
-  Node get nextNode => _blink.BlinkNode.nextSibling_Getter(this);
+  Node get nextNode => _blink.BlinkNode.instance.nextSibling_Getter_(this);
 
   /**
    * The name of this node.
@@ -24092,7 +24097,7 @@
    */
   @DomName('Node.nodeName')
   @DocsEditable()
-  String get nodeName => _blink.BlinkNode.nodeName_Getter(this);
+  String get nodeName => _blink.BlinkNode.instance.nodeName_Getter_(this);
 
   /**
    * The type of node.
@@ -24119,7 +24124,7 @@
    */
   @DomName('Node.nodeType')
   @DocsEditable()
-  int get nodeType => _blink.BlinkNode.nodeType_Getter(this);
+  int get nodeType => _blink.BlinkNode.instance.nodeType_Getter_(this);
 
   /**
    * The value of this node.
@@ -24135,7 +24140,7 @@
    */
   @DomName('Node.nodeValue')
   @DocsEditable()
-  String get nodeValue => _blink.BlinkNode.nodeValue_Getter(this);
+  String get nodeValue => _blink.BlinkNode.instance.nodeValue_Getter_(this);
 
   /**
    * The document this node belongs to.
@@ -24150,7 +24155,7 @@
    */
   @DomName('Node.ownerDocument')
   @DocsEditable()
-  Document get ownerDocument => _blink.BlinkNode.ownerDocument_Getter(this);
+  Document get ownerDocument => _blink.BlinkNode.instance.ownerDocument_Getter_(this);
 
   /**
    * The parent element of this node.
@@ -24166,7 +24171,7 @@
    */
   @DomName('Node.parentElement')
   @DocsEditable()
-  Element get parent => _blink.BlinkNode.parentElement_Getter(this);
+  Element get parent => _blink.BlinkNode.instance.parentElement_Getter_(this);
 
   /**
    * The parent node of this node.
@@ -24179,7 +24184,7 @@
    */
   @DomName('Node.parentNode')
   @DocsEditable()
-  Node get parentNode => _blink.BlinkNode.parentNode_Getter(this);
+  Node get parentNode => _blink.BlinkNode.instance.parentNode_Getter_(this);
 
   /**
    * The previous sibling node.
@@ -24192,7 +24197,7 @@
    */
   @DomName('Node.previousSibling')
   @DocsEditable()
-  Node get previousNode => _blink.BlinkNode.previousSibling_Getter(this);
+  Node get previousNode => _blink.BlinkNode.instance.previousSibling_Getter_(this);
 
   /**
    * All text within this node and its decendents.
@@ -24205,7 +24210,7 @@
    */
   @DomName('Node.textContent')
   @DocsEditable()
-  String get text => _blink.BlinkNode.textContent_Getter(this);
+  String get text => _blink.BlinkNode.instance.textContent_Getter_(this);
 
   /**
    * All text within this node and its decendents.
@@ -24218,7 +24223,7 @@
    */
   @DomName('Node.textContent')
   @DocsEditable()
-  void set text(String value) => _blink.BlinkNode.textContent_Setter(this, value);
+  void set text(String value) => _blink.BlinkNode.instance.textContent_Setter_(this, value);
 
   /**
    * Adds a node to the end of the child [nodes] list of this node.
@@ -24231,7 +24236,7 @@
    */
   @DomName('Node.appendChild')
   @DocsEditable()
-  Node append(Node newChild) => _blink.BlinkNode.appendChild_Callback_1(this, newChild);
+  Node append(Node newChild) => _blink.BlinkNode.instance.appendChild_Callback_1_(this, newChild);
 
   /**
    * Returns a copy of this node.
@@ -24247,7 +24252,7 @@
    */
   @DomName('Node.cloneNode')
   @DocsEditable()
-  Node clone(bool deep) => _blink.BlinkNode.cloneNode_Callback_1(this, deep);
+  Node clone(bool deep) => _blink.BlinkNode.instance.cloneNode_Callback_1_(this, deep);
 
   /**
    * Returns true if this node contains the specified node.
@@ -24259,7 +24264,7 @@
    */
   @DomName('Node.contains')
   @DocsEditable()
-  bool contains(Node other) => _blink.BlinkNode.contains_Callback_1(this, other);
+  bool contains(Node other) => _blink.BlinkNode.instance.contains_Callback_1_(this, other);
 
   /**
    * Returns true if this node has any children.
@@ -24272,7 +24277,7 @@
    */
   @DomName('Node.hasChildNodes')
   @DocsEditable()
-  bool hasChildNodes() => _blink.BlinkNode.hasChildNodes_Callback(this);
+  bool hasChildNodes() => _blink.BlinkNode.instance.hasChildNodes_Callback_0_(this);
 
   /**
    * Inserts all of the nodes into this node directly before refChild.
@@ -24285,15 +24290,15 @@
    */
   @DomName('Node.insertBefore')
   @DocsEditable()
-  Node insertBefore(Node newChild, Node refChild) => _blink.BlinkNode.insertBefore_Callback_2(this, newChild, refChild);
+  Node insertBefore(Node newChild, Node refChild) => _blink.BlinkNode.instance.insertBefore_Callback_2_(this, newChild, refChild);
 
   @DomName('Node.removeChild')
   @DocsEditable()
-  Node _removeChild(Node oldChild) => _blink.BlinkNode.removeChild_Callback_1(this, oldChild);
+  Node _removeChild(Node oldChild) => _blink.BlinkNode.instance.removeChild_Callback_1_(this, oldChild);
 
   @DomName('Node.replaceChild')
   @DocsEditable()
-  Node _replaceChild(Node newChild, Node oldChild) => _blink.BlinkNode.replaceChild_Callback_2(this, newChild, oldChild);
+  Node _replaceChild(Node newChild, Node oldChild) => _blink.BlinkNode.instance.replaceChild_Callback_2_(this, newChild, oldChild);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24371,31 +24376,31 @@
 
   @DomName('NodeIterator.pointerBeforeReferenceNode')
   @DocsEditable()
-  bool get pointerBeforeReferenceNode => _blink.BlinkNodeIterator.pointerBeforeReferenceNode_Getter(this);
+  bool get pointerBeforeReferenceNode => _blink.BlinkNodeIterator.instance.pointerBeforeReferenceNode_Getter_(this);
 
   @DomName('NodeIterator.referenceNode')
   @DocsEditable()
-  Node get referenceNode => _blink.BlinkNodeIterator.referenceNode_Getter(this);
+  Node get referenceNode => _blink.BlinkNodeIterator.instance.referenceNode_Getter_(this);
 
   @DomName('NodeIterator.root')
   @DocsEditable()
-  Node get root => _blink.BlinkNodeIterator.root_Getter(this);
+  Node get root => _blink.BlinkNodeIterator.instance.root_Getter_(this);
 
   @DomName('NodeIterator.whatToShow')
   @DocsEditable()
-  int get whatToShow => _blink.BlinkNodeIterator.whatToShow_Getter(this);
+  int get whatToShow => _blink.BlinkNodeIterator.instance.whatToShow_Getter_(this);
 
   @DomName('NodeIterator.detach')
   @DocsEditable()
-  void detach() => _blink.BlinkNodeIterator.detach_Callback(this);
+  void detach() => _blink.BlinkNodeIterator.instance.detach_Callback_0_(this);
 
   @DomName('NodeIterator.nextNode')
   @DocsEditable()
-  Node nextNode() => _blink.BlinkNodeIterator.nextNode_Callback(this);
+  Node nextNode() => _blink.BlinkNodeIterator.instance.nextNode_Callback_0_(this);
 
   @DomName('NodeIterator.previousNode')
   @DocsEditable()
-  Node previousNode() => _blink.BlinkNodeIterator.previousNode_Callback(this);
+  Node previousNode() => _blink.BlinkNodeIterator.instance.previousNode_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24413,15 +24418,15 @@
 
   @DomName('NodeList.length')
   @DocsEditable()
-  int get length => _blink.BlinkNodeList.length_Getter(this);
+  int get length => _blink.BlinkNodeList.instance.length_Getter_(this);
 
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkNodeList.item_Callback_1(this, index);
+    return _blink.BlinkNodeList.instance.item_Callback_1_(this, index);
   }
 
-  Node _nativeIndexedGetter(int index) => _blink.BlinkNodeList.item_Callback_1(this, index);
+  Node _nativeIndexedGetter(int index) => _blink.BlinkNodeList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -24463,7 +24468,7 @@
 
   @DomName('NodeList.item')
   @DocsEditable()
-  Node _item(int index) => _blink.BlinkNodeList.item_Callback_1(this, index);
+  Node _item(int index) => _blink.BlinkNodeList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -24534,53 +24539,53 @@
   @DomName('Notification.Notification')
   @DocsEditable()
   static Notification _factoryNotification(String title, [Map options]) {
-    return _blink.BlinkNotification.constructorCallback_2(title, options);
+    return _blink.BlinkNotification.instance.constructorCallback_2_(title, options);
   }
 
   @DomName('Notification.body')
   @DocsEditable()
   @Experimental() // untriaged
-  String get body => _blink.BlinkNotification.body_Getter(this);
+  String get body => _blink.BlinkNotification.instance.body_Getter_(this);
 
   @DomName('Notification.dir')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get dir => _blink.BlinkNotification.dir_Getter(this);
+  String get dir => _blink.BlinkNotification.instance.dir_Getter_(this);
 
   @DomName('Notification.icon')
   @DocsEditable()
   @Experimental() // untriaged
-  String get icon => _blink.BlinkNotification.icon_Getter(this);
+  String get icon => _blink.BlinkNotification.instance.icon_Getter_(this);
 
   @DomName('Notification.lang')
   @DocsEditable()
   @Experimental() // untriaged
-  String get lang => _blink.BlinkNotification.lang_Getter(this);
+  String get lang => _blink.BlinkNotification.instance.lang_Getter_(this);
 
   @DomName('Notification.permission')
   @DocsEditable()
-  String get permission => _blink.BlinkNotification.permission_Getter(this);
+  String get permission => _blink.BlinkNotification.instance.permission_Getter_();
 
   @DomName('Notification.tag')
   @DocsEditable()
   @Experimental() // nonstandard
-  String get tag => _blink.BlinkNotification.tag_Getter(this);
+  String get tag => _blink.BlinkNotification.instance.tag_Getter_(this);
 
   @DomName('Notification.title')
   @DocsEditable()
   @Experimental() // untriaged
-  String get title => _blink.BlinkNotification.title_Getter(this);
+  String get title => _blink.BlinkNotification.instance.title_Getter_(this);
 
   @DomName('Notification.close')
   @DocsEditable()
-  void close() => _blink.BlinkNotification.close_Callback(this);
+  void close() => _blink.BlinkNotification.instance.close_Callback_0_(this);
 
   static void _requestPermission([_NotificationPermissionCallback callback]) {
     if (callback != null) {
-      _blink.BlinkNotification.requestPermission_Callback_1(callback);
+      _blink.BlinkNotification.instance.requestPermission_Callback_1_(callback);
       return;
     }
-    _blink.BlinkNotification.requestPermission_Callback();
+    _blink.BlinkNotification.instance.requestPermission_Callback_0_();
     return;
   }
 
@@ -24648,27 +24653,27 @@
 
   @DomName('HTMLOListElement.reversed')
   @DocsEditable()
-  bool get reversed => _blink.BlinkHTMLOListElement.reversed_Getter(this);
+  bool get reversed => _blink.BlinkHTMLOListElement.instance.reversed_Getter_(this);
 
   @DomName('HTMLOListElement.reversed')
   @DocsEditable()
-  void set reversed(bool value) => _blink.BlinkHTMLOListElement.reversed_Setter(this, value);
+  void set reversed(bool value) => _blink.BlinkHTMLOListElement.instance.reversed_Setter_(this, value);
 
   @DomName('HTMLOListElement.start')
   @DocsEditable()
-  int get start => _blink.BlinkHTMLOListElement.start_Getter(this);
+  int get start => _blink.BlinkHTMLOListElement.instance.start_Getter_(this);
 
   @DomName('HTMLOListElement.start')
   @DocsEditable()
-  void set start(int value) => _blink.BlinkHTMLOListElement.start_Setter(this, value);
+  void set start(int value) => _blink.BlinkHTMLOListElement.instance.start_Setter_(this, value);
 
   @DomName('HTMLOListElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLOListElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLOListElement.instance.type_Getter_(this);
 
   @DomName('HTMLOListElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLOListElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLOListElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24703,93 +24708,93 @@
 
   @DomName('HTMLObjectElement.data')
   @DocsEditable()
-  String get data => _blink.BlinkHTMLObjectElement.data_Getter(this);
+  String get data => _blink.BlinkHTMLObjectElement.instance.data_Getter_(this);
 
   @DomName('HTMLObjectElement.data')
   @DocsEditable()
-  void set data(String value) => _blink.BlinkHTMLObjectElement.data_Setter(this, value);
+  void set data(String value) => _blink.BlinkHTMLObjectElement.instance.data_Setter_(this, value);
 
   @DomName('HTMLObjectElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLObjectElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLObjectElement.instance.form_Getter_(this);
 
   @DomName('HTMLObjectElement.height')
   @DocsEditable()
-  String get height => _blink.BlinkHTMLObjectElement.height_Getter(this);
+  String get height => _blink.BlinkHTMLObjectElement.instance.height_Getter_(this);
 
   @DomName('HTMLObjectElement.height')
   @DocsEditable()
-  void set height(String value) => _blink.BlinkHTMLObjectElement.height_Setter(this, value);
+  void set height(String value) => _blink.BlinkHTMLObjectElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLObjectElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLObjectElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLObjectElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLObjectElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLObjectElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLObjectElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLObjectElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLObjectElement.instance.name_Getter_(this);
 
   @DomName('HTMLObjectElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLObjectElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLObjectElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLObjectElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLObjectElement.instance.type_Getter_(this);
 
   @DomName('HTMLObjectElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLObjectElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLObjectElement.instance.type_Setter_(this, value);
 
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
-  String get useMap => _blink.BlinkHTMLObjectElement.useMap_Getter(this);
+  String get useMap => _blink.BlinkHTMLObjectElement.instance.useMap_Getter_(this);
 
   @DomName('HTMLObjectElement.useMap')
   @DocsEditable()
-  void set useMap(String value) => _blink.BlinkHTMLObjectElement.useMap_Setter(this, value);
+  void set useMap(String value) => _blink.BlinkHTMLObjectElement.instance.useMap_Setter_(this, value);
 
   @DomName('HTMLObjectElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLObjectElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLObjectElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLObjectElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLObjectElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLObjectElement.instance.validity_Getter_(this);
 
   @DomName('HTMLObjectElement.width')
   @DocsEditable()
-  String get width => _blink.BlinkHTMLObjectElement.width_Getter(this);
+  String get width => _blink.BlinkHTMLObjectElement.instance.width_Getter_(this);
 
   @DomName('HTMLObjectElement.width')
   @DocsEditable()
-  void set width(String value) => _blink.BlinkHTMLObjectElement.width_Setter(this, value);
+  void set width(String value) => _blink.BlinkHTMLObjectElement.instance.width_Setter_(this, value);
 
   @DomName('HTMLObjectElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLObjectElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLObjectElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLObjectElement.__getter__')
   @DocsEditable()
-  bool __getter__(index_OR_name) => _blink.BlinkHTMLObjectElement.$__getter___Callback_1(this, index_OR_name);
+  bool __getter__(index_OR_name) => _blink.BlinkHTMLObjectElement.instance.$__getter___Callback_1_(this, index_OR_name);
 
   @DomName('HTMLObjectElement.__setter__')
   @DocsEditable()
-  void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLObjectElement.$__setter___Callback_2(this, index_OR_name, value);
+  void __setter__(index_OR_name, Node value) => _blink.BlinkHTMLObjectElement.instance.$__setter___Callback_2_(this, index_OR_name, value);
 
   @DomName('HTMLObjectElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLObjectElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLObjectElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLObjectElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLObjectElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLObjectElement.instance.setCustomValidity_Callback_1_(this, error);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24817,19 +24822,19 @@
 
   @DomName('HTMLOptGroupElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLOptGroupElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLOptGroupElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLOptGroupElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLOptGroupElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLOptGroupElement.label_Getter(this);
+  String get label => _blink.BlinkHTMLOptGroupElement.instance.label_Getter_(this);
 
   @DomName('HTMLOptGroupElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLOptGroupElement.label_Setter(this, value);
+  void set label(String value) => _blink.BlinkHTMLOptGroupElement.instance.label_Setter_(this, value);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -24846,7 +24851,7 @@
   @DomName('HTMLOptionElement.HTMLOptionElement')
   @DocsEditable()
   factory OptionElement._([String data, String value, bool defaultSelected, bool selected]) {
-    return _blink.BlinkHTMLOptionElement.constructorCallback_4(data, value, defaultSelected, selected);
+    return _blink.BlinkHTMLOptionElement.instance.constructorCallback_4_(data, value, defaultSelected, selected);
   }
   /**
    * Constructor instantiated by the DOM when a custom element has been created.
@@ -24857,51 +24862,51 @@
 
   @DomName('HTMLOptionElement.defaultSelected')
   @DocsEditable()
-  bool get defaultSelected => _blink.BlinkHTMLOptionElement.defaultSelected_Getter(this);
+  bool get defaultSelected => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Getter_(this);
 
   @DomName('HTMLOptionElement.defaultSelected')
   @DocsEditable()
-  void set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.defaultSelected_Setter(this, value);
+  void set defaultSelected(bool value) => _blink.BlinkHTMLOptionElement.instance.defaultSelected_Setter_(this, value);
 
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLOptionElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLOptionElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLOptionElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLOptionElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLOptionElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLOptionElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLOptionElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLOptionElement.instance.form_Getter_(this);
 
   @DomName('HTMLOptionElement.index')
   @DocsEditable()
-  int get index => _blink.BlinkHTMLOptionElement.index_Getter(this);
+  int get index => _blink.BlinkHTMLOptionElement.instance.index_Getter_(this);
 
   @DomName('HTMLOptionElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLOptionElement.label_Getter(this);
+  String get label => _blink.BlinkHTMLOptionElement.instance.label_Getter_(this);
 
   @DomName('HTMLOptionElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLOptionElement.label_Setter(this, value);
+  void set label(String value) => _blink.BlinkHTMLOptionElement.instance.label_Setter_(this, value);
 
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
-  bool get selected => _blink.BlinkHTMLOptionElement.selected_Getter(this);
+  bool get selected => _blink.BlinkHTMLOptionElement.instance.selected_Getter_(this);
 
   @DomName('HTMLOptionElement.selected')
   @DocsEditable()
-  void set selected(bool value) => _blink.BlinkHTMLOptionElement.selected_Setter(this, value);
+  void set selected(bool value) => _blink.BlinkHTMLOptionElement.instance.selected_Setter_(this, value);
 
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLOptionElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLOptionElement.instance.value_Getter_(this);
 
   @DomName('HTMLOptionElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLOptionElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLOptionElement.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -24935,64 +24940,64 @@
 
   @DomName('HTMLOutputElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLOutputElement.defaultValue_Getter(this);
+  String get defaultValue => _blink.BlinkHTMLOutputElement.instance.defaultValue_Getter_(this);
 
   @DomName('HTMLOutputElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLOutputElement.defaultValue_Setter(this, value);
+  void set defaultValue(String value) => _blink.BlinkHTMLOutputElement.instance.defaultValue_Setter_(this, value);
 
   @DomName('HTMLOutputElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLOutputElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLOutputElement.instance.form_Getter_(this);
 
   @DomName('HTMLOutputElement.htmlFor')
   @DocsEditable()
-  DomSettableTokenList get htmlFor => _blink.BlinkHTMLOutputElement.htmlFor_Getter(this);
+  DomSettableTokenList get htmlFor => _blink.BlinkHTMLOutputElement.instance.htmlFor_Getter_(this);
 
   @DomName('HTMLOutputElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLOutputElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLOutputElement.instance.labels_Getter_(this);
 
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLOutputElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLOutputElement.instance.name_Getter_(this);
 
   @DomName('HTMLOutputElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLOutputElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLOutputElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLOutputElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLOutputElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLOutputElement.instance.type_Getter_(this);
 
   @DomName('HTMLOutputElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLOutputElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLOutputElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLOutputElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLOutputElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLOutputElement.instance.validity_Getter_(this);
 
   @DomName('HTMLOutputElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLOutputElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLOutputElement.instance.value_Getter_(this);
 
   @DomName('HTMLOutputElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLOutputElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLOutputElement.instance.value_Setter_(this, value);
 
   @DomName('HTMLOutputElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLOutputElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLOutputElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLOutputElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLOutputElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLOutputElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLOutputElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLOutputElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLOutputElement.instance.setCustomValidity_Callback_1_(this, error);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25023,15 +25028,15 @@
 
   @DomName('OverflowEvent.horizontalOverflow')
   @DocsEditable()
-  bool get horizontalOverflow => _blink.BlinkOverflowEvent.horizontalOverflow_Getter(this);
+  bool get horizontalOverflow => _blink.BlinkOverflowEvent.instance.horizontalOverflow_Getter_(this);
 
   @DomName('OverflowEvent.orient')
   @DocsEditable()
-  int get orient => _blink.BlinkOverflowEvent.orient_Getter(this);
+  int get orient => _blink.BlinkOverflowEvent.instance.orient_Getter_(this);
 
   @DomName('OverflowEvent.verticalOverflow')
   @DocsEditable()
-  bool get verticalOverflow => _blink.BlinkOverflowEvent.verticalOverflow_Getter(this);
+  bool get verticalOverflow => _blink.BlinkOverflowEvent.instance.verticalOverflow_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25051,7 +25056,7 @@
 
   @DomName('PageTransitionEvent.persisted')
   @DocsEditable()
-  bool get persisted => _blink.BlinkPageTransitionEvent.persisted_Getter(this);
+  bool get persisted => _blink.BlinkPageTransitionEvent.instance.persisted_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25104,19 +25109,19 @@
 
   @DomName('HTMLParamElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLParamElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLParamElement.instance.name_Getter_(this);
 
   @DomName('HTMLParamElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLParamElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLParamElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLParamElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLParamElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLParamElement.instance.value_Getter_(this);
 
   @DomName('HTMLParamElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLParamElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLParamElement.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25136,32 +25141,32 @@
   @DomName('ParentNode.childElementCount')
   @DocsEditable()
   @Experimental() // untriaged
-  int get _childElementCount => _blink.BlinkParentNode.childElementCount_Getter(this);
+  int get _childElementCount;
 
   @DomName('ParentNode.children')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> get _children => _blink.BlinkParentNode.children_Getter(this);
+  List<Node> get _children;
 
   @DomName('ParentNode.firstElementChild')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get _firstElementChild => _blink.BlinkParentNode.firstElementChild_Getter(this);
+  Element get _firstElementChild;
 
   @DomName('ParentNode.lastElementChild')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get _lastElementChild => _blink.BlinkParentNode.lastElementChild_Getter(this);
+  Element get _lastElementChild;
 
   @DomName('ParentNode.querySelector')
   @DocsEditable()
   @Experimental() // untriaged
-  Element querySelector(String selectors) => _blink.BlinkParentNode.querySelector_Callback_1(this, selectors);
+  Element querySelector(String selectors);
 
   @DomName('ParentNode.querySelectorAll')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> querySelectorAll(String selectors) => _blink.BlinkParentNode.querySelectorAll_Callback_1(this, selectors);
+  List<Node> querySelectorAll(String selectors);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25182,70 +25187,70 @@
   @DocsEditable()
   factory Path2D([path_OR_text]) {
     if (path_OR_text == null) {
-      return _blink.BlinkPath2D.constructorCallback();
+      return _blink.BlinkPath2D.instance.constructorCallback_0_();
     }
     if ((path_OR_text is Path2D || path_OR_text == null)) {
-      return _blink.BlinkPath2D.constructorCallback_1(path_OR_text);
+      return _blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text);
     }
     if ((path_OR_text is String || path_OR_text == null)) {
-      return _blink.BlinkPath2D.constructorCallback_1(path_OR_text);
+      return _blink.BlinkPath2D.instance.constructorCallback_1_(path_OR_text);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   void addPath(Path2D path, [Matrix transform]) {
     if (transform != null) {
-      _blink.BlinkPath2D.addPath_Callback_2(this, path, transform);
+      _blink.BlinkPath2D.instance.addPath_Callback_2_(this, path, transform);
       return;
     }
-    _blink.BlinkPath2D.addPath_Callback_1(this, path);
+    _blink.BlinkPath2D.instance.addPath_Callback_1_(this, path);
     return;
   }
 
   @DomName('Path2D.arc')
   @DocsEditable()
   @Experimental() // untriaged
-  void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.arc_Callback_6(this, x, y, radius, startAngle, endAngle, anticlockwise);
+  void arc(num x, num y, num radius, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.instance.arc_Callback_6_(this, x, y, radius, startAngle, endAngle, anticlockwise);
 
   @DomName('Path2D.arcTo')
   @DocsEditable()
   @Experimental() // untriaged
-  void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkPath2D.arcTo_Callback_5(this, x1, y1, x2, y2, radius);
+  void arcTo(num x1, num y1, num x2, num y2, num radius) => _blink.BlinkPath2D.instance.arcTo_Callback_5_(this, x1, y1, x2, y2, radius);
 
   @DomName('Path2D.bezierCurveTo')
   @DocsEditable()
   @Experimental() // untriaged
-  void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkPath2D.bezierCurveTo_Callback_6(this, cp1x, cp1y, cp2x, cp2y, x, y);
+  void bezierCurveTo(num cp1x, num cp1y, num cp2x, num cp2y, num x, num y) => _blink.BlinkPath2D.instance.bezierCurveTo_Callback_6_(this, cp1x, cp1y, cp2x, cp2y, x, y);
 
   @DomName('Path2D.closePath')
   @DocsEditable()
   @Experimental() // untriaged
-  void closePath() => _blink.BlinkPath2D.closePath_Callback(this);
+  void closePath() => _blink.BlinkPath2D.instance.closePath_Callback_0_(this);
 
   @DomName('Path2D.ellipse')
   @DocsEditable()
   @Experimental() // untriaged
-  void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.ellipse_Callback_8(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
+  void ellipse(num x, num y, num radiusX, num radiusY, num rotation, num startAngle, num endAngle, bool anticlockwise) => _blink.BlinkPath2D.instance.ellipse_Callback_8_(this, x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
 
   @DomName('Path2D.lineTo')
   @DocsEditable()
   @Experimental() // untriaged
-  void lineTo(num x, num y) => _blink.BlinkPath2D.lineTo_Callback_2(this, x, y);
+  void lineTo(num x, num y) => _blink.BlinkPath2D.instance.lineTo_Callback_2_(this, x, y);
 
   @DomName('Path2D.moveTo')
   @DocsEditable()
   @Experimental() // untriaged
-  void moveTo(num x, num y) => _blink.BlinkPath2D.moveTo_Callback_2(this, x, y);
+  void moveTo(num x, num y) => _blink.BlinkPath2D.instance.moveTo_Callback_2_(this, x, y);
 
   @DomName('Path2D.quadraticCurveTo')
   @DocsEditable()
   @Experimental() // untriaged
-  void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkPath2D.quadraticCurveTo_Callback_4(this, cpx, cpy, x, y);
+  void quadraticCurveTo(num cpx, num cpy, num x, num y) => _blink.BlinkPath2D.instance.quadraticCurveTo_Callback_4_(this, cpx, cpy, x, y);
 
   @DomName('Path2D.rect')
   @DocsEditable()
   @Experimental() // untriaged
-  void rect(num x, num y, num width, num height) => _blink.BlinkPath2D.rect_Callback_4(this, x, y, width, height);
+  void rect(num x, num y, num width, num height) => _blink.BlinkPath2D.instance.rect_Callback_4_(this, x, y, width, height);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25284,61 +25289,61 @@
   @DomName('Performance.memory')
   @DocsEditable()
   @Experimental() // nonstandard
-  MemoryInfo get memory => _blink.BlinkPerformance.memory_Getter(this);
+  MemoryInfo get memory => _blink.BlinkPerformance.instance.memory_Getter_(this);
 
   @DomName('Performance.navigation')
   @DocsEditable()
-  PerformanceNavigation get navigation => _blink.BlinkPerformance.navigation_Getter(this);
+  PerformanceNavigation get navigation => _blink.BlinkPerformance.instance.navigation_Getter_(this);
 
   @DomName('Performance.timing')
   @DocsEditable()
-  PerformanceTiming get timing => _blink.BlinkPerformance.timing_Getter(this);
+  PerformanceTiming get timing => _blink.BlinkPerformance.instance.timing_Getter_(this);
 
   @DomName('Performance.clearMarks')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface
   @Experimental()
-  void clearMarks(String markName) => _blink.BlinkPerformance.clearMarks_Callback_1(this, markName);
+  void clearMarks(String markName) => _blink.BlinkPerformance.instance.clearMarks_Callback_1_(this, markName);
 
   @DomName('Performance.clearMeasures')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface
   @Experimental()
-  void clearMeasures(String measureName) => _blink.BlinkPerformance.clearMeasures_Callback_1(this, measureName);
+  void clearMeasures(String measureName) => _blink.BlinkPerformance.instance.clearMeasures_Callback_1_(this, measureName);
 
   @DomName('Performance.getEntries')
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntries() => _blink.BlinkPerformance.getEntries_Callback(this);
+  List<PerformanceEntry> getEntries() => _blink.BlinkPerformance.instance.getEntries_Callback_0_(this);
 
   @DomName('Performance.getEntriesByName')
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntriesByName(String name, String entryType) => _blink.BlinkPerformance.getEntriesByName_Callback_2(this, name, entryType);
+  List<PerformanceEntry> getEntriesByName(String name, String entryType) => _blink.BlinkPerformance.instance.getEntriesByName_Callback_2_(this, name, entryType);
 
   @DomName('Performance.getEntriesByType')
   @DocsEditable()
   // http://www.w3.org/TR/performance-timeline/#sec-window.performance-attribute
   @Experimental()
-  List<PerformanceEntry> getEntriesByType(String entryType) => _blink.BlinkPerformance.getEntriesByType_Callback_1(this, entryType);
+  List<PerformanceEntry> getEntriesByType(String entryType) => _blink.BlinkPerformance.instance.getEntriesByType_Callback_1_(this, entryType);
 
   @DomName('Performance.mark')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface
   @Experimental()
-  void mark(String markName) => _blink.BlinkPerformance.mark_Callback_1(this, markName);
+  void mark(String markName) => _blink.BlinkPerformance.instance.mark_Callback_1_(this, markName);
 
   @DomName('Performance.measure')
   @DocsEditable()
   // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/UserTiming/Overview.html#extensions-performance-interface
   @Experimental()
-  void measure(String measureName, String startMark, String endMark) => _blink.BlinkPerformance.measure_Callback_3(this, measureName, startMark, endMark);
+  void measure(String measureName, String startMark, String endMark) => _blink.BlinkPerformance.instance.measure_Callback_3_(this, measureName, startMark, endMark);
 
   @DomName('Performance.now')
   @DocsEditable()
-  double now() => _blink.BlinkPerformance.now_Callback(this);
+  double now() => _blink.BlinkPerformance.instance.now_Callback_0_(this);
 
   @DomName('Performance.webkitClearResourceTimings')
   @DocsEditable()
@@ -25346,7 +25351,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3c-test.org/webperf/specs/ResourceTiming/#extensions-performance-interface
-  void clearResourceTimings() => _blink.BlinkPerformance.webkitClearResourceTimings_Callback(this);
+  void clearResourceTimings() => _blink.BlinkPerformance.instance.webkitClearResourceTimings_Callback_0_(this);
 
   @DomName('Performance.webkitSetResourceTimingBufferSize')
   @DocsEditable()
@@ -25354,7 +25359,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // http://www.w3c-test.org/webperf/specs/ResourceTiming/#performanceresourcetiming-methods
-  void setResourceTimingBufferSize(int maxSize) => _blink.BlinkPerformance.webkitSetResourceTimingBufferSize_Callback_1(this, maxSize);
+  void setResourceTimingBufferSize(int maxSize) => _blink.BlinkPerformance.instance.webkitSetResourceTimingBufferSize_Callback_1_(this, maxSize);
 
   /// Stream of `resourcetimingbufferfull` events handled by this [Performance].
   @DomName('Performance.onwebkitresourcetimingbufferfull')
@@ -25381,19 +25386,19 @@
 
   @DomName('PerformanceEntry.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkPerformanceEntry.duration_Getter(this);
+  double get duration => _blink.BlinkPerformanceEntry.instance.duration_Getter_(this);
 
   @DomName('PerformanceEntry.entryType')
   @DocsEditable()
-  String get entryType => _blink.BlinkPerformanceEntry.entryType_Getter(this);
+  String get entryType => _blink.BlinkPerformanceEntry.instance.entryType_Getter_(this);
 
   @DomName('PerformanceEntry.name')
   @DocsEditable()
-  String get name => _blink.BlinkPerformanceEntry.name_Getter(this);
+  String get name => _blink.BlinkPerformanceEntry.instance.name_Getter_(this);
 
   @DomName('PerformanceEntry.startTime')
   @DocsEditable()
-  double get startTime => _blink.BlinkPerformanceEntry.startTime_Getter(this);
+  double get startTime => _blink.BlinkPerformanceEntry.instance.startTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25460,11 +25465,11 @@
 
   @DomName('PerformanceNavigation.redirectCount')
   @DocsEditable()
-  int get redirectCount => _blink.BlinkPerformanceNavigation.redirectCount_Getter(this);
+  int get redirectCount => _blink.BlinkPerformanceNavigation.instance.redirectCount_Getter_(this);
 
   @DomName('PerformanceNavigation.type')
   @DocsEditable()
-  int get type => _blink.BlinkPerformanceNavigation.type_Getter(this);
+  int get type => _blink.BlinkPerformanceNavigation.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25484,54 +25489,54 @@
 
   @DomName('PerformanceResourceTiming.connectEnd')
   @DocsEditable()
-  double get connectEnd => _blink.BlinkPerformanceResourceTiming.connectEnd_Getter(this);
+  double get connectEnd => _blink.BlinkPerformanceResourceTiming.instance.connectEnd_Getter_(this);
 
   @DomName('PerformanceResourceTiming.connectStart')
   @DocsEditable()
-  double get connectStart => _blink.BlinkPerformanceResourceTiming.connectStart_Getter(this);
+  double get connectStart => _blink.BlinkPerformanceResourceTiming.instance.connectStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.domainLookupEnd')
   @DocsEditable()
-  double get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.domainLookupEnd_Getter(this);
+  double get domainLookupEnd => _blink.BlinkPerformanceResourceTiming.instance.domainLookupEnd_Getter_(this);
 
   @DomName('PerformanceResourceTiming.domainLookupStart')
   @DocsEditable()
-  double get domainLookupStart => _blink.BlinkPerformanceResourceTiming.domainLookupStart_Getter(this);
+  double get domainLookupStart => _blink.BlinkPerformanceResourceTiming.instance.domainLookupStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.fetchStart')
   @DocsEditable()
-  double get fetchStart => _blink.BlinkPerformanceResourceTiming.fetchStart_Getter(this);
+  double get fetchStart => _blink.BlinkPerformanceResourceTiming.instance.fetchStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.initiatorType')
   @DocsEditable()
-  String get initiatorType => _blink.BlinkPerformanceResourceTiming.initiatorType_Getter(this);
+  String get initiatorType => _blink.BlinkPerformanceResourceTiming.instance.initiatorType_Getter_(this);
 
   @DomName('PerformanceResourceTiming.redirectEnd')
   @DocsEditable()
-  double get redirectEnd => _blink.BlinkPerformanceResourceTiming.redirectEnd_Getter(this);
+  double get redirectEnd => _blink.BlinkPerformanceResourceTiming.instance.redirectEnd_Getter_(this);
 
   @DomName('PerformanceResourceTiming.redirectStart')
   @DocsEditable()
-  double get redirectStart => _blink.BlinkPerformanceResourceTiming.redirectStart_Getter(this);
+  double get redirectStart => _blink.BlinkPerformanceResourceTiming.instance.redirectStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.requestStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get requestStart => _blink.BlinkPerformanceResourceTiming.requestStart_Getter(this);
+  double get requestStart => _blink.BlinkPerformanceResourceTiming.instance.requestStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.responseEnd')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get responseEnd => _blink.BlinkPerformanceResourceTiming.responseEnd_Getter(this);
+  double get responseEnd => _blink.BlinkPerformanceResourceTiming.instance.responseEnd_Getter_(this);
 
   @DomName('PerformanceResourceTiming.responseStart')
   @DocsEditable()
   @Experimental() // nonstandard
-  double get responseStart => _blink.BlinkPerformanceResourceTiming.responseStart_Getter(this);
+  double get responseStart => _blink.BlinkPerformanceResourceTiming.instance.responseStart_Getter_(this);
 
   @DomName('PerformanceResourceTiming.secureConnectionStart')
   @DocsEditable()
-  double get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.secureConnectionStart_Getter(this);
+  double get secureConnectionStart => _blink.BlinkPerformanceResourceTiming.instance.secureConnectionStart_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25550,87 +25555,87 @@
 
   @DomName('PerformanceTiming.connectEnd')
   @DocsEditable()
-  int get connectEnd => _blink.BlinkPerformanceTiming.connectEnd_Getter(this);
+  int get connectEnd => _blink.BlinkPerformanceTiming.instance.connectEnd_Getter_(this);
 
   @DomName('PerformanceTiming.connectStart')
   @DocsEditable()
-  int get connectStart => _blink.BlinkPerformanceTiming.connectStart_Getter(this);
+  int get connectStart => _blink.BlinkPerformanceTiming.instance.connectStart_Getter_(this);
 
   @DomName('PerformanceTiming.domComplete')
   @DocsEditable()
-  int get domComplete => _blink.BlinkPerformanceTiming.domComplete_Getter(this);
+  int get domComplete => _blink.BlinkPerformanceTiming.instance.domComplete_Getter_(this);
 
   @DomName('PerformanceTiming.domContentLoadedEventEnd')
   @DocsEditable()
-  int get domContentLoadedEventEnd => _blink.BlinkPerformanceTiming.domContentLoadedEventEnd_Getter(this);
+  int get domContentLoadedEventEnd => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventEnd_Getter_(this);
 
   @DomName('PerformanceTiming.domContentLoadedEventStart')
   @DocsEditable()
-  int get domContentLoadedEventStart => _blink.BlinkPerformanceTiming.domContentLoadedEventStart_Getter(this);
+  int get domContentLoadedEventStart => _blink.BlinkPerformanceTiming.instance.domContentLoadedEventStart_Getter_(this);
 
   @DomName('PerformanceTiming.domInteractive')
   @DocsEditable()
-  int get domInteractive => _blink.BlinkPerformanceTiming.domInteractive_Getter(this);
+  int get domInteractive => _blink.BlinkPerformanceTiming.instance.domInteractive_Getter_(this);
 
   @DomName('PerformanceTiming.domLoading')
   @DocsEditable()
-  int get domLoading => _blink.BlinkPerformanceTiming.domLoading_Getter(this);
+  int get domLoading => _blink.BlinkPerformanceTiming.instance.domLoading_Getter_(this);
 
   @DomName('PerformanceTiming.domainLookupEnd')
   @DocsEditable()
-  int get domainLookupEnd => _blink.BlinkPerformanceTiming.domainLookupEnd_Getter(this);
+  int get domainLookupEnd => _blink.BlinkPerformanceTiming.instance.domainLookupEnd_Getter_(this);
 
   @DomName('PerformanceTiming.domainLookupStart')
   @DocsEditable()
-  int get domainLookupStart => _blink.BlinkPerformanceTiming.domainLookupStart_Getter(this);
+  int get domainLookupStart => _blink.BlinkPerformanceTiming.instance.domainLookupStart_Getter_(this);
 
   @DomName('PerformanceTiming.fetchStart')
   @DocsEditable()
-  int get fetchStart => _blink.BlinkPerformanceTiming.fetchStart_Getter(this);
+  int get fetchStart => _blink.BlinkPerformanceTiming.instance.fetchStart_Getter_(this);
 
   @DomName('PerformanceTiming.loadEventEnd')
   @DocsEditable()
-  int get loadEventEnd => _blink.BlinkPerformanceTiming.loadEventEnd_Getter(this);
+  int get loadEventEnd => _blink.BlinkPerformanceTiming.instance.loadEventEnd_Getter_(this);
 
   @DomName('PerformanceTiming.loadEventStart')
   @DocsEditable()
-  int get loadEventStart => _blink.BlinkPerformanceTiming.loadEventStart_Getter(this);
+  int get loadEventStart => _blink.BlinkPerformanceTiming.instance.loadEventStart_Getter_(this);
 
   @DomName('PerformanceTiming.navigationStart')
   @DocsEditable()
-  int get navigationStart => _blink.BlinkPerformanceTiming.navigationStart_Getter(this);
+  int get navigationStart => _blink.BlinkPerformanceTiming.instance.navigationStart_Getter_(this);
 
   @DomName('PerformanceTiming.redirectEnd')
   @DocsEditable()
-  int get redirectEnd => _blink.BlinkPerformanceTiming.redirectEnd_Getter(this);
+  int get redirectEnd => _blink.BlinkPerformanceTiming.instance.redirectEnd_Getter_(this);
 
   @DomName('PerformanceTiming.redirectStart')
   @DocsEditable()
-  int get redirectStart => _blink.BlinkPerformanceTiming.redirectStart_Getter(this);
+  int get redirectStart => _blink.BlinkPerformanceTiming.instance.redirectStart_Getter_(this);
 
   @DomName('PerformanceTiming.requestStart')
   @DocsEditable()
-  int get requestStart => _blink.BlinkPerformanceTiming.requestStart_Getter(this);
+  int get requestStart => _blink.BlinkPerformanceTiming.instance.requestStart_Getter_(this);
 
   @DomName('PerformanceTiming.responseEnd')
   @DocsEditable()
-  int get responseEnd => _blink.BlinkPerformanceTiming.responseEnd_Getter(this);
+  int get responseEnd => _blink.BlinkPerformanceTiming.instance.responseEnd_Getter_(this);
 
   @DomName('PerformanceTiming.responseStart')
   @DocsEditable()
-  int get responseStart => _blink.BlinkPerformanceTiming.responseStart_Getter(this);
+  int get responseStart => _blink.BlinkPerformanceTiming.instance.responseStart_Getter_(this);
 
   @DomName('PerformanceTiming.secureConnectionStart')
   @DocsEditable()
-  int get secureConnectionStart => _blink.BlinkPerformanceTiming.secureConnectionStart_Getter(this);
+  int get secureConnectionStart => _blink.BlinkPerformanceTiming.instance.secureConnectionStart_Getter_(this);
 
   @DomName('PerformanceTiming.unloadEventEnd')
   @DocsEditable()
-  int get unloadEventEnd => _blink.BlinkPerformanceTiming.unloadEventEnd_Getter(this);
+  int get unloadEventEnd => _blink.BlinkPerformanceTiming.instance.unloadEventEnd_Getter_(this);
 
   @DomName('PerformanceTiming.unloadEventStart')
   @DocsEditable()
-  int get unloadEventStart => _blink.BlinkPerformanceTiming.unloadEventStart_Getter(this);
+  int get unloadEventStart => _blink.BlinkPerformanceTiming.instance.unloadEventStart_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25670,31 +25675,31 @@
 
   @DomName('Plugin.description')
   @DocsEditable()
-  String get description => _blink.BlinkPlugin.description_Getter(this);
+  String get description => _blink.BlinkPlugin.instance.description_Getter_(this);
 
   @DomName('Plugin.filename')
   @DocsEditable()
-  String get filename => _blink.BlinkPlugin.filename_Getter(this);
+  String get filename => _blink.BlinkPlugin.instance.filename_Getter_(this);
 
   @DomName('Plugin.length')
   @DocsEditable()
-  int get length => _blink.BlinkPlugin.length_Getter(this);
+  int get length => _blink.BlinkPlugin.instance.length_Getter_(this);
 
   @DomName('Plugin.name')
   @DocsEditable()
-  String get name => _blink.BlinkPlugin.name_Getter(this);
+  String get name => _blink.BlinkPlugin.instance.name_Getter_(this);
 
   @DomName('Plugin.__getter__')
   @DocsEditable()
-  MimeType __getter__(String name) => _blink.BlinkPlugin.$__getter___Callback_1(this, name);
+  MimeType __getter__(String name) => _blink.BlinkPlugin.instance.$__getter___Callback_1_(this, name);
 
   @DomName('Plugin.item')
   @DocsEditable()
-  MimeType item(int index) => _blink.BlinkPlugin.item_Callback_1(this, index);
+  MimeType item(int index) => _blink.BlinkPlugin.instance.item_Callback_1_(this, index);
 
   @DomName('Plugin.namedItem')
   @DocsEditable()
-  MimeType namedItem(String name) => _blink.BlinkPlugin.namedItem_Callback_1(this, name);
+  MimeType namedItem(String name) => _blink.BlinkPlugin.instance.namedItem_Callback_1_(this, name);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25713,15 +25718,15 @@
 
   @DomName('PluginArray.length')
   @DocsEditable()
-  int get length => _blink.BlinkPluginArray.length_Getter(this);
+  int get length => _blink.BlinkPluginArray.instance.length_Getter_(this);
 
   Plugin operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkPluginArray.item_Callback_1(this, index);
+    return _blink.BlinkPluginArray.instance.item_Callback_1_(this, index);
   }
 
-  Plugin _nativeIndexedGetter(int index) => _blink.BlinkPluginArray.item_Callback_1(this, index);
+  Plugin _nativeIndexedGetter(int index) => _blink.BlinkPluginArray.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Plugin value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -25763,19 +25768,19 @@
 
   @DomName('PluginArray.__getter__')
   @DocsEditable()
-  Plugin __getter__(String name) => _blink.BlinkPluginArray.$__getter___Callback_1(this, name);
+  Plugin __getter__(String name) => _blink.BlinkPluginArray.instance.$__getter___Callback_1_(this, name);
 
   @DomName('PluginArray.item')
   @DocsEditable()
-  Plugin item(int index) => _blink.BlinkPluginArray.item_Callback_1(this, index);
+  Plugin item(int index) => _blink.BlinkPluginArray.instance.item_Callback_1_(this, index);
 
   @DomName('PluginArray.namedItem')
   @DocsEditable()
-  Plugin namedItem(String name) => _blink.BlinkPluginArray.namedItem_Callback_1(this, name);
+  Plugin namedItem(String name) => _blink.BlinkPluginArray.instance.namedItem_Callback_1_(this, name);
 
   @DomName('PluginArray.refresh')
   @DocsEditable()
-  void refresh(bool reload) => _blink.BlinkPluginArray.refresh_Callback_1(this, reload);
+  void refresh(bool reload) => _blink.BlinkPluginArray.instance.refresh_Callback_1_(this, reload);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25797,7 +25802,7 @@
 
   @DomName('PopStateEvent.state')
   @DocsEditable()
-  Object get state => _blink.BlinkPopStateEvent.state_Getter(this);
+  Object get state => _blink.BlinkPopStateEvent.instance.state_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25838,11 +25843,11 @@
 
   @DomName('PositionError.code')
   @DocsEditable()
-  int get code => _blink.BlinkPositionError.code_Getter(this);
+  int get code => _blink.BlinkPositionError.instance.code_Getter_(this);
 
   @DomName('PositionError.message')
   @DocsEditable()
-  String get message => _blink.BlinkPositionError.message_Getter(this);
+  String get message => _blink.BlinkPositionError.instance.message_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25896,11 +25901,11 @@
   @DomName('ProcessingInstruction.sheet')
   @DocsEditable()
   @Experimental() // non-standard
-  StyleSheet get sheet => _blink.BlinkProcessingInstruction.sheet_Getter(this);
+  StyleSheet get sheet => _blink.BlinkProcessingInstruction.instance.sheet_Getter_(this);
 
   @DomName('ProcessingInstruction.target')
   @DocsEditable()
-  String get target => _blink.BlinkProcessingInstruction.target_Getter(this);
+  String get target => _blink.BlinkProcessingInstruction.instance.target_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25936,27 +25941,27 @@
   @DomName('HTMLProgressElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLProgressElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLProgressElement.instance.labels_Getter_(this);
 
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
-  num get max => _blink.BlinkHTMLProgressElement.max_Getter(this);
+  num get max => _blink.BlinkHTMLProgressElement.instance.max_Getter_(this);
 
   @DomName('HTMLProgressElement.max')
   @DocsEditable()
-  void set max(num value) => _blink.BlinkHTMLProgressElement.max_Setter(this, value);
+  void set max(num value) => _blink.BlinkHTMLProgressElement.instance.max_Setter_(this, value);
 
   @DomName('HTMLProgressElement.position')
   @DocsEditable()
-  double get position => _blink.BlinkHTMLProgressElement.position_Getter(this);
+  double get position => _blink.BlinkHTMLProgressElement.instance.position_Getter_(this);
 
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
-  num get value => _blink.BlinkHTMLProgressElement.value_Getter(this);
+  num get value => _blink.BlinkHTMLProgressElement.instance.value_Getter_(this);
 
   @DomName('HTMLProgressElement.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkHTMLProgressElement.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkHTMLProgressElement.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -25974,15 +25979,15 @@
 
   @DomName('ProgressEvent.lengthComputable')
   @DocsEditable()
-  bool get lengthComputable => _blink.BlinkProgressEvent.lengthComputable_Getter(this);
+  bool get lengthComputable => _blink.BlinkProgressEvent.instance.lengthComputable_Getter_(this);
 
   @DomName('ProgressEvent.loaded')
   @DocsEditable()
-  int get loaded => _blink.BlinkProgressEvent.loaded_Getter(this);
+  int get loaded => _blink.BlinkProgressEvent.instance.loaded_Getter_(this);
 
   @DomName('ProgressEvent.total')
   @DocsEditable()
-  int get total => _blink.BlinkProgressEvent.total_Getter(this);
+  int get total => _blink.BlinkProgressEvent.instance.total_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26002,7 +26007,7 @@
   @DomName('PushEvent.data')
   @DocsEditable()
   @Experimental() // untriaged
-  String get data => _blink.BlinkPushEvent.data_Getter(this);
+  String get data => _blink.BlinkPushEvent.instance.data_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26022,7 +26027,7 @@
   @DomName('PushManager.register')
   @DocsEditable()
   @Experimental() // untriaged
-  Future register(String senderId) => _blink.BlinkPushManager.register_Callback_1(this, senderId);
+  Future register(String senderId) => _blink.BlinkPushManager.instance.register_Callback_1_(this, senderId);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26042,12 +26047,12 @@
   @DomName('PushRegistration.pushEndpoint')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pushEndpoint => _blink.BlinkPushRegistration.pushEndpoint_Getter(this);
+  String get pushEndpoint => _blink.BlinkPushRegistration.instance.pushEndpoint_Getter_(this);
 
   @DomName('PushRegistration.pushRegistrationId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pushRegistrationId => _blink.BlinkPushRegistration.pushRegistrationId_Getter(this);
+  String get pushRegistrationId => _blink.BlinkPushRegistration.instance.pushRegistrationId_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26075,11 +26080,11 @@
 
   @DomName('HTMLQuoteElement.cite')
   @DocsEditable()
-  String get cite => _blink.BlinkHTMLQuoteElement.cite_Getter(this);
+  String get cite => _blink.BlinkHTMLQuoteElement.instance.cite_Getter_(this);
 
   @DomName('HTMLQuoteElement.cite')
   @DocsEditable()
-  void set cite(String value) => _blink.BlinkHTMLQuoteElement.cite_Setter(this, value);
+  void set cite(String value) => _blink.BlinkHTMLQuoteElement.instance.cite_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26170,121 +26175,121 @@
 
   @DomName('Range.collapsed')
   @DocsEditable()
-  bool get collapsed => _blink.BlinkRange.collapsed_Getter(this);
+  bool get collapsed => _blink.BlinkRange.instance.collapsed_Getter_(this);
 
   @DomName('Range.commonAncestorContainer')
   @DocsEditable()
-  Node get commonAncestorContainer => _blink.BlinkRange.commonAncestorContainer_Getter(this);
+  Node get commonAncestorContainer => _blink.BlinkRange.instance.commonAncestorContainer_Getter_(this);
 
   @DomName('Range.endContainer')
   @DocsEditable()
-  Node get endContainer => _blink.BlinkRange.endContainer_Getter(this);
+  Node get endContainer => _blink.BlinkRange.instance.endContainer_Getter_(this);
 
   @DomName('Range.endOffset')
   @DocsEditable()
-  int get endOffset => _blink.BlinkRange.endOffset_Getter(this);
+  int get endOffset => _blink.BlinkRange.instance.endOffset_Getter_(this);
 
   @DomName('Range.startContainer')
   @DocsEditable()
-  Node get startContainer => _blink.BlinkRange.startContainer_Getter(this);
+  Node get startContainer => _blink.BlinkRange.instance.startContainer_Getter_(this);
 
   @DomName('Range.startOffset')
   @DocsEditable()
-  int get startOffset => _blink.BlinkRange.startOffset_Getter(this);
+  int get startOffset => _blink.BlinkRange.instance.startOffset_Getter_(this);
 
   @DomName('Range.cloneContents')
   @DocsEditable()
-  DocumentFragment cloneContents() => _blink.BlinkRange.cloneContents_Callback(this);
+  DocumentFragment cloneContents() => _blink.BlinkRange.instance.cloneContents_Callback_0_(this);
 
   @DomName('Range.cloneRange')
   @DocsEditable()
-  Range cloneRange() => _blink.BlinkRange.cloneRange_Callback(this);
+  Range cloneRange() => _blink.BlinkRange.instance.cloneRange_Callback_0_(this);
 
   void collapse([bool toStart]) {
     if (toStart != null) {
-      _blink.BlinkRange.collapse_Callback_1(this, toStart);
+      _blink.BlinkRange.instance.collapse_Callback_1_(this, toStart);
       return;
     }
-    _blink.BlinkRange.collapse_Callback(this);
+    _blink.BlinkRange.instance.collapse_Callback_0_(this);
     return;
   }
 
   @DomName('Range.comparePoint')
   @DocsEditable()
-  int comparePoint(Node refNode, int offset) => _blink.BlinkRange.comparePoint_Callback_2(this, refNode, offset);
+  int comparePoint(Node refNode, int offset) => _blink.BlinkRange.instance.comparePoint_Callback_2_(this, refNode, offset);
 
   @DomName('Range.createContextualFragment')
   @DocsEditable()
-  DocumentFragment createContextualFragment(String html) => _blink.BlinkRange.createContextualFragment_Callback_1(this, html);
+  DocumentFragment createContextualFragment(String html) => _blink.BlinkRange.instance.createContextualFragment_Callback_1_(this, html);
 
   @DomName('Range.deleteContents')
   @DocsEditable()
-  void deleteContents() => _blink.BlinkRange.deleteContents_Callback(this);
+  void deleteContents() => _blink.BlinkRange.instance.deleteContents_Callback_0_(this);
 
   @DomName('Range.detach')
   @DocsEditable()
-  void detach() => _blink.BlinkRange.detach_Callback(this);
+  void detach() => _blink.BlinkRange.instance.detach_Callback_0_(this);
 
   @DomName('Range.expand')
   @DocsEditable()
   @Experimental() // non-standard
-  void expand(String unit) => _blink.BlinkRange.expand_Callback_1(this, unit);
+  void expand(String unit) => _blink.BlinkRange.instance.expand_Callback_1_(this, unit);
 
   @DomName('Range.extractContents')
   @DocsEditable()
-  DocumentFragment extractContents() => _blink.BlinkRange.extractContents_Callback(this);
+  DocumentFragment extractContents() => _blink.BlinkRange.instance.extractContents_Callback_0_(this);
 
   @DomName('Range.getBoundingClientRect')
   @DocsEditable()
-  Rectangle getBoundingClientRect() => _blink.BlinkRange.getBoundingClientRect_Callback(this);
+  Rectangle getBoundingClientRect() => _blink.BlinkRange.instance.getBoundingClientRect_Callback_0_(this);
 
   @DomName('Range.getClientRects')
   @DocsEditable()
-  List<Rectangle> getClientRects() => _blink.BlinkRange.getClientRects_Callback(this);
+  List<Rectangle> getClientRects() => _blink.BlinkRange.instance.getClientRects_Callback_0_(this);
 
   @DomName('Range.insertNode')
   @DocsEditable()
-  void insertNode(Node newNode) => _blink.BlinkRange.insertNode_Callback_1(this, newNode);
+  void insertNode(Node newNode) => _blink.BlinkRange.instance.insertNode_Callback_1_(this, newNode);
 
   @DomName('Range.isPointInRange')
   @DocsEditable()
-  bool isPointInRange(Node refNode, int offset) => _blink.BlinkRange.isPointInRange_Callback_2(this, refNode, offset);
+  bool isPointInRange(Node refNode, int offset) => _blink.BlinkRange.instance.isPointInRange_Callback_2_(this, refNode, offset);
 
   @DomName('Range.selectNode')
   @DocsEditable()
-  void selectNode(Node refNode) => _blink.BlinkRange.selectNode_Callback_1(this, refNode);
+  void selectNode(Node refNode) => _blink.BlinkRange.instance.selectNode_Callback_1_(this, refNode);
 
   @DomName('Range.selectNodeContents')
   @DocsEditable()
-  void selectNodeContents(Node refNode) => _blink.BlinkRange.selectNodeContents_Callback_1(this, refNode);
+  void selectNodeContents(Node refNode) => _blink.BlinkRange.instance.selectNodeContents_Callback_1_(this, refNode);
 
   @DomName('Range.setEnd')
   @DocsEditable()
-  void setEnd(Node refNode, int offset) => _blink.BlinkRange.setEnd_Callback_2(this, refNode, offset);
+  void setEnd(Node refNode, int offset) => _blink.BlinkRange.instance.setEnd_Callback_2_(this, refNode, offset);
 
   @DomName('Range.setEndAfter')
   @DocsEditable()
-  void setEndAfter(Node refNode) => _blink.BlinkRange.setEndAfter_Callback_1(this, refNode);
+  void setEndAfter(Node refNode) => _blink.BlinkRange.instance.setEndAfter_Callback_1_(this, refNode);
 
   @DomName('Range.setEndBefore')
   @DocsEditable()
-  void setEndBefore(Node refNode) => _blink.BlinkRange.setEndBefore_Callback_1(this, refNode);
+  void setEndBefore(Node refNode) => _blink.BlinkRange.instance.setEndBefore_Callback_1_(this, refNode);
 
   @DomName('Range.setStart')
   @DocsEditable()
-  void setStart(Node refNode, int offset) => _blink.BlinkRange.setStart_Callback_2(this, refNode, offset);
+  void setStart(Node refNode, int offset) => _blink.BlinkRange.instance.setStart_Callback_2_(this, refNode, offset);
 
   @DomName('Range.setStartAfter')
   @DocsEditable()
-  void setStartAfter(Node refNode) => _blink.BlinkRange.setStartAfter_Callback_1(this, refNode);
+  void setStartAfter(Node refNode) => _blink.BlinkRange.instance.setStartAfter_Callback_1_(this, refNode);
 
   @DomName('Range.setStartBefore')
   @DocsEditable()
-  void setStartBefore(Node refNode) => _blink.BlinkRange.setStartBefore_Callback_1(this, refNode);
+  void setStartBefore(Node refNode) => _blink.BlinkRange.instance.setStartBefore_Callback_1_(this, refNode);
 
   @DomName('Range.surroundContents')
   @DocsEditable()
-  void surroundContents(Node newParent) => _blink.BlinkRange.surroundContents_Callback_1(this, newParent);
+  void surroundContents(Node newParent) => _blink.BlinkRange.instance.surroundContents_Callback_1_(this, newParent);
 
 
   /**
@@ -26328,7 +26333,7 @@
   @DomName('RelatedEvent.relatedTarget')
   @DocsEditable()
   @Experimental() // untriaged
-  EventTarget get relatedTarget => _blink.BlinkRelatedEvent.relatedTarget_Getter(this);
+  EventTarget get relatedTarget => _blink.BlinkRelatedEvent.instance.relatedTarget_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26357,7 +26362,7 @@
 
   @DomName('ResourceProgressEvent.url')
   @DocsEditable()
-  String get url => _blink.BlinkResourceProgressEvent.url_Getter(this);
+  String get url => _blink.BlinkResourceProgressEvent.instance.url_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26417,77 +26422,77 @@
 
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
-  String get binaryType => _blink.BlinkRTCDataChannel.binaryType_Getter(this);
+  String get binaryType => _blink.BlinkRTCDataChannel.instance.binaryType_Getter_(this);
 
   @DomName('RTCDataChannel.binaryType')
   @DocsEditable()
-  void set binaryType(String value) => _blink.BlinkRTCDataChannel.binaryType_Setter(this, value);
+  void set binaryType(String value) => _blink.BlinkRTCDataChannel.instance.binaryType_Setter_(this, value);
 
   @DomName('RTCDataChannel.bufferedAmount')
   @DocsEditable()
-  int get bufferedAmount => _blink.BlinkRTCDataChannel.bufferedAmount_Getter(this);
+  int get bufferedAmount => _blink.BlinkRTCDataChannel.instance.bufferedAmount_Getter_(this);
 
   @DomName('RTCDataChannel.id')
   @DocsEditable()
   @Experimental() // untriaged
-  int get id => _blink.BlinkRTCDataChannel.id_Getter(this);
+  int get id => _blink.BlinkRTCDataChannel.instance.id_Getter_(this);
 
   @DomName('RTCDataChannel.label')
   @DocsEditable()
-  String get label => _blink.BlinkRTCDataChannel.label_Getter(this);
+  String get label => _blink.BlinkRTCDataChannel.instance.label_Getter_(this);
 
   @DomName('RTCDataChannel.maxRetransmitTime')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxRetransmitTime => _blink.BlinkRTCDataChannel.maxRetransmitTime_Getter(this);
+  int get maxRetransmitTime => _blink.BlinkRTCDataChannel.instance.maxRetransmitTime_Getter_(this);
 
   @DomName('RTCDataChannel.maxRetransmits')
   @DocsEditable()
   @Experimental() // untriaged
-  int get maxRetransmits => _blink.BlinkRTCDataChannel.maxRetransmits_Getter(this);
+  int get maxRetransmits => _blink.BlinkRTCDataChannel.instance.maxRetransmits_Getter_(this);
 
   @DomName('RTCDataChannel.negotiated')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get negotiated => _blink.BlinkRTCDataChannel.negotiated_Getter(this);
+  bool get negotiated => _blink.BlinkRTCDataChannel.instance.negotiated_Getter_(this);
 
   @DomName('RTCDataChannel.ordered')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get ordered => _blink.BlinkRTCDataChannel.ordered_Getter(this);
+  bool get ordered => _blink.BlinkRTCDataChannel.instance.ordered_Getter_(this);
 
   @DomName('RTCDataChannel.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkRTCDataChannel.protocol_Getter(this);
+  String get protocol => _blink.BlinkRTCDataChannel.instance.protocol_Getter_(this);
 
   @DomName('RTCDataChannel.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkRTCDataChannel.readyState_Getter(this);
+  String get readyState => _blink.BlinkRTCDataChannel.instance.readyState_Getter_(this);
 
   @DomName('RTCDataChannel.reliable')
   @DocsEditable()
-  bool get reliable => _blink.BlinkRTCDataChannel.reliable_Getter(this);
+  bool get reliable => _blink.BlinkRTCDataChannel.instance.reliable_Getter_(this);
 
   @DomName('RTCDataChannel.close')
   @DocsEditable()
-  void close() => _blink.BlinkRTCDataChannel.close_Callback(this);
+  void close() => _blink.BlinkRTCDataChannel.instance.close_Callback_0_(this);
 
   void send(data) {
     if ((data is String || data == null)) {
-      _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is Blob || data == null)) {
-      _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is TypedData || data == null)) {
-      _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is ByteBuffer || data == null)) {
-      _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+      _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -26495,19 +26500,19 @@
 
   @DomName('RTCDataChannel.sendBlob')
   @DocsEditable()
-  void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+  void sendBlob(Blob data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
 
   @DomName('RTCDataChannel.sendByteBuffer')
   @DocsEditable()
-  void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+  void sendByteBuffer(ByteBuffer data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
 
   @DomName('RTCDataChannel.sendString')
   @DocsEditable()
-  void sendString(String data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+  void sendString(String data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
 
   @DomName('RTCDataChannel.sendTypedData')
   @DocsEditable()
-  void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.send_Callback_1(this, data);
+  void sendTypedData(TypedData data) => _blink.BlinkRTCDataChannel.instance.send_Callback_1_(this, data);
 
   /// Stream of `close` events handled by this [RtcDataChannel].
   @DomName('RTCDataChannel.onclose')
@@ -26547,7 +26552,7 @@
 
   @DomName('RTCDataChannelEvent.channel')
   @DocsEditable()
-  RtcDataChannel get channel => _blink.BlinkRTCDataChannelEvent.channel_Getter(this);
+  RtcDataChannel get channel => _blink.BlinkRTCDataChannelEvent.instance.channel_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26577,34 +26582,34 @@
 
   @DomName('RTCDTMFSender.canInsertDTMF')
   @DocsEditable()
-  bool get canInsertDtmf => _blink.BlinkRTCDTMFSender.canInsertDTMF_Getter(this);
+  bool get canInsertDtmf => _blink.BlinkRTCDTMFSender.instance.canInsertDTMF_Getter_(this);
 
   @DomName('RTCDTMFSender.duration')
   @DocsEditable()
-  int get duration => _blink.BlinkRTCDTMFSender.duration_Getter(this);
+  int get duration => _blink.BlinkRTCDTMFSender.instance.duration_Getter_(this);
 
   @DomName('RTCDTMFSender.interToneGap')
   @DocsEditable()
-  int get interToneGap => _blink.BlinkRTCDTMFSender.interToneGap_Getter(this);
+  int get interToneGap => _blink.BlinkRTCDTMFSender.instance.interToneGap_Getter_(this);
 
   @DomName('RTCDTMFSender.toneBuffer')
   @DocsEditable()
-  String get toneBuffer => _blink.BlinkRTCDTMFSender.toneBuffer_Getter(this);
+  String get toneBuffer => _blink.BlinkRTCDTMFSender.instance.toneBuffer_Getter_(this);
 
   @DomName('RTCDTMFSender.track')
   @DocsEditable()
-  MediaStreamTrack get track => _blink.BlinkRTCDTMFSender.track_Getter(this);
+  MediaStreamTrack get track => _blink.BlinkRTCDTMFSender.instance.track_Getter_(this);
 
   void insertDtmf(String tones, [int duration, int interToneGap]) {
     if (interToneGap != null) {
-      _blink.BlinkRTCDTMFSender.insertDTMF_Callback_3(this, tones, duration, interToneGap);
+      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_3_(this, tones, duration, interToneGap);
       return;
     }
     if (duration != null) {
-      _blink.BlinkRTCDTMFSender.insertDTMF_Callback_2(this, tones, duration);
+      _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_2_(this, tones, duration);
       return;
     }
-    _blink.BlinkRTCDTMFSender.insertDTMF_Callback_1(this, tones);
+    _blink.BlinkRTCDTMFSender.instance.insertDTMF_Callback_1_(this, tones);
     return;
   }
 
@@ -26631,7 +26636,7 @@
 
   @DomName('RTCDTMFToneChangeEvent.tone')
   @DocsEditable()
-  String get tone => _blink.BlinkRTCDTMFToneChangeEvent.tone_Getter(this);
+  String get tone => _blink.BlinkRTCDTMFToneChangeEvent.instance.tone_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26653,32 +26658,32 @@
   @DomName('RTCIceCandidate.RTCIceCandidate')
   @DocsEditable()
   factory RtcIceCandidate(Map dictionary) {
-    return _blink.BlinkRTCIceCandidate.constructorCallback_1(dictionary);
+    return _blink.BlinkRTCIceCandidate.instance.constructorCallback_1_(dictionary);
   }
 
   @DomName('RTCIceCandidate.candidate')
   @DocsEditable()
-  String get candidate => _blink.BlinkRTCIceCandidate.candidate_Getter(this);
+  String get candidate => _blink.BlinkRTCIceCandidate.instance.candidate_Getter_(this);
 
   @DomName('RTCIceCandidate.candidate')
   @DocsEditable()
-  void set candidate(String value) => _blink.BlinkRTCIceCandidate.candidate_Setter(this, value);
+  void set candidate(String value) => _blink.BlinkRTCIceCandidate.instance.candidate_Setter_(this, value);
 
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
-  int get sdpMLineIndex => _blink.BlinkRTCIceCandidate.sdpMLineIndex_Getter(this);
+  int get sdpMLineIndex => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Getter_(this);
 
   @DomName('RTCIceCandidate.sdpMLineIndex')
   @DocsEditable()
-  void set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.sdpMLineIndex_Setter(this, value);
+  void set sdpMLineIndex(int value) => _blink.BlinkRTCIceCandidate.instance.sdpMLineIndex_Setter_(this, value);
 
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
-  String get sdpMid => _blink.BlinkRTCIceCandidate.sdpMid_Getter(this);
+  String get sdpMid => _blink.BlinkRTCIceCandidate.instance.sdpMid_Getter_(this);
 
   @DomName('RTCIceCandidate.sdpMid')
   @DocsEditable()
-  void set sdpMid(String value) => _blink.BlinkRTCIceCandidate.sdpMid_Setter(this, value);
+  void set sdpMid(String value) => _blink.BlinkRTCIceCandidate.instance.sdpMid_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26698,7 +26703,7 @@
 
   @DomName('RTCIceCandidateEvent.candidate')
   @DocsEditable()
-  RtcIceCandidate get candidate => _blink.BlinkRTCIceCandidateEvent.candidate_Getter(this);
+  RtcIceCandidate get candidate => _blink.BlinkRTCIceCandidateEvent.instance.candidate_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -26816,100 +26821,100 @@
   @DocsEditable()
   factory RtcPeerConnection(Map rtcConfiguration, [Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      return _blink.BlinkRTCPeerConnection.constructorCallback_2(rtcConfiguration, mediaConstraints);
+      return _blink.BlinkRTCPeerConnection.instance.constructorCallback_2_(rtcConfiguration, mediaConstraints);
     }
-    return _blink.BlinkRTCPeerConnection.constructorCallback_1(rtcConfiguration);
+    return _blink.BlinkRTCPeerConnection.instance.constructorCallback_1_(rtcConfiguration);
   }
 
   @DomName('RTCPeerConnection.iceConnectionState')
   @DocsEditable()
-  String get iceConnectionState => _blink.BlinkRTCPeerConnection.iceConnectionState_Getter(this);
+  String get iceConnectionState => _blink.BlinkRTCPeerConnection.instance.iceConnectionState_Getter_(this);
 
   @DomName('RTCPeerConnection.iceGatheringState')
   @DocsEditable()
-  String get iceGatheringState => _blink.BlinkRTCPeerConnection.iceGatheringState_Getter(this);
+  String get iceGatheringState => _blink.BlinkRTCPeerConnection.instance.iceGatheringState_Getter_(this);
 
   @DomName('RTCPeerConnection.localDescription')
   @DocsEditable()
-  RtcSessionDescription get localDescription => _blink.BlinkRTCPeerConnection.localDescription_Getter(this);
+  RtcSessionDescription get localDescription => _blink.BlinkRTCPeerConnection.instance.localDescription_Getter_(this);
 
   @DomName('RTCPeerConnection.remoteDescription')
   @DocsEditable()
-  RtcSessionDescription get remoteDescription => _blink.BlinkRTCPeerConnection.remoteDescription_Getter(this);
+  RtcSessionDescription get remoteDescription => _blink.BlinkRTCPeerConnection.instance.remoteDescription_Getter_(this);
 
   @DomName('RTCPeerConnection.signalingState')
   @DocsEditable()
-  String get signalingState => _blink.BlinkRTCPeerConnection.signalingState_Getter(this);
+  String get signalingState => _blink.BlinkRTCPeerConnection.instance.signalingState_Getter_(this);
 
   @DomName('RTCPeerConnection.addIceCandidate')
   @DocsEditable()
-  void addIceCandidate(RtcIceCandidate candidate, VoidCallback successCallback, _RtcErrorCallback failureCallback) => _blink.BlinkRTCPeerConnection.addIceCandidate_Callback_3(this, candidate, successCallback, failureCallback);
+  void addIceCandidate(RtcIceCandidate candidate, VoidCallback successCallback, _RtcErrorCallback failureCallback) => _blink.BlinkRTCPeerConnection.instance.addIceCandidate_Callback_3_(this, candidate, successCallback, failureCallback);
 
   void addStream(MediaStream stream, [Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.addStream_Callback_2(this, stream, mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.addStream_Callback_2_(this, stream, mediaConstraints);
       return;
     }
-    _blink.BlinkRTCPeerConnection.addStream_Callback_1(this, stream);
+    _blink.BlinkRTCPeerConnection.instance.addStream_Callback_1_(this, stream);
     return;
   }
 
   @DomName('RTCPeerConnection.close')
   @DocsEditable()
-  void close() => _blink.BlinkRTCPeerConnection.close_Callback(this);
+  void close() => _blink.BlinkRTCPeerConnection.instance.close_Callback_0_(this);
 
   void _createAnswer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.createAnswer_Callback_3(this, successCallback, failureCallback, mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_3_(this, successCallback, failureCallback, mediaConstraints);
       return;
     }
-    _blink.BlinkRTCPeerConnection.createAnswer_Callback_2(this, successCallback, failureCallback);
+    _blink.BlinkRTCPeerConnection.instance.createAnswer_Callback_2_(this, successCallback, failureCallback);
     return;
   }
 
   @DomName('RTCPeerConnection.createDTMFSender')
   @DocsEditable()
-  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.createDTMFSender_Callback_1(this, track);
+  RtcDtmfSender createDtmfSender(MediaStreamTrack track) => _blink.BlinkRTCPeerConnection.instance.createDTMFSender_Callback_1_(this, track);
 
   RtcDataChannel createDataChannel(String label, [Map options]) {
     if (options != null) {
-      return _blink.BlinkRTCPeerConnection.createDataChannel_Callback_2(this, label, options);
+      return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_2_(this, label, options);
     }
-    return _blink.BlinkRTCPeerConnection.createDataChannel_Callback_1(this, label);
+    return _blink.BlinkRTCPeerConnection.instance.createDataChannel_Callback_1_(this, label);
   }
 
   void _createOffer(_RtcSessionDescriptionCallback successCallback, [_RtcErrorCallback failureCallback, Map rtcOfferOptions]) {
     if (rtcOfferOptions != null) {
-      _blink.BlinkRTCPeerConnection.createOffer_Callback_3(this, successCallback, failureCallback, rtcOfferOptions);
+      _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_3_(this, successCallback, failureCallback, rtcOfferOptions);
       return;
     }
-    _blink.BlinkRTCPeerConnection.createOffer_Callback_2(this, successCallback, failureCallback);
+    _blink.BlinkRTCPeerConnection.instance.createOffer_Callback_2_(this, successCallback, failureCallback);
     return;
   }
 
   @DomName('RTCPeerConnection.getLocalStreams')
   @DocsEditable()
-  List<MediaStream> getLocalStreams() => _blink.BlinkRTCPeerConnection.getLocalStreams_Callback(this);
+  List<MediaStream> getLocalStreams() => _blink.BlinkRTCPeerConnection.instance.getLocalStreams_Callback_0_(this);
 
   @DomName('RTCPeerConnection.getRemoteStreams')
   @DocsEditable()
-  List<MediaStream> getRemoteStreams() => _blink.BlinkRTCPeerConnection.getRemoteStreams_Callback(this);
+  List<MediaStream> getRemoteStreams() => _blink.BlinkRTCPeerConnection.instance.getRemoteStreams_Callback_0_(this);
 
   @DomName('RTCPeerConnection.getStats')
   @DocsEditable()
-  void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.getStats_Callback_2(this, successCallback, selector);
+  void _getStats(RtcStatsCallback successCallback, MediaStreamTrack selector) => _blink.BlinkRTCPeerConnection.instance.getStats_Callback_2_(this, successCallback, selector);
 
   @DomName('RTCPeerConnection.getStreamById')
   @DocsEditable()
-  MediaStream getStreamById(String streamId) => _blink.BlinkRTCPeerConnection.getStreamById_Callback_1(this, streamId);
+  MediaStream getStreamById(String streamId) => _blink.BlinkRTCPeerConnection.instance.getStreamById_Callback_1_(this, streamId);
 
   @DomName('RTCPeerConnection.removeStream')
   @DocsEditable()
-  void removeStream(MediaStream stream) => _blink.BlinkRTCPeerConnection.removeStream_Callback_1(this, stream);
+  void removeStream(MediaStream stream) => _blink.BlinkRTCPeerConnection.instance.removeStream_Callback_1_(this, stream);
 
   @DomName('RTCPeerConnection.setLocalDescription')
   @DocsEditable()
-  void _setLocalDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setLocalDescription_Callback_3(this, description, successCallback, failureCallback);
+  void _setLocalDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.instance.setLocalDescription_Callback_3_(this, description, successCallback, failureCallback);
 
   Future setLocalDescription(RtcSessionDescription description) {
     var completer = new Completer();
@@ -26921,7 +26926,7 @@
 
   @DomName('RTCPeerConnection.setRemoteDescription')
   @DocsEditable()
-  void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.setRemoteDescription_Callback_3(this, description, successCallback, failureCallback);
+  void _setRemoteDescription(RtcSessionDescription description, [VoidCallback successCallback, _RtcErrorCallback failureCallback]) => _blink.BlinkRTCPeerConnection.instance.setRemoteDescription_Callback_3_(this, description, successCallback, failureCallback);
 
   Future setRemoteDescription(RtcSessionDescription description) {
     var completer = new Completer();
@@ -26933,14 +26938,14 @@
 
   void updateIce([Map configuration, Map mediaConstraints]) {
     if (mediaConstraints != null) {
-      _blink.BlinkRTCPeerConnection.updateIce_Callback_2(this, configuration, mediaConstraints);
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_2_(this, configuration, mediaConstraints);
       return;
     }
     if (configuration != null) {
-      _blink.BlinkRTCPeerConnection.updateIce_Callback_1(this, configuration);
+      _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_1_(this, configuration);
       return;
     }
-    _blink.BlinkRTCPeerConnection.updateIce_Callback(this);
+    _blink.BlinkRTCPeerConnection.instance.updateIce_Callback_0_(this);
     return;
   }
 
@@ -27000,26 +27005,26 @@
   @DocsEditable()
   factory RtcSessionDescription([Map descriptionInitDict]) {
     if (descriptionInitDict != null) {
-      return _blink.BlinkRTCSessionDescription.constructorCallback_1(descriptionInitDict);
+      return _blink.BlinkRTCSessionDescription.instance.constructorCallback_1_(descriptionInitDict);
     }
-    return _blink.BlinkRTCSessionDescription.constructorCallback();
+    return _blink.BlinkRTCSessionDescription.instance.constructorCallback_0_();
   }
 
   @DomName('RTCSessionDescription.sdp')
   @DocsEditable()
-  String get sdp => _blink.BlinkRTCSessionDescription.sdp_Getter(this);
+  String get sdp => _blink.BlinkRTCSessionDescription.instance.sdp_Getter_(this);
 
   @DomName('RTCSessionDescription.sdp')
   @DocsEditable()
-  void set sdp(String value) => _blink.BlinkRTCSessionDescription.sdp_Setter(this, value);
+  void set sdp(String value) => _blink.BlinkRTCSessionDescription.instance.sdp_Setter_(this, value);
 
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
-  String get type => _blink.BlinkRTCSessionDescription.type_Getter(this);
+  String get type => _blink.BlinkRTCSessionDescription.instance.type_Getter_(this);
 
   @DomName('RTCSessionDescription.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkRTCSessionDescription.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkRTCSessionDescription.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27039,31 +27044,31 @@
 
   @DomName('RTCStatsReport.id')
   @DocsEditable()
-  String get id => _blink.BlinkRTCStatsReport.id_Getter(this);
+  String get id => _blink.BlinkRTCStatsReport.instance.id_Getter_(this);
 
   @DomName('RTCStatsReport.local')
   @DocsEditable()
-  RtcStatsReport get local => _blink.BlinkRTCStatsReport.local_Getter(this);
+  RtcStatsReport get local => _blink.BlinkRTCStatsReport.instance.local_Getter_(this);
 
   @DomName('RTCStatsReport.remote')
   @DocsEditable()
-  RtcStatsReport get remote => _blink.BlinkRTCStatsReport.remote_Getter(this);
+  RtcStatsReport get remote => _blink.BlinkRTCStatsReport.instance.remote_Getter_(this);
 
   @DomName('RTCStatsReport.timestamp')
   @DocsEditable()
-  DateTime get timestamp => _blink.BlinkRTCStatsReport.timestamp_Getter(this);
+  DateTime get timestamp => _blink.BlinkRTCStatsReport.instance.timestamp_Getter_(this);
 
   @DomName('RTCStatsReport.type')
   @DocsEditable()
-  String get type => _blink.BlinkRTCStatsReport.type_Getter(this);
+  String get type => _blink.BlinkRTCStatsReport.instance.type_Getter_(this);
 
   @DomName('RTCStatsReport.names')
   @DocsEditable()
-  List<String> names() => _blink.BlinkRTCStatsReport.names_Callback(this);
+  List<String> names() => _blink.BlinkRTCStatsReport.instance.names_Callback_0_(this);
 
   @DomName('RTCStatsReport.stat')
   @DocsEditable()
-  String stat(String name) => _blink.BlinkRTCStatsReport.stat_Callback_1(this, name);
+  String stat(String name) => _blink.BlinkRTCStatsReport.instance.stat_Callback_1_(this, name);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27083,15 +27088,15 @@
 
   @DomName('RTCStatsResponse.__getter__')
   @DocsEditable()
-  RtcStatsReport __getter__(String name) => _blink.BlinkRTCStatsResponse.$__getter___Callback_1(this, name);
+  RtcStatsReport __getter__(String name) => _blink.BlinkRTCStatsResponse.instance.$__getter___Callback_1_(this, name);
 
   @DomName('RTCStatsResponse.namedItem')
   @DocsEditable()
-  RtcStatsReport namedItem(String name) => _blink.BlinkRTCStatsResponse.namedItem_Callback_1(this, name);
+  RtcStatsReport namedItem(String name) => _blink.BlinkRTCStatsResponse.instance.namedItem_Callback_1_(this, name);
 
   @DomName('RTCStatsResponse.result')
   @DocsEditable()
-  List<RtcStatsReport> result() => _blink.BlinkRTCStatsResponse.result_Callback(this);
+  List<RtcStatsReport> result() => _blink.BlinkRTCStatsResponse.instance.result_Callback_0_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -27114,42 +27119,42 @@
 
   @DomName('Screen.availHeight')
   @DocsEditable()
-  int get _availHeight => _blink.BlinkScreen.availHeight_Getter(this);
+  int get _availHeight => _blink.BlinkScreen.instance.availHeight_Getter_(this);
 
   @DomName('Screen.availLeft')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get _availLeft => _blink.BlinkScreen.availLeft_Getter(this);
+  int get _availLeft => _blink.BlinkScreen.instance.availLeft_Getter_(this);
 
   @DomName('Screen.availTop')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get _availTop => _blink.BlinkScreen.availTop_Getter(this);
+  int get _availTop => _blink.BlinkScreen.instance.availTop_Getter_(this);
 
   @DomName('Screen.availWidth')
   @DocsEditable()
-  int get _availWidth => _blink.BlinkScreen.availWidth_Getter(this);
+  int get _availWidth => _blink.BlinkScreen.instance.availWidth_Getter_(this);
 
   @DomName('Screen.colorDepth')
   @DocsEditable()
-  int get colorDepth => _blink.BlinkScreen.colorDepth_Getter(this);
+  int get colorDepth => _blink.BlinkScreen.instance.colorDepth_Getter_(this);
 
   @DomName('Screen.height')
   @DocsEditable()
-  int get height => _blink.BlinkScreen.height_Getter(this);
+  int get height => _blink.BlinkScreen.instance.height_Getter_(this);
 
   @DomName('Screen.orientation')
   @DocsEditable()
   @Experimental() // untriaged
-  ScreenOrientation get orientation => _blink.BlinkScreen.orientation_Getter(this);
+  ScreenOrientation get orientation => _blink.BlinkScreen.instance.orientation_Getter_(this);
 
   @DomName('Screen.pixelDepth')
   @DocsEditable()
-  int get pixelDepth => _blink.BlinkScreen.pixelDepth_Getter(this);
+  int get pixelDepth => _blink.BlinkScreen.instance.pixelDepth_Getter_(this);
 
   @DomName('Screen.width')
   @DocsEditable()
-  int get width => _blink.BlinkScreen.width_Getter(this);
+  int get width => _blink.BlinkScreen.instance.width_Getter_(this);
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -27173,22 +27178,22 @@
   @DomName('ScreenOrientation.angle')
   @DocsEditable()
   @Experimental() // untriaged
-  int get angle => _blink.BlinkScreenOrientation.angle_Getter(this);
+  int get angle => _blink.BlinkScreenOrientation.instance.angle_Getter_(this);
 
   @DomName('ScreenOrientation.type')
   @DocsEditable()
   @Experimental() // untriaged
-  String get type => _blink.BlinkScreenOrientation.type_Getter(this);
+  String get type => _blink.BlinkScreenOrientation.instance.type_Getter_(this);
 
   @DomName('ScreenOrientation.lock')
   @DocsEditable()
   @Experimental() // untriaged
-  Future lock(String orientation) => _blink.BlinkScreenOrientation.lock_Callback_1(this, orientation);
+  Future lock(String orientation) => _blink.BlinkScreenOrientation.instance.lock_Callback_1_(this, orientation);
 
   @DomName('ScreenOrientation.unlock')
   @DocsEditable()
   @Experimental() // untriaged
-  void unlock() => _blink.BlinkScreenOrientation.unlock_Callback(this);
+  void unlock() => _blink.BlinkScreenOrientation.instance.unlock_Callback_0_(this);
 
   @DomName('ScreenOrientation.onchange')
   @DocsEditable()
@@ -27221,77 +27226,77 @@
 
   @DomName('HTMLScriptElement.async')
   @DocsEditable()
-  bool get async => _blink.BlinkHTMLScriptElement.async_Getter(this);
+  bool get async => _blink.BlinkHTMLScriptElement.instance.async_Getter_(this);
 
   @DomName('HTMLScriptElement.async')
   @DocsEditable()
-  void set async(bool value) => _blink.BlinkHTMLScriptElement.async_Setter(this, value);
+  void set async(bool value) => _blink.BlinkHTMLScriptElement.instance.async_Setter_(this, value);
 
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
-  String get charset => _blink.BlinkHTMLScriptElement.charset_Getter(this);
+  String get charset => _blink.BlinkHTMLScriptElement.instance.charset_Getter_(this);
 
   @DomName('HTMLScriptElement.charset')
   @DocsEditable()
-  void set charset(String value) => _blink.BlinkHTMLScriptElement.charset_Setter(this, value);
+  void set charset(String value) => _blink.BlinkHTMLScriptElement.instance.charset_Setter_(this, value);
 
   @DomName('HTMLScriptElement.crossOrigin')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin
   @Experimental()
-  String get crossOrigin => _blink.BlinkHTMLScriptElement.crossOrigin_Getter(this);
+  String get crossOrigin => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Getter_(this);
 
   @DomName('HTMLScriptElement.crossOrigin')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-crossorigin
   @Experimental()
-  void set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.crossOrigin_Setter(this, value);
+  void set crossOrigin(String value) => _blink.BlinkHTMLScriptElement.instance.crossOrigin_Setter_(this, value);
 
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
-  bool get defer => _blink.BlinkHTMLScriptElement.defer_Getter(this);
+  bool get defer => _blink.BlinkHTMLScriptElement.instance.defer_Getter_(this);
 
   @DomName('HTMLScriptElement.defer')
   @DocsEditable()
-  void set defer(bool value) => _blink.BlinkHTMLScriptElement.defer_Setter(this, value);
+  void set defer(bool value) => _blink.BlinkHTMLScriptElement.instance.defer_Setter_(this, value);
 
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLScriptElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLScriptElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLScriptElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLScriptElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLScriptElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLScriptElement.nonce')
   @DocsEditable()
   // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive
   @Experimental()
-  String get nonce => _blink.BlinkHTMLScriptElement.nonce_Getter(this);
+  String get nonce => _blink.BlinkHTMLScriptElement.instance.nonce_Getter_(this);
 
   @DomName('HTMLScriptElement.nonce')
   @DocsEditable()
   // https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#interaction-with-the-script-src-directive
   @Experimental()
-  void set nonce(String value) => _blink.BlinkHTMLScriptElement.nonce_Setter(this, value);
+  void set nonce(String value) => _blink.BlinkHTMLScriptElement.instance.nonce_Setter_(this, value);
 
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLScriptElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLScriptElement.instance.src_Getter_(this);
 
   @DomName('HTMLScriptElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLScriptElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLScriptElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLScriptElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLScriptElement.instance.type_Getter_(this);
 
   @DomName('HTMLScriptElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLScriptElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLScriptElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27311,44 +27316,44 @@
 
   @DomName('SecurityPolicyViolationEvent.blockedURI')
   @DocsEditable()
-  String get blockedUri => _blink.BlinkSecurityPolicyViolationEvent.blockedURI_Getter(this);
+  String get blockedUri => _blink.BlinkSecurityPolicyViolationEvent.instance.blockedURI_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.columnNumber')
   @DocsEditable()
-  int get columnNumber => _blink.BlinkSecurityPolicyViolationEvent.columnNumber_Getter(this);
+  int get columnNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.columnNumber_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.documentURI')
   @DocsEditable()
-  String get documentUri => _blink.BlinkSecurityPolicyViolationEvent.documentURI_Getter(this);
+  String get documentUri => _blink.BlinkSecurityPolicyViolationEvent.instance.documentURI_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.effectiveDirective')
   @DocsEditable()
-  String get effectiveDirective => _blink.BlinkSecurityPolicyViolationEvent.effectiveDirective_Getter(this);
+  String get effectiveDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.effectiveDirective_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.lineNumber')
   @DocsEditable()
-  int get lineNumber => _blink.BlinkSecurityPolicyViolationEvent.lineNumber_Getter(this);
+  int get lineNumber => _blink.BlinkSecurityPolicyViolationEvent.instance.lineNumber_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.originalPolicy')
   @DocsEditable()
-  String get originalPolicy => _blink.BlinkSecurityPolicyViolationEvent.originalPolicy_Getter(this);
+  String get originalPolicy => _blink.BlinkSecurityPolicyViolationEvent.instance.originalPolicy_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.referrer')
   @DocsEditable()
-  String get referrer => _blink.BlinkSecurityPolicyViolationEvent.referrer_Getter(this);
+  String get referrer => _blink.BlinkSecurityPolicyViolationEvent.instance.referrer_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.sourceFile')
   @DocsEditable()
-  String get sourceFile => _blink.BlinkSecurityPolicyViolationEvent.sourceFile_Getter(this);
+  String get sourceFile => _blink.BlinkSecurityPolicyViolationEvent.instance.sourceFile_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.statusCode')
   @DocsEditable()
   @Experimental() // untriaged
-  int get statusCode => _blink.BlinkSecurityPolicyViolationEvent.statusCode_Getter(this);
+  int get statusCode => _blink.BlinkSecurityPolicyViolationEvent.instance.statusCode_Getter_(this);
 
   @DomName('SecurityPolicyViolationEvent.violatedDirective')
   @DocsEditable()
-  String get violatedDirective => _blink.BlinkSecurityPolicyViolationEvent.violatedDirective_Getter(this);
+  String get violatedDirective => _blink.BlinkSecurityPolicyViolationEvent.instance.violatedDirective_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27373,125 +27378,125 @@
 
   @DomName('HTMLSelectElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLSelectElement.autofocus_Getter(this);
+  bool get autofocus => _blink.BlinkHTMLSelectElement.instance.autofocus_Getter_(this);
 
   @DomName('HTMLSelectElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLSelectElement.autofocus_Setter(this, value);
+  void set autofocus(bool value) => _blink.BlinkHTMLSelectElement.instance.autofocus_Setter_(this, value);
 
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLSelectElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLSelectElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLSelectElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLSelectElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLSelectElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLSelectElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLSelectElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLSelectElement.instance.form_Getter_(this);
 
   @DomName('HTMLSelectElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLSelectElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLSelectElement.instance.labels_Getter_(this);
 
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
-  int get length => _blink.BlinkHTMLSelectElement.length_Getter(this);
+  int get length => _blink.BlinkHTMLSelectElement.instance.length_Getter_(this);
 
   @DomName('HTMLSelectElement.length')
   @DocsEditable()
-  void set length(int value) => _blink.BlinkHTMLSelectElement.length_Setter(this, value);
+  void set length(int value) => _blink.BlinkHTMLSelectElement.instance.length_Setter_(this, value);
 
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
-  bool get multiple => _blink.BlinkHTMLSelectElement.multiple_Getter(this);
+  bool get multiple => _blink.BlinkHTMLSelectElement.instance.multiple_Getter_(this);
 
   @DomName('HTMLSelectElement.multiple')
   @DocsEditable()
-  void set multiple(bool value) => _blink.BlinkHTMLSelectElement.multiple_Setter(this, value);
+  void set multiple(bool value) => _blink.BlinkHTMLSelectElement.instance.multiple_Setter_(this, value);
 
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLSelectElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLSelectElement.instance.name_Getter_(this);
 
   @DomName('HTMLSelectElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLSelectElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLSelectElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLSelectElement.required_Getter(this);
+  bool get required => _blink.BlinkHTMLSelectElement.instance.required_Getter_(this);
 
   @DomName('HTMLSelectElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLSelectElement.required_Setter(this, value);
+  void set required(bool value) => _blink.BlinkHTMLSelectElement.instance.required_Setter_(this, value);
 
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
-  int get selectedIndex => _blink.BlinkHTMLSelectElement.selectedIndex_Getter(this);
+  int get selectedIndex => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Getter_(this);
 
   @DomName('HTMLSelectElement.selectedIndex')
   @DocsEditable()
-  void set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.selectedIndex_Setter(this, value);
+  void set selectedIndex(int value) => _blink.BlinkHTMLSelectElement.instance.selectedIndex_Setter_(this, value);
 
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
-  int get size => _blink.BlinkHTMLSelectElement.size_Getter(this);
+  int get size => _blink.BlinkHTMLSelectElement.instance.size_Getter_(this);
 
   @DomName('HTMLSelectElement.size')
   @DocsEditable()
-  void set size(int value) => _blink.BlinkHTMLSelectElement.size_Setter(this, value);
+  void set size(int value) => _blink.BlinkHTMLSelectElement.instance.size_Setter_(this, value);
 
   @DomName('HTMLSelectElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLSelectElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLSelectElement.instance.type_Getter_(this);
 
   @DomName('HTMLSelectElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLSelectElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLSelectElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLSelectElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLSelectElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLSelectElement.instance.validity_Getter_(this);
 
   @DomName('HTMLSelectElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLSelectElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLSelectElement.instance.value_Getter_(this);
 
   @DomName('HTMLSelectElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLSelectElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLSelectElement.instance.value_Setter_(this, value);
 
   @DomName('HTMLSelectElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLSelectElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLSelectElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLSelectElement.__setter__')
   @DocsEditable()
-  void __setter__(int index, OptionElement value) => _blink.BlinkHTMLSelectElement.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, OptionElement value) => _blink.BlinkHTMLSelectElement.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('HTMLSelectElement.add')
   @DocsEditable()
   @Experimental() // untriaged
-  void add(HtmlElement element, int before) => _blink.BlinkHTMLSelectElement.add_Callback_2(this, element, before);
+  void add(HtmlElement element, int before) => _blink.BlinkHTMLSelectElement.instance.add_Callback_2_(this, element, before);
 
   @DomName('HTMLSelectElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLSelectElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLSelectElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLSelectElement.item')
   @DocsEditable()
-  Element item(int index) => _blink.BlinkHTMLSelectElement.item_Callback_1(this, index);
+  Element item(int index) => _blink.BlinkHTMLSelectElement.instance.item_Callback_1_(this, index);
 
   @DomName('HTMLSelectElement.namedItem')
   @DocsEditable()
-  Element namedItem(String name) => _blink.BlinkHTMLSelectElement.namedItem_Callback_1(this, name);
+  Element namedItem(String name) => _blink.BlinkHTMLSelectElement.instance.namedItem_Callback_1_(this, name);
 
   @DomName('HTMLSelectElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLSelectElement.instance.setCustomValidity_Callback_1_(this, error);
 
 
   // Override default options, since IE returns SelectElement itself and it
@@ -27527,125 +27532,125 @@
 
   @DomName('Selection.anchorNode')
   @DocsEditable()
-  Node get anchorNode => _blink.BlinkSelection.anchorNode_Getter(this);
+  Node get anchorNode => _blink.BlinkSelection.instance.anchorNode_Getter_(this);
 
   @DomName('Selection.anchorOffset')
   @DocsEditable()
-  int get anchorOffset => _blink.BlinkSelection.anchorOffset_Getter(this);
+  int get anchorOffset => _blink.BlinkSelection.instance.anchorOffset_Getter_(this);
 
   @DomName('Selection.baseNode')
   @DocsEditable()
   @Experimental() // non-standard
-  Node get baseNode => _blink.BlinkSelection.baseNode_Getter(this);
+  Node get baseNode => _blink.BlinkSelection.instance.baseNode_Getter_(this);
 
   @DomName('Selection.baseOffset')
   @DocsEditable()
   @Experimental() // non-standard
-  int get baseOffset => _blink.BlinkSelection.baseOffset_Getter(this);
+  int get baseOffset => _blink.BlinkSelection.instance.baseOffset_Getter_(this);
 
   @DomName('Selection.extentNode')
   @DocsEditable()
   @Experimental() // non-standard
-  Node get extentNode => _blink.BlinkSelection.extentNode_Getter(this);
+  Node get extentNode => _blink.BlinkSelection.instance.extentNode_Getter_(this);
 
   @DomName('Selection.extentOffset')
   @DocsEditable()
   @Experimental() // non-standard
-  int get extentOffset => _blink.BlinkSelection.extentOffset_Getter(this);
+  int get extentOffset => _blink.BlinkSelection.instance.extentOffset_Getter_(this);
 
   @DomName('Selection.focusNode')
   @DocsEditable()
-  Node get focusNode => _blink.BlinkSelection.focusNode_Getter(this);
+  Node get focusNode => _blink.BlinkSelection.instance.focusNode_Getter_(this);
 
   @DomName('Selection.focusOffset')
   @DocsEditable()
-  int get focusOffset => _blink.BlinkSelection.focusOffset_Getter(this);
+  int get focusOffset => _blink.BlinkSelection.instance.focusOffset_Getter_(this);
 
   @DomName('Selection.isCollapsed')
   @DocsEditable()
-  bool get isCollapsed => _blink.BlinkSelection.isCollapsed_Getter(this);
+  bool get isCollapsed => _blink.BlinkSelection.instance.isCollapsed_Getter_(this);
 
   @DomName('Selection.rangeCount')
   @DocsEditable()
-  int get rangeCount => _blink.BlinkSelection.rangeCount_Getter(this);
+  int get rangeCount => _blink.BlinkSelection.instance.rangeCount_Getter_(this);
 
   @DomName('Selection.type')
   @DocsEditable()
   @Experimental() // non-standard
-  String get type => _blink.BlinkSelection.type_Getter(this);
+  String get type => _blink.BlinkSelection.instance.type_Getter_(this);
 
   @DomName('Selection.addRange')
   @DocsEditable()
-  void addRange(Range range) => _blink.BlinkSelection.addRange_Callback_1(this, range);
+  void addRange(Range range) => _blink.BlinkSelection.instance.addRange_Callback_1_(this, range);
 
   void collapse(Node node, [int offset]) {
     if (offset != null) {
-      _blink.BlinkSelection.collapse_Callback_2(this, node, offset);
+      _blink.BlinkSelection.instance.collapse_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.collapse_Callback_1(this, node);
+    _blink.BlinkSelection.instance.collapse_Callback_1_(this, node);
     return;
   }
 
   @DomName('Selection.collapseToEnd')
   @DocsEditable()
-  void collapseToEnd() => _blink.BlinkSelection.collapseToEnd_Callback(this);
+  void collapseToEnd() => _blink.BlinkSelection.instance.collapseToEnd_Callback_0_(this);
 
   @DomName('Selection.collapseToStart')
   @DocsEditable()
-  void collapseToStart() => _blink.BlinkSelection.collapseToStart_Callback(this);
+  void collapseToStart() => _blink.BlinkSelection.instance.collapseToStart_Callback_0_(this);
 
   @DomName('Selection.containsNode')
   @DocsEditable()
   @Experimental() // non-standard
-  bool containsNode(Node node, bool allowPartial) => _blink.BlinkSelection.containsNode_Callback_2(this, node, allowPartial);
+  bool containsNode(Node node, bool allowPartial) => _blink.BlinkSelection.instance.containsNode_Callback_2_(this, node, allowPartial);
 
   @DomName('Selection.deleteFromDocument')
   @DocsEditable()
-  void deleteFromDocument() => _blink.BlinkSelection.deleteFromDocument_Callback(this);
+  void deleteFromDocument() => _blink.BlinkSelection.instance.deleteFromDocument_Callback_0_(this);
 
   @DomName('Selection.empty')
   @DocsEditable()
   @Experimental() // non-standard
-  void empty() => _blink.BlinkSelection.empty_Callback(this);
+  void empty() => _blink.BlinkSelection.instance.empty_Callback_0_(this);
 
   void extend(Node node, [int offset]) {
     if (offset != null) {
-      _blink.BlinkSelection.extend_Callback_2(this, node, offset);
+      _blink.BlinkSelection.instance.extend_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.extend_Callback_1(this, node);
+    _blink.BlinkSelection.instance.extend_Callback_1_(this, node);
     return;
   }
 
   @DomName('Selection.getRangeAt')
   @DocsEditable()
-  Range getRangeAt(int index) => _blink.BlinkSelection.getRangeAt_Callback_1(this, index);
+  Range getRangeAt(int index) => _blink.BlinkSelection.instance.getRangeAt_Callback_1_(this, index);
 
   @DomName('Selection.modify')
   @DocsEditable()
   @Experimental() // non-standard
-  void modify(String alter, String direction, String granularity) => _blink.BlinkSelection.modify_Callback_3(this, alter, direction, granularity);
+  void modify(String alter, String direction, String granularity) => _blink.BlinkSelection.instance.modify_Callback_3_(this, alter, direction, granularity);
 
   @DomName('Selection.removeAllRanges')
   @DocsEditable()
-  void removeAllRanges() => _blink.BlinkSelection.removeAllRanges_Callback(this);
+  void removeAllRanges() => _blink.BlinkSelection.instance.removeAllRanges_Callback_0_(this);
 
   @DomName('Selection.selectAllChildren')
   @DocsEditable()
-  void selectAllChildren(Node node) => _blink.BlinkSelection.selectAllChildren_Callback_1(this, node);
+  void selectAllChildren(Node node) => _blink.BlinkSelection.instance.selectAllChildren_Callback_1_(this, node);
 
   @DomName('Selection.setBaseAndExtent')
   @DocsEditable()
   @Experimental() // non-standard
-  void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) => _blink.BlinkSelection.setBaseAndExtent_Callback_4(this, baseNode, baseOffset, extentNode, extentOffset);
+  void setBaseAndExtent(Node baseNode, int baseOffset, Node extentNode, int extentOffset) => _blink.BlinkSelection.instance.setBaseAndExtent_Callback_4_(this, baseNode, baseOffset, extentNode, extentOffset);
 
   void setPosition(Node node, [int offset]) {
     if (offset != null) {
-      _blink.BlinkSelection.setPosition_Callback_2(this, node, offset);
+      _blink.BlinkSelection.instance.setPosition_Callback_2_(this, node, offset);
       return;
     }
-    _blink.BlinkSelection.setPosition_Callback_1(this, node);
+    _blink.BlinkSelection.instance.setPosition_Callback_1_(this, node);
     return;
   }
 
@@ -27667,12 +27672,12 @@
   @DomName('ServiceWorkerClient.id')
   @DocsEditable()
   @Experimental() // untriaged
-  int get id => _blink.BlinkServiceWorkerClient.id_Getter(this);
+  int get id => _blink.BlinkServiceWorkerClient.instance.id_Getter_(this);
 
   @DomName('ServiceWorkerClient.postMessage')
   @DocsEditable()
   @Experimental() // untriaged
-  void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) => _blink.BlinkServiceWorkerClient.postMessage_Callback_2(this, message, transfer);
+  void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) => _blink.BlinkServiceWorkerClient.instance.postMessage_Callback_2_(this, message, transfer);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27692,7 +27697,7 @@
   @DomName('ServiceWorkerClients.getServiced')
   @DocsEditable()
   @Experimental() // untriaged
-  Future getServiced() => _blink.BlinkServiceWorkerClients.getServiced_Callback(this);
+  Future getServiced() => _blink.BlinkServiceWorkerClients.instance.getServiced_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27712,40 +27717,40 @@
   @DomName('ServiceWorkerContainer.active')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get active => _blink.BlinkServiceWorkerContainer.active_Getter(this);
+  _ServiceWorker get active => _blink.BlinkServiceWorkerContainer.instance.active_Getter_(this);
 
   @DomName('ServiceWorkerContainer.controller')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get controller => _blink.BlinkServiceWorkerContainer.controller_Getter(this);
+  _ServiceWorker get controller => _blink.BlinkServiceWorkerContainer.instance.controller_Getter_(this);
 
   @DomName('ServiceWorkerContainer.installing')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get installing => _blink.BlinkServiceWorkerContainer.installing_Getter(this);
+  _ServiceWorker get installing => _blink.BlinkServiceWorkerContainer.instance.installing_Getter_(this);
 
   @DomName('ServiceWorkerContainer.ready')
   @DocsEditable()
   @Experimental() // untriaged
-  Future get ready => _blink.BlinkServiceWorkerContainer.ready_Getter(this);
+  Future get ready => _blink.BlinkServiceWorkerContainer.instance.ready_Getter_(this);
 
   @DomName('ServiceWorkerContainer.waiting')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get waiting => _blink.BlinkServiceWorkerContainer.waiting_Getter(this);
+  _ServiceWorker get waiting => _blink.BlinkServiceWorkerContainer.instance.waiting_Getter_(this);
 
   Future register(String url, [Map options]) {
     if (options != null) {
-      return _blink.BlinkServiceWorkerContainer.register_Callback_2(this, url, options);
+      return _blink.BlinkServiceWorkerContainer.instance.register_Callback_2_(this, url, options);
     }
-    return _blink.BlinkServiceWorkerContainer.register_Callback_1(this, url);
+    return _blink.BlinkServiceWorkerContainer.instance.register_Callback_1_(this, url);
   }
 
   Future unregister([String scope]) {
     if (scope != null) {
-      return _blink.BlinkServiceWorkerContainer.unregister_Callback_1(this, scope);
+      return _blink.BlinkServiceWorkerContainer.instance.unregister_Callback_1_(this, scope);
     }
-    return _blink.BlinkServiceWorkerContainer.unregister_Callback(this);
+    return _blink.BlinkServiceWorkerContainer.instance.unregister_Callback_0_(this);
   }
 
 }
@@ -27771,30 +27776,30 @@
   @DomName('ServiceWorkerGlobalScope.clients')
   @DocsEditable()
   @Experimental() // untriaged
-  ServiceWorkerClients get clients => _blink.BlinkServiceWorkerGlobalScope.clients_Getter(this);
+  ServiceWorkerClients get clients => _blink.BlinkServiceWorkerGlobalScope.instance.clients_Getter_(this);
 
   @DomName('ServiceWorkerGlobalScope.nativeCaches')
   @DocsEditable()
   @Experimental() // untriaged
-  CacheStorage get nativeCaches => _blink.BlinkServiceWorkerGlobalScope.nativeCaches_Getter(this);
+  CacheStorage get nativeCaches => _blink.BlinkServiceWorkerGlobalScope.instance.nativeCaches_Getter_(this);
 
   @DomName('ServiceWorkerGlobalScope.scope')
   @DocsEditable()
   @Experimental() // untriaged
-  String get scope => _blink.BlinkServiceWorkerGlobalScope.scope_Getter(this);
+  String get scope => _blink.BlinkServiceWorkerGlobalScope.instance.scope_Getter_(this);
 
   Future _fetch(request, [Map requestInitDict]) {
     if ((request is String || request == null) && requestInitDict == null) {
-      return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_1(this, request);
+      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(this, request);
     }
     if ((requestInitDict is Map || requestInitDict == null) && (request is String || request == null)) {
-      return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_2(this, request, requestInitDict);
+      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(this, request, requestInitDict);
     }
     if ((request is _Request || request == null) && requestInitDict == null) {
-      return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_1(this, request);
+      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_1_(this, request);
     }
     if ((requestInitDict is Map || requestInitDict == null) && (request is _Request || request == null)) {
-      return _blink.BlinkServiceWorkerGlobalScope.fetch_Callback_2(this, request, requestInitDict);
+      return _blink.BlinkServiceWorkerGlobalScope.instance.fetch_Callback_2_(this, request, requestInitDict);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -27822,27 +27827,27 @@
   @DomName('ServiceWorkerRegistration.active')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get active => _blink.BlinkServiceWorkerRegistration.active_Getter(this);
+  _ServiceWorker get active => _blink.BlinkServiceWorkerRegistration.instance.active_Getter_(this);
 
   @DomName('ServiceWorkerRegistration.installing')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get installing => _blink.BlinkServiceWorkerRegistration.installing_Getter(this);
+  _ServiceWorker get installing => _blink.BlinkServiceWorkerRegistration.instance.installing_Getter_(this);
 
   @DomName('ServiceWorkerRegistration.scope')
   @DocsEditable()
   @Experimental() // untriaged
-  String get scope => _blink.BlinkServiceWorkerRegistration.scope_Getter(this);
+  String get scope => _blink.BlinkServiceWorkerRegistration.instance.scope_Getter_(this);
 
   @DomName('ServiceWorkerRegistration.waiting')
   @DocsEditable()
   @Experimental() // untriaged
-  _ServiceWorker get waiting => _blink.BlinkServiceWorkerRegistration.waiting_Getter(this);
+  _ServiceWorker get waiting => _blink.BlinkServiceWorkerRegistration.instance.waiting_Getter_(this);
 
   @DomName('ServiceWorkerRegistration.unregister')
   @DocsEditable()
   @Experimental() // untriaged
-  Future unregister() => _blink.BlinkServiceWorkerRegistration.unregister_Callback(this);
+  Future unregister() => _blink.BlinkServiceWorkerRegistration.instance.unregister_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27877,7 +27882,7 @@
   @DomName('HTMLShadowElement.getDistributedNodes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDistributedNodes() => _blink.BlinkHTMLShadowElement.getDistributedNodes_Callback(this);
+  List<Node> getDistributedNodes() => _blink.BlinkHTMLShadowElement.instance.getDistributedNodes_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -27897,54 +27902,54 @@
 
   @DomName('ShadowRoot.activeElement')
   @DocsEditable()
-  Element get activeElement => _blink.BlinkShadowRoot.activeElement_Getter(this);
+  Element get activeElement => _blink.BlinkShadowRoot.instance.activeElement_Getter_(this);
 
   @DomName('ShadowRoot.host')
   @DocsEditable()
   @Experimental() // untriaged
-  Element get host => _blink.BlinkShadowRoot.host_Getter(this);
+  Element get host => _blink.BlinkShadowRoot.instance.host_Getter_(this);
 
   @DomName('ShadowRoot.innerHTML')
   @DocsEditable()
-  String get innerHtml => _blink.BlinkShadowRoot.innerHTML_Getter(this);
+  String get innerHtml => _blink.BlinkShadowRoot.instance.innerHTML_Getter_(this);
 
   @DomName('ShadowRoot.innerHTML')
   @DocsEditable()
-  void set innerHtml(String value) => _blink.BlinkShadowRoot.innerHTML_Setter(this, value);
+  void set innerHtml(String value) => _blink.BlinkShadowRoot.instance.innerHTML_Setter_(this, value);
 
   @DomName('ShadowRoot.olderShadowRoot')
   @DocsEditable()
   @Experimental() // untriaged
-  ShadowRoot get olderShadowRoot => _blink.BlinkShadowRoot.olderShadowRoot_Getter(this);
+  ShadowRoot get olderShadowRoot => _blink.BlinkShadowRoot.instance.olderShadowRoot_Getter_(this);
 
   @DomName('ShadowRoot.styleSheets')
   @DocsEditable()
   @Experimental() // untriaged
-  List<StyleSheet> get styleSheets => _blink.BlinkShadowRoot.styleSheets_Getter(this);
+  List<StyleSheet> get styleSheets => _blink.BlinkShadowRoot.instance.styleSheets_Getter_(this);
 
   @DomName('ShadowRoot.cloneNode')
   @DocsEditable()
-  Node clone(bool deep) => _blink.BlinkShadowRoot.cloneNode_Callback_1(this, deep);
+  Node clone(bool deep) => _blink.BlinkShadowRoot.instance.cloneNode_Callback_1_(this, deep);
 
   @DomName('ShadowRoot.elementFromPoint')
   @DocsEditable()
-  Element elementFromPoint(int x, int y) => _blink.BlinkShadowRoot.elementFromPoint_Callback_2(this, x, y);
+  Element elementFromPoint(int x, int y) => _blink.BlinkShadowRoot.instance.elementFromPoint_Callback_2_(this, x, y);
 
   @DomName('ShadowRoot.getElementById')
   @DocsEditable()
-  Element getElementById(String elementId) => _blink.BlinkShadowRoot.getElementById_Callback_1(this, elementId);
+  Element getElementById(String elementId) => _blink.BlinkShadowRoot.instance.getElementById_Callback_1_(this, elementId);
 
   @DomName('ShadowRoot.getElementsByClassName')
   @DocsEditable()
-  List<Node> getElementsByClassName(String className) => _blink.BlinkShadowRoot.getElementsByClassName_Callback_1(this, className);
+  List<Node> getElementsByClassName(String className) => _blink.BlinkShadowRoot.instance.getElementsByClassName_Callback_1_(this, className);
 
   @DomName('ShadowRoot.getElementsByTagName')
   @DocsEditable()
-  List<Node> getElementsByTagName(String tagName) => _blink.BlinkShadowRoot.getElementsByTagName_Callback_1(this, tagName);
+  List<Node> getElementsByTagName(String tagName) => _blink.BlinkShadowRoot.instance.getElementsByTagName_Callback_1_(this, tagName);
 
   @DomName('ShadowRoot.getSelection')
   @DocsEditable()
-  Selection getSelection() => _blink.BlinkShadowRoot.getSelection_Callback(this);
+  Selection getSelection() => _blink.BlinkShadowRoot.instance.getSelection_Callback_0_(this);
 
   static final bool supported = true;
 
@@ -28006,17 +28011,17 @@
   @DomName('SharedWorker.SharedWorker')
   @DocsEditable()
   factory SharedWorker(String scriptURL, [String name]) {
-    return _blink.BlinkSharedWorker.constructorCallback_2(scriptURL, name);
+    return _blink.BlinkSharedWorker.instance.constructorCallback_2_(scriptURL, name);
   }
 
   @DomName('SharedWorker.port')
   @DocsEditable()
-  MessagePort get port => _blink.BlinkSharedWorker.port_Getter(this);
+  MessagePort get port => _blink.BlinkSharedWorker.instance.port_Getter_(this);
 
   @DomName('SharedWorker.workerStart')
   @DocsEditable()
   @Experimental() // untriaged
-  double get workerStart => _blink.BlinkSharedWorker.workerStart_Getter(this);
+  double get workerStart => _blink.BlinkSharedWorker.instance.workerStart_Getter_(this);
 
   @DomName('SharedWorker.onerror')
   @DocsEditable()
@@ -28052,7 +28057,7 @@
   @DomName('SharedWorkerGlobalScope.name')
   @DocsEditable()
   @Experimental() // untriaged
-  String get name => _blink.BlinkSharedWorkerGlobalScope.name_Getter(this);
+  String get name => _blink.BlinkSharedWorkerGlobalScope.instance.name_Getter_(this);
 
   /// Stream of `connect` events handled by this [SharedWorkerGlobalScope].
   @DomName('SharedWorkerGlobalScope.onconnect')
@@ -28079,77 +28084,77 @@
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  num get appendWindowEnd => _blink.BlinkSourceBuffer.appendWindowEnd_Getter(this);
+  num get appendWindowEnd => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Getter_(this);
 
   @DomName('SourceBuffer.appendWindowEnd')
   @DocsEditable()
   @Experimental() // untriaged
-  void set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.appendWindowEnd_Setter(this, value);
+  void set appendWindowEnd(num value) => _blink.BlinkSourceBuffer.instance.appendWindowEnd_Setter_(this, value);
 
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get appendWindowStart => _blink.BlinkSourceBuffer.appendWindowStart_Getter(this);
+  num get appendWindowStart => _blink.BlinkSourceBuffer.instance.appendWindowStart_Getter_(this);
 
   @DomName('SourceBuffer.appendWindowStart')
   @DocsEditable()
   @Experimental() // untriaged
-  void set appendWindowStart(num value) => _blink.BlinkSourceBuffer.appendWindowStart_Setter(this, value);
+  void set appendWindowStart(num value) => _blink.BlinkSourceBuffer.instance.appendWindowStart_Setter_(this, value);
 
   @DomName('SourceBuffer.buffered')
   @DocsEditable()
-  TimeRanges get buffered => _blink.BlinkSourceBuffer.buffered_Getter(this);
+  TimeRanges get buffered => _blink.BlinkSourceBuffer.instance.buffered_Getter_(this);
 
   @DomName('SourceBuffer.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mode => _blink.BlinkSourceBuffer.mode_Getter(this);
+  String get mode => _blink.BlinkSourceBuffer.instance.mode_Getter_(this);
 
   @DomName('SourceBuffer.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set mode(String value) => _blink.BlinkSourceBuffer.mode_Setter(this, value);
+  void set mode(String value) => _blink.BlinkSourceBuffer.instance.mode_Setter_(this, value);
 
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
-  num get timestampOffset => _blink.BlinkSourceBuffer.timestampOffset_Getter(this);
+  num get timestampOffset => _blink.BlinkSourceBuffer.instance.timestampOffset_Getter_(this);
 
   @DomName('SourceBuffer.timestampOffset')
   @DocsEditable()
-  void set timestampOffset(num value) => _blink.BlinkSourceBuffer.timestampOffset_Setter(this, value);
+  void set timestampOffset(num value) => _blink.BlinkSourceBuffer.instance.timestampOffset_Setter_(this, value);
 
   @DomName('SourceBuffer.updating')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get updating => _blink.BlinkSourceBuffer.updating_Getter(this);
+  bool get updating => _blink.BlinkSourceBuffer.instance.updating_Getter_(this);
 
   @DomName('SourceBuffer.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkSourceBuffer.abort_Callback(this);
+  void abort() => _blink.BlinkSourceBuffer.instance.abort_Callback_0_(this);
 
   @DomName('SourceBuffer.appendBuffer')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_1(this, data);
+  void appendBuffer(ByteBuffer data) => _blink.BlinkSourceBuffer.instance.appendBuffer_Callback_1_(this, data);
 
   void appendStream(FileStream stream, [int maxSize]) {
     if (maxSize != null) {
-      _blink.BlinkSourceBuffer.appendStream_Callback_2(this, stream, maxSize);
+      _blink.BlinkSourceBuffer.instance.appendStream_Callback_2_(this, stream, maxSize);
       return;
     }
-    _blink.BlinkSourceBuffer.appendStream_Callback_1(this, stream);
+    _blink.BlinkSourceBuffer.instance.appendStream_Callback_1_(this, stream);
     return;
   }
 
   @DomName('SourceBuffer.appendTypedData')
   @DocsEditable()
   @Experimental() // untriaged
-  void appendTypedData(TypedData data) => _blink.BlinkSourceBuffer.appendBuffer_Callback_1(this, data);
+  void appendTypedData(TypedData data) => _blink.BlinkSourceBuffer.instance.appendBuffer_Callback_1_(this, data);
 
   @DomName('SourceBuffer.remove')
   @DocsEditable()
   @Experimental() // untriaged
-  void remove(num start, num end) => _blink.BlinkSourceBuffer.remove_Callback_2(this, start, end);
+  void remove(num start, num end) => _blink.BlinkSourceBuffer.instance.remove_Callback_2_(this, start, end);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28169,15 +28174,15 @@
 
   @DomName('SourceBufferList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSourceBufferList.length_Getter(this);
+  int get length => _blink.BlinkSourceBufferList.instance.length_Getter_(this);
 
   SourceBuffer operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkSourceBufferList.item_Callback_1(this, index);
+    return _blink.BlinkSourceBufferList.instance.item_Callback_1_(this, index);
   }
 
-  SourceBuffer _nativeIndexedGetter(int index) => _blink.BlinkSourceBufferList.item_Callback_1(this, index);
+  SourceBuffer _nativeIndexedGetter(int index) => _blink.BlinkSourceBufferList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, SourceBuffer value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -28219,7 +28224,7 @@
 
   @DomName('SourceBufferList.item')
   @DocsEditable()
-  SourceBuffer item(int index) => _blink.BlinkSourceBufferList.item_Callback_1(this, index);
+  SourceBuffer item(int index) => _blink.BlinkSourceBufferList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28248,56 +28253,56 @@
   @DomName('HTMLSourceElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLSourceElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLSourceElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLSourceElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLSourceElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLSourceElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLSourceElement.media_Getter(this);
+  String get media => _blink.BlinkHTMLSourceElement.instance.media_Getter_(this);
 
   @DomName('HTMLSourceElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLSourceElement.media_Setter(this, value);
+  void set media(String value) => _blink.BlinkHTMLSourceElement.instance.media_Setter_(this, value);
 
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  String get sizes => _blink.BlinkHTMLSourceElement.sizes_Getter(this);
+  String get sizes => _blink.BlinkHTMLSourceElement.instance.sizes_Getter_(this);
 
   @DomName('HTMLSourceElement.sizes')
   @DocsEditable()
   @Experimental() // untriaged
-  void set sizes(String value) => _blink.BlinkHTMLSourceElement.sizes_Setter(this, value);
+  void set sizes(String value) => _blink.BlinkHTMLSourceElement.instance.sizes_Setter_(this, value);
 
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLSourceElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLSourceElement.instance.src_Getter_(this);
 
   @DomName('HTMLSourceElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLSourceElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLSourceElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  String get srcset => _blink.BlinkHTMLSourceElement.srcset_Getter(this);
+  String get srcset => _blink.BlinkHTMLSourceElement.instance.srcset_Getter_(this);
 
   @DomName('HTMLSourceElement.srcset')
   @DocsEditable()
   @Experimental() // untriaged
-  void set srcset(String value) => _blink.BlinkHTMLSourceElement.srcset_Setter(this, value);
+  void set srcset(String value) => _blink.BlinkHTMLSourceElement.instance.srcset_Setter_(this, value);
 
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLSourceElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLSourceElement.instance.type_Getter_(this);
 
   @DomName('HTMLSourceElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLSourceElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLSourceElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28317,22 +28322,22 @@
   @DomName('SourceInfo.facing')
   @DocsEditable()
   @Experimental() // untriaged
-  String get facing => _blink.BlinkSourceInfo.facing_Getter(this);
+  String get facing => _blink.BlinkSourceInfo.instance.facing_Getter_(this);
 
   @DomName('SourceInfo.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkSourceInfo.id_Getter(this);
+  String get id => _blink.BlinkSourceInfo.instance.id_Getter_(this);
 
   @DomName('SourceInfo.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkSourceInfo.kind_Getter(this);
+  String get kind => _blink.BlinkSourceInfo.instance.kind_Getter_(this);
 
   @DomName('SourceInfo.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkSourceInfo.label_Getter(this);
+  String get label => _blink.BlinkSourceInfo.instance.label_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28377,24 +28382,24 @@
   @DomName('SpeechGrammar.SpeechGrammar')
   @DocsEditable()
   factory SpeechGrammar() {
-    return _blink.BlinkSpeechGrammar.constructorCallback();
+    return _blink.BlinkSpeechGrammar.instance.constructorCallback_0_();
   }
 
   @DomName('SpeechGrammar.src')
   @DocsEditable()
-  String get src => _blink.BlinkSpeechGrammar.src_Getter(this);
+  String get src => _blink.BlinkSpeechGrammar.instance.src_Getter_(this);
 
   @DomName('SpeechGrammar.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkSpeechGrammar.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkSpeechGrammar.instance.src_Setter_(this, value);
 
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
-  num get weight => _blink.BlinkSpeechGrammar.weight_Getter(this);
+  num get weight => _blink.BlinkSpeechGrammar.instance.weight_Getter_(this);
 
   @DomName('SpeechGrammar.weight')
   @DocsEditable()
-  void set weight(num value) => _blink.BlinkSpeechGrammar.weight_Setter(this, value);
+  void set weight(num value) => _blink.BlinkSpeechGrammar.instance.weight_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28415,20 +28420,20 @@
   @DomName('SpeechGrammarList.SpeechGrammarList')
   @DocsEditable()
   factory SpeechGrammarList() {
-    return _blink.BlinkSpeechGrammarList.constructorCallback();
+    return _blink.BlinkSpeechGrammarList.instance.constructorCallback_0_();
   }
 
   @DomName('SpeechGrammarList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechGrammarList.length_Getter(this);
+  int get length => _blink.BlinkSpeechGrammarList.instance.length_Getter_(this);
 
   SpeechGrammar operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkSpeechGrammarList.item_Callback_1(this, index);
+    return _blink.BlinkSpeechGrammarList.instance.item_Callback_1_(this, index);
   }
 
-  SpeechGrammar _nativeIndexedGetter(int index) => _blink.BlinkSpeechGrammarList.item_Callback_1(this, index);
+  SpeechGrammar _nativeIndexedGetter(int index) => _blink.BlinkSpeechGrammarList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, SpeechGrammar value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -28470,25 +28475,25 @@
 
   void addFromString(String string, [num weight]) {
     if (weight != null) {
-      _blink.BlinkSpeechGrammarList.addFromString_Callback_2(this, string, weight);
+      _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_2_(this, string, weight);
       return;
     }
-    _blink.BlinkSpeechGrammarList.addFromString_Callback_1(this, string);
+    _blink.BlinkSpeechGrammarList.instance.addFromString_Callback_1_(this, string);
     return;
   }
 
   void addFromUri(String src, [num weight]) {
     if (weight != null) {
-      _blink.BlinkSpeechGrammarList.addFromUri_Callback_2(this, src, weight);
+      _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_2_(this, src, weight);
       return;
     }
-    _blink.BlinkSpeechGrammarList.addFromUri_Callback_1(this, src);
+    _blink.BlinkSpeechGrammarList.instance.addFromUri_Callback_1_(this, src);
     return;
   }
 
   @DomName('SpeechGrammarList.item')
   @DocsEditable()
-  SpeechGrammar item(int index) => _blink.BlinkSpeechGrammarList.item_Callback_1(this, index);
+  SpeechGrammar item(int index) => _blink.BlinkSpeechGrammarList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28620,7 +28625,7 @@
   @DomName('SpeechRecognition.SpeechRecognition')
   @DocsEditable()
   factory SpeechRecognition() {
-    return _blink.BlinkSpeechRecognition.constructorCallback();
+    return _blink.BlinkSpeechRecognition.instance.constructorCallback_0_();
   }
 
   /// Checks if this type is supported on the current platform.
@@ -28628,55 +28633,55 @@
 
   @DomName('SpeechRecognition.continuous')
   @DocsEditable()
-  bool get continuous => _blink.BlinkSpeechRecognition.continuous_Getter(this);
+  bool get continuous => _blink.BlinkSpeechRecognition.instance.continuous_Getter_(this);
 
   @DomName('SpeechRecognition.continuous')
   @DocsEditable()
-  void set continuous(bool value) => _blink.BlinkSpeechRecognition.continuous_Setter(this, value);
+  void set continuous(bool value) => _blink.BlinkSpeechRecognition.instance.continuous_Setter_(this, value);
 
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
-  SpeechGrammarList get grammars => _blink.BlinkSpeechRecognition.grammars_Getter(this);
+  SpeechGrammarList get grammars => _blink.BlinkSpeechRecognition.instance.grammars_Getter_(this);
 
   @DomName('SpeechRecognition.grammars')
   @DocsEditable()
-  void set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.grammars_Setter(this, value);
+  void set grammars(SpeechGrammarList value) => _blink.BlinkSpeechRecognition.instance.grammars_Setter_(this, value);
 
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
-  bool get interimResults => _blink.BlinkSpeechRecognition.interimResults_Getter(this);
+  bool get interimResults => _blink.BlinkSpeechRecognition.instance.interimResults_Getter_(this);
 
   @DomName('SpeechRecognition.interimResults')
   @DocsEditable()
-  void set interimResults(bool value) => _blink.BlinkSpeechRecognition.interimResults_Setter(this, value);
+  void set interimResults(bool value) => _blink.BlinkSpeechRecognition.instance.interimResults_Setter_(this, value);
 
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechRecognition.lang_Getter(this);
+  String get lang => _blink.BlinkSpeechRecognition.instance.lang_Getter_(this);
 
   @DomName('SpeechRecognition.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkSpeechRecognition.lang_Setter(this, value);
+  void set lang(String value) => _blink.BlinkSpeechRecognition.instance.lang_Setter_(this, value);
 
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
-  int get maxAlternatives => _blink.BlinkSpeechRecognition.maxAlternatives_Getter(this);
+  int get maxAlternatives => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Getter_(this);
 
   @DomName('SpeechRecognition.maxAlternatives')
   @DocsEditable()
-  void set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.maxAlternatives_Setter(this, value);
+  void set maxAlternatives(int value) => _blink.BlinkSpeechRecognition.instance.maxAlternatives_Setter_(this, value);
 
   @DomName('SpeechRecognition.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkSpeechRecognition.abort_Callback(this);
+  void abort() => _blink.BlinkSpeechRecognition.instance.abort_Callback_0_(this);
 
   @DomName('SpeechRecognition.start')
   @DocsEditable()
-  void start() => _blink.BlinkSpeechRecognition.start_Callback(this);
+  void start() => _blink.BlinkSpeechRecognition.instance.start_Callback_0_(this);
 
   @DomName('SpeechRecognition.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkSpeechRecognition.stop_Callback(this);
+  void stop() => _blink.BlinkSpeechRecognition.instance.stop_Callback_0_(this);
 
   /// Stream of `audioend` events handled by this [SpeechRecognition].
   @DomName('SpeechRecognition.onaudioend')
@@ -28752,11 +28757,11 @@
 
   @DomName('SpeechRecognitionAlternative.confidence')
   @DocsEditable()
-  double get confidence => _blink.BlinkSpeechRecognitionAlternative.confidence_Getter(this);
+  double get confidence => _blink.BlinkSpeechRecognitionAlternative.instance.confidence_Getter_(this);
 
   @DomName('SpeechRecognitionAlternative.transcript')
   @DocsEditable()
-  String get transcript => _blink.BlinkSpeechRecognitionAlternative.transcript_Getter(this);
+  String get transcript => _blink.BlinkSpeechRecognitionAlternative.instance.transcript_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28777,11 +28782,11 @@
 
   @DomName('SpeechRecognitionError.error')
   @DocsEditable()
-  String get error => _blink.BlinkSpeechRecognitionError.error_Getter(this);
+  String get error => _blink.BlinkSpeechRecognitionError.instance.error_Getter_(this);
 
   @DomName('SpeechRecognitionError.message')
   @DocsEditable()
-  String get message => _blink.BlinkSpeechRecognitionError.message_Getter(this);
+  String get message => _blink.BlinkSpeechRecognitionError.instance.message_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28802,19 +28807,19 @@
 
   @DomName('SpeechRecognitionEvent.emma')
   @DocsEditable()
-  Document get emma => _blink.BlinkSpeechRecognitionEvent.emma_Getter(this);
+  Document get emma => _blink.BlinkSpeechRecognitionEvent.instance.emma_Getter_(this);
 
   @DomName('SpeechRecognitionEvent.interpretation')
   @DocsEditable()
-  Document get interpretation => _blink.BlinkSpeechRecognitionEvent.interpretation_Getter(this);
+  Document get interpretation => _blink.BlinkSpeechRecognitionEvent.instance.interpretation_Getter_(this);
 
   @DomName('SpeechRecognitionEvent.resultIndex')
   @DocsEditable()
-  int get resultIndex => _blink.BlinkSpeechRecognitionEvent.resultIndex_Getter(this);
+  int get resultIndex => _blink.BlinkSpeechRecognitionEvent.instance.resultIndex_Getter_(this);
 
   @DomName('SpeechRecognitionEvent.results')
   @DocsEditable()
-  List<SpeechRecognitionResult> get results => _blink.BlinkSpeechRecognitionEvent.results_Getter(this);
+  List<SpeechRecognitionResult> get results => _blink.BlinkSpeechRecognitionEvent.instance.results_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28835,15 +28840,15 @@
 
   @DomName('SpeechRecognitionResult.isFinal')
   @DocsEditable()
-  bool get isFinal => _blink.BlinkSpeechRecognitionResult.isFinal_Getter(this);
+  bool get isFinal => _blink.BlinkSpeechRecognitionResult.instance.isFinal_Getter_(this);
 
   @DomName('SpeechRecognitionResult.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechRecognitionResult.length_Getter(this);
+  int get length => _blink.BlinkSpeechRecognitionResult.instance.length_Getter_(this);
 
   @DomName('SpeechRecognitionResult.item')
   @DocsEditable()
-  SpeechRecognitionAlternative item(int index) => _blink.BlinkSpeechRecognitionResult.item_Callback_1(this, index);
+  SpeechRecognitionAlternative item(int index) => _blink.BlinkSpeechRecognitionResult.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28863,35 +28868,35 @@
 
   @DomName('SpeechSynthesis.paused')
   @DocsEditable()
-  bool get paused => _blink.BlinkSpeechSynthesis.paused_Getter(this);
+  bool get paused => _blink.BlinkSpeechSynthesis.instance.paused_Getter_(this);
 
   @DomName('SpeechSynthesis.pending')
   @DocsEditable()
-  bool get pending => _blink.BlinkSpeechSynthesis.pending_Getter(this);
+  bool get pending => _blink.BlinkSpeechSynthesis.instance.pending_Getter_(this);
 
   @DomName('SpeechSynthesis.speaking')
   @DocsEditable()
-  bool get speaking => _blink.BlinkSpeechSynthesis.speaking_Getter(this);
+  bool get speaking => _blink.BlinkSpeechSynthesis.instance.speaking_Getter_(this);
 
   @DomName('SpeechSynthesis.cancel')
   @DocsEditable()
-  void cancel() => _blink.BlinkSpeechSynthesis.cancel_Callback(this);
+  void cancel() => _blink.BlinkSpeechSynthesis.instance.cancel_Callback_0_(this);
 
   @DomName('SpeechSynthesis.getVoices')
   @DocsEditable()
-  List<SpeechSynthesisVoice> getVoices() => _blink.BlinkSpeechSynthesis.getVoices_Callback(this);
+  List<SpeechSynthesisVoice> getVoices() => _blink.BlinkSpeechSynthesis.instance.getVoices_Callback_0_(this);
 
   @DomName('SpeechSynthesis.pause')
   @DocsEditable()
-  void pause() => _blink.BlinkSpeechSynthesis.pause_Callback(this);
+  void pause() => _blink.BlinkSpeechSynthesis.instance.pause_Callback_0_(this);
 
   @DomName('SpeechSynthesis.resume')
   @DocsEditable()
-  void resume() => _blink.BlinkSpeechSynthesis.resume_Callback(this);
+  void resume() => _blink.BlinkSpeechSynthesis.instance.resume_Callback_0_(this);
 
   @DomName('SpeechSynthesis.speak')
   @DocsEditable()
-  void speak(SpeechSynthesisUtterance utterance) => _blink.BlinkSpeechSynthesis.speak_Callback_1(this, utterance);
+  void speak(SpeechSynthesisUtterance utterance) => _blink.BlinkSpeechSynthesis.instance.speak_Callback_1_(this, utterance);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -28911,15 +28916,15 @@
 
   @DomName('SpeechSynthesisEvent.charIndex')
   @DocsEditable()
-  int get charIndex => _blink.BlinkSpeechSynthesisEvent.charIndex_Getter(this);
+  int get charIndex => _blink.BlinkSpeechSynthesisEvent.instance.charIndex_Getter_(this);
 
   @DomName('SpeechSynthesisEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkSpeechSynthesisEvent.elapsedTime_Getter(this);
+  double get elapsedTime => _blink.BlinkSpeechSynthesisEvent.instance.elapsedTime_Getter_(this);
 
   @DomName('SpeechSynthesisEvent.name')
   @DocsEditable()
-  String get name => _blink.BlinkSpeechSynthesisEvent.name_Getter(this);
+  String get name => _blink.BlinkSpeechSynthesisEvent.instance.name_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29010,56 +29015,56 @@
   @DomName('SpeechSynthesisUtterance.SpeechSynthesisUtterance')
   @DocsEditable()
   factory SpeechSynthesisUtterance([String text]) {
-    return _blink.BlinkSpeechSynthesisUtterance.constructorCallback_1(text);
+    return _blink.BlinkSpeechSynthesisUtterance.instance.constructorCallback_1_(text);
   }
 
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechSynthesisUtterance.lang_Getter(this);
+  String get lang => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.lang')
   @DocsEditable()
-  void set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.lang_Setter(this, value);
+  void set lang(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.lang_Setter_(this, value);
 
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
-  num get pitch => _blink.BlinkSpeechSynthesisUtterance.pitch_Getter(this);
+  num get pitch => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.pitch')
   @DocsEditable()
-  void set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.pitch_Setter(this, value);
+  void set pitch(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.pitch_Setter_(this, value);
 
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
-  num get rate => _blink.BlinkSpeechSynthesisUtterance.rate_Getter(this);
+  num get rate => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.rate')
   @DocsEditable()
-  void set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.rate_Setter(this, value);
+  void set rate(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.rate_Setter_(this, value);
 
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
-  String get text => _blink.BlinkSpeechSynthesisUtterance.text_Getter(this);
+  String get text => _blink.BlinkSpeechSynthesisUtterance.instance.text_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.text')
   @DocsEditable()
-  void set text(String value) => _blink.BlinkSpeechSynthesisUtterance.text_Setter(this, value);
+  void set text(String value) => _blink.BlinkSpeechSynthesisUtterance.instance.text_Setter_(this, value);
 
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
-  SpeechSynthesisVoice get voice => _blink.BlinkSpeechSynthesisUtterance.voice_Getter(this);
+  SpeechSynthesisVoice get voice => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.voice')
   @DocsEditable()
-  void set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.voice_Setter(this, value);
+  void set voice(SpeechSynthesisVoice value) => _blink.BlinkSpeechSynthesisUtterance.instance.voice_Setter_(this, value);
 
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
-  num get volume => _blink.BlinkSpeechSynthesisUtterance.volume_Getter(this);
+  num get volume => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Getter_(this);
 
   @DomName('SpeechSynthesisUtterance.volume')
   @DocsEditable()
-  void set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.volume_Setter(this, value);
+  void set volume(num value) => _blink.BlinkSpeechSynthesisUtterance.instance.volume_Setter_(this, value);
 
   /// Stream of `boundary` events handled by this [SpeechSynthesisUtterance].
   @DomName('SpeechSynthesisUtterance.onboundary')
@@ -29114,23 +29119,23 @@
 
   @DomName('SpeechSynthesisVoice.default')
   @DocsEditable()
-  bool get defaultValue => _blink.BlinkSpeechSynthesisVoice.default_Getter(this);
+  bool get defaultValue => _blink.BlinkSpeechSynthesisVoice.instance.default_Getter_(this);
 
   @DomName('SpeechSynthesisVoice.lang')
   @DocsEditable()
-  String get lang => _blink.BlinkSpeechSynthesisVoice.lang_Getter(this);
+  String get lang => _blink.BlinkSpeechSynthesisVoice.instance.lang_Getter_(this);
 
   @DomName('SpeechSynthesisVoice.localService')
   @DocsEditable()
-  bool get localService => _blink.BlinkSpeechSynthesisVoice.localService_Getter(this);
+  bool get localService => _blink.BlinkSpeechSynthesisVoice.instance.localService_Getter_(this);
 
   @DomName('SpeechSynthesisVoice.name')
   @DocsEditable()
-  String get name => _blink.BlinkSpeechSynthesisVoice.name_Getter(this);
+  String get name => _blink.BlinkSpeechSynthesisVoice.instance.name_Getter_(this);
 
   @DomName('SpeechSynthesisVoice.voiceURI')
   @DocsEditable()
-  String get voiceUri => _blink.BlinkSpeechSynthesisVoice.voiceURI_Getter(this);
+  String get voiceUri => _blink.BlinkSpeechSynthesisVoice.instance.voiceURI_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29225,35 +29230,35 @@
 
   @DomName('Storage.length')
   @DocsEditable()
-  int get _length => _blink.BlinkStorage.length_Getter(this);
+  int get _length => _blink.BlinkStorage.instance.length_Getter_(this);
 
   bool __delete__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
-      return _blink.BlinkStorage.$__delete___Callback_1(this, index_OR_name);
+      return _blink.BlinkStorage.instance.$__delete___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkStorage.$__delete___Callback_1(this, index_OR_name);
+      return _blink.BlinkStorage.instance.$__delete___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   String __getter__(index_OR_name) {
     if ((index_OR_name is int || index_OR_name == null)) {
-      return _blink.BlinkStorage.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkStorage.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String || index_OR_name == null)) {
-      return _blink.BlinkStorage.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkStorage.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   void __setter__(index_OR_name, String value) {
     if ((value is String || value == null) && (index_OR_name is int || index_OR_name == null)) {
-      _blink.BlinkStorage.$__setter___Callback_2(this, index_OR_name, value);
+      _blink.BlinkStorage.instance.$__setter___Callback_2_(this, index_OR_name, value);
       return;
     }
     if ((value is String || value == null) && (index_OR_name is String || index_OR_name == null)) {
-      _blink.BlinkStorage.$__setter___Callback_2(this, index_OR_name, value);
+      _blink.BlinkStorage.instance.$__setter___Callback_2_(this, index_OR_name, value);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -29261,23 +29266,23 @@
 
   @DomName('Storage.clear')
   @DocsEditable()
-  void _clear() => _blink.BlinkStorage.clear_Callback(this);
+  void _clear() => _blink.BlinkStorage.instance.clear_Callback_0_(this);
 
   @DomName('Storage.getItem')
   @DocsEditable()
-  String _getItem(String key) => _blink.BlinkStorage.getItem_Callback_1(this, key);
+  String _getItem(String key) => _blink.BlinkStorage.instance.getItem_Callback_1_(this, key);
 
   @DomName('Storage.key')
   @DocsEditable()
-  String _key(int index) => _blink.BlinkStorage.key_Callback_1(this, index);
+  String _key(int index) => _blink.BlinkStorage.instance.key_Callback_1_(this, index);
 
   @DomName('Storage.removeItem')
   @DocsEditable()
-  void _removeItem(String key) => _blink.BlinkStorage.removeItem_Callback_1(this, key);
+  void _removeItem(String key) => _blink.BlinkStorage.instance.removeItem_Callback_1_(this, key);
 
   @DomName('Storage.setItem')
   @DocsEditable()
-  void _setItem(String key, String data) => _blink.BlinkStorage.setItem_Callback_2(this, key, data);
+  void _setItem(String key, String data) => _blink.BlinkStorage.instance.setItem_Callback_2_(this, key, data);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29315,27 +29320,27 @@
 
   @DomName('StorageEvent.key')
   @DocsEditable()
-  String get key => _blink.BlinkStorageEvent.key_Getter(this);
+  String get key => _blink.BlinkStorageEvent.instance.key_Getter_(this);
 
   @DomName('StorageEvent.newValue')
   @DocsEditable()
-  String get newValue => _blink.BlinkStorageEvent.newValue_Getter(this);
+  String get newValue => _blink.BlinkStorageEvent.instance.newValue_Getter_(this);
 
   @DomName('StorageEvent.oldValue')
   @DocsEditable()
-  String get oldValue => _blink.BlinkStorageEvent.oldValue_Getter(this);
+  String get oldValue => _blink.BlinkStorageEvent.instance.oldValue_Getter_(this);
 
   @DomName('StorageEvent.storageArea')
   @DocsEditable()
-  Storage get storageArea => _blink.BlinkStorageEvent.storageArea_Getter(this);
+  Storage get storageArea => _blink.BlinkStorageEvent.instance.storageArea_Getter_(this);
 
   @DomName('StorageEvent.url')
   @DocsEditable()
-  String get url => _blink.BlinkStorageEvent.url_Getter(this);
+  String get url => _blink.BlinkStorageEvent.instance.url_Getter_(this);
 
   @DomName('StorageEvent.initStorageEvent')
   @DocsEditable()
-  void _initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) => _blink.BlinkStorageEvent.initStorageEvent_Callback_8(this, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg);
+  void _initStorageEvent(String typeArg, bool canBubbleArg, bool cancelableArg, String keyArg, String oldValueArg, String newValueArg, String urlArg, Storage storageAreaArg) => _blink.BlinkStorageEvent.instance.initStorageEvent_Callback_8_(this, typeArg, canBubbleArg, cancelableArg, keyArg, oldValueArg, newValueArg, urlArg, storageAreaArg);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29356,12 +29361,12 @@
   @DomName('StorageInfo.quota')
   @DocsEditable()
   @Experimental() // untriaged
-  int get quota => _blink.BlinkStorageInfo.quota_Getter(this);
+  int get quota => _blink.BlinkStorageInfo.instance.quota_Getter_(this);
 
   @DomName('StorageInfo.usage')
   @DocsEditable()
   @Experimental() // untriaged
-  int get usage => _blink.BlinkStorageInfo.usage_Getter(this);
+  int get usage => _blink.BlinkStorageInfo.instance.usage_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29382,17 +29387,17 @@
   @DomName('StorageQuota.supportedTypes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get supportedTypes => _blink.BlinkStorageQuota.supportedTypes_Getter(this);
+  List<String> get supportedTypes => _blink.BlinkStorageQuota.instance.supportedTypes_Getter_(this);
 
   @DomName('StorageQuota.queryInfo')
   @DocsEditable()
   @Experimental() // untriaged
-  Future queryInfo(String type) => _blink.BlinkStorageQuota.queryInfo_Callback_1(this, type);
+  Future queryInfo(String type) => _blink.BlinkStorageQuota.instance.queryInfo_Callback_1_(this, type);
 
   @DomName('StorageQuota.requestPersistentQuota')
   @DocsEditable()
   @Experimental() // untriaged
-  Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.requestPersistentQuota_Callback_1(this, newQuota);
+  Future requestPersistentQuota(int newQuota) => _blink.BlinkStorageQuota.instance.requestPersistentQuota_Callback_1_(this, newQuota);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29453,31 +29458,31 @@
 
   @DomName('HTMLStyleElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLStyleElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLStyleElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLStyleElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLStyleElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLStyleElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkHTMLStyleElement.media_Getter(this);
+  String get media => _blink.BlinkHTMLStyleElement.instance.media_Getter_(this);
 
   @DomName('HTMLStyleElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkHTMLStyleElement.media_Setter(this, value);
+  void set media(String value) => _blink.BlinkHTMLStyleElement.instance.media_Setter_(this, value);
 
   @DomName('HTMLStyleElement.sheet')
   @DocsEditable()
-  StyleSheet get sheet => _blink.BlinkHTMLStyleElement.sheet_Getter(this);
+  StyleSheet get sheet => _blink.BlinkHTMLStyleElement.instance.sheet_Getter_(this);
 
   @DomName('HTMLStyleElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLStyleElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLStyleElement.instance.type_Getter_(this);
 
   @DomName('HTMLStyleElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkHTMLStyleElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkHTMLStyleElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29497,11 +29502,11 @@
 
   @DomName('StyleMedia.type')
   @DocsEditable()
-  String get type => _blink.BlinkStyleMedia.type_Getter(this);
+  String get type => _blink.BlinkStyleMedia.instance.type_Getter_(this);
 
   @DomName('StyleMedia.matchMedium')
   @DocsEditable()
-  bool matchMedium(String mediaquery) => _blink.BlinkStyleMedia.matchMedium_Callback_1(this, mediaquery);
+  bool matchMedium(String mediaquery) => _blink.BlinkStyleMedia.instance.matchMedium_Callback_1_(this, mediaquery);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29519,35 +29524,35 @@
 
   @DomName('StyleSheet.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkStyleSheet.disabled_Getter(this);
+  bool get disabled => _blink.BlinkStyleSheet.instance.disabled_Getter_(this);
 
   @DomName('StyleSheet.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkStyleSheet.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkStyleSheet.instance.disabled_Setter_(this, value);
 
   @DomName('StyleSheet.href')
   @DocsEditable()
-  String get href => _blink.BlinkStyleSheet.href_Getter(this);
+  String get href => _blink.BlinkStyleSheet.instance.href_Getter_(this);
 
   @DomName('StyleSheet.media')
   @DocsEditable()
-  MediaList get media => _blink.BlinkStyleSheet.media_Getter(this);
+  MediaList get media => _blink.BlinkStyleSheet.instance.media_Getter_(this);
 
   @DomName('StyleSheet.ownerNode')
   @DocsEditable()
-  Node get ownerNode => _blink.BlinkStyleSheet.ownerNode_Getter(this);
+  Node get ownerNode => _blink.BlinkStyleSheet.instance.ownerNode_Getter_(this);
 
   @DomName('StyleSheet.parentStyleSheet')
   @DocsEditable()
-  StyleSheet get parentStyleSheet => _blink.BlinkStyleSheet.parentStyleSheet_Getter(this);
+  StyleSheet get parentStyleSheet => _blink.BlinkStyleSheet.instance.parentStyleSheet_Getter_(this);
 
   @DomName('StyleSheet.title')
   @DocsEditable()
-  String get title => _blink.BlinkStyleSheet.title_Getter(this);
+  String get title => _blink.BlinkStyleSheet.instance.title_Getter_(this);
 
   @DomName('StyleSheet.type')
   @DocsEditable()
-  String get type => _blink.BlinkStyleSheet.type_Getter(this);
+  String get type => _blink.BlinkStyleSheet.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29599,31 +29604,31 @@
 
   @DomName('HTMLTableCellElement.cellIndex')
   @DocsEditable()
-  int get cellIndex => _blink.BlinkHTMLTableCellElement.cellIndex_Getter(this);
+  int get cellIndex => _blink.BlinkHTMLTableCellElement.instance.cellIndex_Getter_(this);
 
   @DomName('HTMLTableCellElement.colSpan')
   @DocsEditable()
-  int get colSpan => _blink.BlinkHTMLTableCellElement.colSpan_Getter(this);
+  int get colSpan => _blink.BlinkHTMLTableCellElement.instance.colSpan_Getter_(this);
 
   @DomName('HTMLTableCellElement.colSpan')
   @DocsEditable()
-  void set colSpan(int value) => _blink.BlinkHTMLTableCellElement.colSpan_Setter(this, value);
+  void set colSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.colSpan_Setter_(this, value);
 
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
-  String get headers => _blink.BlinkHTMLTableCellElement.headers_Getter(this);
+  String get headers => _blink.BlinkHTMLTableCellElement.instance.headers_Getter_(this);
 
   @DomName('HTMLTableCellElement.headers')
   @DocsEditable()
-  void set headers(String value) => _blink.BlinkHTMLTableCellElement.headers_Setter(this, value);
+  void set headers(String value) => _blink.BlinkHTMLTableCellElement.instance.headers_Setter_(this, value);
 
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
-  int get rowSpan => _blink.BlinkHTMLTableCellElement.rowSpan_Getter(this);
+  int get rowSpan => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Getter_(this);
 
   @DomName('HTMLTableCellElement.rowSpan')
   @DocsEditable()
-  void set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.rowSpan_Setter(this, value);
+  void set rowSpan(int value) => _blink.BlinkHTMLTableCellElement.instance.rowSpan_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29651,11 +29656,11 @@
 
   @DomName('HTMLTableColElement.span')
   @DocsEditable()
-  int get span => _blink.BlinkHTMLTableColElement.span_Getter(this);
+  int get span => _blink.BlinkHTMLTableColElement.instance.span_Getter_(this);
 
   @DomName('HTMLTableColElement.span')
   @DocsEditable()
-  void set span(int value) => _blink.BlinkHTMLTableColElement.span_Setter(this, value);
+  void set span(int value) => _blink.BlinkHTMLTableColElement.instance.span_Setter_(this, value);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -29701,73 +29706,73 @@
 
   @DomName('HTMLTableElement.caption')
   @DocsEditable()
-  TableCaptionElement get caption => _blink.BlinkHTMLTableElement.caption_Getter(this);
+  TableCaptionElement get caption => _blink.BlinkHTMLTableElement.instance.caption_Getter_(this);
 
   @DomName('HTMLTableElement.caption')
   @DocsEditable()
-  void set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.caption_Setter(this, value);
+  void set caption(TableCaptionElement value) => _blink.BlinkHTMLTableElement.instance.caption_Setter_(this, value);
 
   @DomName('HTMLTableElement.rows')
   @DocsEditable()
-  List<Node> get _rows => _blink.BlinkHTMLTableElement.rows_Getter(this);
+  List<Node> get _rows => _blink.BlinkHTMLTableElement.instance.rows_Getter_(this);
 
   @DomName('HTMLTableElement.tBodies')
   @DocsEditable()
-  List<Node> get _tBodies => _blink.BlinkHTMLTableElement.tBodies_Getter(this);
+  List<Node> get _tBodies => _blink.BlinkHTMLTableElement.instance.tBodies_Getter_(this);
 
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
-  TableSectionElement get tFoot => _blink.BlinkHTMLTableElement.tFoot_Getter(this);
+  TableSectionElement get tFoot => _blink.BlinkHTMLTableElement.instance.tFoot_Getter_(this);
 
   @DomName('HTMLTableElement.tFoot')
   @DocsEditable()
-  void set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.tFoot_Setter(this, value);
+  void set tFoot(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tFoot_Setter_(this, value);
 
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
-  TableSectionElement get tHead => _blink.BlinkHTMLTableElement.tHead_Getter(this);
+  TableSectionElement get tHead => _blink.BlinkHTMLTableElement.instance.tHead_Getter_(this);
 
   @DomName('HTMLTableElement.tHead')
   @DocsEditable()
-  void set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.tHead_Setter(this, value);
+  void set tHead(TableSectionElement value) => _blink.BlinkHTMLTableElement.instance.tHead_Setter_(this, value);
 
   @DomName('HTMLTableElement.createCaption')
   @DocsEditable()
-  HtmlElement _createCaption() => _blink.BlinkHTMLTableElement.createCaption_Callback(this);
+  HtmlElement _createCaption() => _blink.BlinkHTMLTableElement.instance.createCaption_Callback_0_(this);
 
   @DomName('HTMLTableElement.createTBody')
   @DocsEditable()
-  HtmlElement _createTBody() => _blink.BlinkHTMLTableElement.createTBody_Callback(this);
+  HtmlElement _createTBody() => _blink.BlinkHTMLTableElement.instance.createTBody_Callback_0_(this);
 
   @DomName('HTMLTableElement.createTFoot')
   @DocsEditable()
-  HtmlElement _createTFoot() => _blink.BlinkHTMLTableElement.createTFoot_Callback(this);
+  HtmlElement _createTFoot() => _blink.BlinkHTMLTableElement.instance.createTFoot_Callback_0_(this);
 
   @DomName('HTMLTableElement.createTHead')
   @DocsEditable()
-  HtmlElement _createTHead() => _blink.BlinkHTMLTableElement.createTHead_Callback(this);
+  HtmlElement _createTHead() => _blink.BlinkHTMLTableElement.instance.createTHead_Callback_0_(this);
 
   @DomName('HTMLTableElement.deleteCaption')
   @DocsEditable()
-  void deleteCaption() => _blink.BlinkHTMLTableElement.deleteCaption_Callback(this);
+  void deleteCaption() => _blink.BlinkHTMLTableElement.instance.deleteCaption_Callback_0_(this);
 
   @DomName('HTMLTableElement.deleteRow')
   @DocsEditable()
-  void deleteRow(int index) => _blink.BlinkHTMLTableElement.deleteRow_Callback_1(this, index);
+  void deleteRow(int index) => _blink.BlinkHTMLTableElement.instance.deleteRow_Callback_1_(this, index);
 
   @DomName('HTMLTableElement.deleteTFoot')
   @DocsEditable()
-  void deleteTFoot() => _blink.BlinkHTMLTableElement.deleteTFoot_Callback(this);
+  void deleteTFoot() => _blink.BlinkHTMLTableElement.instance.deleteTFoot_Callback_0_(this);
 
   @DomName('HTMLTableElement.deleteTHead')
   @DocsEditable()
-  void deleteTHead() => _blink.BlinkHTMLTableElement.deleteTHead_Callback(this);
+  void deleteTHead() => _blink.BlinkHTMLTableElement.instance.deleteTHead_Callback_0_(this);
 
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableElement.insertRow_Callback_1(this, index);
+      return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_1_(this, index);
     }
-    return _blink.BlinkHTMLTableElement.insertRow_Callback(this);
+    return _blink.BlinkHTMLTableElement.instance.insertRow_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -29805,25 +29810,25 @@
 
   @DomName('HTMLTableRowElement.cells')
   @DocsEditable()
-  List<Node> get _cells => _blink.BlinkHTMLTableRowElement.cells_Getter(this);
+  List<Node> get _cells => _blink.BlinkHTMLTableRowElement.instance.cells_Getter_(this);
 
   @DomName('HTMLTableRowElement.rowIndex')
   @DocsEditable()
-  int get rowIndex => _blink.BlinkHTMLTableRowElement.rowIndex_Getter(this);
+  int get rowIndex => _blink.BlinkHTMLTableRowElement.instance.rowIndex_Getter_(this);
 
   @DomName('HTMLTableRowElement.sectionRowIndex')
   @DocsEditable()
-  int get sectionRowIndex => _blink.BlinkHTMLTableRowElement.sectionRowIndex_Getter(this);
+  int get sectionRowIndex => _blink.BlinkHTMLTableRowElement.instance.sectionRowIndex_Getter_(this);
 
   @DomName('HTMLTableRowElement.deleteCell')
   @DocsEditable()
-  void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.deleteCell_Callback_1(this, index);
+  void deleteCell(int index) => _blink.BlinkHTMLTableRowElement.instance.deleteCell_Callback_1_(this, index);
 
   HtmlElement _insertCell([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableRowElement.insertCell_Callback_1(this, index);
+      return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_1_(this, index);
     }
-    return _blink.BlinkHTMLTableRowElement.insertCell_Callback(this);
+    return _blink.BlinkHTMLTableRowElement.instance.insertCell_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -29857,17 +29862,17 @@
 
   @DomName('HTMLTableSectionElement.rows')
   @DocsEditable()
-  List<Node> get _rows => _blink.BlinkHTMLTableSectionElement.rows_Getter(this);
+  List<Node> get _rows => _blink.BlinkHTMLTableSectionElement.instance.rows_Getter_(this);
 
   @DomName('HTMLTableSectionElement.deleteRow')
   @DocsEditable()
-  void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.deleteRow_Callback_1(this, index);
+  void deleteRow(int index) => _blink.BlinkHTMLTableSectionElement.instance.deleteRow_Callback_1_(this, index);
 
   HtmlElement _insertRow([int index]) {
     if (index != null) {
-      return _blink.BlinkHTMLTableSectionElement.insertRow_Callback_1(this, index);
+      return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_1_(this, index);
     }
-    return _blink.BlinkHTMLTableSectionElement.insertRow_Callback(this);
+    return _blink.BlinkHTMLTableSectionElement.instance.insertRow_Callback_0_(this);
   }
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -29901,7 +29906,7 @@
 
   @DomName('HTMLTemplateElement.content')
   @DocsEditable()
-  DocumentFragment get content => _blink.BlinkHTMLTemplateElement.content_Getter(this);
+  DocumentFragment get content => _blink.BlinkHTMLTemplateElement.instance.content_Getter_(this);
 
 
   /**
@@ -29935,16 +29940,16 @@
 
   @DomName('Text.wholeText')
   @DocsEditable()
-  String get wholeText => _blink.BlinkText.wholeText_Getter(this);
+  String get wholeText => _blink.BlinkText.instance.wholeText_Getter_(this);
 
   @DomName('Text.getDestinationInsertionPoints')
   @DocsEditable()
   @Experimental() // untriaged
-  List<Node> getDestinationInsertionPoints() => _blink.BlinkText.getDestinationInsertionPoints_Callback(this);
+  List<Node> getDestinationInsertionPoints() => _blink.BlinkText.instance.getDestinationInsertionPoints_Callback_0_(this);
 
   @DomName('Text.splitText')
   @DocsEditable()
-  Text splitText(int offset) => _blink.BlinkText.splitText_Callback_1(this, offset);
+  Text splitText(int offset) => _blink.BlinkText.instance.splitText_Callback_1_(this, offset);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -29972,194 +29977,194 @@
 
   @DomName('HTMLTextAreaElement.autofocus')
   @DocsEditable()
-  bool get autofocus => _blink.BlinkHTMLTextAreaElement.autofocus_Getter(this);
+  bool get autofocus => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Getter_(this);
 
   @DomName('HTMLTextAreaElement.autofocus')
   @DocsEditable()
-  void set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.autofocus_Setter(this, value);
+  void set autofocus(bool value) => _blink.BlinkHTMLTextAreaElement.instance.autofocus_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
-  int get cols => _blink.BlinkHTMLTextAreaElement.cols_Getter(this);
+  int get cols => _blink.BlinkHTMLTextAreaElement.instance.cols_Getter_(this);
 
   @DomName('HTMLTextAreaElement.cols')
   @DocsEditable()
-  void set cols(int value) => _blink.BlinkHTMLTextAreaElement.cols_Setter(this, value);
+  void set cols(int value) => _blink.BlinkHTMLTextAreaElement.instance.cols_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
-  String get defaultValue => _blink.BlinkHTMLTextAreaElement.defaultValue_Getter(this);
+  String get defaultValue => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Getter_(this);
 
   @DomName('HTMLTextAreaElement.defaultValue')
   @DocsEditable()
-  void set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.defaultValue_Setter(this, value);
+  void set defaultValue(String value) => _blink.BlinkHTMLTextAreaElement.instance.defaultValue_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.dirName')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname
   @Experimental()
-  String get dirName => _blink.BlinkHTMLTextAreaElement.dirName_Getter(this);
+  String get dirName => _blink.BlinkHTMLTextAreaElement.instance.dirName_Getter_(this);
 
   @DomName('HTMLTextAreaElement.dirName')
   @DocsEditable()
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-textarea-dirname
   @Experimental()
-  void set dirName(String value) => _blink.BlinkHTMLTextAreaElement.dirName_Setter(this, value);
+  void set dirName(String value) => _blink.BlinkHTMLTextAreaElement.instance.dirName_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkHTMLTextAreaElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkHTMLTextAreaElement.instance.disabled_Getter_(this);
 
   @DomName('HTMLTextAreaElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkHTMLTextAreaElement.instance.disabled_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.form')
   @DocsEditable()
-  FormElement get form => _blink.BlinkHTMLTextAreaElement.form_Getter(this);
+  FormElement get form => _blink.BlinkHTMLTextAreaElement.instance.form_Getter_(this);
 
   @DomName('HTMLTextAreaElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get inputMode => _blink.BlinkHTMLTextAreaElement.inputMode_Getter(this);
+  String get inputMode => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Getter_(this);
 
   @DomName('HTMLTextAreaElement.inputMode')
   @DocsEditable()
   @Experimental() // untriaged
-  void set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.inputMode_Setter(this, value);
+  void set inputMode(String value) => _blink.BlinkHTMLTextAreaElement.instance.inputMode_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.labels')
   @DocsEditable()
   @Unstable()
-  List<Node> get labels => _blink.BlinkHTMLTextAreaElement.labels_Getter(this);
+  List<Node> get labels => _blink.BlinkHTMLTextAreaElement.instance.labels_Getter_(this);
 
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
-  int get maxLength => _blink.BlinkHTMLTextAreaElement.maxLength_Getter(this);
+  int get maxLength => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Getter_(this);
 
   @DomName('HTMLTextAreaElement.maxLength')
   @DocsEditable()
-  void set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.maxLength_Setter(this, value);
+  void set maxLength(int value) => _blink.BlinkHTMLTextAreaElement.instance.maxLength_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
-  String get name => _blink.BlinkHTMLTextAreaElement.name_Getter(this);
+  String get name => _blink.BlinkHTMLTextAreaElement.instance.name_Getter_(this);
 
   @DomName('HTMLTextAreaElement.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkHTMLTextAreaElement.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkHTMLTextAreaElement.instance.name_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
-  String get placeholder => _blink.BlinkHTMLTextAreaElement.placeholder_Getter(this);
+  String get placeholder => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Getter_(this);
 
   @DomName('HTMLTextAreaElement.placeholder')
   @DocsEditable()
-  void set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.placeholder_Setter(this, value);
+  void set placeholder(String value) => _blink.BlinkHTMLTextAreaElement.instance.placeholder_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
-  bool get readOnly => _blink.BlinkHTMLTextAreaElement.readOnly_Getter(this);
+  bool get readOnly => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Getter_(this);
 
   @DomName('HTMLTextAreaElement.readOnly')
   @DocsEditable()
-  void set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.readOnly_Setter(this, value);
+  void set readOnly(bool value) => _blink.BlinkHTMLTextAreaElement.instance.readOnly_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
-  bool get required => _blink.BlinkHTMLTextAreaElement.required_Getter(this);
+  bool get required => _blink.BlinkHTMLTextAreaElement.instance.required_Getter_(this);
 
   @DomName('HTMLTextAreaElement.required')
   @DocsEditable()
-  void set required(bool value) => _blink.BlinkHTMLTextAreaElement.required_Setter(this, value);
+  void set required(bool value) => _blink.BlinkHTMLTextAreaElement.instance.required_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
-  int get rows => _blink.BlinkHTMLTextAreaElement.rows_Getter(this);
+  int get rows => _blink.BlinkHTMLTextAreaElement.instance.rows_Getter_(this);
 
   @DomName('HTMLTextAreaElement.rows')
   @DocsEditable()
-  void set rows(int value) => _blink.BlinkHTMLTextAreaElement.rows_Setter(this, value);
+  void set rows(int value) => _blink.BlinkHTMLTextAreaElement.instance.rows_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
-  String get selectionDirection => _blink.BlinkHTMLTextAreaElement.selectionDirection_Getter(this);
+  String get selectionDirection => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Getter_(this);
 
   @DomName('HTMLTextAreaElement.selectionDirection')
   @DocsEditable()
-  void set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.selectionDirection_Setter(this, value);
+  void set selectionDirection(String value) => _blink.BlinkHTMLTextAreaElement.instance.selectionDirection_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
-  int get selectionEnd => _blink.BlinkHTMLTextAreaElement.selectionEnd_Getter(this);
+  int get selectionEnd => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Getter_(this);
 
   @DomName('HTMLTextAreaElement.selectionEnd')
   @DocsEditable()
-  void set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.selectionEnd_Setter(this, value);
+  void set selectionEnd(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionEnd_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
-  int get selectionStart => _blink.BlinkHTMLTextAreaElement.selectionStart_Getter(this);
+  int get selectionStart => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Getter_(this);
 
   @DomName('HTMLTextAreaElement.selectionStart')
   @DocsEditable()
-  void set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.selectionStart_Setter(this, value);
+  void set selectionStart(int value) => _blink.BlinkHTMLTextAreaElement.instance.selectionStart_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.textLength')
   @DocsEditable()
-  int get textLength => _blink.BlinkHTMLTextAreaElement.textLength_Getter(this);
+  int get textLength => _blink.BlinkHTMLTextAreaElement.instance.textLength_Getter_(this);
 
   @DomName('HTMLTextAreaElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkHTMLTextAreaElement.type_Getter(this);
+  String get type => _blink.BlinkHTMLTextAreaElement.instance.type_Getter_(this);
 
   @DomName('HTMLTextAreaElement.validationMessage')
   @DocsEditable()
-  String get validationMessage => _blink.BlinkHTMLTextAreaElement.validationMessage_Getter(this);
+  String get validationMessage => _blink.BlinkHTMLTextAreaElement.instance.validationMessage_Getter_(this);
 
   @DomName('HTMLTextAreaElement.validity')
   @DocsEditable()
-  ValidityState get validity => _blink.BlinkHTMLTextAreaElement.validity_Getter(this);
+  ValidityState get validity => _blink.BlinkHTMLTextAreaElement.instance.validity_Getter_(this);
 
   @DomName('HTMLTextAreaElement.value')
   @DocsEditable()
-  String get value => _blink.BlinkHTMLTextAreaElement.value_Getter(this);
+  String get value => _blink.BlinkHTMLTextAreaElement.instance.value_Getter_(this);
 
   @DomName('HTMLTextAreaElement.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkHTMLTextAreaElement.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkHTMLTextAreaElement.instance.value_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.willValidate')
   @DocsEditable()
-  bool get willValidate => _blink.BlinkHTMLTextAreaElement.willValidate_Getter(this);
+  bool get willValidate => _blink.BlinkHTMLTextAreaElement.instance.willValidate_Getter_(this);
 
   @DomName('HTMLTextAreaElement.wrap')
   @DocsEditable()
-  String get wrap => _blink.BlinkHTMLTextAreaElement.wrap_Getter(this);
+  String get wrap => _blink.BlinkHTMLTextAreaElement.instance.wrap_Getter_(this);
 
   @DomName('HTMLTextAreaElement.wrap')
   @DocsEditable()
-  void set wrap(String value) => _blink.BlinkHTMLTextAreaElement.wrap_Setter(this, value);
+  void set wrap(String value) => _blink.BlinkHTMLTextAreaElement.instance.wrap_Setter_(this, value);
 
   @DomName('HTMLTextAreaElement.checkValidity')
   @DocsEditable()
-  bool checkValidity() => _blink.BlinkHTMLTextAreaElement.checkValidity_Callback(this);
+  bool checkValidity() => _blink.BlinkHTMLTextAreaElement.instance.checkValidity_Callback_0_(this);
 
   @DomName('HTMLTextAreaElement.select')
   @DocsEditable()
-  void select() => _blink.BlinkHTMLTextAreaElement.select_Callback(this);
+  void select() => _blink.BlinkHTMLTextAreaElement.instance.select_Callback_0_(this);
 
   @DomName('HTMLTextAreaElement.setCustomValidity')
   @DocsEditable()
-  void setCustomValidity(String error) => _blink.BlinkHTMLTextAreaElement.setCustomValidity_Callback_1(this, error);
+  void setCustomValidity(String error) => _blink.BlinkHTMLTextAreaElement.instance.setCustomValidity_Callback_1_(this, error);
 
   void setRangeText(String replacement, {int start, int end, String selectionMode}) {
     if ((replacement is String || replacement == null) && start == null && end == null && selectionMode == null) {
-      _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_1(this, replacement);
+      _blink.BlinkHTMLTextAreaElement.instance.setRangeText_Callback_1_(this, replacement);
       return;
     }
     if ((selectionMode is String || selectionMode == null) && (end is int || end == null) && (start is int || start == null) && (replacement is String || replacement == null)) {
-      _blink.BlinkHTMLTextAreaElement.setRangeText_Callback_4(this, replacement, start, end, selectionMode);
+      _blink.BlinkHTMLTextAreaElement.instance.setRangeText_Callback_4_(this, replacement, start, end, selectionMode);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -30167,10 +30172,10 @@
 
   void setSelectionRange(int start, int end, [String direction]) {
     if (direction != null) {
-      _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_3(this, start, end, direction);
+      _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_3_(this, start, end, direction);
       return;
     }
-    _blink.BlinkHTMLTextAreaElement.setSelectionRange_Callback_2(this, start, end);
+    _blink.BlinkHTMLTextAreaElement.instance.setSelectionRange_Callback_2_(this, start, end);
     return;
   }
 
@@ -30199,11 +30204,11 @@
 
   @DomName('TextEvent.data')
   @DocsEditable()
-  String get data => _blink.BlinkTextEvent.data_Getter(this);
+  String get data => _blink.BlinkTextEvent.instance.data_Getter_(this);
 
   @DomName('TextEvent.initTextEvent')
   @DocsEditable()
-  void _initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkTextEvent.initTextEvent_Callback_5(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg);
+  void _initTextEvent(String typeArg, bool canBubbleArg, bool cancelableArg, Window viewArg, String dataArg) => _blink.BlinkTextEvent.instance.initTextEvent_Callback_5_(this, typeArg, canBubbleArg, cancelableArg, viewArg, dataArg);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30222,61 +30227,61 @@
   @DomName('TextMetrics.actualBoundingBoxAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxAscent => _blink.BlinkTextMetrics.actualBoundingBoxAscent_Getter(this);
+  double get actualBoundingBoxAscent => _blink.BlinkTextMetrics.instance.actualBoundingBoxAscent_Getter_(this);
 
   @DomName('TextMetrics.actualBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxDescent => _blink.BlinkTextMetrics.actualBoundingBoxDescent_Getter(this);
+  double get actualBoundingBoxDescent => _blink.BlinkTextMetrics.instance.actualBoundingBoxDescent_Getter_(this);
 
   @DomName('TextMetrics.actualBoundingBoxLeft')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxLeft => _blink.BlinkTextMetrics.actualBoundingBoxLeft_Getter(this);
+  double get actualBoundingBoxLeft => _blink.BlinkTextMetrics.instance.actualBoundingBoxLeft_Getter_(this);
 
   @DomName('TextMetrics.actualBoundingBoxRight')
   @DocsEditable()
   @Experimental() // untriaged
-  double get actualBoundingBoxRight => _blink.BlinkTextMetrics.actualBoundingBoxRight_Getter(this);
+  double get actualBoundingBoxRight => _blink.BlinkTextMetrics.instance.actualBoundingBoxRight_Getter_(this);
 
   @DomName('TextMetrics.alphabeticBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get alphabeticBaseline => _blink.BlinkTextMetrics.alphabeticBaseline_Getter(this);
+  double get alphabeticBaseline => _blink.BlinkTextMetrics.instance.alphabeticBaseline_Getter_(this);
 
   @DomName('TextMetrics.emHeightAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get emHeightAscent => _blink.BlinkTextMetrics.emHeightAscent_Getter(this);
+  double get emHeightAscent => _blink.BlinkTextMetrics.instance.emHeightAscent_Getter_(this);
 
   @DomName('TextMetrics.emHeightDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get emHeightDescent => _blink.BlinkTextMetrics.emHeightDescent_Getter(this);
+  double get emHeightDescent => _blink.BlinkTextMetrics.instance.emHeightDescent_Getter_(this);
 
   @DomName('TextMetrics.fontBoundingBoxAscent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get fontBoundingBoxAscent => _blink.BlinkTextMetrics.fontBoundingBoxAscent_Getter(this);
+  double get fontBoundingBoxAscent => _blink.BlinkTextMetrics.instance.fontBoundingBoxAscent_Getter_(this);
 
   @DomName('TextMetrics.fontBoundingBoxDescent')
   @DocsEditable()
   @Experimental() // untriaged
-  double get fontBoundingBoxDescent => _blink.BlinkTextMetrics.fontBoundingBoxDescent_Getter(this);
+  double get fontBoundingBoxDescent => _blink.BlinkTextMetrics.instance.fontBoundingBoxDescent_Getter_(this);
 
   @DomName('TextMetrics.hangingBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get hangingBaseline => _blink.BlinkTextMetrics.hangingBaseline_Getter(this);
+  double get hangingBaseline => _blink.BlinkTextMetrics.instance.hangingBaseline_Getter_(this);
 
   @DomName('TextMetrics.ideographicBaseline')
   @DocsEditable()
   @Experimental() // untriaged
-  double get ideographicBaseline => _blink.BlinkTextMetrics.ideographicBaseline_Getter(this);
+  double get ideographicBaseline => _blink.BlinkTextMetrics.instance.ideographicBaseline_Getter_(this);
 
   @DomName('TextMetrics.width')
   @DocsEditable()
-  double get width => _blink.BlinkTextMetrics.width_Getter(this);
+  double get width => _blink.BlinkTextMetrics.instance.width_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30306,59 +30311,59 @@
 
   @DomName('TextTrack.activeCues')
   @DocsEditable()
-  TextTrackCueList get activeCues => _blink.BlinkTextTrack.activeCues_Getter(this);
+  TextTrackCueList get activeCues => _blink.BlinkTextTrack.instance.activeCues_Getter_(this);
 
   @DomName('TextTrack.cues')
   @DocsEditable()
-  TextTrackCueList get cues => _blink.BlinkTextTrack.cues_Getter(this);
+  TextTrackCueList get cues => _blink.BlinkTextTrack.instance.cues_Getter_(this);
 
   @DomName('TextTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkTextTrack.id_Getter(this);
+  String get id => _blink.BlinkTextTrack.instance.id_Getter_(this);
 
   @DomName('TextTrack.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkTextTrack.kind_Getter(this);
+  String get kind => _blink.BlinkTextTrack.instance.kind_Getter_(this);
 
   @DomName('TextTrack.label')
   @DocsEditable()
-  String get label => _blink.BlinkTextTrack.label_Getter(this);
+  String get label => _blink.BlinkTextTrack.instance.label_Getter_(this);
 
   @DomName('TextTrack.language')
   @DocsEditable()
-  String get language => _blink.BlinkTextTrack.language_Getter(this);
+  String get language => _blink.BlinkTextTrack.instance.language_Getter_(this);
 
   @DomName('TextTrack.mode')
   @DocsEditable()
-  String get mode => _blink.BlinkTextTrack.mode_Getter(this);
+  String get mode => _blink.BlinkTextTrack.instance.mode_Getter_(this);
 
   @DomName('TextTrack.mode')
   @DocsEditable()
-  void set mode(String value) => _blink.BlinkTextTrack.mode_Setter(this, value);
+  void set mode(String value) => _blink.BlinkTextTrack.instance.mode_Setter_(this, value);
 
   @DomName('TextTrack.regions')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegionList get regions => _blink.BlinkTextTrack.regions_Getter(this);
+  VttRegionList get regions => _blink.BlinkTextTrack.instance.regions_Getter_(this);
 
   @DomName('TextTrack.addCue')
   @DocsEditable()
-  void addCue(TextTrackCue cue) => _blink.BlinkTextTrack.addCue_Callback_1(this, cue);
+  void addCue(TextTrackCue cue) => _blink.BlinkTextTrack.instance.addCue_Callback_1_(this, cue);
 
   @DomName('TextTrack.addRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  void addRegion(VttRegion region) => _blink.BlinkTextTrack.addRegion_Callback_1(this, region);
+  void addRegion(VttRegion region) => _blink.BlinkTextTrack.instance.addRegion_Callback_1_(this, region);
 
   @DomName('TextTrack.removeCue')
   @DocsEditable()
-  void removeCue(TextTrackCue cue) => _blink.BlinkTextTrack.removeCue_Callback_1(this, cue);
+  void removeCue(TextTrackCue cue) => _blink.BlinkTextTrack.instance.removeCue_Callback_1_(this, cue);
 
   @DomName('TextTrack.removeRegion')
   @DocsEditable()
   @Experimental() // untriaged
-  void removeRegion(VttRegion region) => _blink.BlinkTextTrack.removeRegion_Callback_1(this, region);
+  void removeRegion(VttRegion region) => _blink.BlinkTextTrack.instance.removeRegion_Callback_1_(this, region);
 
   /// Stream of `cuechange` events handled by this [TextTrack].
   @DomName('TextTrack.oncuechange')
@@ -30403,39 +30408,39 @@
 
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
-  num get endTime => _blink.BlinkTextTrackCue.endTime_Getter(this);
+  num get endTime => _blink.BlinkTextTrackCue.instance.endTime_Getter_(this);
 
   @DomName('TextTrackCue.endTime')
   @DocsEditable()
-  void set endTime(num value) => _blink.BlinkTextTrackCue.endTime_Setter(this, value);
+  void set endTime(num value) => _blink.BlinkTextTrackCue.instance.endTime_Setter_(this, value);
 
   @DomName('TextTrackCue.id')
   @DocsEditable()
-  String get id => _blink.BlinkTextTrackCue.id_Getter(this);
+  String get id => _blink.BlinkTextTrackCue.instance.id_Getter_(this);
 
   @DomName('TextTrackCue.id')
   @DocsEditable()
-  void set id(String value) => _blink.BlinkTextTrackCue.id_Setter(this, value);
+  void set id(String value) => _blink.BlinkTextTrackCue.instance.id_Setter_(this, value);
 
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
-  bool get pauseOnExit => _blink.BlinkTextTrackCue.pauseOnExit_Getter(this);
+  bool get pauseOnExit => _blink.BlinkTextTrackCue.instance.pauseOnExit_Getter_(this);
 
   @DomName('TextTrackCue.pauseOnExit')
   @DocsEditable()
-  void set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.pauseOnExit_Setter(this, value);
+  void set pauseOnExit(bool value) => _blink.BlinkTextTrackCue.instance.pauseOnExit_Setter_(this, value);
 
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
-  num get startTime => _blink.BlinkTextTrackCue.startTime_Getter(this);
+  num get startTime => _blink.BlinkTextTrackCue.instance.startTime_Getter_(this);
 
   @DomName('TextTrackCue.startTime')
   @DocsEditable()
-  void set startTime(num value) => _blink.BlinkTextTrackCue.startTime_Setter(this, value);
+  void set startTime(num value) => _blink.BlinkTextTrackCue.instance.startTime_Setter_(this, value);
 
   @DomName('TextTrackCue.track')
   @DocsEditable()
-  TextTrack get track => _blink.BlinkTextTrackCue.track_Getter(this);
+  TextTrack get track => _blink.BlinkTextTrackCue.instance.track_Getter_(this);
 
   /// Stream of `enter` events handled by this [TextTrackCue].
   @DomName('TextTrackCue.onenter')
@@ -30465,15 +30470,15 @@
 
   @DomName('TextTrackCueList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTextTrackCueList.length_Getter(this);
+  int get length => _blink.BlinkTextTrackCueList.instance.length_Getter_(this);
 
   TextTrackCue operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkTextTrackCueList.item_Callback_1(this, index);
+    return _blink.BlinkTextTrackCueList.instance.item_Callback_1_(this, index);
   }
 
-  TextTrackCue _nativeIndexedGetter(int index) => _blink.BlinkTextTrackCueList.item_Callback_1(this, index);
+  TextTrackCue _nativeIndexedGetter(int index) => _blink.BlinkTextTrackCueList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, TextTrackCue value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -30515,11 +30520,11 @@
 
   @DomName('TextTrackCueList.getCueById')
   @DocsEditable()
-  TextTrackCue getCueById(String id) => _blink.BlinkTextTrackCueList.getCueById_Callback_1(this, id);
+  TextTrackCue getCueById(String id) => _blink.BlinkTextTrackCueList.instance.getCueById_Callback_1_(this, id);
 
   @DomName('TextTrackCueList.item')
   @DocsEditable()
-  TextTrackCue item(int index) => _blink.BlinkTextTrackCueList.item_Callback_1(this, index);
+  TextTrackCue item(int index) => _blink.BlinkTextTrackCueList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30554,15 +30559,15 @@
 
   @DomName('TextTrackList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTextTrackList.length_Getter(this);
+  int get length => _blink.BlinkTextTrackList.instance.length_Getter_(this);
 
   TextTrack operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkTextTrackList.item_Callback_1(this, index);
+    return _blink.BlinkTextTrackList.instance.item_Callback_1_(this, index);
   }
 
-  TextTrack _nativeIndexedGetter(int index) => _blink.BlinkTextTrackList.item_Callback_1(this, index);
+  TextTrack _nativeIndexedGetter(int index) => _blink.BlinkTextTrackList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, TextTrack value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -30605,11 +30610,11 @@
   @DomName('TextTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  TextTrack getTrackById(String id) => _blink.BlinkTextTrackList.getTrackById_Callback_1(this, id);
+  TextTrack getTrackById(String id) => _blink.BlinkTextTrackList.instance.getTrackById_Callback_1_(this, id);
 
   @DomName('TextTrackList.item')
   @DocsEditable()
-  TextTrack item(int index) => _blink.BlinkTextTrackList.item_Callback_1(this, index);
+  TextTrack item(int index) => _blink.BlinkTextTrackList.instance.item_Callback_1_(this, index);
 
   /// Stream of `addtrack` events handled by this [TextTrackList].
   @DomName('TextTrackList.onaddtrack')
@@ -30638,15 +30643,15 @@
 
   @DomName('TimeRanges.length')
   @DocsEditable()
-  int get length => _blink.BlinkTimeRanges.length_Getter(this);
+  int get length => _blink.BlinkTimeRanges.instance.length_Getter_(this);
 
   @DomName('TimeRanges.end')
   @DocsEditable()
-  double end(int index) => _blink.BlinkTimeRanges.end_Callback_1(this, index);
+  double end(int index) => _blink.BlinkTimeRanges.instance.end_Callback_1_(this, index);
 
   @DomName('TimeRanges.start')
   @DocsEditable()
-  double start(int index) => _blink.BlinkTimeRanges.start_Callback_1(this, index);
+  double start(int index) => _blink.BlinkTimeRanges.instance.start_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30675,92 +30680,92 @@
   @DomName('Timing.delay')
   @DocsEditable()
   @Experimental() // untriaged
-  num get delay => _blink.BlinkTiming.delay_Getter(this);
+  num get delay => _blink.BlinkTiming.instance.delay_Getter_(this);
 
   @DomName('Timing.delay')
   @DocsEditable()
   @Experimental() // untriaged
-  void set delay(num value) => _blink.BlinkTiming.delay_Setter(this, value);
+  void set delay(num value) => _blink.BlinkTiming.instance.delay_Setter_(this, value);
 
   @DomName('Timing.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  String get direction => _blink.BlinkTiming.direction_Getter(this);
+  String get direction => _blink.BlinkTiming.instance.direction_Getter_(this);
 
   @DomName('Timing.direction')
   @DocsEditable()
   @Experimental() // untriaged
-  void set direction(String value) => _blink.BlinkTiming.direction_Setter(this, value);
+  void set direction(String value) => _blink.BlinkTiming.instance.direction_Setter_(this, value);
 
   @DomName('Timing.easing')
   @DocsEditable()
   @Experimental() // untriaged
-  String get easing => _blink.BlinkTiming.easing_Getter(this);
+  String get easing => _blink.BlinkTiming.instance.easing_Getter_(this);
 
   @DomName('Timing.easing')
   @DocsEditable()
   @Experimental() // untriaged
-  void set easing(String value) => _blink.BlinkTiming.easing_Setter(this, value);
+  void set easing(String value) => _blink.BlinkTiming.instance.easing_Setter_(this, value);
 
   @DomName('Timing.endDelay')
   @DocsEditable()
   @Experimental() // untriaged
-  num get endDelay => _blink.BlinkTiming.endDelay_Getter(this);
+  num get endDelay => _blink.BlinkTiming.instance.endDelay_Getter_(this);
 
   @DomName('Timing.endDelay')
   @DocsEditable()
   @Experimental() // untriaged
-  void set endDelay(num value) => _blink.BlinkTiming.endDelay_Setter(this, value);
+  void set endDelay(num value) => _blink.BlinkTiming.instance.endDelay_Setter_(this, value);
 
   @DomName('Timing.fill')
   @DocsEditable()
   @Experimental() // untriaged
-  String get fill => _blink.BlinkTiming.fill_Getter(this);
+  String get fill => _blink.BlinkTiming.instance.fill_Getter_(this);
 
   @DomName('Timing.fill')
   @DocsEditable()
   @Experimental() // untriaged
-  void set fill(String value) => _blink.BlinkTiming.fill_Setter(this, value);
+  void set fill(String value) => _blink.BlinkTiming.instance.fill_Setter_(this, value);
 
   @DomName('Timing.iterationStart')
   @DocsEditable()
   @Experimental() // untriaged
-  num get iterationStart => _blink.BlinkTiming.iterationStart_Getter(this);
+  num get iterationStart => _blink.BlinkTiming.instance.iterationStart_Getter_(this);
 
   @DomName('Timing.iterationStart')
   @DocsEditable()
   @Experimental() // untriaged
-  void set iterationStart(num value) => _blink.BlinkTiming.iterationStart_Setter(this, value);
+  void set iterationStart(num value) => _blink.BlinkTiming.instance.iterationStart_Setter_(this, value);
 
   @DomName('Timing.iterations')
   @DocsEditable()
   @Experimental() // untriaged
-  num get iterations => _blink.BlinkTiming.iterations_Getter(this);
+  num get iterations => _blink.BlinkTiming.instance.iterations_Getter_(this);
 
   @DomName('Timing.iterations')
   @DocsEditable()
   @Experimental() // untriaged
-  void set iterations(num value) => _blink.BlinkTiming.iterations_Setter(this, value);
+  void set iterations(num value) => _blink.BlinkTiming.instance.iterations_Setter_(this, value);
 
   @DomName('Timing.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  num get playbackRate => _blink.BlinkTiming.playbackRate_Getter(this);
+  num get playbackRate => _blink.BlinkTiming.instance.playbackRate_Getter_(this);
 
   @DomName('Timing.playbackRate')
   @DocsEditable()
   @Experimental() // untriaged
-  void set playbackRate(num value) => _blink.BlinkTiming.playbackRate_Setter(this, value);
+  void set playbackRate(num value) => _blink.BlinkTiming.instance.playbackRate_Setter_(this, value);
 
   @DomName('Timing.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  Object __getter__(String name) => _blink.BlinkTiming.$__getter___Callback_1(this, name);
+  Object __getter__(String name) => _blink.BlinkTiming.instance.$__getter___Callback_1_(this, name);
 
   @DomName('Timing.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(String name, num duration) => _blink.BlinkTiming.$__setter___Callback_2(this, name, duration);
+  void __setter__(String name, num duration) => _blink.BlinkTiming.instance.$__setter___Callback_2_(this, name, duration);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -30802,57 +30807,57 @@
 
   @DomName('Touch.clientX')
   @DocsEditable()
-  double get _clientX => _blink.BlinkTouch.clientX_Getter(this);
+  double get _clientX => _blink.BlinkTouch.instance.clientX_Getter_(this);
 
   @DomName('Touch.clientY')
   @DocsEditable()
-  double get _clientY => _blink.BlinkTouch.clientY_Getter(this);
+  double get _clientY => _blink.BlinkTouch.instance.clientY_Getter_(this);
 
   @DomName('Touch.force')
   @DocsEditable()
   @Experimental() // untriaged
-  double get force => _blink.BlinkTouch.force_Getter(this);
+  double get force => _blink.BlinkTouch.instance.force_Getter_(this);
 
   @DomName('Touch.identifier')
   @DocsEditable()
-  int get identifier => _blink.BlinkTouch.identifier_Getter(this);
+  int get identifier => _blink.BlinkTouch.instance.identifier_Getter_(this);
 
   @DomName('Touch.pageX')
   @DocsEditable()
-  double get _pageX => _blink.BlinkTouch.pageX_Getter(this);
+  double get _pageX => _blink.BlinkTouch.instance.pageX_Getter_(this);
 
   @DomName('Touch.pageY')
   @DocsEditable()
-  double get _pageY => _blink.BlinkTouch.pageY_Getter(this);
+  double get _pageY => _blink.BlinkTouch.instance.pageY_Getter_(this);
 
   @DomName('Touch.radiusX')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _radiusX => _blink.BlinkTouch.radiusX_Getter(this);
+  double get _radiusX => _blink.BlinkTouch.instance.radiusX_Getter_(this);
 
   @DomName('Touch.radiusY')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _radiusY => _blink.BlinkTouch.radiusY_Getter(this);
+  double get _radiusY => _blink.BlinkTouch.instance.radiusY_Getter_(this);
 
   @DomName('Touch.screenX')
   @DocsEditable()
-  double get _screenX => _blink.BlinkTouch.screenX_Getter(this);
+  double get _screenX => _blink.BlinkTouch.instance.screenX_Getter_(this);
 
   @DomName('Touch.screenY')
   @DocsEditable()
-  double get _screenY => _blink.BlinkTouch.screenY_Getter(this);
+  double get _screenY => _blink.BlinkTouch.instance.screenY_Getter_(this);
 
   @DomName('Touch.target')
   @DocsEditable()
-  EventTarget get target => _blink.BlinkTouch.target_Getter(this);
+  EventTarget get target => _blink.BlinkTouch.instance.target_Getter_(this);
 
   @DomName('Touch.webkitRotationAngle')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  double get rotationAngle => _blink.BlinkTouch.webkitRotationAngle_Getter(this);
+  double get rotationAngle => _blink.BlinkTouch.instance.webkitRotationAngle_Getter_(this);
 
 
 // As of Chrome 37, these all changed from long to double.  This code
@@ -30922,35 +30927,35 @@
 
   @DomName('TouchEvent.altKey')
   @DocsEditable()
-  bool get altKey => _blink.BlinkTouchEvent.altKey_Getter(this);
+  bool get altKey => _blink.BlinkTouchEvent.instance.altKey_Getter_(this);
 
   @DomName('TouchEvent.changedTouches')
   @DocsEditable()
-  TouchList get changedTouches => _blink.BlinkTouchEvent.changedTouches_Getter(this);
+  TouchList get changedTouches => _blink.BlinkTouchEvent.instance.changedTouches_Getter_(this);
 
   @DomName('TouchEvent.ctrlKey')
   @DocsEditable()
-  bool get ctrlKey => _blink.BlinkTouchEvent.ctrlKey_Getter(this);
+  bool get ctrlKey => _blink.BlinkTouchEvent.instance.ctrlKey_Getter_(this);
 
   @DomName('TouchEvent.metaKey')
   @DocsEditable()
-  bool get metaKey => _blink.BlinkTouchEvent.metaKey_Getter(this);
+  bool get metaKey => _blink.BlinkTouchEvent.instance.metaKey_Getter_(this);
 
   @DomName('TouchEvent.shiftKey')
   @DocsEditable()
-  bool get shiftKey => _blink.BlinkTouchEvent.shiftKey_Getter(this);
+  bool get shiftKey => _blink.BlinkTouchEvent.instance.shiftKey_Getter_(this);
 
   @DomName('TouchEvent.targetTouches')
   @DocsEditable()
-  TouchList get targetTouches => _blink.BlinkTouchEvent.targetTouches_Getter(this);
+  TouchList get targetTouches => _blink.BlinkTouchEvent.instance.targetTouches_Getter_(this);
 
   @DomName('TouchEvent.touches')
   @DocsEditable()
-  TouchList get touches => _blink.BlinkTouchEvent.touches_Getter(this);
+  TouchList get touches => _blink.BlinkTouchEvent.instance.touches_Getter_(this);
 
   @DomName('TouchEvent.initTouchEvent')
   @DocsEditable()
-  void _initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, Window view, int unused1, int unused2, int unused3, int unused4, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkTouchEvent.initTouchEvent_Callback_13(this, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey);
+  void _initTouchEvent(TouchList touches, TouchList targetTouches, TouchList changedTouches, String type, Window view, int unused1, int unused2, int unused3, int unused4, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) => _blink.BlinkTouchEvent.instance.initTouchEvent_Callback_13_(this, touches, targetTouches, changedTouches, type, view, unused1, unused2, unused3, unused4, ctrlKey, altKey, shiftKey, metaKey);
 
 
   /**
@@ -30985,15 +30990,15 @@
 
   @DomName('TouchList.length')
   @DocsEditable()
-  int get length => _blink.BlinkTouchList.length_Getter(this);
+  int get length => _blink.BlinkTouchList.instance.length_Getter_(this);
 
   Touch operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkTouchList.item_Callback_1(this, index);
+    return _blink.BlinkTouchList.instance.item_Callback_1_(this, index);
   }
 
-  Touch _nativeIndexedGetter(int index) => _blink.BlinkTouchList.item_Callback_1(this, index);
+  Touch _nativeIndexedGetter(int index) => _blink.BlinkTouchList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Touch value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -31035,7 +31040,7 @@
 
   @DomName('TouchList.item')
   @DocsEditable()
-  Touch item(int index) => _blink.BlinkTouchList.item_Callback_1(this, index);
+  Touch item(int index) => _blink.BlinkTouchList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31087,61 +31092,61 @@
 
   @DomName('HTMLTrackElement.default')
   @DocsEditable()
-  bool get defaultValue => _blink.BlinkHTMLTrackElement.default_Getter(this);
+  bool get defaultValue => _blink.BlinkHTMLTrackElement.instance.default_Getter_(this);
 
   @DomName('HTMLTrackElement.default')
   @DocsEditable()
-  void set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.default_Setter(this, value);
+  void set defaultValue(bool value) => _blink.BlinkHTMLTrackElement.instance.default_Setter_(this, value);
 
   @DomName('HTMLTrackElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  String get integrity => _blink.BlinkHTMLTrackElement.integrity_Getter(this);
+  String get integrity => _blink.BlinkHTMLTrackElement.instance.integrity_Getter_(this);
 
   @DomName('HTMLTrackElement.integrity')
   @DocsEditable()
   @Experimental() // untriaged
-  void set integrity(String value) => _blink.BlinkHTMLTrackElement.integrity_Setter(this, value);
+  void set integrity(String value) => _blink.BlinkHTMLTrackElement.instance.integrity_Setter_(this, value);
 
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
-  String get kind => _blink.BlinkHTMLTrackElement.kind_Getter(this);
+  String get kind => _blink.BlinkHTMLTrackElement.instance.kind_Getter_(this);
 
   @DomName('HTMLTrackElement.kind')
   @DocsEditable()
-  void set kind(String value) => _blink.BlinkHTMLTrackElement.kind_Setter(this, value);
+  void set kind(String value) => _blink.BlinkHTMLTrackElement.instance.kind_Setter_(this, value);
 
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
-  String get label => _blink.BlinkHTMLTrackElement.label_Getter(this);
+  String get label => _blink.BlinkHTMLTrackElement.instance.label_Getter_(this);
 
   @DomName('HTMLTrackElement.label')
   @DocsEditable()
-  void set label(String value) => _blink.BlinkHTMLTrackElement.label_Setter(this, value);
+  void set label(String value) => _blink.BlinkHTMLTrackElement.instance.label_Setter_(this, value);
 
   @DomName('HTMLTrackElement.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkHTMLTrackElement.readyState_Getter(this);
+  int get readyState => _blink.BlinkHTMLTrackElement.instance.readyState_Getter_(this);
 
   @DomName('HTMLTrackElement.src')
   @DocsEditable()
-  String get src => _blink.BlinkHTMLTrackElement.src_Getter(this);
+  String get src => _blink.BlinkHTMLTrackElement.instance.src_Getter_(this);
 
   @DomName('HTMLTrackElement.src')
   @DocsEditable()
-  void set src(String value) => _blink.BlinkHTMLTrackElement.src_Setter(this, value);
+  void set src(String value) => _blink.BlinkHTMLTrackElement.instance.src_Setter_(this, value);
 
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
-  String get srclang => _blink.BlinkHTMLTrackElement.srclang_Getter(this);
+  String get srclang => _blink.BlinkHTMLTrackElement.instance.srclang_Getter_(this);
 
   @DomName('HTMLTrackElement.srclang')
   @DocsEditable()
-  void set srclang(String value) => _blink.BlinkHTMLTrackElement.srclang_Setter(this, value);
+  void set srclang(String value) => _blink.BlinkHTMLTrackElement.instance.srclang_Setter_(this, value);
 
   @DomName('HTMLTrackElement.track')
   @DocsEditable()
-  TextTrack get track => _blink.BlinkHTMLTrackElement.track_Getter(this);
+  TextTrack get track => _blink.BlinkHTMLTrackElement.instance.track_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31160,7 +31165,7 @@
 
   @DomName('TrackEvent.track')
   @DocsEditable()
-  Object get track => _blink.BlinkTrackEvent.track_Getter(this);
+  Object get track => _blink.BlinkTrackEvent.instance.track_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31178,15 +31183,15 @@
 
   @DomName('TransitionEvent.elapsedTime')
   @DocsEditable()
-  double get elapsedTime => _blink.BlinkTransitionEvent.elapsedTime_Getter(this);
+  double get elapsedTime => _blink.BlinkTransitionEvent.instance.elapsedTime_Getter_(this);
 
   @DomName('TransitionEvent.propertyName')
   @DocsEditable()
-  String get propertyName => _blink.BlinkTransitionEvent.propertyName_Getter(this);
+  String get propertyName => _blink.BlinkTransitionEvent.instance.propertyName_Getter_(this);
 
   @DomName('TransitionEvent.pseudoElement')
   @DocsEditable()
-  String get pseudoElement => _blink.BlinkTransitionEvent.pseudoElement_Getter(this);
+  String get pseudoElement => _blink.BlinkTransitionEvent.instance.pseudoElement_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -31205,51 +31210,51 @@
 
   @DomName('TreeWalker.currentNode')
   @DocsEditable()
-  Node get currentNode => _blink.BlinkTreeWalker.currentNode_Getter(this);
+  Node get currentNode => _blink.BlinkTreeWalker.instance.currentNode_Getter_(this);
 
   @DomName('TreeWalker.currentNode')
   @DocsEditable()
-  void set currentNode(Node value) => _blink.BlinkTreeWalker.currentNode_Setter(this, value);
+  void set currentNode(Node value) => _blink.BlinkTreeWalker.instance.currentNode_Setter_(this, value);
 
   @DomName('TreeWalker.filter')
   @DocsEditable()
-  NodeFilter get filter => _blink.BlinkTreeWalker.filter_Getter(this);
+  NodeFilter get filter => _blink.BlinkTreeWalker.instance.filter_Getter_(this);
 
   @DomName('TreeWalker.root')
   @DocsEditable()
-  Node get root => _blink.BlinkTreeWalker.root_Getter(this);
+  Node get root => _blink.BlinkTreeWalker.instance.root_Getter_(this);
 
   @DomName('TreeWalker.whatToShow')
   @DocsEditable()
-  int get whatToShow => _blink.BlinkTreeWalker.whatToShow_Getter(this);
+  int get whatToShow => _blink.BlinkTreeWalker.instance.whatToShow_Getter_(this);
 
   @DomName('TreeWalker.firstChild')
   @DocsEditable()
-  Node firstChild() => _blink.BlinkTreeWalker.firstChild_Callback(this);
+  Node firstChild() => _blink.BlinkTreeWalker.instance.firstChild_Callback_0_(this);
 
   @DomName('TreeWalker.lastChild')
   @DocsEditable()
-  Node lastChild() => _blink.BlinkTreeWalker.lastChild_Callback(this);
+  Node lastChild() => _blink.BlinkTreeWalker.instance.lastChild_Callback_0_(this);
 
   @DomName('TreeWalker.nextNode')
   @DocsEditable()
-  Node nextNode() => _blink.BlinkTreeWalker.nextNode_Callback(this);
+  Node nextNode() => _blink.BlinkTreeWalker.instance.nextNode_Callback_0_(this);
 
   @DomName('TreeWalker.nextSibling')
   @DocsEditable()
-  Node nextSibling() => _blink.BlinkTreeWalker.nextSibling_Callback(this);
+  Node nextSibling() => _blink.BlinkTreeWalker.instance.nextSibling_Callback_0_(this);
 
   @DomName('TreeWalker.parentNode')
   @DocsEditable()
-  Node parentNode() => _blink.BlinkTreeWalker.parentNode_Callback(this);
+  Node parentNode() => _blink.BlinkTreeWalker.instance.parentNode_Callback_0_(this);
 
   @DomName('TreeWalker.previousNode')
   @DocsEditable()
-  Node previousNode() => _blink.BlinkTreeWalker.previousNode_Callback(this);
+  Node previousNode() => _blink.BlinkTreeWalker.instance.previousNode_Callback_0_(this);
 
   @DomName('TreeWalker.previousSibling')
   @DocsEditable()
-  Node previousSibling() => _blink.BlinkTreeWalker.previousSibling_Callback(this);
+  Node previousSibling() => _blink.BlinkTreeWalker.instance.previousSibling_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31283,53 +31288,53 @@
   @DomName('UIEvent.charCode')
   @DocsEditable()
   @Unstable()
-  int get _charCode => _blink.BlinkUIEvent.charCode_Getter(this);
+  int get _charCode => _blink.BlinkUIEvent.instance.charCode_Getter_(this);
 
   @DomName('UIEvent.detail')
   @DocsEditable()
-  int get detail => _blink.BlinkUIEvent.detail_Getter(this);
+  int get detail => _blink.BlinkUIEvent.instance.detail_Getter_(this);
 
   @DomName('UIEvent.keyCode')
   @DocsEditable()
   @Unstable()
-  int get _keyCode => _blink.BlinkUIEvent.keyCode_Getter(this);
+  int get _keyCode => _blink.BlinkUIEvent.instance.keyCode_Getter_(this);
 
   @DomName('UIEvent.layerX')
   @DocsEditable()
   // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
   @Experimental() // nonstandard
-  int get _layerX => _blink.BlinkUIEvent.layerX_Getter(this);
+  int get _layerX => _blink.BlinkUIEvent.instance.layerX_Getter_(this);
 
   @DomName('UIEvent.layerY')
   @DocsEditable()
   // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
   @Experimental() // nonstandard
-  int get _layerY => _blink.BlinkUIEvent.layerY_Getter(this);
+  int get _layerY => _blink.BlinkUIEvent.instance.layerY_Getter_(this);
 
   @DomName('UIEvent.pageX')
   @DocsEditable()
   // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
   @Experimental() // nonstandard
-  int get _pageX => _blink.BlinkUIEvent.pageX_Getter(this);
+  int get _pageX => _blink.BlinkUIEvent.instance.pageX_Getter_(this);
 
   @DomName('UIEvent.pageY')
   @DocsEditable()
   // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-mouseevents
   @Experimental() // nonstandard
-  int get _pageY => _blink.BlinkUIEvent.pageY_Getter(this);
+  int get _pageY => _blink.BlinkUIEvent.instance.pageY_Getter_(this);
 
   @DomName('UIEvent.view')
   @DocsEditable()
-  WindowBase get view => _blink.BlinkUIEvent.view_Getter(this);
+  WindowBase get view => _blink.BlinkUIEvent.instance.view_Getter_(this);
 
   @DomName('UIEvent.which')
   @DocsEditable()
   @Unstable()
-  int get which => _blink.BlinkUIEvent.which_Getter(this);
+  int get which => _blink.BlinkUIEvent.instance.which_Getter_(this);
 
   @DomName('UIEvent.initUIEvent')
   @DocsEditable()
-  void _initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.initUIEvent_Callback_5(this, type, canBubble, cancelable, view, detail);
+  void _initUIEvent(String type, bool canBubble, bool cancelable, Window view, int detail) => _blink.BlinkUIEvent.instance.initUIEvent_Callback_5_(this, type, canBubble, cancelable, view, detail);
 
 
   @DomName('UIEvent.layerX')
@@ -31399,142 +31404,142 @@
 
   static String createObjectUrl(blob_OR_source_OR_stream) {
     if ((blob_OR_source_OR_stream is Blob || blob_OR_source_OR_stream == null)) {
-      return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream);
+      return _blink.BlinkURL.instance.createObjectURL_Callback_1_(blob_OR_source_OR_stream);
     }
     if ((blob_OR_source_OR_stream is MediaSource)) {
-      return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream);
+      return _blink.BlinkURL.instance.createObjectURL_Callback_1_(blob_OR_source_OR_stream);
     }
     if ((blob_OR_source_OR_stream is MediaStream)) {
-      return _blink.BlinkURL.createObjectURL_Callback_1(blob_OR_source_OR_stream);
+      return _blink.BlinkURL.instance.createObjectURL_Callback_1_(blob_OR_source_OR_stream);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('URL.createObjectUrlFromBlob')
   @DocsEditable()
-  static String createObjectUrlFromBlob(Blob blob) => _blink.BlinkURL.createObjectURL_Callback_1(blob);
+  static String createObjectUrlFromBlob(Blob blob) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(blob);
 
   @DomName('URL.createObjectUrlFromSource')
   @DocsEditable()
-  static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.createObjectURL_Callback_1(source);
+  static String createObjectUrlFromSource(MediaSource source) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(source);
 
   @DomName('URL.createObjectUrlFromStream')
   @DocsEditable()
-  static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.createObjectURL_Callback_1(stream);
+  static String createObjectUrlFromStream(MediaStream stream) => _blink.BlinkURL.instance.createObjectURL_Callback_1_(stream);
 
   @DomName('URL.revokeObjectURL')
   @DocsEditable()
-  static void revokeObjectUrl(String url) => _blink.BlinkURL.revokeObjectURL_Callback_1(url);
+  static void revokeObjectUrl(String url) => _blink.BlinkURL.instance.revokeObjectURL_Callback_1_(url);
 
   @DomName('URL.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hash => _blink.BlinkURL.hash_Getter(this);
+  String get hash => _blink.BlinkURL.instance.hash_Getter_(this);
 
   @DomName('URL.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hash(String value) => _blink.BlinkURL.hash_Setter(this, value);
+  void set hash(String value) => _blink.BlinkURL.instance.hash_Setter_(this, value);
 
   @DomName('URL.host')
   @DocsEditable()
   @Experimental() // untriaged
-  String get host => _blink.BlinkURL.host_Getter(this);
+  String get host => _blink.BlinkURL.instance.host_Getter_(this);
 
   @DomName('URL.host')
   @DocsEditable()
   @Experimental() // untriaged
-  void set host(String value) => _blink.BlinkURL.host_Setter(this, value);
+  void set host(String value) => _blink.BlinkURL.instance.host_Setter_(this, value);
 
   @DomName('URL.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hostname => _blink.BlinkURL.hostname_Getter(this);
+  String get hostname => _blink.BlinkURL.instance.hostname_Getter_(this);
 
   @DomName('URL.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hostname(String value) => _blink.BlinkURL.hostname_Setter(this, value);
+  void set hostname(String value) => _blink.BlinkURL.instance.hostname_Setter_(this, value);
 
   @DomName('URL.href')
   @DocsEditable()
   @Experimental() // untriaged
-  String get href => _blink.BlinkURL.href_Getter(this);
+  String get href => _blink.BlinkURL.instance.href_Getter_(this);
 
   @DomName('URL.href')
   @DocsEditable()
   @Experimental() // untriaged
-  void set href(String value) => _blink.BlinkURL.href_Setter(this, value);
+  void set href(String value) => _blink.BlinkURL.instance.href_Setter_(this, value);
 
   @DomName('URL.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkURL.origin_Getter(this);
+  String get origin => _blink.BlinkURL.instance.origin_Getter_(this);
 
   @DomName('URL.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkURL.password_Getter(this);
+  String get password => _blink.BlinkURL.instance.password_Getter_(this);
 
   @DomName('URL.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkURL.password_Setter(this, value);
+  void set password(String value) => _blink.BlinkURL.instance.password_Setter_(this, value);
 
   @DomName('URL.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pathname => _blink.BlinkURL.pathname_Getter(this);
+  String get pathname => _blink.BlinkURL.instance.pathname_Getter_(this);
 
   @DomName('URL.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set pathname(String value) => _blink.BlinkURL.pathname_Setter(this, value);
+  void set pathname(String value) => _blink.BlinkURL.instance.pathname_Setter_(this, value);
 
   @DomName('URL.port')
   @DocsEditable()
   @Experimental() // untriaged
-  String get port => _blink.BlinkURL.port_Getter(this);
+  String get port => _blink.BlinkURL.instance.port_Getter_(this);
 
   @DomName('URL.port')
   @DocsEditable()
   @Experimental() // untriaged
-  void set port(String value) => _blink.BlinkURL.port_Setter(this, value);
+  void set port(String value) => _blink.BlinkURL.instance.port_Setter_(this, value);
 
   @DomName('URL.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkURL.protocol_Getter(this);
+  String get protocol => _blink.BlinkURL.instance.protocol_Getter_(this);
 
   @DomName('URL.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  void set protocol(String value) => _blink.BlinkURL.protocol_Setter(this, value);
+  void set protocol(String value) => _blink.BlinkURL.instance.protocol_Setter_(this, value);
 
   @DomName('URL.search')
   @DocsEditable()
   @Experimental() // untriaged
-  String get search => _blink.BlinkURL.search_Getter(this);
+  String get search => _blink.BlinkURL.instance.search_Getter_(this);
 
   @DomName('URL.search')
   @DocsEditable()
   @Experimental() // untriaged
-  void set search(String value) => _blink.BlinkURL.search_Setter(this, value);
+  void set search(String value) => _blink.BlinkURL.instance.search_Setter_(this, value);
 
   @DomName('URL.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkURL.username_Getter(this);
+  String get username => _blink.BlinkURL.instance.username_Getter_(this);
 
   @DomName('URL.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkURL.username_Setter(this, value);
+  void set username(String value) => _blink.BlinkURL.instance.username_Setter_(this, value);
 
   @DomName('URL.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkURL.toString_Callback(this);
+  String toString() => _blink.BlinkURL.instance.toString_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31554,112 +31559,112 @@
   @DomName('URLUtils.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hash => _blink.BlinkURLUtils.hash_Getter(this);
+  String get hash;
 
   @DomName('URLUtils.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hash(String value) => _blink.BlinkURLUtils.hash_Setter(this, value);
+  void set hash(String value);
 
   @DomName('URLUtils.host')
   @DocsEditable()
   @Experimental() // untriaged
-  String get host => _blink.BlinkURLUtils.host_Getter(this);
+  String get host;
 
   @DomName('URLUtils.host')
   @DocsEditable()
   @Experimental() // untriaged
-  void set host(String value) => _blink.BlinkURLUtils.host_Setter(this, value);
+  void set host(String value);
 
   @DomName('URLUtils.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hostname => _blink.BlinkURLUtils.hostname_Getter(this);
+  String get hostname;
 
   @DomName('URLUtils.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set hostname(String value) => _blink.BlinkURLUtils.hostname_Setter(this, value);
+  void set hostname(String value);
 
   @DomName('URLUtils.href')
   @DocsEditable()
   @Experimental() // untriaged
-  String get href => _blink.BlinkURLUtils.href_Getter(this);
+  String get href;
 
   @DomName('URLUtils.href')
   @DocsEditable()
   @Experimental() // untriaged
-  void set href(String value) => _blink.BlinkURLUtils.href_Setter(this, value);
+  void set href(String value);
 
   @DomName('URLUtils.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkURLUtils.origin_Getter(this);
+  String get origin;
 
   @DomName('URLUtils.password')
   @DocsEditable()
   @Experimental() // untriaged
-  String get password => _blink.BlinkURLUtils.password_Getter(this);
+  String get password;
 
   @DomName('URLUtils.password')
   @DocsEditable()
   @Experimental() // untriaged
-  void set password(String value) => _blink.BlinkURLUtils.password_Setter(this, value);
+  void set password(String value);
 
   @DomName('URLUtils.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pathname => _blink.BlinkURLUtils.pathname_Getter(this);
+  String get pathname;
 
   @DomName('URLUtils.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  void set pathname(String value) => _blink.BlinkURLUtils.pathname_Setter(this, value);
+  void set pathname(String value);
 
   @DomName('URLUtils.port')
   @DocsEditable()
   @Experimental() // untriaged
-  String get port => _blink.BlinkURLUtils.port_Getter(this);
+  String get port;
 
   @DomName('URLUtils.port')
   @DocsEditable()
   @Experimental() // untriaged
-  void set port(String value) => _blink.BlinkURLUtils.port_Setter(this, value);
+  void set port(String value);
 
   @DomName('URLUtils.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkURLUtils.protocol_Getter(this);
+  String get protocol;
 
   @DomName('URLUtils.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  void set protocol(String value) => _blink.BlinkURLUtils.protocol_Setter(this, value);
+  void set protocol(String value);
 
   @DomName('URLUtils.search')
   @DocsEditable()
   @Experimental() // untriaged
-  String get search => _blink.BlinkURLUtils.search_Getter(this);
+  String get search;
 
   @DomName('URLUtils.search')
   @DocsEditable()
   @Experimental() // untriaged
-  void set search(String value) => _blink.BlinkURLUtils.search_Setter(this, value);
+  void set search(String value);
 
   @DomName('URLUtils.username')
   @DocsEditable()
   @Experimental() // untriaged
-  String get username => _blink.BlinkURLUtils.username_Getter(this);
+  String get username;
 
   @DomName('URLUtils.username')
   @DocsEditable()
   @Experimental() // untriaged
-  void set username(String value) => _blink.BlinkURLUtils.username_Setter(this, value);
+  void set username(String value);
 
   @DomName('URLUtils.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkURLUtils.toString_Callback(this);
+  String toString();
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31679,52 +31684,52 @@
   @DomName('URLUtilsReadOnly.hash')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hash => _blink.BlinkURLUtilsReadOnly.hash_Getter(this);
+  String get hash;
 
   @DomName('URLUtilsReadOnly.host')
   @DocsEditable()
   @Experimental() // untriaged
-  String get host => _blink.BlinkURLUtilsReadOnly.host_Getter(this);
+  String get host;
 
   @DomName('URLUtilsReadOnly.hostname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get hostname => _blink.BlinkURLUtilsReadOnly.hostname_Getter(this);
+  String get hostname;
 
   @DomName('URLUtilsReadOnly.href')
   @DocsEditable()
   @Experimental() // untriaged
-  String get href => _blink.BlinkURLUtilsReadOnly.href_Getter(this);
+  String get href;
 
   @DomName('URLUtilsReadOnly.origin')
   @DocsEditable()
   @Experimental() // untriaged
-  String get origin => _blink.BlinkURLUtilsReadOnly.origin_Getter(this);
+  String get origin;
 
   @DomName('URLUtilsReadOnly.pathname')
   @DocsEditable()
   @Experimental() // untriaged
-  String get pathname => _blink.BlinkURLUtilsReadOnly.pathname_Getter(this);
+  String get pathname;
 
   @DomName('URLUtilsReadOnly.port')
   @DocsEditable()
   @Experimental() // untriaged
-  String get port => _blink.BlinkURLUtilsReadOnly.port_Getter(this);
+  String get port;
 
   @DomName('URLUtilsReadOnly.protocol')
   @DocsEditable()
   @Experimental() // untriaged
-  String get protocol => _blink.BlinkURLUtilsReadOnly.protocol_Getter(this);
+  String get protocol;
 
   @DomName('URLUtilsReadOnly.search')
   @DocsEditable()
   @Experimental() // untriaged
-  String get search => _blink.BlinkURLUtilsReadOnly.search_Getter(this);
+  String get search;
 
   @DomName('URLUtilsReadOnly.toString')
   @DocsEditable()
   @Experimental() // untriaged
-  String toString() => _blink.BlinkURLUtilsReadOnly.toString_Callback(this);
+  String toString();
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31742,43 +31747,43 @@
 
   @DomName('ValidityState.badInput')
   @DocsEditable()
-  bool get badInput => _blink.BlinkValidityState.badInput_Getter(this);
+  bool get badInput => _blink.BlinkValidityState.instance.badInput_Getter_(this);
 
   @DomName('ValidityState.customError')
   @DocsEditable()
-  bool get customError => _blink.BlinkValidityState.customError_Getter(this);
+  bool get customError => _blink.BlinkValidityState.instance.customError_Getter_(this);
 
   @DomName('ValidityState.patternMismatch')
   @DocsEditable()
-  bool get patternMismatch => _blink.BlinkValidityState.patternMismatch_Getter(this);
+  bool get patternMismatch => _blink.BlinkValidityState.instance.patternMismatch_Getter_(this);
 
   @DomName('ValidityState.rangeOverflow')
   @DocsEditable()
-  bool get rangeOverflow => _blink.BlinkValidityState.rangeOverflow_Getter(this);
+  bool get rangeOverflow => _blink.BlinkValidityState.instance.rangeOverflow_Getter_(this);
 
   @DomName('ValidityState.rangeUnderflow')
   @DocsEditable()
-  bool get rangeUnderflow => _blink.BlinkValidityState.rangeUnderflow_Getter(this);
+  bool get rangeUnderflow => _blink.BlinkValidityState.instance.rangeUnderflow_Getter_(this);
 
   @DomName('ValidityState.stepMismatch')
   @DocsEditable()
-  bool get stepMismatch => _blink.BlinkValidityState.stepMismatch_Getter(this);
+  bool get stepMismatch => _blink.BlinkValidityState.instance.stepMismatch_Getter_(this);
 
   @DomName('ValidityState.tooLong')
   @DocsEditable()
-  bool get tooLong => _blink.BlinkValidityState.tooLong_Getter(this);
+  bool get tooLong => _blink.BlinkValidityState.instance.tooLong_Getter_(this);
 
   @DomName('ValidityState.typeMismatch')
   @DocsEditable()
-  bool get typeMismatch => _blink.BlinkValidityState.typeMismatch_Getter(this);
+  bool get typeMismatch => _blink.BlinkValidityState.instance.typeMismatch_Getter_(this);
 
   @DomName('ValidityState.valid')
   @DocsEditable()
-  bool get valid => _blink.BlinkValidityState.valid_Getter(this);
+  bool get valid => _blink.BlinkValidityState.instance.valid_Getter_(this);
 
   @DomName('ValidityState.valueMissing')
   @DocsEditable()
-  bool get valueMissing => _blink.BlinkValidityState.valueMissing_Getter(this);
+  bool get valueMissing => _blink.BlinkValidityState.instance.valueMissing_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31803,54 +31808,54 @@
 
   @DomName('HTMLVideoElement.height')
   @DocsEditable()
-  int get height => _blink.BlinkHTMLVideoElement.height_Getter(this);
+  int get height => _blink.BlinkHTMLVideoElement.instance.height_Getter_(this);
 
   @DomName('HTMLVideoElement.height')
   @DocsEditable()
-  void set height(int value) => _blink.BlinkHTMLVideoElement.height_Setter(this, value);
+  void set height(int value) => _blink.BlinkHTMLVideoElement.instance.height_Setter_(this, value);
 
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
-  String get poster => _blink.BlinkHTMLVideoElement.poster_Getter(this);
+  String get poster => _blink.BlinkHTMLVideoElement.instance.poster_Getter_(this);
 
   @DomName('HTMLVideoElement.poster')
   @DocsEditable()
-  void set poster(String value) => _blink.BlinkHTMLVideoElement.poster_Setter(this, value);
+  void set poster(String value) => _blink.BlinkHTMLVideoElement.instance.poster_Setter_(this, value);
 
   @DomName('HTMLVideoElement.videoHeight')
   @DocsEditable()
-  int get videoHeight => _blink.BlinkHTMLVideoElement.videoHeight_Getter(this);
+  int get videoHeight => _blink.BlinkHTMLVideoElement.instance.videoHeight_Getter_(this);
 
   @DomName('HTMLVideoElement.videoWidth')
   @DocsEditable()
-  int get videoWidth => _blink.BlinkHTMLVideoElement.videoWidth_Getter(this);
+  int get videoWidth => _blink.BlinkHTMLVideoElement.instance.videoWidth_Getter_(this);
 
   @DomName('HTMLVideoElement.webkitDecodedFrameCount')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get decodedFrameCount => _blink.BlinkHTMLVideoElement.webkitDecodedFrameCount_Getter(this);
+  int get decodedFrameCount => _blink.BlinkHTMLVideoElement.instance.webkitDecodedFrameCount_Getter_(this);
 
   @DomName('HTMLVideoElement.webkitDroppedFrameCount')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get droppedFrameCount => _blink.BlinkHTMLVideoElement.webkitDroppedFrameCount_Getter(this);
+  int get droppedFrameCount => _blink.BlinkHTMLVideoElement.instance.webkitDroppedFrameCount_Getter_(this);
 
   @DomName('HTMLVideoElement.width')
   @DocsEditable()
-  int get width => _blink.BlinkHTMLVideoElement.width_Getter(this);
+  int get width => _blink.BlinkHTMLVideoElement.instance.width_Getter_(this);
 
   @DomName('HTMLVideoElement.width')
   @DocsEditable()
-  void set width(int value) => _blink.BlinkHTMLVideoElement.width_Setter(this, value);
+  void set width(int value) => _blink.BlinkHTMLVideoElement.instance.width_Setter_(this, value);
 
   @DomName('HTMLVideoElement.getVideoPlaybackQuality')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoPlaybackQuality getVideoPlaybackQuality() => _blink.BlinkHTMLVideoElement.getVideoPlaybackQuality_Callback(this);
+  VideoPlaybackQuality getVideoPlaybackQuality() => _blink.BlinkHTMLVideoElement.instance.getVideoPlaybackQuality_Callback_0_(this);
 
   @DomName('HTMLVideoElement.webkitEnterFullscreen')
   @DocsEditable()
@@ -31858,7 +31863,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
-  void enterFullscreen() => _blink.BlinkHTMLVideoElement.webkitEnterFullscreen_Callback(this);
+  void enterFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitEnterFullscreen_Callback_0_(this);
 
   @DomName('HTMLVideoElement.webkitExitFullscreen')
   @DocsEditable()
@@ -31866,7 +31871,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#dom-document-exitfullscreen
-  void exitFullscreen() => _blink.BlinkHTMLVideoElement.webkitExitFullscreen_Callback(this);
+  void exitFullscreen() => _blink.BlinkHTMLVideoElement.instance.webkitExitFullscreen_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31886,22 +31891,22 @@
   @DomName('VideoPlaybackQuality.corruptedVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get corruptedVideoFrames => _blink.BlinkVideoPlaybackQuality.corruptedVideoFrames_Getter(this);
+  int get corruptedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.corruptedVideoFrames_Getter_(this);
 
   @DomName('VideoPlaybackQuality.creationTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get creationTime => _blink.BlinkVideoPlaybackQuality.creationTime_Getter(this);
+  double get creationTime => _blink.BlinkVideoPlaybackQuality.instance.creationTime_Getter_(this);
 
   @DomName('VideoPlaybackQuality.droppedVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get droppedVideoFrames => _blink.BlinkVideoPlaybackQuality.droppedVideoFrames_Getter(this);
+  int get droppedVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.droppedVideoFrames_Getter_(this);
 
   @DomName('VideoPlaybackQuality.totalVideoFrames')
   @DocsEditable()
   @Experimental() // untriaged
-  int get totalVideoFrames => _blink.BlinkVideoPlaybackQuality.totalVideoFrames_Getter(this);
+  int get totalVideoFrames => _blink.BlinkVideoPlaybackQuality.instance.totalVideoFrames_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31921,32 +31926,32 @@
   @DomName('VideoTrack.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkVideoTrack.id_Getter(this);
+  String get id => _blink.BlinkVideoTrack.instance.id_Getter_(this);
 
   @DomName('VideoTrack.kind')
   @DocsEditable()
   @Experimental() // untriaged
-  String get kind => _blink.BlinkVideoTrack.kind_Getter(this);
+  String get kind => _blink.BlinkVideoTrack.instance.kind_Getter_(this);
 
   @DomName('VideoTrack.label')
   @DocsEditable()
   @Experimental() // untriaged
-  String get label => _blink.BlinkVideoTrack.label_Getter(this);
+  String get label => _blink.BlinkVideoTrack.instance.label_Getter_(this);
 
   @DomName('VideoTrack.language')
   @DocsEditable()
   @Experimental() // untriaged
-  String get language => _blink.BlinkVideoTrack.language_Getter(this);
+  String get language => _blink.BlinkVideoTrack.instance.language_Getter_(this);
 
   @DomName('VideoTrack.selected')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get selected => _blink.BlinkVideoTrack.selected_Getter(this);
+  bool get selected => _blink.BlinkVideoTrack.instance.selected_Getter_(this);
 
   @DomName('VideoTrack.selected')
   @DocsEditable()
   @Experimental() // untriaged
-  void set selected(bool value) => _blink.BlinkVideoTrack.selected_Setter(this, value);
+  void set selected(bool value) => _blink.BlinkVideoTrack.instance.selected_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -31971,22 +31976,22 @@
   @DomName('VideoTrackList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkVideoTrackList.length_Getter(this);
+  int get length => _blink.BlinkVideoTrackList.instance.length_Getter_(this);
 
   @DomName('VideoTrackList.selectedIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  int get selectedIndex => _blink.BlinkVideoTrackList.selectedIndex_Getter(this);
+  int get selectedIndex => _blink.BlinkVideoTrackList.instance.selectedIndex_Getter_(this);
 
   @DomName('VideoTrackList.__getter__')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrack __getter__(int index) => _blink.BlinkVideoTrackList.$__getter___Callback_1(this, index);
+  VideoTrack __getter__(int index) => _blink.BlinkVideoTrackList.instance.$__getter___Callback_1_(this, index);
 
   @DomName('VideoTrackList.getTrackById')
   @DocsEditable()
   @Experimental() // untriaged
-  VideoTrack getTrackById(String id) => _blink.BlinkVideoTrackList.getTrackById_Callback_1(this, id);
+  VideoTrack getTrackById(String id) => _blink.BlinkVideoTrackList.instance.getTrackById_Callback_1_(this, id);
 
   @DomName('VideoTrackList.onchange')
   @DocsEditable()
@@ -32022,93 +32027,93 @@
   @DomName('VTTCue.VTTCue')
   @DocsEditable()
   factory VttCue(num startTime, num endTime, String text) {
-    return _blink.BlinkVTTCue.constructorCallback_3(startTime, endTime, text);
+    return _blink.BlinkVTTCue.instance.constructorCallback_3_(startTime, endTime, text);
   }
 
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
-  String get align => _blink.BlinkVTTCue.align_Getter(this);
+  String get align => _blink.BlinkVTTCue.instance.align_Getter_(this);
 
   @DomName('VTTCue.align')
   @DocsEditable()
   @Experimental() // untriaged
-  void set align(String value) => _blink.BlinkVTTCue.align_Setter(this, value);
+  void set align(String value) => _blink.BlinkVTTCue.instance.align_Setter_(this, value);
 
   @DomName('VTTCue.line')
   @DocsEditable()
   @Experimental() // untriaged
-  int get line => _blink.BlinkVTTCue.line_Getter(this);
+  int get line => _blink.BlinkVTTCue.instance.line_Getter_(this);
 
   @DomName('VTTCue.line')
   @DocsEditable()
   @Experimental() // untriaged
-  void set line(int value) => _blink.BlinkVTTCue.line_Setter(this, value);
+  void set line(int value) => _blink.BlinkVTTCue.instance.line_Setter_(this, value);
 
   @DomName('VTTCue.position')
   @DocsEditable()
   @Experimental() // untriaged
-  int get position => _blink.BlinkVTTCue.position_Getter(this);
+  int get position => _blink.BlinkVTTCue.instance.position_Getter_(this);
 
   @DomName('VTTCue.position')
   @DocsEditable()
   @Experimental() // untriaged
-  void set position(int value) => _blink.BlinkVTTCue.position_Setter(this, value);
+  void set position(int value) => _blink.BlinkVTTCue.instance.position_Setter_(this, value);
 
   @DomName('VTTCue.regionId')
   @DocsEditable()
   @Experimental() // untriaged
-  String get regionId => _blink.BlinkVTTCue.regionId_Getter(this);
+  String get regionId => _blink.BlinkVTTCue.instance.regionId_Getter_(this);
 
   @DomName('VTTCue.regionId')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionId(String value) => _blink.BlinkVTTCue.regionId_Setter(this, value);
+  void set regionId(String value) => _blink.BlinkVTTCue.instance.regionId_Setter_(this, value);
 
   @DomName('VTTCue.size')
   @DocsEditable()
   @Experimental() // untriaged
-  int get size => _blink.BlinkVTTCue.size_Getter(this);
+  int get size => _blink.BlinkVTTCue.instance.size_Getter_(this);
 
   @DomName('VTTCue.size')
   @DocsEditable()
   @Experimental() // untriaged
-  void set size(int value) => _blink.BlinkVTTCue.size_Setter(this, value);
+  void set size(int value) => _blink.BlinkVTTCue.instance.size_Setter_(this, value);
 
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get snapToLines => _blink.BlinkVTTCue.snapToLines_Getter(this);
+  bool get snapToLines => _blink.BlinkVTTCue.instance.snapToLines_Getter_(this);
 
   @DomName('VTTCue.snapToLines')
   @DocsEditable()
   @Experimental() // untriaged
-  void set snapToLines(bool value) => _blink.BlinkVTTCue.snapToLines_Setter(this, value);
+  void set snapToLines(bool value) => _blink.BlinkVTTCue.instance.snapToLines_Setter_(this, value);
 
   @DomName('VTTCue.text')
   @DocsEditable()
   @Experimental() // untriaged
-  String get text => _blink.BlinkVTTCue.text_Getter(this);
+  String get text => _blink.BlinkVTTCue.instance.text_Getter_(this);
 
   @DomName('VTTCue.text')
   @DocsEditable()
   @Experimental() // untriaged
-  void set text(String value) => _blink.BlinkVTTCue.text_Setter(this, value);
+  void set text(String value) => _blink.BlinkVTTCue.instance.text_Setter_(this, value);
 
   @DomName('VTTCue.vertical')
   @DocsEditable()
   @Experimental() // untriaged
-  String get vertical => _blink.BlinkVTTCue.vertical_Getter(this);
+  String get vertical => _blink.BlinkVTTCue.instance.vertical_Getter_(this);
 
   @DomName('VTTCue.vertical')
   @DocsEditable()
   @Experimental() // untriaged
-  void set vertical(String value) => _blink.BlinkVTTCue.vertical_Setter(this, value);
+  void set vertical(String value) => _blink.BlinkVTTCue.instance.vertical_Setter_(this, value);
 
   @DomName('VTTCue.getCueAsHTML')
   @DocsEditable()
   @Experimental() // untriaged
-  DocumentFragment getCueAsHtml() => _blink.BlinkVTTCue.getCueAsHTML_Callback(this);
+  DocumentFragment getCueAsHtml() => _blink.BlinkVTTCue.instance.getCueAsHTML_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32128,93 +32133,93 @@
   @DomName('VTTRegion.VTTRegion')
   @DocsEditable()
   factory VttRegion() {
-    return _blink.BlinkVTTRegion.constructorCallback();
+    return _blink.BlinkVTTRegion.instance.constructorCallback_0_();
   }
 
   @DomName('VTTRegion.height')
   @DocsEditable()
   @Experimental() // untriaged
-  int get height => _blink.BlinkVTTRegion.height_Getter(this);
+  int get height => _blink.BlinkVTTRegion.instance.height_Getter_(this);
 
   @DomName('VTTRegion.height')
   @DocsEditable()
   @Experimental() // untriaged
-  void set height(int value) => _blink.BlinkVTTRegion.height_Setter(this, value);
+  void set height(int value) => _blink.BlinkVTTRegion.instance.height_Setter_(this, value);
 
   @DomName('VTTRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  String get id => _blink.BlinkVTTRegion.id_Getter(this);
+  String get id => _blink.BlinkVTTRegion.instance.id_Getter_(this);
 
   @DomName('VTTRegion.id')
   @DocsEditable()
   @Experimental() // untriaged
-  void set id(String value) => _blink.BlinkVTTRegion.id_Setter(this, value);
+  void set id(String value) => _blink.BlinkVTTRegion.instance.id_Setter_(this, value);
 
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get regionAnchorX => _blink.BlinkVTTRegion.regionAnchorX_Getter(this);
+  num get regionAnchorX => _blink.BlinkVTTRegion.instance.regionAnchorX_Getter_(this);
 
   @DomName('VTTRegion.regionAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionAnchorX(num value) => _blink.BlinkVTTRegion.regionAnchorX_Setter(this, value);
+  void set regionAnchorX(num value) => _blink.BlinkVTTRegion.instance.regionAnchorX_Setter_(this, value);
 
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get regionAnchorY => _blink.BlinkVTTRegion.regionAnchorY_Getter(this);
+  num get regionAnchorY => _blink.BlinkVTTRegion.instance.regionAnchorY_Getter_(this);
 
   @DomName('VTTRegion.regionAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  void set regionAnchorY(num value) => _blink.BlinkVTTRegion.regionAnchorY_Setter(this, value);
+  void set regionAnchorY(num value) => _blink.BlinkVTTRegion.instance.regionAnchorY_Setter_(this, value);
 
   @DomName('VTTRegion.scroll')
   @DocsEditable()
   @Experimental() // untriaged
-  String get scroll => _blink.BlinkVTTRegion.scroll_Getter(this);
+  String get scroll => _blink.BlinkVTTRegion.instance.scroll_Getter_(this);
 
   @DomName('VTTRegion.scroll')
   @DocsEditable()
   @Experimental() // untriaged
-  void set scroll(String value) => _blink.BlinkVTTRegion.scroll_Setter(this, value);
+  void set scroll(String value) => _blink.BlinkVTTRegion.instance.scroll_Setter_(this, value);
 
   @DomName('VTTRegion.track')
   @DocsEditable()
   @Experimental() // untriaged
-  TextTrack get track => _blink.BlinkVTTRegion.track_Getter(this);
+  TextTrack get track => _blink.BlinkVTTRegion.instance.track_Getter_(this);
 
   @DomName('VTTRegion.viewportAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  num get viewportAnchorX => _blink.BlinkVTTRegion.viewportAnchorX_Getter(this);
+  num get viewportAnchorX => _blink.BlinkVTTRegion.instance.viewportAnchorX_Getter_(this);
 
   @DomName('VTTRegion.viewportAnchorX')
   @DocsEditable()
   @Experimental() // untriaged
-  void set viewportAnchorX(num value) => _blink.BlinkVTTRegion.viewportAnchorX_Setter(this, value);
+  void set viewportAnchorX(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorX_Setter_(this, value);
 
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  num get viewportAnchorY => _blink.BlinkVTTRegion.viewportAnchorY_Getter(this);
+  num get viewportAnchorY => _blink.BlinkVTTRegion.instance.viewportAnchorY_Getter_(this);
 
   @DomName('VTTRegion.viewportAnchorY')
   @DocsEditable()
   @Experimental() // untriaged
-  void set viewportAnchorY(num value) => _blink.BlinkVTTRegion.viewportAnchorY_Setter(this, value);
+  void set viewportAnchorY(num value) => _blink.BlinkVTTRegion.instance.viewportAnchorY_Setter_(this, value);
 
   @DomName('VTTRegion.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkVTTRegion.width_Getter(this);
+  num get width => _blink.BlinkVTTRegion.instance.width_Getter_(this);
 
   @DomName('VTTRegion.width')
   @DocsEditable()
   @Experimental() // untriaged
-  void set width(num value) => _blink.BlinkVTTRegion.width_Setter(this, value);
+  void set width(num value) => _blink.BlinkVTTRegion.instance.width_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32234,17 +32239,17 @@
   @DomName('VTTRegionList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkVTTRegionList.length_Getter(this);
+  int get length => _blink.BlinkVTTRegionList.instance.length_Getter_(this);
 
   @DomName('VTTRegionList.getRegionById')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.getRegionById_Callback_1(this, id);
+  VttRegion getRegionById(String id) => _blink.BlinkVTTRegionList.instance.getRegionById_Callback_1_(this, id);
 
   @DomName('VTTRegionList.item')
   @DocsEditable()
   @Experimental() // untriaged
-  VttRegion item(int index) => _blink.BlinkVTTRegionList.item_Callback_1(this, index);
+  VttRegion item(int index) => _blink.BlinkVTTRegionList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -32343,13 +32348,13 @@
   @DocsEditable()
   factory WebSocket(String url, [protocol_OR_protocols]) {
     if ((url is String || url == null) && protocol_OR_protocols == null) {
-      return _blink.BlinkWebSocket.constructorCallback_1(url);
+      return _blink.BlinkWebSocket.instance.constructorCallback_1_(url);
     }
     if ((protocol_OR_protocols is String || protocol_OR_protocols == null) && (url is String || url == null)) {
-      return _blink.BlinkWebSocket.constructorCallback_2(url, protocol_OR_protocols);
+      return _blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocol_OR_protocols);
     }
     if ((protocol_OR_protocols is List<String> || protocol_OR_protocols == null) && (url is String || url == null)) {
-      return _blink.BlinkWebSocket.constructorCallback_2(url, protocol_OR_protocols);
+      return _blink.BlinkWebSocket.instance.constructorCallback_2_(url, protocol_OR_protocols);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -32375,60 +32380,60 @@
 
   @DomName('WebSocket.binaryType')
   @DocsEditable()
-  String get binaryType => _blink.BlinkWebSocket.binaryType_Getter(this);
+  String get binaryType => _blink.BlinkWebSocket.instance.binaryType_Getter_(this);
 
   @DomName('WebSocket.binaryType')
   @DocsEditable()
-  void set binaryType(String value) => _blink.BlinkWebSocket.binaryType_Setter(this, value);
+  void set binaryType(String value) => _blink.BlinkWebSocket.instance.binaryType_Setter_(this, value);
 
   @DomName('WebSocket.bufferedAmount')
   @DocsEditable()
-  int get bufferedAmount => _blink.BlinkWebSocket.bufferedAmount_Getter(this);
+  int get bufferedAmount => _blink.BlinkWebSocket.instance.bufferedAmount_Getter_(this);
 
   @DomName('WebSocket.extensions')
   @DocsEditable()
-  String get extensions => _blink.BlinkWebSocket.extensions_Getter(this);
+  String get extensions => _blink.BlinkWebSocket.instance.extensions_Getter_(this);
 
   @DomName('WebSocket.protocol')
   @DocsEditable()
-  String get protocol => _blink.BlinkWebSocket.protocol_Getter(this);
+  String get protocol => _blink.BlinkWebSocket.instance.protocol_Getter_(this);
 
   @DomName('WebSocket.readyState')
   @DocsEditable()
-  int get readyState => _blink.BlinkWebSocket.readyState_Getter(this);
+  int get readyState => _blink.BlinkWebSocket.instance.readyState_Getter_(this);
 
   @DomName('WebSocket.url')
   @DocsEditable()
-  String get url => _blink.BlinkWebSocket.url_Getter(this);
+  String get url => _blink.BlinkWebSocket.instance.url_Getter_(this);
 
   void close([int code, String reason]) {
     if (reason != null) {
-      _blink.BlinkWebSocket.close_Callback_2(this, code, reason);
+      _blink.BlinkWebSocket.instance.close_Callback_2_(this, code, reason);
       return;
     }
     if (code != null) {
-      _blink.BlinkWebSocket.close_Callback_1(this, code);
+      _blink.BlinkWebSocket.instance.close_Callback_1_(this, code);
       return;
     }
-    _blink.BlinkWebSocket.close_Callback(this);
+    _blink.BlinkWebSocket.instance.close_Callback_0_(this);
     return;
   }
 
   void send(data) {
     if ((data is String || data == null)) {
-      _blink.BlinkWebSocket.send_Callback_1(this, data);
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is Blob || data == null)) {
-      _blink.BlinkWebSocket.send_Callback_1(this, data);
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is TypedData || data == null)) {
-      _blink.BlinkWebSocket.send_Callback_1(this, data);
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     if ((data is ByteBuffer || data == null)) {
-      _blink.BlinkWebSocket.send_Callback_1(this, data);
+      _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -32436,19 +32441,19 @@
 
   @DomName('WebSocket.sendBlob')
   @DocsEditable()
-  void sendBlob(Blob data) => _blink.BlinkWebSocket.send_Callback_1(this, data);
+  void sendBlob(Blob data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
 
   @DomName('WebSocket.sendByteBuffer')
   @DocsEditable()
-  void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.send_Callback_1(this, data);
+  void sendByteBuffer(ByteBuffer data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
 
   @DomName('WebSocket.sendString')
   @DocsEditable()
-  void sendString(String data) => _blink.BlinkWebSocket.send_Callback_1(this, data);
+  void sendString(String data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
 
   @DomName('WebSocket.sendTypedData')
   @DocsEditable()
-  void sendTypedData(TypedData data) => _blink.BlinkWebSocket.send_Callback_1(this, data);
+  void sendTypedData(TypedData data) => _blink.BlinkWebSocket.instance.send_Callback_1_(this, data);
 
   /// Stream of `close` events handled by this [WebSocket].
   @DomName('WebSocket.onclose')
@@ -32503,7 +32508,7 @@
       'metaKey': metaKey,
       'relatedTarget': relatedTarget,
     };
-    return _blink.BlinkWheelEvent.constructorCallback(type, options);
+    return _blink.BlinkWheelEvent.constructorCallback_2(type, options);
   }
 
   // To suppress missing implicit constructor warnings.
@@ -32523,32 +32528,32 @@
 
   @DomName('WheelEvent.deltaMode')
   @DocsEditable()
-  int get deltaMode => _blink.BlinkWheelEvent.deltaMode_Getter(this);
+  int get deltaMode => _blink.BlinkWheelEvent.instance.deltaMode_Getter_(this);
 
   @DomName('WheelEvent.deltaX')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _deltaX => _blink.BlinkWheelEvent.deltaX_Getter(this);
+  double get _deltaX => _blink.BlinkWheelEvent.instance.deltaX_Getter_(this);
 
   @DomName('WheelEvent.deltaY')
   @DocsEditable()
   @Experimental() // untriaged
-  double get _deltaY => _blink.BlinkWheelEvent.deltaY_Getter(this);
+  double get _deltaY => _blink.BlinkWheelEvent.instance.deltaY_Getter_(this);
 
   @DomName('WheelEvent.deltaZ')
   @DocsEditable()
   @Experimental() // untriaged
-  double get deltaZ => _blink.BlinkWheelEvent.deltaZ_Getter(this);
+  double get deltaZ => _blink.BlinkWheelEvent.instance.deltaZ_Getter_(this);
 
   @DomName('WheelEvent.wheelDeltaX')
   @DocsEditable()
   @Experimental() // non-standard
-  int get wheelDeltaX => _blink.BlinkWheelEvent.wheelDeltaX_Getter(this);
+  int get wheelDeltaX => _blink.BlinkWheelEvent.instance.wheelDeltaX_Getter_(this);
 
   @DomName('WheelEvent.wheelDeltaY')
   @DocsEditable()
   @Experimental() // non-standard
-  int get wheelDeltaY => _blink.BlinkWheelEvent.wheelDeltaY_Getter(this);
+  int get wheelDeltaY => _blink.BlinkWheelEvent.instance.wheelDeltaY_Getter_(this);
 
 
   /**
@@ -32892,7 +32897,7 @@
    */
   @DomName('Window.CSS')
   @DocsEditable()
-  Css get css => _blink.BlinkWindow.CSS_Getter(this);
+  Css get css => _blink.BlinkWindow.instance.CSS_Getter_(this);
 
   /**
    * The application cache for this window.
@@ -32907,15 +32912,15 @@
    */
   @DomName('Window.applicationCache')
   @DocsEditable()
-  ApplicationCache get applicationCache => _blink.BlinkWindow.applicationCache_Getter(this);
+  ApplicationCache get applicationCache => _blink.BlinkWindow.instance.applicationCache_Getter_(this);
 
   @DomName('Window.closed')
   @DocsEditable()
-  bool get closed => _blink.BlinkWindow.closed_Getter(this);
+  bool get closed => _blink.BlinkWindow.instance.closed_Getter_(this);
 
   @DomName('Window.console')
   @DocsEditable()
-  Console get console => _blink.BlinkWindow.console_Getter(this);
+  Console get console => _blink.BlinkWindow.instance.console_Getter_(this);
 
   /**
    * Entrypoint for the browser's cryptographic functions.
@@ -32928,31 +32933,31 @@
   @DocsEditable()
   // http://www.w3.org/TR/WebCryptoAPI/
   @Experimental()
-  Crypto get crypto => _blink.BlinkWindow.crypto_Getter(this);
+  Crypto get crypto => _blink.BlinkWindow.instance.crypto_Getter_(this);
 
   /// *Deprecated*.
   @DomName('Window.defaultStatus')
   @DocsEditable()
   @Experimental() // non-standard
-  String get defaultStatus => _blink.BlinkWindow.defaultStatus_Getter(this);
+  String get defaultStatus => _blink.BlinkWindow.instance.defaultStatus_Getter_(this);
 
   /// *Deprecated*.
   @DomName('Window.defaultStatus')
   @DocsEditable()
   @Experimental() // non-standard
-  void set defaultStatus(String value) => _blink.BlinkWindow.defaultStatus_Setter(this, value);
+  void set defaultStatus(String value) => _blink.BlinkWindow.instance.defaultStatus_Setter_(this, value);
 
   /// *Deprecated*.
   @DomName('Window.defaultstatus')
   @DocsEditable()
   @Experimental() // non-standard
-  String get defaultstatus => _blink.BlinkWindow.defaultstatus_Getter(this);
+  String get defaultstatus => _blink.BlinkWindow.instance.defaultstatus_Getter_(this);
 
   /// *Deprecated*.
   @DomName('Window.defaultstatus')
   @DocsEditable()
   @Experimental() // non-standard
-  void set defaultstatus(String value) => _blink.BlinkWindow.defaultstatus_Setter(this, value);
+  void set defaultstatus(String value) => _blink.BlinkWindow.instance.defaultstatus_Setter_(this, value);
 
   /**
    * The ratio between physical pixels and logical CSS pixels.
@@ -32970,11 +32975,11 @@
   @DocsEditable()
   // http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html
   @Experimental() // non-standard
-  double get devicePixelRatio => _blink.BlinkWindow.devicePixelRatio_Getter(this);
+  double get devicePixelRatio => _blink.BlinkWindow.instance.devicePixelRatio_Getter_(this);
 
   @DomName('Window.document')
   @DocsEditable()
-  Document get document => _blink.BlinkWindow.document_Getter(this);
+  Document get document => _blink.BlinkWindow.instance.document_Getter_(this);
 
   /**
    * The current session history for this window's newest document.
@@ -32987,7 +32992,7 @@
    */
   @DomName('Window.history')
   @DocsEditable()
-  History get history => _blink.BlinkWindow.history_Getter(this);
+  History get history => _blink.BlinkWindow.instance.history_Getter_(this);
 
   @DomName('Window.indexedDB')
   @DocsEditable()
@@ -32995,7 +33000,7 @@
   @SupportedBrowser(SupportedBrowser.FIREFOX, '15')
   @SupportedBrowser(SupportedBrowser.IE, '10')
   @Experimental()
-  IdbFactory get indexedDB => _blink.BlinkWindow.indexedDB_Getter(this);
+  IdbFactory get indexedDB => _blink.BlinkWindow.instance.indexedDB_Getter_(this);
 
   /**
    * The height of the viewport including scrollbars.
@@ -33008,7 +33013,7 @@
    */
   @DomName('Window.innerHeight')
   @DocsEditable()
-  int get innerHeight => _blink.BlinkWindow.innerHeight_Getter(this);
+  int get innerHeight => _blink.BlinkWindow.instance.innerHeight_Getter_(this);
 
   /**
    * The width of the viewport including scrollbars.
@@ -33021,7 +33026,7 @@
    */
   @DomName('Window.innerWidth')
   @DocsEditable()
-  int get innerWidth => _blink.BlinkWindow.innerWidth_Getter(this);
+  int get innerWidth => _blink.BlinkWindow.instance.innerWidth_Getter_(this);
 
   /**
    * Storage for this window that persists across sessions.
@@ -33038,11 +33043,11 @@
    */
   @DomName('Window.localStorage')
   @DocsEditable()
-  Storage get localStorage => _blink.BlinkWindow.localStorage_Getter(this);
+  Storage get localStorage => _blink.BlinkWindow.instance.localStorage_Getter_(this);
 
   @DomName('Window.location')
   @DocsEditable()
-  Location get location => _blink.BlinkWindow.location_Getter(this);
+  Location get location => _blink.BlinkWindow.instance.location_Getter_(this);
 
   /**
    * This window's location bar, which displays the URL.
@@ -33055,7 +33060,7 @@
    */
   @DomName('Window.locationbar')
   @DocsEditable()
-  BarProp get locationbar => _blink.BlinkWindow.locationbar_Getter(this);
+  BarProp get locationbar => _blink.BlinkWindow.instance.locationbar_Getter_(this);
 
   /**
    * This window's menu bar, which displays menu commands.
@@ -33068,7 +33073,7 @@
    */
   @DomName('Window.menubar')
   @DocsEditable()
-  BarProp get menubar => _blink.BlinkWindow.menubar_Getter(this);
+  BarProp get menubar => _blink.BlinkWindow.instance.menubar_Getter_(this);
 
   /**
    * The name of this window.
@@ -33081,7 +33086,7 @@
    */
   @DomName('Window.name')
   @DocsEditable()
-  String get name => _blink.BlinkWindow.name_Getter(this);
+  String get name => _blink.BlinkWindow.instance.name_Getter_(this);
 
   /**
    * The name of this window.
@@ -33094,7 +33099,7 @@
    */
   @DomName('Window.name')
   @DocsEditable()
-  void set name(String value) => _blink.BlinkWindow.name_Setter(this, value);
+  void set name(String value) => _blink.BlinkWindow.instance.name_Setter_(this, value);
 
   /**
    * The user agent accessing this window.
@@ -33107,7 +33112,7 @@
    */
   @DomName('Window.navigator')
   @DocsEditable()
-  Navigator get navigator => _blink.BlinkWindow.navigator_Getter(this);
+  Navigator get navigator => _blink.BlinkWindow.instance.navigator_Getter_(this);
 
   /**
    * Whether objects are drawn offscreen before being displayed.
@@ -33121,20 +33126,20 @@
   @DomName('Window.offscreenBuffering')
   @DocsEditable()
   @Experimental() // non-standard
-  bool get offscreenBuffering => _blink.BlinkWindow.offscreenBuffering_Getter(this);
+  bool get offscreenBuffering => _blink.BlinkWindow.instance.offscreenBuffering_Getter_(this);
 
   @DomName('Window.opener')
   @DocsEditable()
-  WindowBase get opener => _blink.BlinkWindow.opener_Getter(this);
+  WindowBase get opener => _blink.BlinkWindow.instance.opener_Getter_(this);
 
   @DomName('Window.opener')
   @DocsEditable()
-  void set opener(Window value) => _blink.BlinkWindow.opener_Setter(this, value);
+  void set opener(Window value) => _blink.BlinkWindow.instance.opener_Setter_(this, value);
 
   @DomName('Window.orientation')
   @DocsEditable()
   @Experimental() // untriaged
-  int get orientation => _blink.BlinkWindow.orientation_Getter(this);
+  int get orientation => _blink.BlinkWindow.instance.orientation_Getter_(this);
 
   /**
    * The height of this window including all user interface elements.
@@ -33147,7 +33152,7 @@
    */
   @DomName('Window.outerHeight')
   @DocsEditable()
-  int get outerHeight => _blink.BlinkWindow.outerHeight_Getter(this);
+  int get outerHeight => _blink.BlinkWindow.instance.outerHeight_Getter_(this);
 
   /**
    * The width of the window including all user interface elements.
@@ -33160,7 +33165,7 @@
    */
   @DomName('Window.outerWidth')
   @DocsEditable()
-  int get outerWidth => _blink.BlinkWindow.outerWidth_Getter(this);
+  int get outerWidth => _blink.BlinkWindow.instance.outerWidth_Getter_(this);
 
   /**
    * The distance this window has been scrolled horizontally.
@@ -33176,7 +33181,7 @@
    */
   @DomName('Window.pageXOffset')
   @DocsEditable()
-  int get pageXOffset => _blink.BlinkWindow.pageXOffset_Getter(this);
+  int get pageXOffset => _blink.BlinkWindow.instance.pageXOffset_Getter_(this);
 
   /**
    * The distance this window has been scrolled vertically.
@@ -33192,11 +33197,11 @@
    */
   @DomName('Window.pageYOffset')
   @DocsEditable()
-  int get pageYOffset => _blink.BlinkWindow.pageYOffset_Getter(this);
+  int get pageYOffset => _blink.BlinkWindow.instance.pageYOffset_Getter_(this);
 
   @DomName('Window.parent')
   @DocsEditable()
-  WindowBase get parent => _blink.BlinkWindow.parent_Getter(this);
+  WindowBase get parent => _blink.BlinkWindow.instance.parent_Getter_(this);
 
   /**
    * Timing and navigation data for this window.
@@ -33214,7 +33219,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.FIREFOX)
   @SupportedBrowser(SupportedBrowser.IE)
-  Performance get performance => _blink.BlinkWindow.performance_Getter(this);
+  Performance get performance => _blink.BlinkWindow.instance.performance_Getter_(this);
 
   /**
    * Information about the screen displaying this window.
@@ -33226,7 +33231,7 @@
    */
   @DomName('Window.screen')
   @DocsEditable()
-  Screen get screen => _blink.BlinkWindow.screen_Getter(this);
+  Screen get screen => _blink.BlinkWindow.instance.screen_Getter_(this);
 
   /**
    * The distance from the left side of the screen to the left side of this
@@ -33239,7 +33244,7 @@
    */
   @DomName('Window.screenLeft')
   @DocsEditable()
-  int get screenLeft => _blink.BlinkWindow.screenLeft_Getter(this);
+  int get screenLeft => _blink.BlinkWindow.instance.screenLeft_Getter_(this);
 
   /**
    * The distance from the top of the screen to the top of this window.
@@ -33251,7 +33256,7 @@
    */
   @DomName('Window.screenTop')
   @DocsEditable()
-  int get screenTop => _blink.BlinkWindow.screenTop_Getter(this);
+  int get screenTop => _blink.BlinkWindow.instance.screenTop_Getter_(this);
 
   /**
    * The distance from the left side of the screen to the mouse pointer.
@@ -33263,7 +33268,7 @@
    */
   @DomName('Window.screenX')
   @DocsEditable()
-  int get screenX => _blink.BlinkWindow.screenX_Getter(this);
+  int get screenX => _blink.BlinkWindow.instance.screenX_Getter_(this);
 
   /**
    * The distance from the top of the screen to the mouse pointer.
@@ -33275,15 +33280,15 @@
    */
   @DomName('Window.screenY')
   @DocsEditable()
-  int get screenY => _blink.BlinkWindow.screenY_Getter(this);
+  int get screenY => _blink.BlinkWindow.instance.screenY_Getter_(this);
 
   @DomName('Window.scrollX')
   @DocsEditable()
-  int get scrollX => _blink.BlinkWindow.scrollX_Getter(this);
+  int get scrollX => _blink.BlinkWindow.instance.scrollX_Getter_(this);
 
   @DomName('Window.scrollY')
   @DocsEditable()
-  int get scrollY => _blink.BlinkWindow.scrollY_Getter(this);
+  int get scrollY => _blink.BlinkWindow.instance.scrollY_Getter_(this);
 
   /**
    * This window's scroll bars.
@@ -33296,7 +33301,7 @@
    */
   @DomName('Window.scrollbars')
   @DocsEditable()
-  BarProp get scrollbars => _blink.BlinkWindow.scrollbars_Getter(this);
+  BarProp get scrollbars => _blink.BlinkWindow.instance.scrollbars_Getter_(this);
 
   /**
    * The current window.
@@ -33308,7 +33313,7 @@
    */
   @DomName('Window.self')
   @DocsEditable()
-  WindowBase get self => _blink.BlinkWindow.self_Getter(this);
+  WindowBase get self => _blink.BlinkWindow.instance.self_Getter_(this);
 
   /**
    * Storage for this window that is cleared when this session ends.
@@ -33325,7 +33330,7 @@
    */
   @DomName('Window.sessionStorage')
   @DocsEditable()
-  Storage get sessionStorage => _blink.BlinkWindow.sessionStorage_Getter(this);
+  Storage get sessionStorage => _blink.BlinkWindow.instance.sessionStorage_Getter_(this);
 
   /**
    * Access to speech synthesis in the browser.
@@ -33340,17 +33345,17 @@
   @DocsEditable()
   // https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section
   @Experimental()
-  SpeechSynthesis get speechSynthesis => _blink.BlinkWindow.speechSynthesis_Getter(this);
+  SpeechSynthesis get speechSynthesis => _blink.BlinkWindow.instance.speechSynthesis_Getter_(this);
 
   /// *Deprecated*.
   @DomName('Window.status')
   @DocsEditable()
-  String get status => _blink.BlinkWindow.status_Getter(this);
+  String get status => _blink.BlinkWindow.instance.status_Getter_(this);
 
   /// *Deprecated*.
   @DomName('Window.status')
   @DocsEditable()
-  void set status(String value) => _blink.BlinkWindow.status_Setter(this, value);
+  void set status(String value) => _blink.BlinkWindow.instance.status_Setter_(this, value);
 
   /**
    * This window's status bar.
@@ -33363,7 +33368,7 @@
    */
   @DomName('Window.statusbar')
   @DocsEditable()
-  BarProp get statusbar => _blink.BlinkWindow.statusbar_Getter(this);
+  BarProp get statusbar => _blink.BlinkWindow.instance.statusbar_Getter_(this);
 
   /**
    * Access to CSS media queries.
@@ -33378,7 +33383,7 @@
   @DocsEditable()
   // http://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/StyleMedia/StyleMedia/StyleMedia.html
   @Experimental() // nonstandard
-  StyleMedia get styleMedia => _blink.BlinkWindow.styleMedia_Getter(this);
+  StyleMedia get styleMedia => _blink.BlinkWindow.instance.styleMedia_Getter_(this);
 
   /**
    * This window's tool bar.
@@ -33391,11 +33396,11 @@
    */
   @DomName('Window.toolbar')
   @DocsEditable()
-  BarProp get toolbar => _blink.BlinkWindow.toolbar_Getter(this);
+  BarProp get toolbar => _blink.BlinkWindow.instance.toolbar_Getter_(this);
 
   @DomName('Window.top')
   @DocsEditable()
-  WindowBase get top => _blink.BlinkWindow.top_Getter(this);
+  WindowBase get top => _blink.BlinkWindow.instance.top_Getter_(this);
 
   /**
    * The current window.
@@ -33407,40 +33412,40 @@
    */
   @DomName('Window.window')
   @DocsEditable()
-  WindowBase get window => _blink.BlinkWindow.window_Getter(this);
+  WindowBase get window => _blink.BlinkWindow.instance.window_Getter_(this);
 
   WindowBase __getter__(index_OR_name) {
     if ((index_OR_name is int)) {
-      return _blink.BlinkWindow.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkWindow.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     if ((index_OR_name is String)) {
-      return _blink.BlinkWindow.$__getter___Callback_1(this, index_OR_name);
+      return _blink.BlinkWindow.instance.$__getter___Callback_1_(this, index_OR_name);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   void alert([String message]) {
     if (message != null) {
-      _blink.BlinkWindow.alert_Callback_1(this, message);
+      _blink.BlinkWindow.instance.alert_Callback_1_(this, message);
       return;
     }
-    _blink.BlinkWindow.alert_Callback(this);
+    _blink.BlinkWindow.instance.alert_Callback_0_(this);
     return;
   }
 
   @DomName('Window.cancelAnimationFrame')
   @DocsEditable()
-  void cancelAnimationFrame(int id) => _blink.BlinkWindow.cancelAnimationFrame_Callback_1(this, id);
+  void cancelAnimationFrame(int id) => _blink.BlinkWindow.instance.cancelAnimationFrame_Callback_1_(this, id);
 
   @DomName('Window.close')
   @DocsEditable()
-  void close() => _blink.BlinkWindow.close_Callback(this);
+  void close() => _blink.BlinkWindow.instance.close_Callback_0_(this);
 
   bool confirm([String message]) {
     if (message != null) {
-      return _blink.BlinkWindow.confirm_Callback_1(this, message);
+      return _blink.BlinkWindow.instance.confirm_Callback_1_(this, message);
     }
-    return _blink.BlinkWindow.confirm_Callback(this);
+    return _blink.BlinkWindow.instance.confirm_Callback_0_(this);
   }
 
   /**
@@ -33454,11 +33459,11 @@
   @DomName('Window.find')
   @DocsEditable()
   @Experimental() // non-standard
-  bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) => _blink.BlinkWindow.find_Callback_7(this, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog);
+  bool find(String string, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) => _blink.BlinkWindow.instance.find_Callback_7_(this, string, caseSensitive, backwards, wrap, wholeWord, searchInFrames, showDialog);
 
   @DomName('Window.getComputedStyle')
   @DocsEditable()
-  CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => _blink.BlinkWindow.getComputedStyle_Callback_2(this, element, pseudoElement);
+  CssStyleDeclaration _getComputedStyle(Element element, String pseudoElement) => _blink.BlinkWindow.instance.getComputedStyle_Callback_2_(this, element, pseudoElement);
 
   /**
    * Returns all CSS rules that apply to the element's pseudo-element.
@@ -33466,7 +33471,7 @@
   @DomName('Window.getMatchedCSSRules')
   @DocsEditable()
   @Experimental() // non-standard
-  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.getMatchedCSSRules_Callback_2(this, element, pseudoElement);
+  List<CssRule> getMatchedCssRules(Element element, String pseudoElement) => _blink.BlinkWindow.instance.getMatchedCSSRules_Callback_2_(this, element, pseudoElement);
 
   /**
    * Returns the currently selected text.
@@ -33479,7 +33484,7 @@
    */
   @DomName('Window.getSelection')
   @DocsEditable()
-  Selection getSelection() => _blink.BlinkWindow.getSelection_Callback(this);
+  Selection getSelection() => _blink.BlinkWindow.instance.getSelection_Callback_0_(this);
 
   /**
    * Returns a list of media queries for the given query string.
@@ -33494,7 +33499,7 @@
    */
   @DomName('Window.matchMedia')
   @DocsEditable()
-  MediaQueryList matchMedia(String query) => _blink.BlinkWindow.matchMedia_Callback_1(this, query);
+  MediaQueryList matchMedia(String query) => _blink.BlinkWindow.instance.matchMedia_Callback_1_(this, query);
 
   /**
    * Moves this window.
@@ -33510,26 +33515,26 @@
    */
   @DomName('Window.moveBy')
   @DocsEditable()
-  void moveBy(num x, num y) => _blink.BlinkWindow.moveBy_Callback_2(this, x, y);
+  void moveBy(num x, num y) => _blink.BlinkWindow.instance.moveBy_Callback_2_(this, x, y);
 
   @DomName('Window.moveTo')
   @DocsEditable()
-  void _moveTo(num x, num y) => _blink.BlinkWindow.moveTo_Callback_2(this, x, y);
+  void _moveTo(num x, num y) => _blink.BlinkWindow.instance.moveTo_Callback_2_(this, x, y);
 
   @DomName('Window.open')
   @DocsEditable()
-  WindowBase open(String url, String name, [String options]) => _blink.BlinkWindow.open_Callback_3(this, url, name, options);
+  WindowBase open(String url, String name, [String options]) => _blink.BlinkWindow.instance.open_Callback_3_(this, url, name, options);
 
   SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) {
     if (creationCallback != null) {
-      return _blink.BlinkWindow.openDatabase_Callback_5(this, name, version, displayName, estimatedSize, creationCallback);
+      return _blink.BlinkWindow.instance.openDatabase_Callback_5_(this, name, version, displayName, estimatedSize, creationCallback);
     }
-    return _blink.BlinkWindow.openDatabase_Callback_4(this, name, version, displayName, estimatedSize);
+    return _blink.BlinkWindow.instance.openDatabase_Callback_4_(this, name, version, displayName, estimatedSize);
   }
 
   @DomName('Window.postMessage')
   @DocsEditable()
-  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.postMessage_Callback_3(this, message, targetOrigin, transfer);
+  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List<MessagePort> transfer]) => _blink.BlinkWindow.instance.postMessage_Callback_3_(this, message, targetOrigin, transfer);
 
   /**
    * Opens the print dialog for this window.
@@ -33541,11 +33546,11 @@
    */
   @DomName('Window.print')
   @DocsEditable()
-  void print() => _blink.BlinkWindow.print_Callback(this);
+  void print() => _blink.BlinkWindow.instance.print_Callback_0_(this);
 
   @DomName('Window.requestAnimationFrame')
   @DocsEditable()
-  int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.requestAnimationFrame_Callback_1(this, callback);
+  int _requestAnimationFrame(RequestAnimationFrameCallback callback) => _blink.BlinkWindow.instance.requestAnimationFrame_Callback_1_(this, callback);
 
   /**
    * Resizes this window by an offset.
@@ -33557,7 +33562,7 @@
    */
   @DomName('Window.resizeBy')
   @DocsEditable()
-  void resizeBy(num x, num y) => _blink.BlinkWindow.resizeBy_Callback_2(this, x, y);
+  void resizeBy(num x, num y) => _blink.BlinkWindow.instance.resizeBy_Callback_2_(this, x, y);
 
   /**
    * Resizes this window to a specific width and height.
@@ -33569,32 +33574,32 @@
    */
   @DomName('Window.resizeTo')
   @DocsEditable()
-  void resizeTo(num width, num height) => _blink.BlinkWindow.resizeTo_Callback_2(this, width, height);
+  void resizeTo(num width, num height) => _blink.BlinkWindow.instance.resizeTo_Callback_2_(this, width, height);
 
   void scroll(int x, int y, [Map scrollOptions]) {
     if (scrollOptions != null) {
-      _blink.BlinkWindow.scroll_Callback_3(this, x, y, scrollOptions);
+      _blink.BlinkWindow.instance.scroll_Callback_3_(this, x, y, scrollOptions);
       return;
     }
-    _blink.BlinkWindow.scroll_Callback_2(this, x, y);
+    _blink.BlinkWindow.instance.scroll_Callback_2_(this, x, y);
     return;
   }
 
   void scrollBy(int x, int y, [Map scrollOptions]) {
     if (scrollOptions != null) {
-      _blink.BlinkWindow.scrollBy_Callback_3(this, x, y, scrollOptions);
+      _blink.BlinkWindow.instance.scrollBy_Callback_3_(this, x, y, scrollOptions);
       return;
     }
-    _blink.BlinkWindow.scrollBy_Callback_2(this, x, y);
+    _blink.BlinkWindow.instance.scrollBy_Callback_2_(this, x, y);
     return;
   }
 
   void scrollTo(int x, int y, [Map scrollOptions]) {
     if (scrollOptions != null) {
-      _blink.BlinkWindow.scrollTo_Callback_3(this, x, y, scrollOptions);
+      _blink.BlinkWindow.instance.scrollTo_Callback_3_(this, x, y, scrollOptions);
       return;
     }
-    _blink.BlinkWindow.scrollTo_Callback_2(this, x, y);
+    _blink.BlinkWindow.instance.scrollTo_Callback_2_(this, x, y);
     return;
   }
 
@@ -33609,7 +33614,7 @@
    */
   @DomName('Window.showModalDialog')
   @DocsEditable()
-  Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) => _blink.BlinkWindow.showModalDialog_Callback_3(this, url, dialogArgs, featureArgs);
+  Object showModalDialog(String url, [Object dialogArgs, String featureArgs]) => _blink.BlinkWindow.instance.showModalDialog_Callback_3_(this, url, dialogArgs, featureArgs);
 
   /**
    * Stops the window from loading.
@@ -33622,14 +33627,14 @@
    */
   @DomName('Window.stop')
   @DocsEditable()
-  void stop() => _blink.BlinkWindow.stop_Callback(this);
+  void stop() => _blink.BlinkWindow.instance.stop_Callback_0_(this);
 
   void __requestFileSystem(int type, int size, _FileSystemCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWindow.webkitRequestFileSystem_Callback_4(this, type, size, successCallback, errorCallback);
+      _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_4_(this, type, size, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWindow.webkitRequestFileSystem_Callback_3(this, type, size, successCallback);
+    _blink.BlinkWindow.instance.webkitRequestFileSystem_Callback_3_(this, type, size, successCallback);
     return;
   }
 
@@ -33643,10 +33648,10 @@
 
   void _resolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWindow.webkitResolveLocalFileSystemURL_Callback_3(this, url, successCallback, errorCallback);
+      _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_3_(this, url, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWindow.webkitResolveLocalFileSystemURL_Callback_2(this, url, successCallback);
+    _blink.BlinkWindow.instance.webkitResolveLocalFileSystemURL_Callback_2_(this, url, successCallback);
     return;
   }
 
@@ -33660,27 +33665,27 @@
 
   @DomName('Window.atob')
   @DocsEditable()
-  String atob(String string) => _blink.BlinkWindow.atob_Callback_1(this, string);
+  String atob(String string) => _blink.BlinkWindow.instance.atob_Callback_1_(this, string);
 
   @DomName('Window.btoa')
   @DocsEditable()
-  String btoa(String string) => _blink.BlinkWindow.btoa_Callback_1(this, string);
+  String btoa(String string) => _blink.BlinkWindow.instance.btoa_Callback_1_(this, string);
 
   @DomName('Window.clearInterval')
   @DocsEditable()
-  void _clearInterval(int handle) => _blink.BlinkWindow.clearInterval_Callback_1(this, handle);
+  void _clearInterval(int handle) => _blink.BlinkWindow.instance.clearInterval_Callback_1_(this, handle);
 
   @DomName('Window.clearTimeout')
   @DocsEditable()
-  void _clearTimeout(int handle) => _blink.BlinkWindow.clearTimeout_Callback_1(this, handle);
+  void _clearTimeout(int handle) => _blink.BlinkWindow.instance.clearTimeout_Callback_1_(this, handle);
 
   @DomName('Window.setInterval')
   @DocsEditable()
-  int _setInterval(Object handler, int timeout) => _blink.BlinkWindow.setInterval_Callback_2(this, handler, timeout);
+  int _setInterval(Object handler, int timeout) => _blink.BlinkWindow.instance.setInterval_Callback_2_(this, handler, timeout);
 
   @DomName('Window.setTimeout')
   @DocsEditable()
-  int _setTimeout(Object handler, int timeout) => _blink.BlinkWindow.setTimeout_Callback_2(this, handler, timeout);
+  int _setTimeout(Object handler, int timeout) => _blink.BlinkWindow.instance.setTimeout_Callback_2_(this, handler, timeout);
 
   /// Stream of `contentloaded` events handled by this [Window].
   @DomName('Window.onDOMContentLoaded')
@@ -34131,12 +34136,12 @@
   @DomName('WindowBase64.atob')
   @DocsEditable()
   @Experimental() // untriaged
-  String atob(String string) => _blink.BlinkWindowBase64.atob_Callback_1(this, string);
+  String atob(String string);
 
   @DomName('WindowBase64.btoa')
   @DocsEditable()
   @Experimental() // untriaged
-  String btoa(String string) => _blink.BlinkWindowBase64.btoa_Callback_1(this, string);
+  String btoa(String string);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34264,7 +34269,7 @@
   @DomName('Worker.Worker')
   @DocsEditable()
   factory Worker(String scriptUrl) {
-    return _blink.BlinkWorker.constructorCallback_1(scriptUrl);
+    return _blink.BlinkWorker.instance.constructorCallback_1_(scriptUrl);
   }
 
   /// Checks if this type is supported on the current platform.
@@ -34272,11 +34277,11 @@
 
   @DomName('Worker.postMessage')
   @DocsEditable()
-  void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) => _blink.BlinkWorker.postMessage_Callback_2(this, message, transfer);
+  void postMessage(/*SerializedScriptValue*/ message, [List<MessagePort> transfer]) => _blink.BlinkWorker.instance.postMessage_Callback_2_(this, message, transfer);
 
   @DomName('Worker.terminate')
   @DocsEditable()
-  void terminate() => _blink.BlinkWorker.terminate_Callback(this);
+  void terminate() => _blink.BlinkWorker.instance.terminate_Callback_0_(this);
 
   /// Stream of `error` events handled by this [Worker].
   @DomName('Worker.onerror')
@@ -34343,72 +34348,72 @@
   @DomName('WorkerGlobalScope.console')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerConsole get console => _blink.BlinkWorkerGlobalScope.console_Getter(this);
+  WorkerConsole get console => _blink.BlinkWorkerGlobalScope.instance.console_Getter_(this);
 
   @DomName('WorkerGlobalScope.crypto')
   @DocsEditable()
   @Experimental() // untriaged
-  Crypto get crypto => _blink.BlinkWorkerGlobalScope.crypto_Getter(this);
+  Crypto get crypto => _blink.BlinkWorkerGlobalScope.instance.crypto_Getter_(this);
 
   @DomName('WorkerGlobalScope.indexedDB')
   @DocsEditable()
   @Experimental() // untriaged
-  IdbFactory get indexedDB => _blink.BlinkWorkerGlobalScope.indexedDB_Getter(this);
+  IdbFactory get indexedDB => _blink.BlinkWorkerGlobalScope.instance.indexedDB_Getter_(this);
 
   @DomName('WorkerGlobalScope.location')
   @DocsEditable()
   @Experimental() // untriaged
-  _WorkerLocation get location => _blink.BlinkWorkerGlobalScope.location_Getter(this);
+  _WorkerLocation get location => _blink.BlinkWorkerGlobalScope.instance.location_Getter_(this);
 
   @DomName('WorkerGlobalScope.navigator')
   @DocsEditable()
   @Experimental() // untriaged
-  _WorkerNavigator get navigator => _blink.BlinkWorkerGlobalScope.navigator_Getter(this);
+  _WorkerNavigator get navigator => _blink.BlinkWorkerGlobalScope.instance.navigator_Getter_(this);
 
   @DomName('WorkerGlobalScope.performance')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerPerformance get performance => _blink.BlinkWorkerGlobalScope.performance_Getter(this);
+  WorkerPerformance get performance => _blink.BlinkWorkerGlobalScope.instance.performance_Getter_(this);
 
   @DomName('WorkerGlobalScope.self')
   @DocsEditable()
   @Experimental() // untriaged
-  WorkerGlobalScope get self => _blink.BlinkWorkerGlobalScope.self_Getter(this);
+  WorkerGlobalScope get self => _blink.BlinkWorkerGlobalScope.instance.self_Getter_(this);
 
   @DomName('WorkerGlobalScope.close')
   @DocsEditable()
   @Experimental() // untriaged
-  void close() => _blink.BlinkWorkerGlobalScope.close_Callback(this);
+  void close() => _blink.BlinkWorkerGlobalScope.instance.close_Callback_0_(this);
 
   @DomName('WorkerGlobalScope.importScripts')
   @DocsEditable()
   @Experimental() // untriaged
-  void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.importScripts_Callback_1(this, urls);
+  void importScripts(String urls) => _blink.BlinkWorkerGlobalScope.instance.importScripts_Callback_1_(this, urls);
 
   SqlDatabase openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) {
     if (creationCallback != null) {
-      return _blink.BlinkWorkerGlobalScope.openDatabase_Callback_5(this, name, version, displayName, estimatedSize, creationCallback);
+      return _blink.BlinkWorkerGlobalScope.instance.openDatabase_Callback_5_(this, name, version, displayName, estimatedSize, creationCallback);
     }
-    return _blink.BlinkWorkerGlobalScope.openDatabase_Callback_4(this, name, version, displayName, estimatedSize);
+    return _blink.BlinkWorkerGlobalScope.instance.openDatabase_Callback_4_(this, name, version, displayName, estimatedSize);
   }
 
   _DatabaseSync openDatabaseSync(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) {
     if (creationCallback != null) {
-      return _blink.BlinkWorkerGlobalScope.openDatabaseSync_Callback_5(this, name, version, displayName, estimatedSize, creationCallback);
+      return _blink.BlinkWorkerGlobalScope.instance.openDatabaseSync_Callback_5_(this, name, version, displayName, estimatedSize, creationCallback);
     }
-    return _blink.BlinkWorkerGlobalScope.openDatabaseSync_Callback_4(this, name, version, displayName, estimatedSize);
+    return _blink.BlinkWorkerGlobalScope.instance.openDatabaseSync_Callback_4_(this, name, version, displayName, estimatedSize);
   }
 
   void _webkitRequestFileSystem(int type, int size, [_FileSystemCallback successCallback, _ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_4(this, type, size, successCallback, errorCallback);
+      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_4_(this, type, size, successCallback, errorCallback);
       return;
     }
     if (successCallback != null) {
-      _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_3(this, type, size, successCallback);
+      _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_3_(this, type, size, successCallback);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.webkitRequestFileSystem_Callback_2(this, type, size);
+    _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystem_Callback_2_(this, type, size);
     return;
   }
 
@@ -34426,7 +34431,7 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.webkitRequestFileSystemSync_Callback_2(this, type, size);
+  _DOMFileSystemSync requestFileSystemSync(int type, int size) => _blink.BlinkWorkerGlobalScope.instance.webkitRequestFileSystemSync_Callback_2_(this, type, size);
 
   @DomName('WorkerGlobalScope.webkitResolveLocalFileSystemSyncURL')
   @DocsEditable()
@@ -34434,14 +34439,14 @@
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
   @Experimental() // untriaged
-  _EntrySync resolveLocalFileSystemSyncUrl(String url) => _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemSyncURL_Callback_1(this, url);
+  _EntrySync resolveLocalFileSystemSyncUrl(String url) => _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemSyncURL_Callback_1_(this, url);
 
   void _webkitResolveLocalFileSystemUrl(String url, _EntryCallback successCallback, [_ErrorCallback errorCallback]) {
     if (errorCallback != null) {
-      _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemURL_Callback_3(this, url, successCallback, errorCallback);
+      _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_3_(this, url, successCallback, errorCallback);
       return;
     }
-    _blink.BlinkWorkerGlobalScope.webkitResolveLocalFileSystemURL_Callback_2(this, url, successCallback);
+    _blink.BlinkWorkerGlobalScope.instance.webkitResolveLocalFileSystemURL_Callback_2_(this, url, successCallback);
     return;
   }
 
@@ -34456,32 +34461,32 @@
   @DomName('WorkerGlobalScope.atob')
   @DocsEditable()
   @Experimental() // untriaged
-  String atob(String string) => _blink.BlinkWorkerGlobalScope.atob_Callback_1(this, string);
+  String atob(String string) => _blink.BlinkWorkerGlobalScope.instance.atob_Callback_1_(this, string);
 
   @DomName('WorkerGlobalScope.btoa')
   @DocsEditable()
   @Experimental() // untriaged
-  String btoa(String string) => _blink.BlinkWorkerGlobalScope.btoa_Callback_1(this, string);
+  String btoa(String string) => _blink.BlinkWorkerGlobalScope.instance.btoa_Callback_1_(this, string);
 
   @DomName('WorkerGlobalScope.clearInterval')
   @DocsEditable()
   @Experimental() // untriaged
-  void _clearInterval(int handle) => _blink.BlinkWorkerGlobalScope.clearInterval_Callback_1(this, handle);
+  void _clearInterval(int handle) => _blink.BlinkWorkerGlobalScope.instance.clearInterval_Callback_1_(this, handle);
 
   @DomName('WorkerGlobalScope.clearTimeout')
   @DocsEditable()
   @Experimental() // untriaged
-  void _clearTimeout(int handle) => _blink.BlinkWorkerGlobalScope.clearTimeout_Callback_1(this, handle);
+  void _clearTimeout(int handle) => _blink.BlinkWorkerGlobalScope.instance.clearTimeout_Callback_1_(this, handle);
 
   @DomName('WorkerGlobalScope.setInterval')
   @DocsEditable()
   @Experimental() // untriaged
-  int _setInterval(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setInterval_Callback_2(this, handler, timeout);
+  int _setInterval(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.instance.setInterval_Callback_2_(this, handler, timeout);
 
   @DomName('WorkerGlobalScope.setTimeout')
   @DocsEditable()
   @Experimental() // untriaged
-  int _setTimeout(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.setTimeout_Callback_2(this, handler, timeout);
+  int _setTimeout(Object handler, int timeout) => _blink.BlinkWorkerGlobalScope.instance.setTimeout_Callback_2_(this, handler, timeout);
 
   /// Stream of `error` events handled by this [WorkerGlobalScope].
   @DomName('WorkerGlobalScope.onerror')
@@ -34507,12 +34512,12 @@
   @DomName('WorkerPerformance.memory')
   @DocsEditable()
   @Experimental() // untriaged
-  MemoryInfo get memory => _blink.BlinkWorkerPerformance.memory_Getter(this);
+  MemoryInfo get memory => _blink.BlinkWorkerPerformance.instance.memory_Getter_(this);
 
   @DomName('WorkerPerformance.now')
   @DocsEditable()
   @Experimental() // untriaged
-  double now() => _blink.BlinkWorkerPerformance.now_Callback(this);
+  double now() => _blink.BlinkWorkerPerformance.instance.now_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34533,20 +34538,20 @@
   @DomName('XPathEvaluator.XPathEvaluator')
   @DocsEditable()
   factory XPathEvaluator() {
-    return _blink.BlinkXPathEvaluator.constructorCallback();
+    return _blink.BlinkXPathEvaluator.instance.constructorCallback_0_();
   }
 
   @DomName('XPathEvaluator.createExpression')
   @DocsEditable()
-  XPathExpression createExpression(String expression, XPathNSResolver resolver) => _blink.BlinkXPathEvaluator.createExpression_Callback_2(this, expression, resolver);
+  XPathExpression createExpression(String expression, XPathNSResolver resolver) => _blink.BlinkXPathEvaluator.instance.createExpression_Callback_2_(this, expression, resolver);
 
   @DomName('XPathEvaluator.createNSResolver')
   @DocsEditable()
-  XPathNSResolver createNSResolver(Node nodeResolver) => _blink.BlinkXPathEvaluator.createNSResolver_Callback_1(this, nodeResolver);
+  XPathNSResolver createNSResolver(Node nodeResolver) => _blink.BlinkXPathEvaluator.instance.createNSResolver_Callback_1_(this, nodeResolver);
 
   @DomName('XPathEvaluator.evaluate')
   @DocsEditable()
-  XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) => _blink.BlinkXPathEvaluator.evaluate_Callback_5(this, expression, contextNode, resolver, type, inResult);
+  XPathResult evaluate(String expression, Node contextNode, XPathNSResolver resolver, int type, XPathResult inResult) => _blink.BlinkXPathEvaluator.instance.evaluate_Callback_5_(this, expression, contextNode, resolver, type, inResult);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34566,7 +34571,7 @@
 
   @DomName('XPathExpression.evaluate')
   @DocsEditable()
-  XPathResult evaluate(Node contextNode, int type, XPathResult inResult) => _blink.BlinkXPathExpression.evaluate_Callback_3(this, contextNode, type, inResult);
+  XPathResult evaluate(Node contextNode, int type, XPathResult inResult) => _blink.BlinkXPathExpression.instance.evaluate_Callback_3_(this, contextNode, type, inResult);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34586,7 +34591,7 @@
 
   @DomName('XPathNSResolver.lookupNamespaceURI')
   @DocsEditable()
-  String lookupNamespaceUri(String prefix) => _blink.BlinkXPathNSResolver.lookupNamespaceURI_Callback_1(this, prefix);
+  String lookupNamespaceUri(String prefix) => _blink.BlinkXPathNSResolver.instance.lookupNamespaceURI_Callback_1_(this, prefix);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34646,39 +34651,39 @@
 
   @DomName('XPathResult.booleanValue')
   @DocsEditable()
-  bool get booleanValue => _blink.BlinkXPathResult.booleanValue_Getter(this);
+  bool get booleanValue => _blink.BlinkXPathResult.instance.booleanValue_Getter_(this);
 
   @DomName('XPathResult.invalidIteratorState')
   @DocsEditable()
-  bool get invalidIteratorState => _blink.BlinkXPathResult.invalidIteratorState_Getter(this);
+  bool get invalidIteratorState => _blink.BlinkXPathResult.instance.invalidIteratorState_Getter_(this);
 
   @DomName('XPathResult.numberValue')
   @DocsEditable()
-  double get numberValue => _blink.BlinkXPathResult.numberValue_Getter(this);
+  double get numberValue => _blink.BlinkXPathResult.instance.numberValue_Getter_(this);
 
   @DomName('XPathResult.resultType')
   @DocsEditable()
-  int get resultType => _blink.BlinkXPathResult.resultType_Getter(this);
+  int get resultType => _blink.BlinkXPathResult.instance.resultType_Getter_(this);
 
   @DomName('XPathResult.singleNodeValue')
   @DocsEditable()
-  Node get singleNodeValue => _blink.BlinkXPathResult.singleNodeValue_Getter(this);
+  Node get singleNodeValue => _blink.BlinkXPathResult.instance.singleNodeValue_Getter_(this);
 
   @DomName('XPathResult.snapshotLength')
   @DocsEditable()
-  int get snapshotLength => _blink.BlinkXPathResult.snapshotLength_Getter(this);
+  int get snapshotLength => _blink.BlinkXPathResult.instance.snapshotLength_Getter_(this);
 
   @DomName('XPathResult.stringValue')
   @DocsEditable()
-  String get stringValue => _blink.BlinkXPathResult.stringValue_Getter(this);
+  String get stringValue => _blink.BlinkXPathResult.instance.stringValue_Getter_(this);
 
   @DomName('XPathResult.iterateNext')
   @DocsEditable()
-  Node iterateNext() => _blink.BlinkXPathResult.iterateNext_Callback(this);
+  Node iterateNext() => _blink.BlinkXPathResult.instance.iterateNext_Callback_0_(this);
 
   @DomName('XPathResult.snapshotItem')
   @DocsEditable()
-  Node snapshotItem(int index) => _blink.BlinkXPathResult.snapshotItem_Callback_1(this, index);
+  Node snapshotItem(int index) => _blink.BlinkXPathResult.instance.snapshotItem_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34714,12 +34719,12 @@
   @DomName('XMLSerializer.XMLSerializer')
   @DocsEditable()
   factory XmlSerializer() {
-    return _blink.BlinkXMLSerializer.constructorCallback();
+    return _blink.BlinkXMLSerializer.instance.constructorCallback_0_();
   }
 
   @DomName('XMLSerializer.serializeToString')
   @DocsEditable()
-  String serializeToString(Node node) => _blink.BlinkXMLSerializer.serializeToString_Callback_1(this, node);
+  String serializeToString(Node node) => _blink.BlinkXMLSerializer.instance.serializeToString_Callback_1_(this, node);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34742,7 +34747,7 @@
   @DomName('XSLTProcessor.XSLTProcessor')
   @DocsEditable()
   factory XsltProcessor() {
-    return _blink.BlinkXSLTProcessor.constructorCallback();
+    return _blink.BlinkXSLTProcessor.instance.constructorCallback_0_();
   }
 
   /// Checks if this type is supported on the current platform.
@@ -34750,35 +34755,35 @@
 
   @DomName('XSLTProcessor.clearParameters')
   @DocsEditable()
-  void clearParameters() => _blink.BlinkXSLTProcessor.clearParameters_Callback(this);
+  void clearParameters() => _blink.BlinkXSLTProcessor.instance.clearParameters_Callback_0_(this);
 
   @DomName('XSLTProcessor.getParameter')
   @DocsEditable()
-  String getParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.getParameter_Callback_2(this, namespaceURI, localName);
+  String getParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.instance.getParameter_Callback_2_(this, namespaceURI, localName);
 
   @DomName('XSLTProcessor.importStylesheet')
   @DocsEditable()
-  void importStylesheet(Node stylesheet) => _blink.BlinkXSLTProcessor.importStylesheet_Callback_1(this, stylesheet);
+  void importStylesheet(Node stylesheet) => _blink.BlinkXSLTProcessor.instance.importStylesheet_Callback_1_(this, stylesheet);
 
   @DomName('XSLTProcessor.removeParameter')
   @DocsEditable()
-  void removeParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.removeParameter_Callback_2(this, namespaceURI, localName);
+  void removeParameter(String namespaceURI, String localName) => _blink.BlinkXSLTProcessor.instance.removeParameter_Callback_2_(this, namespaceURI, localName);
 
   @DomName('XSLTProcessor.reset')
   @DocsEditable()
-  void reset() => _blink.BlinkXSLTProcessor.reset_Callback(this);
+  void reset() => _blink.BlinkXSLTProcessor.instance.reset_Callback_0_(this);
 
   @DomName('XSLTProcessor.setParameter')
   @DocsEditable()
-  void setParameter(String namespaceURI, String localName, String value) => _blink.BlinkXSLTProcessor.setParameter_Callback_3(this, namespaceURI, localName, value);
+  void setParameter(String namespaceURI, String localName, String value) => _blink.BlinkXSLTProcessor.instance.setParameter_Callback_3_(this, namespaceURI, localName, value);
 
   @DomName('XSLTProcessor.transformToDocument')
   @DocsEditable()
-  Document transformToDocument(Node source) => _blink.BlinkXSLTProcessor.transformToDocument_Callback_1(this, source);
+  Document transformToDocument(Node source) => _blink.BlinkXSLTProcessor.instance.transformToDocument_Callback_1_(this, source);
 
   @DomName('XSLTProcessor.transformToFragment')
   @DocsEditable()
-  DocumentFragment transformToFragment(Node source, Document docVal) => _blink.BlinkXSLTProcessor.transformToFragment_Callback_2(this, source, docVal);
+  DocumentFragment transformToFragment(Node source, Document docVal) => _blink.BlinkXSLTProcessor.instance.transformToFragment_Callback_2_(this, source, docVal);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -34797,39 +34802,39 @@
   @DomName('Attr.localName')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _localName => _blink.BlinkAttr.localName_Getter(this);
+  String get _localName => _blink.BlinkAttr.instance.localName_Getter_(this);
 
   @DomName('Attr.name')
   @DocsEditable()
-  String get name => _blink.BlinkAttr.name_Getter(this);
+  String get name => _blink.BlinkAttr.instance.name_Getter_(this);
 
   @DomName('Attr.namespaceURI')
   @DocsEditable()
   @Experimental() // untriaged
-  String get _namespaceUri => _blink.BlinkAttr.namespaceURI_Getter(this);
+  String get _namespaceUri => _blink.BlinkAttr.instance.namespaceURI_Getter_(this);
 
   @DomName('Attr.nodeValue')
   @DocsEditable()
   @Experimental() // untriaged
-  String get nodeValue => _blink.BlinkAttr.nodeValue_Getter(this);
+  String get nodeValue => _blink.BlinkAttr.instance.nodeValue_Getter_(this);
 
   @DomName('Attr.textContent')
   @DocsEditable()
   @Experimental() // untriaged
-  String get text => _blink.BlinkAttr.textContent_Getter(this);
+  String get text => _blink.BlinkAttr.instance.textContent_Getter_(this);
 
   @DomName('Attr.textContent')
   @DocsEditable()
   @Experimental() // untriaged
-  void set text(String value) => _blink.BlinkAttr.textContent_Setter(this, value);
+  void set text(String value) => _blink.BlinkAttr.instance.textContent_Setter_(this, value);
 
   @DomName('Attr.value')
   @DocsEditable()
-  String get value => _blink.BlinkAttr.value_Getter(this);
+  String get value => _blink.BlinkAttr.instance.value_Getter_(this);
 
   @DomName('Attr.value')
   @DocsEditable()
-  void set value(String value) => _blink.BlinkAttr.value_Setter(this, value);
+  void set value(String value) => _blink.BlinkAttr.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35013,27 +35018,27 @@
 
   @DomName('ClientRect.bottom')
   @DocsEditable()
-  double get bottom => _blink.BlinkClientRect.bottom_Getter(this);
+  double get bottom => _blink.BlinkClientRect.instance.bottom_Getter_(this);
 
   @DomName('ClientRect.height')
   @DocsEditable()
-  double get height => _blink.BlinkClientRect.height_Getter(this);
+  double get height => _blink.BlinkClientRect.instance.height_Getter_(this);
 
   @DomName('ClientRect.left')
   @DocsEditable()
-  double get left => _blink.BlinkClientRect.left_Getter(this);
+  double get left => _blink.BlinkClientRect.instance.left_Getter_(this);
 
   @DomName('ClientRect.right')
   @DocsEditable()
-  double get right => _blink.BlinkClientRect.right_Getter(this);
+  double get right => _blink.BlinkClientRect.instance.right_Getter_(this);
 
   @DomName('ClientRect.top')
   @DocsEditable()
-  double get top => _blink.BlinkClientRect.top_Getter(this);
+  double get top => _blink.BlinkClientRect.instance.top_Getter_(this);
 
   @DomName('ClientRect.width')
   @DocsEditable()
-  double get width => _blink.BlinkClientRect.width_Getter(this);
+  double get width => _blink.BlinkClientRect.instance.width_Getter_(this);
 }
 
 /**
@@ -35087,15 +35092,15 @@
 
   @DomName('ClientRectList.length')
   @DocsEditable()
-  int get length => _blink.BlinkClientRectList.length_Getter(this);
+  int get length => _blink.BlinkClientRectList.instance.length_Getter_(this);
 
   Rectangle operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkClientRectList.item_Callback_1(this, index);
+    return _blink.BlinkClientRectList.instance.item_Callback_1_(this, index);
   }
 
-  Rectangle _nativeIndexedGetter(int index) => _blink.BlinkClientRectList.item_Callback_1(this, index);
+  Rectangle _nativeIndexedGetter(int index) => _blink.BlinkClientRectList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Rectangle value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -35137,7 +35142,7 @@
 
   @DomName('ClientRectList.item')
   @DocsEditable()
-  Rectangle item(int index) => _blink.BlinkClientRectList.item_Callback_1(this, index);
+  Rectangle item(int index) => _blink.BlinkClientRectList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35171,15 +35176,15 @@
 
   @DomName('CSSRuleList.length')
   @DocsEditable()
-  int get length => _blink.BlinkCSSRuleList.length_Getter(this);
+  int get length => _blink.BlinkCSSRuleList.instance.length_Getter_(this);
 
   CssRule operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkCSSRuleList.item_Callback_1(this, index);
+    return _blink.BlinkCSSRuleList.instance.item_Callback_1_(this, index);
   }
 
-  CssRule _nativeIndexedGetter(int index) => _blink.BlinkCSSRuleList.item_Callback_1(this, index);
+  CssRule _nativeIndexedGetter(int index) => _blink.BlinkCSSRuleList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, CssRule value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -35221,7 +35226,7 @@
 
   @DomName('CSSRuleList.item')
   @DocsEditable()
-  CssRule item(int index) => _blink.BlinkCSSRuleList.item_Callback_1(this, index);
+  CssRule item(int index) => _blink.BlinkCSSRuleList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35241,15 +35246,15 @@
 
   @DomName('CSSValueList.length')
   @DocsEditable()
-  int get length => _blink.BlinkCSSValueList.length_Getter(this);
+  int get length => _blink.BlinkCSSValueList.instance.length_Getter_(this);
 
   _CSSValue operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkCSSValueList.item_Callback_1(this, index);
+    return _blink.BlinkCSSValueList.instance.item_Callback_1_(this, index);
   }
 
-  _CSSValue _nativeIndexedGetter(int index) => _blink.BlinkCSSValueList.item_Callback_1(this, index);
+  _CSSValue _nativeIndexedGetter(int index) => _blink.BlinkCSSValueList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, _CSSValue value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -35291,7 +35296,7 @@
 
   @DomName('CSSValueList.item')
   @DocsEditable()
-  _CSSValue item(int index) => _blink.BlinkCSSValueList.item_Callback_1(this, index);
+  _CSSValue item(int index) => _blink.BlinkCSSValueList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35401,26 +35406,26 @@
   factory _DomPoint(num x, num y) => _create(x, y);
 
   @DocsEditable()
-  static _DomPoint _create(x, y) => _blink.BlinkWebKitPoint.constructorCallback_2(x, y);
+  static _DomPoint _create(x, y) => _blink.BlinkWebKitPoint.instance.constructorCallback_2_(x, y);
 
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
   @DomName('WebKitPoint.x')
   @DocsEditable()
-  num get x => _blink.BlinkWebKitPoint.x_Getter(this);
+  num get x => _blink.BlinkWebKitPoint.instance.x_Getter_(this);
 
   @DomName('WebKitPoint.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkWebKitPoint.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkWebKitPoint.instance.x_Setter_(this, value);
 
   @DomName('WebKitPoint.y')
   @DocsEditable()
-  num get y => _blink.BlinkWebKitPoint.y_Getter(this);
+  num get y => _blink.BlinkWebKitPoint.instance.y_Getter_(this);
 
   @DomName('WebKitPoint.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkWebKitPoint.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkWebKitPoint.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35441,59 +35446,59 @@
   @DocsEditable()
   factory _DomRect([num x, num y, num width, num height]) {
     if (height != null) {
-      return _blink.BlinkDOMRect.constructorCallback_4(x, y, width, height);
+      return _blink.BlinkDOMRect.instance.constructorCallback_4_(x, y, width, height);
     }
     if (width != null) {
-      return _blink.BlinkDOMRect.constructorCallback_3(x, y, width);
+      return _blink.BlinkDOMRect.instance.constructorCallback_3_(x, y, width);
     }
     if (y != null) {
-      return _blink.BlinkDOMRect.constructorCallback_2(x, y);
+      return _blink.BlinkDOMRect.instance.constructorCallback_2_(x, y);
     }
     if (x != null) {
-      return _blink.BlinkDOMRect.constructorCallback_1(x);
+      return _blink.BlinkDOMRect.instance.constructorCallback_1_(x);
     }
-    return _blink.BlinkDOMRect.constructorCallback();
+    return _blink.BlinkDOMRect.instance.constructorCallback_0_();
   }
 
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
-  num get height => _blink.BlinkDOMRect.height_Getter(this);
+  num get height => _blink.BlinkDOMRect.instance.height_Getter_(this);
 
   @DomName('DOMRect.height')
   @DocsEditable()
   @Experimental() // untriaged
-  void set height(num value) => _blink.BlinkDOMRect.height_Setter(this, value);
+  void set height(num value) => _blink.BlinkDOMRect.instance.height_Setter_(this, value);
 
   @DomName('DOMRect.width')
   @DocsEditable()
   @Experimental() // untriaged
-  num get width => _blink.BlinkDOMRect.width_Getter(this);
+  num get width => _blink.BlinkDOMRect.instance.width_Getter_(this);
 
   @DomName('DOMRect.width')
   @DocsEditable()
   @Experimental() // untriaged
-  void set width(num value) => _blink.BlinkDOMRect.width_Setter(this, value);
+  void set width(num value) => _blink.BlinkDOMRect.instance.width_Setter_(this, value);
 
   @DomName('DOMRect.x')
   @DocsEditable()
   @Experimental() // untriaged
-  num get x => _blink.BlinkDOMRect.x_Getter(this);
+  num get x => _blink.BlinkDOMRect.instance.x_Getter_(this);
 
   @DomName('DOMRect.x')
   @DocsEditable()
   @Experimental() // untriaged
-  void set x(num value) => _blink.BlinkDOMRect.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkDOMRect.instance.x_Setter_(this, value);
 
   @DomName('DOMRect.y')
   @DocsEditable()
   @Experimental() // untriaged
-  num get y => _blink.BlinkDOMRect.y_Getter(this);
+  num get y => _blink.BlinkDOMRect.instance.y_Getter_(this);
 
   @DomName('DOMRect.y')
   @DocsEditable()
   @Experimental() // untriaged
-  void set y(num value) => _blink.BlinkDOMRect.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkDOMRect.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35546,7 +35551,7 @@
   @DomName('FileReaderSync.FileReaderSync')
   @DocsEditable()
   factory _FileReaderSync() {
-    return _blink.BlinkFileReaderSync.constructorCallback();
+    return _blink.BlinkFileReaderSync.instance.constructorCallback_0_();
   }
 
 }
@@ -35583,15 +35588,15 @@
 
   @DomName('GamepadList.length')
   @DocsEditable()
-  int get length => _blink.BlinkGamepadList.length_Getter(this);
+  int get length => _blink.BlinkGamepadList.instance.length_Getter_(this);
 
   Gamepad operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkGamepadList.item_Callback_1(this, index);
+    return _blink.BlinkGamepadList.instance.item_Callback_1_(this, index);
   }
 
-  Gamepad _nativeIndexedGetter(int index) => _blink.BlinkGamepadList.item_Callback_1(this, index);
+  Gamepad _nativeIndexedGetter(int index) => _blink.BlinkGamepadList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Gamepad value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -35633,7 +35638,7 @@
 
   @DomName('GamepadList.item')
   @DocsEditable()
-  Gamepad item(int index) => _blink.BlinkGamepadList.item_Callback_1(this, index);
+  Gamepad item(int index) => _blink.BlinkGamepadList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35653,7 +35658,7 @@
 
   @DomName('HTMLAllCollection.item')
   @DocsEditable()
-  Element _item(int index) => _blink.BlinkHTMLAllCollection.item_Callback_1(this, index);
+  Element _item(int index) => _blink.BlinkHTMLAllCollection.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -35827,15 +35832,15 @@
 
   @DomName('NamedNodeMap.length')
   @DocsEditable()
-  int get length => _blink.BlinkNamedNodeMap.length_Getter(this);
+  int get length => _blink.BlinkNamedNodeMap.instance.length_Getter_(this);
 
   Node operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkNamedNodeMap.item_Callback_1(this, index);
+    return _blink.BlinkNamedNodeMap.instance.item_Callback_1_(this, index);
   }
 
-  Node _nativeIndexedGetter(int index) => _blink.BlinkNamedNodeMap.item_Callback_1(this, index);
+  Node _nativeIndexedGetter(int index) => _blink.BlinkNamedNodeMap.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Node value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -35877,35 +35882,35 @@
 
   @DomName('NamedNodeMap.__getter__')
   @DocsEditable()
-  Node __getter__(String name) => _blink.BlinkNamedNodeMap.$__getter___Callback_1(this, name);
+  Node __getter__(String name) => _blink.BlinkNamedNodeMap.instance.$__getter___Callback_1_(this, name);
 
   @DomName('NamedNodeMap.getNamedItem')
   @DocsEditable()
-  Node getNamedItem(String name) => _blink.BlinkNamedNodeMap.getNamedItem_Callback_1(this, name);
+  Node getNamedItem(String name) => _blink.BlinkNamedNodeMap.instance.getNamedItem_Callback_1_(this, name);
 
   @DomName('NamedNodeMap.getNamedItemNS')
   @DocsEditable()
-  Node getNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.getNamedItemNS_Callback_2(this, namespaceURI, localName);
+  Node getNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.instance.getNamedItemNS_Callback_2_(this, namespaceURI, localName);
 
   @DomName('NamedNodeMap.item')
   @DocsEditable()
-  Node item(int index) => _blink.BlinkNamedNodeMap.item_Callback_1(this, index);
+  Node item(int index) => _blink.BlinkNamedNodeMap.instance.item_Callback_1_(this, index);
 
   @DomName('NamedNodeMap.removeNamedItem')
   @DocsEditable()
-  Node removeNamedItem(String name) => _blink.BlinkNamedNodeMap.removeNamedItem_Callback_1(this, name);
+  Node removeNamedItem(String name) => _blink.BlinkNamedNodeMap.instance.removeNamedItem_Callback_1_(this, name);
 
   @DomName('NamedNodeMap.removeNamedItemNS')
   @DocsEditable()
-  Node removeNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.removeNamedItemNS_Callback_2(this, namespaceURI, localName);
+  Node removeNamedItemNS(String namespaceURI, String localName) => _blink.BlinkNamedNodeMap.instance.removeNamedItemNS_Callback_2_(this, namespaceURI, localName);
 
   @DomName('NamedNodeMap.setNamedItem')
   @DocsEditable()
-  Node setNamedItem(Node node) => _blink.BlinkNamedNodeMap.setNamedItem_Callback_1(this, node);
+  Node setNamedItem(Node node) => _blink.BlinkNamedNodeMap.instance.setNamedItem_Callback_1_(this, node);
 
   @DomName('NamedNodeMap.setNamedItemNS')
   @DocsEditable()
-  Node setNamedItemNS(Node node) => _blink.BlinkNamedNodeMap.setNamedItemNS_Callback_1(this, node);
+  Node setNamedItemNS(Node node) => _blink.BlinkNamedNodeMap.instance.setNamedItemNS_Callback_1_(this, node);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36000,16 +36005,16 @@
   @DocsEditable()
   factory _Request(input, [Map requestInitDict]) {
     if ((input is String || input == null) && requestInitDict == null) {
-      return _blink.BlinkRequest.constructorCallback_1(input);
+      return _blink.BlinkRequest.instance.constructorCallback_1_(input);
     }
     if ((requestInitDict is Map || requestInitDict == null) && (input is String || input == null)) {
-      return _blink.BlinkRequest.constructorCallback_2(input, requestInitDict);
+      return _blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict);
     }
     if ((input is _Request || input == null) && requestInitDict == null) {
-      return _blink.BlinkRequest.constructorCallback_1(input);
+      return _blink.BlinkRequest.instance.constructorCallback_1_(input);
     }
     if ((requestInitDict is Map || requestInitDict == null) && (input is _Request || input == null)) {
-      return _blink.BlinkRequest.constructorCallback_2(input, requestInitDict);
+      return _blink.BlinkRequest.instance.constructorCallback_2_(input, requestInitDict);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -36017,27 +36022,27 @@
   @DomName('Request.credentials')
   @DocsEditable()
   @Experimental() // untriaged
-  String get credentials => _blink.BlinkRequest.credentials_Getter(this);
+  String get credentials => _blink.BlinkRequest.instance.credentials_Getter_(this);
 
   @DomName('Request.headers')
   @DocsEditable()
   @Experimental() // untriaged
-  Headers get headers => _blink.BlinkRequest.headers_Getter(this);
+  Headers get headers => _blink.BlinkRequest.instance.headers_Getter_(this);
 
   @DomName('Request.mode')
   @DocsEditable()
   @Experimental() // untriaged
-  String get mode => _blink.BlinkRequest.mode_Getter(this);
+  String get mode => _blink.BlinkRequest.instance.mode_Getter_(this);
 
   @DomName('Request.referrer')
   @DocsEditable()
   @Experimental() // untriaged
-  String get referrer => _blink.BlinkRequest.referrer_Getter(this);
+  String get referrer => _blink.BlinkRequest.instance.referrer_Getter_(this);
 
   @DomName('Request.url')
   @DocsEditable()
   @Experimental() // untriaged
-  String get url => _blink.BlinkRequest.url_Getter(this);
+  String get url => _blink.BlinkRequest.instance.url_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36058,16 +36063,16 @@
   @DocsEditable()
   factory _Response(body, [Map responseInitDict]) {
     if ((body is String || body == null) && responseInitDict == null) {
-      return _blink.BlinkResponse.constructorCallback_1(body);
+      return _blink.BlinkResponse.instance.constructorCallback_1_(body);
     }
     if ((responseInitDict is Map || responseInitDict == null) && (body is String || body == null)) {
-      return _blink.BlinkResponse.constructorCallback_2(body, responseInitDict);
+      return _blink.BlinkResponse.instance.constructorCallback_2_(body, responseInitDict);
     }
     if ((body is Blob || body == null) && responseInitDict == null) {
-      return _blink.BlinkResponse.constructorCallback_1(body);
+      return _blink.BlinkResponse.instance.constructorCallback_1_(body);
     }
     if ((responseInitDict is Map || responseInitDict == null) && (body is Blob || body == null)) {
-      return _blink.BlinkResponse.constructorCallback_2(body, responseInitDict);
+      return _blink.BlinkResponse.instance.constructorCallback_2_(body, responseInitDict);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
@@ -36105,15 +36110,15 @@
 
   @DomName('SpeechRecognitionResultList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSpeechRecognitionResultList.length_Getter(this);
+  int get length => _blink.BlinkSpeechRecognitionResultList.instance.length_Getter_(this);
 
   SpeechRecognitionResult operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index);
+    return _blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(this, index);
   }
 
-  SpeechRecognitionResult _nativeIndexedGetter(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index);
+  SpeechRecognitionResult _nativeIndexedGetter(int index) => _blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, SpeechRecognitionResult value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -36155,7 +36160,7 @@
 
   @DomName('SpeechRecognitionResultList.item')
   @DocsEditable()
-  SpeechRecognitionResult item(int index) => _blink.BlinkSpeechRecognitionResultList.item_Callback_1(this, index);
+  SpeechRecognitionResult item(int index) => _blink.BlinkSpeechRecognitionResultList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36173,15 +36178,15 @@
 
   @DomName('StyleSheetList.length')
   @DocsEditable()
-  int get length => _blink.BlinkStyleSheetList.length_Getter(this);
+  int get length => _blink.BlinkStyleSheetList.instance.length_Getter_(this);
 
   StyleSheet operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkStyleSheetList.item_Callback_1(this, index);
+    return _blink.BlinkStyleSheetList.instance.item_Callback_1_(this, index);
   }
 
-  StyleSheet _nativeIndexedGetter(int index) => _blink.BlinkStyleSheetList.item_Callback_1(this, index);
+  StyleSheet _nativeIndexedGetter(int index) => _blink.BlinkStyleSheetList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, StyleSheet value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -36223,11 +36228,11 @@
 
   @DomName('StyleSheetList.__getter__')
   @DocsEditable()
-  CssStyleSheet __getter__(String name) => _blink.BlinkStyleSheetList.$__getter___Callback_1(this, name);
+  CssStyleSheet __getter__(String name) => _blink.BlinkStyleSheetList.instance.$__getter___Callback_1_(this, name);
 
   @DomName('StyleSheetList.item')
   @DocsEditable()
-  StyleSheet item(int index) => _blink.BlinkStyleSheetList.item_Callback_1(this, index);
+  StyleSheet item(int index) => _blink.BlinkStyleSheetList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36282,7 +36287,7 @@
   @DomName('WebKitCSSMatrix.WebKitCSSMatrix')
   @DocsEditable()
   factory _WebKitCSSMatrix([String cssValue]) {
-    return _blink.BlinkWebKitCSSMatrix.constructorCallback_1(cssValue);
+    return _blink.BlinkWebKitCSSMatrix.instance.constructorCallback_1_(cssValue);
   }
 
 }
@@ -36319,22 +36324,22 @@
   @DomName('WindowTimers.clearInterval')
   @DocsEditable()
   @Experimental() // untriaged
-  void _clearInterval(int handle) => _blink.BlinkWindowTimers.clearInterval_Callback_1(this, handle);
+  void _clearInterval(int handle);
 
   @DomName('WindowTimers.clearTimeout')
   @DocsEditable()
   @Experimental() // untriaged
-  void _clearTimeout(int handle) => _blink.BlinkWindowTimers.clearTimeout_Callback_1(this, handle);
+  void _clearTimeout(int handle);
 
   @DomName('WindowTimers.setInterval')
   @DocsEditable()
   @Experimental() // untriaged
-  int _setInterval(Object handler, int timeout) => _blink.BlinkWindowTimers.setInterval_Callback_2(this, handler, timeout);
+  int _setInterval(Object handler, int timeout);
 
   @DomName('WindowTimers.setTimeout')
   @DocsEditable()
   @Experimental() // untriaged
-  int _setTimeout(Object handler, int timeout) => _blink.BlinkWindowTimers.setTimeout_Callback_2(this, handler, timeout);
+  int _setTimeout(Object handler, int timeout);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -36364,7 +36369,7 @@
 @DomName('WorkerNavigator')
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workernavigator
 @Experimental()
-abstract class _WorkerNavigator extends NavigatorCpu implements NavigatorOnLine, NavigatorID {
+abstract class _WorkerNavigator extends NativeFieldWrapperClass2 implements NavigatorCpu, NavigatorOnLine, NavigatorID {
   // To suppress missing implicit constructor warnings.
   factory _WorkerNavigator._() { throw new UnsupportedError("Not supported"); }
 
diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
index 2360ca5..5fe0383 100644
--- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
+++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
@@ -80,45 +80,45 @@
 
   @DomName('IDBCursor.direction')
   @DocsEditable()
-  String get direction => _blink.BlinkIDBCursor.direction_Getter(this);
+  String get direction => _blink.BlinkIDBCursor.instance.direction_Getter_(this);
 
   @DomName('IDBCursor.key')
   @DocsEditable()
-  Object get key => _blink.BlinkIDBCursor.key_Getter(this);
+  Object get key => _blink.BlinkIDBCursor.instance.key_Getter_(this);
 
   @DomName('IDBCursor.primaryKey')
   @DocsEditable()
-  Object get primaryKey => _blink.BlinkIDBCursor.primaryKey_Getter(this);
+  Object get primaryKey => _blink.BlinkIDBCursor.instance.primaryKey_Getter_(this);
 
   @DomName('IDBCursor.source')
   @DocsEditable()
-  Object get source => _blink.BlinkIDBCursor.source_Getter(this);
+  Object get source => _blink.BlinkIDBCursor.instance.source_Getter_(this);
 
   @DomName('IDBCursor.advance')
   @DocsEditable()
-  void advance(int count) => _blink.BlinkIDBCursor.advance_Callback_1(this, count);
+  void advance(int count) => _blink.BlinkIDBCursor.instance.advance_Callback_1_(this, count);
 
   @DomName('IDBCursor.continuePrimaryKey')
   @DocsEditable()
   @Experimental() // untriaged
-  void continuePrimaryKey(Object key, Object primaryKey) => _blink.BlinkIDBCursor.continuePrimaryKey_Callback_2(this, key, primaryKey);
+  void continuePrimaryKey(Object key, Object primaryKey) => _blink.BlinkIDBCursor.instance.continuePrimaryKey_Callback_2_(this, key, primaryKey);
 
   @DomName('IDBCursor.delete')
   @DocsEditable()
-  Request _delete() => _blink.BlinkIDBCursor.delete_Callback(this);
+  Request _delete() => _blink.BlinkIDBCursor.instance.delete_Callback_0_(this);
 
   void next([Object key]) {
     if (key != null) {
-      _blink.BlinkIDBCursor.continue_Callback_1(this, key);
+      _blink.BlinkIDBCursor.instance.continue_Callback_1_(this, key);
       return;
     }
-    _blink.BlinkIDBCursor.continue_Callback(this);
+    _blink.BlinkIDBCursor.instance.continue_Callback_0_(this);
     return;
   }
 
   @DomName('IDBCursor.update')
   @DocsEditable()
-  Request _update(Object value) => _blink.BlinkIDBCursor.update_Callback_1(this, value);
+  Request _update(Object value) => _blink.BlinkIDBCursor.instance.update_Callback_1_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -137,7 +137,7 @@
 
   @DomName('IDBCursorWithValue.value')
   @DocsEditable()
-  Object get value => _blink.BlinkIDBCursorWithValue.value_Getter(this);
+  Object get value => _blink.BlinkIDBCursorWithValue.instance.value_Getter_(this);
 
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
@@ -220,72 +220,72 @@
 
   @DomName('IDBDatabase.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBDatabase.name_Getter(this);
+  String get name => _blink.BlinkIDBDatabase.instance.name_Getter_(this);
 
   @DomName('IDBDatabase.objectStoreNames')
   @DocsEditable()
-  List<String> get objectStoreNames => _blink.BlinkIDBDatabase.objectStoreNames_Getter(this);
+  List<String> get objectStoreNames => _blink.BlinkIDBDatabase.instance.objectStoreNames_Getter_(this);
 
   @DomName('IDBDatabase.version')
   @DocsEditable()
-  Object get version => _blink.BlinkIDBDatabase.version_Getter(this);
+  Object get version => _blink.BlinkIDBDatabase.instance.version_Getter_(this);
 
   @DomName('IDBDatabase.close')
   @DocsEditable()
-  void close() => _blink.BlinkIDBDatabase.close_Callback(this);
+  void close() => _blink.BlinkIDBDatabase.instance.close_Callback_0_(this);
 
   ObjectStore _createObjectStore(String name, [Map options]) {
     if (options != null) {
-      return _blink.BlinkIDBDatabase.createObjectStore_Callback_2(this, name, options);
+      return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_2_(this, name, options);
     }
-    return _blink.BlinkIDBDatabase.createObjectStore_Callback_1(this, name);
+    return _blink.BlinkIDBDatabase.instance.createObjectStore_Callback_1_(this, name);
   }
 
   @DomName('IDBDatabase.deleteObjectStore')
   @DocsEditable()
-  void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.deleteObjectStore_Callback_1(this, name);
+  void deleteObjectStore(String name) => _blink.BlinkIDBDatabase.instance.deleteObjectStore_Callback_1_(this, name);
 
   Transaction transaction(storeName_OR_storeNames, [String mode]) {
     if ((storeName_OR_storeNames is String || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeName_OR_storeNames);
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is String || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeName_OR_storeNames, mode);
     }
     if ((storeName_OR_storeNames is List<String> || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeName_OR_storeNames);
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is List<String> || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeName_OR_storeNames, mode);
     }
     if ((storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null) && mode == null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName_OR_storeNames);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeName_OR_storeNames);
     }
     if ((mode is String || mode == null) && (storeName_OR_storeNames is DomStringList || storeName_OR_storeNames == null)) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName_OR_storeNames, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeName_OR_storeNames, mode);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   Transaction transactionList(List<String> storeNames, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeNames, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeNames, mode);
     }
-    return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeNames);
+    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeNames);
   }
 
   Transaction transactionStore(String storeName, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeName, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeName, mode);
     }
-    return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeName);
+    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeName);
   }
 
   Transaction transactionStores(List<String> storeNames, [String mode]) {
     if (mode != null) {
-      return _blink.BlinkIDBDatabase.transaction_Callback_2(this, storeNames, mode);
+      return _blink.BlinkIDBDatabase.instance.transaction_Callback_2_(this, storeNames, mode);
     }
-    return _blink.BlinkIDBDatabase.transaction_Callback_1(this, storeNames);
+    return _blink.BlinkIDBDatabase.instance.transaction_Callback_1_(this, storeNames);
   }
 
   /// Stream of `abort` events handled by this [Database].
@@ -402,17 +402,17 @@
 
   @DomName('IDBFactory.cmp')
   @DocsEditable()
-  int cmp(Object first, Object second) => _blink.BlinkIDBFactory.cmp_Callback_2(this, first, second);
+  int cmp(Object first, Object second) => _blink.BlinkIDBFactory.instance.cmp_Callback_2_(this, first, second);
 
   @DomName('IDBFactory.deleteDatabase')
   @DocsEditable()
-  OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.deleteDatabase_Callback_1(this, name);
+  OpenDBRequest _deleteDatabase(String name) => _blink.BlinkIDBFactory.instance.deleteDatabase_Callback_1_(this, name);
 
   OpenDBRequest _open(String name, [int version]) {
     if (version != null) {
-      return _blink.BlinkIDBFactory.open_Callback_2(this, name, version);
+      return _blink.BlinkIDBFactory.instance.open_Callback_2_(this, name, version);
     }
-    return _blink.BlinkIDBFactory.open_Callback_1(this, name);
+    return _blink.BlinkIDBFactory.instance.open_Callback_1_(this, name);
   }
 
   @DomName('IDBFactory.webkitGetDatabaseNames')
@@ -420,7 +420,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  Request _webkitGetDatabaseNames() => _blink.BlinkIDBFactory.webkitGetDatabaseNames_Callback(this);
+  Request _webkitGetDatabaseNames() => _blink.BlinkIDBFactory.instance.webkitGetDatabaseNames_Callback_0_(this);
 
 }
 
@@ -540,48 +540,48 @@
 
   @DomName('IDBIndex.keyPath')
   @DocsEditable()
-  Object get keyPath => _blink.BlinkIDBIndex.keyPath_Getter(this);
+  Object get keyPath => _blink.BlinkIDBIndex.instance.keyPath_Getter_(this);
 
   @DomName('IDBIndex.multiEntry')
   @DocsEditable()
-  bool get multiEntry => _blink.BlinkIDBIndex.multiEntry_Getter(this);
+  bool get multiEntry => _blink.BlinkIDBIndex.instance.multiEntry_Getter_(this);
 
   @DomName('IDBIndex.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBIndex.name_Getter(this);
+  String get name => _blink.BlinkIDBIndex.instance.name_Getter_(this);
 
   @DomName('IDBIndex.objectStore')
   @DocsEditable()
-  ObjectStore get objectStore => _blink.BlinkIDBIndex.objectStore_Getter(this);
+  ObjectStore get objectStore => _blink.BlinkIDBIndex.instance.objectStore_Getter_(this);
 
   @DomName('IDBIndex.unique')
   @DocsEditable()
-  bool get unique => _blink.BlinkIDBIndex.unique_Getter(this);
+  bool get unique => _blink.BlinkIDBIndex.instance.unique_Getter_(this);
 
   @DomName('IDBIndex.count')
   @DocsEditable()
-  Request _count(Object key) => _blink.BlinkIDBIndex.count_Callback_1(this, key);
+  Request _count(Object key) => _blink.BlinkIDBIndex.instance.count_Callback_1_(this, key);
 
   @DomName('IDBIndex.get')
   @DocsEditable()
-  Request _get(Object key) => _blink.BlinkIDBIndex.get_Callback_1(this, key);
+  Request _get(Object key) => _blink.BlinkIDBIndex.instance.get_Callback_1_(this, key);
 
   @DomName('IDBIndex.getKey')
   @DocsEditable()
-  Request _getKey(Object key) => _blink.BlinkIDBIndex.getKey_Callback_1(this, key);
+  Request _getKey(Object key) => _blink.BlinkIDBIndex.instance.getKey_Callback_1_(this, key);
 
   Request _openCursor(Object range, [String direction]) {
     if (direction != null) {
-      return _blink.BlinkIDBIndex.openCursor_Callback_2(this, range, direction);
+      return _blink.BlinkIDBIndex.instance.openCursor_Callback_2_(this, range, direction);
     }
-    return _blink.BlinkIDBIndex.openCursor_Callback_1(this, range);
+    return _blink.BlinkIDBIndex.instance.openCursor_Callback_1_(this, range);
   }
 
   Request _openKeyCursor(Object range, [String direction]) {
     if (direction != null) {
-      return _blink.BlinkIDBIndex.openKeyCursor_Callback_2(this, range, direction);
+      return _blink.BlinkIDBIndex.instance.openKeyCursor_Callback_2_(this, range, direction);
     }
-    return _blink.BlinkIDBIndex.openKeyCursor_Callback_1(this, range);
+    return _blink.BlinkIDBIndex.instance.openKeyCursor_Callback_1_(this, range);
   }
 
 }
@@ -616,47 +616,47 @@
 
   @DomName('IDBKeyRange.lower')
   @DocsEditable()
-  Object get lower => _blink.BlinkIDBKeyRange.lower_Getter(this);
+  Object get lower => _blink.BlinkIDBKeyRange.instance.lower_Getter_(this);
 
   @DomName('IDBKeyRange.lowerOpen')
   @DocsEditable()
-  bool get lowerOpen => _blink.BlinkIDBKeyRange.lowerOpen_Getter(this);
+  bool get lowerOpen => _blink.BlinkIDBKeyRange.instance.lowerOpen_Getter_(this);
 
   @DomName('IDBKeyRange.upper')
   @DocsEditable()
-  Object get upper => _blink.BlinkIDBKeyRange.upper_Getter(this);
+  Object get upper => _blink.BlinkIDBKeyRange.instance.upper_Getter_(this);
 
   @DomName('IDBKeyRange.upperOpen')
   @DocsEditable()
-  bool get upperOpen => _blink.BlinkIDBKeyRange.upperOpen_Getter(this);
+  bool get upperOpen => _blink.BlinkIDBKeyRange.instance.upperOpen_Getter_(this);
 
   static KeyRange bound_(Object lower, Object upper, [bool lowerOpen, bool upperOpen]) {
     if (upperOpen != null) {
-      return _blink.BlinkIDBKeyRange.bound_Callback_4(lower, upper, lowerOpen, upperOpen);
+      return _blink.BlinkIDBKeyRange.instance.bound_Callback_4_(lower, upper, lowerOpen, upperOpen);
     }
     if (lowerOpen != null) {
-      return _blink.BlinkIDBKeyRange.bound_Callback_3(lower, upper, lowerOpen);
+      return _blink.BlinkIDBKeyRange.instance.bound_Callback_3_(lower, upper, lowerOpen);
     }
-    return _blink.BlinkIDBKeyRange.bound_Callback_2(lower, upper);
+    return _blink.BlinkIDBKeyRange.instance.bound_Callback_2_(lower, upper);
   }
 
   static KeyRange lowerBound_(Object bound, [bool open]) {
     if (open != null) {
-      return _blink.BlinkIDBKeyRange.lowerBound_Callback_2(bound, open);
+      return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_2_(bound, open);
     }
-    return _blink.BlinkIDBKeyRange.lowerBound_Callback_1(bound);
+    return _blink.BlinkIDBKeyRange.instance.lowerBound_Callback_1_(bound);
   }
 
   @DomName('IDBKeyRange.only_')
   @DocsEditable()
   @Experimental() // non-standard
-  static KeyRange only_(Object value) => _blink.BlinkIDBKeyRange.only_Callback_1(value);
+  static KeyRange only_(Object value) => _blink.BlinkIDBKeyRange.instance.only_Callback_1_(value);
 
   static KeyRange upperBound_(Object bound, [bool open]) {
     if (open != null) {
-      return _blink.BlinkIDBKeyRange.upperBound_Callback_2(bound, open);
+      return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_2_(bound, open);
     }
-    return _blink.BlinkIDBKeyRange.upperBound_Callback_1(bound);
+    return _blink.BlinkIDBKeyRange.instance.upperBound_Callback_1_(bound);
   }
 
 }
@@ -800,90 +800,90 @@
 
   @DomName('IDBObjectStore.autoIncrement')
   @DocsEditable()
-  bool get autoIncrement => _blink.BlinkIDBObjectStore.autoIncrement_Getter(this);
+  bool get autoIncrement => _blink.BlinkIDBObjectStore.instance.autoIncrement_Getter_(this);
 
   @DomName('IDBObjectStore.indexNames')
   @DocsEditable()
-  List<String> get indexNames => _blink.BlinkIDBObjectStore.indexNames_Getter(this);
+  List<String> get indexNames => _blink.BlinkIDBObjectStore.instance.indexNames_Getter_(this);
 
   @DomName('IDBObjectStore.keyPath')
   @DocsEditable()
-  Object get keyPath => _blink.BlinkIDBObjectStore.keyPath_Getter(this);
+  Object get keyPath => _blink.BlinkIDBObjectStore.instance.keyPath_Getter_(this);
 
   @DomName('IDBObjectStore.name')
   @DocsEditable()
-  String get name => _blink.BlinkIDBObjectStore.name_Getter(this);
+  String get name => _blink.BlinkIDBObjectStore.instance.name_Getter_(this);
 
   @DomName('IDBObjectStore.transaction')
   @DocsEditable()
-  Transaction get transaction => _blink.BlinkIDBObjectStore.transaction_Getter(this);
+  Transaction get transaction => _blink.BlinkIDBObjectStore.instance.transaction_Getter_(this);
 
   Request _add(Object value, [Object key]) {
     if (key != null) {
-      return _blink.BlinkIDBObjectStore.add_Callback_2(this, value, key);
+      return _blink.BlinkIDBObjectStore.instance.add_Callback_2_(this, value, key);
     }
-    return _blink.BlinkIDBObjectStore.add_Callback_1(this, value);
+    return _blink.BlinkIDBObjectStore.instance.add_Callback_1_(this, value);
   }
 
   @DomName('IDBObjectStore.clear')
   @DocsEditable()
-  Request _clear() => _blink.BlinkIDBObjectStore.clear_Callback(this);
+  Request _clear() => _blink.BlinkIDBObjectStore.instance.clear_Callback_0_(this);
 
   @DomName('IDBObjectStore.count')
   @DocsEditable()
-  Request _count(Object key) => _blink.BlinkIDBObjectStore.count_Callback_1(this, key);
+  Request _count(Object key) => _blink.BlinkIDBObjectStore.instance.count_Callback_1_(this, key);
 
   Index _createIndex(String name, keyPath, [Map options]) {
     if ((keyPath is String || keyPath == null) && (name is String || name == null) && options == null) {
-      return _blink.BlinkIDBObjectStore.createIndex_Callback_2(this, name, keyPath);
+      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(this, name, keyPath);
     }
     if ((options is Map || options == null) && (keyPath is String || keyPath == null) && (name is String || name == null)) {
-      return _blink.BlinkIDBObjectStore.createIndex_Callback_3(this, name, keyPath, options);
+      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(this, name, keyPath, options);
     }
     if ((keyPath is List<String> || keyPath == null) && (name is String || name == null) && options == null) {
-      return _blink.BlinkIDBObjectStore.createIndex_Callback_2(this, name, keyPath);
+      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_2_(this, name, keyPath);
     }
     if ((options is Map || options == null) && (keyPath is List<String> || keyPath == null) && (name is String || name == null)) {
-      return _blink.BlinkIDBObjectStore.createIndex_Callback_3(this, name, keyPath, options);
+      return _blink.BlinkIDBObjectStore.instance.createIndex_Callback_3_(this, name, keyPath, options);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
   }
 
   @DomName('IDBObjectStore.delete')
   @DocsEditable()
-  Request _delete(Object key) => _blink.BlinkIDBObjectStore.delete_Callback_1(this, key);
+  Request _delete(Object key) => _blink.BlinkIDBObjectStore.instance.delete_Callback_1_(this, key);
 
   @DomName('IDBObjectStore.deleteIndex')
   @DocsEditable()
-  void deleteIndex(String name) => _blink.BlinkIDBObjectStore.deleteIndex_Callback_1(this, name);
+  void deleteIndex(String name) => _blink.BlinkIDBObjectStore.instance.deleteIndex_Callback_1_(this, name);
 
   @DomName('IDBObjectStore.get')
   @DocsEditable()
-  Request _get(Object key) => _blink.BlinkIDBObjectStore.get_Callback_1(this, key);
+  Request _get(Object key) => _blink.BlinkIDBObjectStore.instance.get_Callback_1_(this, key);
 
   @DomName('IDBObjectStore.index')
   @DocsEditable()
-  Index index(String name) => _blink.BlinkIDBObjectStore.index_Callback_1(this, name);
+  Index index(String name) => _blink.BlinkIDBObjectStore.instance.index_Callback_1_(this, name);
 
   Request _openCursor(Object range, [String direction]) {
     if (direction != null) {
-      return _blink.BlinkIDBObjectStore.openCursor_Callback_2(this, range, direction);
+      return _blink.BlinkIDBObjectStore.instance.openCursor_Callback_2_(this, range, direction);
     }
-    return _blink.BlinkIDBObjectStore.openCursor_Callback_1(this, range);
+    return _blink.BlinkIDBObjectStore.instance.openCursor_Callback_1_(this, range);
   }
 
   Request openKeyCursor(Object range, [String direction]) {
     if (direction != null) {
-      return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_2(this, range, direction);
+      return _blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_2_(this, range, direction);
     }
-    return _blink.BlinkIDBObjectStore.openKeyCursor_Callback_1(this, range);
+    return _blink.BlinkIDBObjectStore.instance.openKeyCursor_Callback_1_(this, range);
   }
 
   Request _put(Object value, [Object key]) {
     if (key != null) {
-      return _blink.BlinkIDBObjectStore.put_Callback_2(this, value, key);
+      return _blink.BlinkIDBObjectStore.instance.put_Callback_2_(this, value, key);
     }
-    return _blink.BlinkIDBObjectStore.put_Callback_1(this, value);
+    return _blink.BlinkIDBObjectStore.instance.put_Callback_1_(this, value);
   }
 
 
@@ -995,23 +995,23 @@
 
   @DomName('IDBRequest.error')
   @DocsEditable()
-  DomError get error => _blink.BlinkIDBRequest.error_Getter(this);
+  DomError get error => _blink.BlinkIDBRequest.instance.error_Getter_(this);
 
   @DomName('IDBRequest.readyState')
   @DocsEditable()
-  String get readyState => _blink.BlinkIDBRequest.readyState_Getter(this);
+  String get readyState => _blink.BlinkIDBRequest.instance.readyState_Getter_(this);
 
   @DomName('IDBRequest.result')
   @DocsEditable()
-  Object get result => _blink.BlinkIDBRequest.result_Getter(this);
+  Object get result => _blink.BlinkIDBRequest.instance.result_Getter_(this);
 
   @DomName('IDBRequest.source')
   @DocsEditable()
-  Object get source => _blink.BlinkIDBRequest.source_Getter(this);
+  Object get source => _blink.BlinkIDBRequest.instance.source_Getter_(this);
 
   @DomName('IDBRequest.transaction')
   @DocsEditable()
-  Transaction get transaction => _blink.BlinkIDBRequest.transaction_Getter(this);
+  Transaction get transaction => _blink.BlinkIDBRequest.instance.transaction_Getter_(this);
 
   /// Stream of `error` events handled by this [Request].
   @DomName('IDBRequest.onerror')
@@ -1096,23 +1096,23 @@
 
   @DomName('IDBTransaction.db')
   @DocsEditable()
-  Database get db => _blink.BlinkIDBTransaction.db_Getter(this);
+  Database get db => _blink.BlinkIDBTransaction.instance.db_Getter_(this);
 
   @DomName('IDBTransaction.error')
   @DocsEditable()
-  DomError get error => _blink.BlinkIDBTransaction.error_Getter(this);
+  DomError get error => _blink.BlinkIDBTransaction.instance.error_Getter_(this);
 
   @DomName('IDBTransaction.mode')
   @DocsEditable()
-  String get mode => _blink.BlinkIDBTransaction.mode_Getter(this);
+  String get mode => _blink.BlinkIDBTransaction.instance.mode_Getter_(this);
 
   @DomName('IDBTransaction.abort')
   @DocsEditable()
-  void abort() => _blink.BlinkIDBTransaction.abort_Callback(this);
+  void abort() => _blink.BlinkIDBTransaction.instance.abort_Callback_0_(this);
 
   @DomName('IDBTransaction.objectStore')
   @DocsEditable()
-  ObjectStore objectStore(String name) => _blink.BlinkIDBTransaction.objectStore_Callback_1(this, name);
+  ObjectStore objectStore(String name) => _blink.BlinkIDBTransaction.instance.objectStore_Callback_1_(this, name);
 
   /// Stream of `abort` events handled by this [Transaction].
   @DomName('IDBTransaction.onabort')
@@ -1147,19 +1147,19 @@
   @DomName('IDBVersionChangeEvent.dataLoss')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dataLoss => _blink.BlinkIDBVersionChangeEvent.dataLoss_Getter(this);
+  String get dataLoss => _blink.BlinkIDBVersionChangeEvent.instance.dataLoss_Getter_(this);
 
   @DomName('IDBVersionChangeEvent.dataLossMessage')
   @DocsEditable()
   @Experimental() // untriaged
-  String get dataLossMessage => _blink.BlinkIDBVersionChangeEvent.dataLossMessage_Getter(this);
+  String get dataLossMessage => _blink.BlinkIDBVersionChangeEvent.instance.dataLossMessage_Getter_(this);
 
   @DomName('IDBVersionChangeEvent.newVersion')
   @DocsEditable()
-  int get newVersion => _blink.BlinkIDBVersionChangeEvent.newVersion_Getter(this);
+  int get newVersion => _blink.BlinkIDBVersionChangeEvent.instance.newVersion_Getter_(this);
 
   @DomName('IDBVersionChangeEvent.oldVersion')
   @DocsEditable()
-  int get oldVersion => _blink.BlinkIDBVersionChangeEvent.oldVersion_Getter(this);
+  int get oldVersion => _blink.BlinkIDBVersionChangeEvent.instance.oldVersion_Getter_(this);
 
 }
diff --git a/sdk/lib/internal/internal.dart b/sdk/lib/internal/internal.dart
index 2d41870..10b9613 100644
--- a/sdk/lib/internal/internal.dart
+++ b/sdk/lib/internal/internal.dart
@@ -16,3 +16,32 @@
 part 'print.dart';
 part 'sort.dart';
 part 'symbol.dart';
+
+// Powers of 10 up to 10^22 are representable as doubles.
+// Powers of 10 above that are only approximate due to lack of precission.
+// Used by double-parsing.
+const POWERS_OF_TEN = const [
+                        1.0,  /*  0 */
+                       10.0,
+                      100.0,
+                     1000.0,
+                    10000.0,
+                   100000.0,  /*  5 */
+                  1000000.0,
+                 10000000.0,
+                100000000.0,
+               1000000000.0,
+              10000000000.0,  /* 10 */
+             100000000000.0,
+            1000000000000.0,
+           10000000000000.0,
+          100000000000000.0,
+         1000000000000000.0,  /*  15 */
+        10000000000000000.0,
+       100000000000000000.0,
+      1000000000000000000.0,
+     10000000000000000000.0,
+    100000000000000000000.0,  /*  20 */
+   1000000000000000000000.0,
+  10000000000000000000000.0,
+];
diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart
index 5cba7fb..0cd0c6a 100644
--- a/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/sdk/lib/svg/dartium/svg_dartium.dart
@@ -198,11 +198,11 @@
 
   @DomName('SVGAElement.target')
   @DocsEditable()
-  AnimatedString get target => _blink.BlinkSVGAElement.target_Getter(this);
+  AnimatedString get target => _blink.BlinkSVGAElement.instance.target_Getter_(this);
 
   @DomName('SVGAElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGAElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGAElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -237,23 +237,23 @@
 
   @DomName('SVGAltGlyphElement.format')
   @DocsEditable()
-  String get format => _blink.BlinkSVGAltGlyphElement.format_Getter(this);
+  String get format => _blink.BlinkSVGAltGlyphElement.instance.format_Getter_(this);
 
   @DomName('SVGAltGlyphElement.format')
   @DocsEditable()
-  void set format(String value) => _blink.BlinkSVGAltGlyphElement.format_Setter(this, value);
+  void set format(String value) => _blink.BlinkSVGAltGlyphElement.instance.format_Setter_(this, value);
 
   @DomName('SVGAltGlyphElement.glyphRef')
   @DocsEditable()
-  String get glyphRef => _blink.BlinkSVGAltGlyphElement.glyphRef_Getter(this);
+  String get glyphRef => _blink.BlinkSVGAltGlyphElement.instance.glyphRef_Getter_(this);
 
   @DomName('SVGAltGlyphElement.glyphRef')
   @DocsEditable()
-  void set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.glyphRef_Setter(this, value);
+  void set glyphRef(String value) => _blink.BlinkSVGAltGlyphElement.instance.glyphRef_Setter_(this, value);
 
   @DomName('SVGAltGlyphElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGAltGlyphElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGAltGlyphElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -292,39 +292,39 @@
 
   @DomName('SVGAngle.unitType')
   @DocsEditable()
-  int get unitType => _blink.BlinkSVGAngle.unitType_Getter(this);
+  int get unitType => _blink.BlinkSVGAngle.instance.unitType_Getter_(this);
 
   @DomName('SVGAngle.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGAngle.value_Getter(this);
+  num get value => _blink.BlinkSVGAngle.instance.value_Getter_(this);
 
   @DomName('SVGAngle.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGAngle.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkSVGAngle.instance.value_Setter_(this, value);
 
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
-  String get valueAsString => _blink.BlinkSVGAngle.valueAsString_Getter(this);
+  String get valueAsString => _blink.BlinkSVGAngle.instance.valueAsString_Getter_(this);
 
   @DomName('SVGAngle.valueAsString')
   @DocsEditable()
-  void set valueAsString(String value) => _blink.BlinkSVGAngle.valueAsString_Setter(this, value);
+  void set valueAsString(String value) => _blink.BlinkSVGAngle.instance.valueAsString_Setter_(this, value);
 
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
-  num get valueInSpecifiedUnits => _blink.BlinkSVGAngle.valueInSpecifiedUnits_Getter(this);
+  num get valueInSpecifiedUnits => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Getter_(this);
 
   @DomName('SVGAngle.valueInSpecifiedUnits')
   @DocsEditable()
-  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.valueInSpecifiedUnits_Setter(this, value);
+  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGAngle.instance.valueInSpecifiedUnits_Setter_(this, value);
 
   @DomName('SVGAngle.convertToSpecifiedUnits')
   @DocsEditable()
-  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGAngle.convertToSpecifiedUnits_Callback_1(this, unitType);
+  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGAngle.instance.convertToSpecifiedUnits_Callback_1_(this, unitType);
 
   @DomName('SVGAngle.newValueSpecifiedUnits')
   @DocsEditable()
-  void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGAngle.newValueSpecifiedUnits_Callback_2(this, unitType, valueInSpecifiedUnits);
+  void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGAngle.instance.newValueSpecifiedUnits_Callback_2_(this, unitType, valueInSpecifiedUnits);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -436,11 +436,11 @@
 
   @DomName('SVGAnimatedAngle.animVal')
   @DocsEditable()
-  Angle get animVal => _blink.BlinkSVGAnimatedAngle.animVal_Getter(this);
+  Angle get animVal => _blink.BlinkSVGAnimatedAngle.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedAngle.baseVal')
   @DocsEditable()
-  Angle get baseVal => _blink.BlinkSVGAnimatedAngle.baseVal_Getter(this);
+  Angle get baseVal => _blink.BlinkSVGAnimatedAngle.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -459,15 +459,15 @@
 
   @DomName('SVGAnimatedBoolean.animVal')
   @DocsEditable()
-  bool get animVal => _blink.BlinkSVGAnimatedBoolean.animVal_Getter(this);
+  bool get animVal => _blink.BlinkSVGAnimatedBoolean.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedBoolean.baseVal')
   @DocsEditable()
-  bool get baseVal => _blink.BlinkSVGAnimatedBoolean.baseVal_Getter(this);
+  bool get baseVal => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Getter_(this);
 
   @DomName('SVGAnimatedBoolean.baseVal')
   @DocsEditable()
-  void set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.baseVal_Setter(this, value);
+  void set baseVal(bool value) => _blink.BlinkSVGAnimatedBoolean.instance.baseVal_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -486,15 +486,15 @@
 
   @DomName('SVGAnimatedEnumeration.animVal')
   @DocsEditable()
-  int get animVal => _blink.BlinkSVGAnimatedEnumeration.animVal_Getter(this);
+  int get animVal => _blink.BlinkSVGAnimatedEnumeration.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedEnumeration.baseVal')
   @DocsEditable()
-  int get baseVal => _blink.BlinkSVGAnimatedEnumeration.baseVal_Getter(this);
+  int get baseVal => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Getter_(this);
 
   @DomName('SVGAnimatedEnumeration.baseVal')
   @DocsEditable()
-  void set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.baseVal_Setter(this, value);
+  void set baseVal(int value) => _blink.BlinkSVGAnimatedEnumeration.instance.baseVal_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -513,15 +513,15 @@
 
   @DomName('SVGAnimatedInteger.animVal')
   @DocsEditable()
-  int get animVal => _blink.BlinkSVGAnimatedInteger.animVal_Getter(this);
+  int get animVal => _blink.BlinkSVGAnimatedInteger.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedInteger.baseVal')
   @DocsEditable()
-  int get baseVal => _blink.BlinkSVGAnimatedInteger.baseVal_Getter(this);
+  int get baseVal => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Getter_(this);
 
   @DomName('SVGAnimatedInteger.baseVal')
   @DocsEditable()
-  void set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.baseVal_Setter(this, value);
+  void set baseVal(int value) => _blink.BlinkSVGAnimatedInteger.instance.baseVal_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -540,11 +540,11 @@
 
   @DomName('SVGAnimatedLength.animVal')
   @DocsEditable()
-  Length get animVal => _blink.BlinkSVGAnimatedLength.animVal_Getter(this);
+  Length get animVal => _blink.BlinkSVGAnimatedLength.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedLength.baseVal')
   @DocsEditable()
-  Length get baseVal => _blink.BlinkSVGAnimatedLength.baseVal_Getter(this);
+  Length get baseVal => _blink.BlinkSVGAnimatedLength.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -563,11 +563,11 @@
 
   @DomName('SVGAnimatedLengthList.animVal')
   @DocsEditable()
-  LengthList get animVal => _blink.BlinkSVGAnimatedLengthList.animVal_Getter(this);
+  LengthList get animVal => _blink.BlinkSVGAnimatedLengthList.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedLengthList.baseVal')
   @DocsEditable()
-  LengthList get baseVal => _blink.BlinkSVGAnimatedLengthList.baseVal_Getter(this);
+  LengthList get baseVal => _blink.BlinkSVGAnimatedLengthList.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -586,15 +586,15 @@
 
   @DomName('SVGAnimatedNumber.animVal')
   @DocsEditable()
-  double get animVal => _blink.BlinkSVGAnimatedNumber.animVal_Getter(this);
+  double get animVal => _blink.BlinkSVGAnimatedNumber.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
-  num get baseVal => _blink.BlinkSVGAnimatedNumber.baseVal_Getter(this);
+  num get baseVal => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Getter_(this);
 
   @DomName('SVGAnimatedNumber.baseVal')
   @DocsEditable()
-  void set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.baseVal_Setter(this, value);
+  void set baseVal(num value) => _blink.BlinkSVGAnimatedNumber.instance.baseVal_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -613,11 +613,11 @@
 
   @DomName('SVGAnimatedNumberList.animVal')
   @DocsEditable()
-  NumberList get animVal => _blink.BlinkSVGAnimatedNumberList.animVal_Getter(this);
+  NumberList get animVal => _blink.BlinkSVGAnimatedNumberList.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedNumberList.baseVal')
   @DocsEditable()
-  NumberList get baseVal => _blink.BlinkSVGAnimatedNumberList.baseVal_Getter(this);
+  NumberList get baseVal => _blink.BlinkSVGAnimatedNumberList.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -636,11 +636,11 @@
 
   @DomName('SVGAnimatedPreserveAspectRatio.animVal')
   @DocsEditable()
-  PreserveAspectRatio get animVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.animVal_Getter(this);
+  PreserveAspectRatio get animVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedPreserveAspectRatio.baseVal')
   @DocsEditable()
-  PreserveAspectRatio get baseVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.baseVal_Getter(this);
+  PreserveAspectRatio get baseVal => _blink.BlinkSVGAnimatedPreserveAspectRatio.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -659,11 +659,11 @@
 
   @DomName('SVGAnimatedRect.animVal')
   @DocsEditable()
-  Rect get animVal => _blink.BlinkSVGAnimatedRect.animVal_Getter(this);
+  Rect get animVal => _blink.BlinkSVGAnimatedRect.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedRect.baseVal')
   @DocsEditable()
-  Rect get baseVal => _blink.BlinkSVGAnimatedRect.baseVal_Getter(this);
+  Rect get baseVal => _blink.BlinkSVGAnimatedRect.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -682,15 +682,15 @@
 
   @DomName('SVGAnimatedString.animVal')
   @DocsEditable()
-  String get animVal => _blink.BlinkSVGAnimatedString.animVal_Getter(this);
+  String get animVal => _blink.BlinkSVGAnimatedString.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedString.baseVal')
   @DocsEditable()
-  String get baseVal => _blink.BlinkSVGAnimatedString.baseVal_Getter(this);
+  String get baseVal => _blink.BlinkSVGAnimatedString.instance.baseVal_Getter_(this);
 
   @DomName('SVGAnimatedString.baseVal')
   @DocsEditable()
-  void set baseVal(String value) => _blink.BlinkSVGAnimatedString.baseVal_Setter(this, value);
+  void set baseVal(String value) => _blink.BlinkSVGAnimatedString.instance.baseVal_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -709,11 +709,11 @@
 
   @DomName('SVGAnimatedTransformList.animVal')
   @DocsEditable()
-  TransformList get animVal => _blink.BlinkSVGAnimatedTransformList.animVal_Getter(this);
+  TransformList get animVal => _blink.BlinkSVGAnimatedTransformList.instance.animVal_Getter_(this);
 
   @DomName('SVGAnimatedTransformList.baseVal')
   @DocsEditable()
-  TransformList get baseVal => _blink.BlinkSVGAnimatedTransformList.baseVal_Getter(this);
+  TransformList get baseVal => _blink.BlinkSVGAnimatedTransformList.instance.baseVal_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -742,51 +742,51 @@
 
   @DomName('SVGAnimationElement.targetElement')
   @DocsEditable()
-  SvgElement get targetElement => _blink.BlinkSVGAnimationElement.targetElement_Getter(this);
+  SvgElement get targetElement => _blink.BlinkSVGAnimationElement.instance.targetElement_Getter_(this);
 
   @DomName('SVGAnimationElement.beginElement')
   @DocsEditable()
-  void beginElement() => _blink.BlinkSVGAnimationElement.beginElement_Callback(this);
+  void beginElement() => _blink.BlinkSVGAnimationElement.instance.beginElement_Callback_0_(this);
 
   @DomName('SVGAnimationElement.beginElementAt')
   @DocsEditable()
-  void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.beginElementAt_Callback_1(this, offset);
+  void beginElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.beginElementAt_Callback_1_(this, offset);
 
   @DomName('SVGAnimationElement.endElement')
   @DocsEditable()
-  void endElement() => _blink.BlinkSVGAnimationElement.endElement_Callback(this);
+  void endElement() => _blink.BlinkSVGAnimationElement.instance.endElement_Callback_0_(this);
 
   @DomName('SVGAnimationElement.endElementAt')
   @DocsEditable()
-  void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.endElementAt_Callback_1(this, offset);
+  void endElementAt(num offset) => _blink.BlinkSVGAnimationElement.instance.endElementAt_Callback_1_(this, offset);
 
   @DomName('SVGAnimationElement.getCurrentTime')
   @DocsEditable()
-  double getCurrentTime() => _blink.BlinkSVGAnimationElement.getCurrentTime_Callback(this);
+  double getCurrentTime() => _blink.BlinkSVGAnimationElement.instance.getCurrentTime_Callback_0_(this);
 
   @DomName('SVGAnimationElement.getSimpleDuration')
   @DocsEditable()
-  double getSimpleDuration() => _blink.BlinkSVGAnimationElement.getSimpleDuration_Callback(this);
+  double getSimpleDuration() => _blink.BlinkSVGAnimationElement.instance.getSimpleDuration_Callback_0_(this);
 
   @DomName('SVGAnimationElement.getStartTime')
   @DocsEditable()
-  double getStartTime() => _blink.BlinkSVGAnimationElement.getStartTime_Callback(this);
+  double getStartTime() => _blink.BlinkSVGAnimationElement.instance.getStartTime_Callback_0_(this);
 
   @DomName('SVGAnimationElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => _blink.BlinkSVGAnimationElement.requiredExtensions_Getter(this);
+  StringList get requiredExtensions => _blink.BlinkSVGAnimationElement.instance.requiredExtensions_Getter_(this);
 
   @DomName('SVGAnimationElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => _blink.BlinkSVGAnimationElement.requiredFeatures_Getter(this);
+  StringList get requiredFeatures => _blink.BlinkSVGAnimationElement.instance.requiredFeatures_Getter_(this);
 
   @DomName('SVGAnimationElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => _blink.BlinkSVGAnimationElement.systemLanguage_Getter(this);
+  StringList get systemLanguage => _blink.BlinkSVGAnimationElement.instance.systemLanguage_Getter_(this);
 
   @DomName('SVGAnimationElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGAnimationElement.hasExtension_Callback_1(this, extension);
+  bool hasExtension(String extension) => _blink.BlinkSVGAnimationElement.instance.hasExtension_Callback_1_(this, extension);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -815,15 +815,15 @@
 
   @DomName('SVGCircleElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => _blink.BlinkSVGCircleElement.cx_Getter(this);
+  AnimatedLength get cx => _blink.BlinkSVGCircleElement.instance.cx_Getter_(this);
 
   @DomName('SVGCircleElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => _blink.BlinkSVGCircleElement.cy_Getter(this);
+  AnimatedLength get cy => _blink.BlinkSVGCircleElement.instance.cy_Getter_(this);
 
   @DomName('SVGCircleElement.r')
   @DocsEditable()
-  AnimatedLength get r => _blink.BlinkSVGCircleElement.r_Getter(this);
+  AnimatedLength get r => _blink.BlinkSVGCircleElement.instance.r_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -852,7 +852,7 @@
 
   @DomName('SVGClipPathElement.clipPathUnits')
   @DocsEditable()
-  AnimatedEnumeration get clipPathUnits => _blink.BlinkSVGClipPathElement.clipPathUnits_Getter(this);
+  AnimatedEnumeration get clipPathUnits => _blink.BlinkSVGClipPathElement.instance.clipPathUnits_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -952,19 +952,19 @@
 
   @DomName('SVGEllipseElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => _blink.BlinkSVGEllipseElement.cx_Getter(this);
+  AnimatedLength get cx => _blink.BlinkSVGEllipseElement.instance.cx_Getter_(this);
 
   @DomName('SVGEllipseElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => _blink.BlinkSVGEllipseElement.cy_Getter(this);
+  AnimatedLength get cy => _blink.BlinkSVGEllipseElement.instance.cy_Getter_(this);
 
   @DomName('SVGEllipseElement.rx')
   @DocsEditable()
-  AnimatedLength get rx => _blink.BlinkSVGEllipseElement.rx_Getter(this);
+  AnimatedLength get rx => _blink.BlinkSVGEllipseElement.instance.rx_Getter_(this);
 
   @DomName('SVGEllipseElement.ry')
   @DocsEditable()
-  AnimatedLength get ry => _blink.BlinkSVGEllipseElement.ry_Getter(this);
+  AnimatedLength get ry => _blink.BlinkSVGEllipseElement.instance.ry_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1024,35 +1024,35 @@
 
   @DomName('SVGFEBlendElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEBlendElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEBlendElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEBlendElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => _blink.BlinkSVGFEBlendElement.in2_Getter(this);
+  AnimatedString get in2 => _blink.BlinkSVGFEBlendElement.instance.in2_Getter_(this);
 
   @DomName('SVGFEBlendElement.mode')
   @DocsEditable()
-  AnimatedEnumeration get mode => _blink.BlinkSVGFEBlendElement.mode_Getter(this);
+  AnimatedEnumeration get mode => _blink.BlinkSVGFEBlendElement.instance.mode_Getter_(this);
 
   @DomName('SVGFEBlendElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEBlendElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEBlendElement.instance.height_Getter_(this);
 
   @DomName('SVGFEBlendElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEBlendElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEBlendElement.instance.result_Getter_(this);
 
   @DomName('SVGFEBlendElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEBlendElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEBlendElement.instance.width_Getter_(this);
 
   @DomName('SVGFEBlendElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEBlendElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEBlendElement.instance.x_Getter_(this);
 
   @DomName('SVGFEBlendElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEBlendElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEBlendElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1108,35 +1108,35 @@
 
   @DomName('SVGFEColorMatrixElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEColorMatrixElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEColorMatrixElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.type')
   @DocsEditable()
-  AnimatedEnumeration get type => _blink.BlinkSVGFEColorMatrixElement.type_Getter(this);
+  AnimatedEnumeration get type => _blink.BlinkSVGFEColorMatrixElement.instance.type_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.values')
   @DocsEditable()
-  AnimatedNumberList get values => _blink.BlinkSVGFEColorMatrixElement.values_Getter(this);
+  AnimatedNumberList get values => _blink.BlinkSVGFEColorMatrixElement.instance.values_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEColorMatrixElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEColorMatrixElement.instance.height_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEColorMatrixElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEColorMatrixElement.instance.result_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEColorMatrixElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEColorMatrixElement.instance.width_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEColorMatrixElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEColorMatrixElement.instance.x_Getter_(this);
 
   @DomName('SVGFEColorMatrixElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEColorMatrixElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEColorMatrixElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1172,27 +1172,27 @@
 
   @DomName('SVGFEComponentTransferElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEComponentTransferElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEComponentTransferElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEComponentTransferElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEComponentTransferElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEComponentTransferElement.instance.height_Getter_(this);
 
   @DomName('SVGFEComponentTransferElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEComponentTransferElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEComponentTransferElement.instance.result_Getter_(this);
 
   @DomName('SVGFEComponentTransferElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEComponentTransferElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEComponentTransferElement.instance.width_Getter_(this);
 
   @DomName('SVGFEComponentTransferElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEComponentTransferElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEComponentTransferElement.instance.x_Getter_(this);
 
   @DomName('SVGFEComponentTransferElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEComponentTransferElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEComponentTransferElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1245,51 +1245,51 @@
 
   @DomName('SVGFECompositeElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFECompositeElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFECompositeElement.instance.in1_Getter_(this);
 
   @DomName('SVGFECompositeElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => _blink.BlinkSVGFECompositeElement.in2_Getter(this);
+  AnimatedString get in2 => _blink.BlinkSVGFECompositeElement.instance.in2_Getter_(this);
 
   @DomName('SVGFECompositeElement.k1')
   @DocsEditable()
-  AnimatedNumber get k1 => _blink.BlinkSVGFECompositeElement.k1_Getter(this);
+  AnimatedNumber get k1 => _blink.BlinkSVGFECompositeElement.instance.k1_Getter_(this);
 
   @DomName('SVGFECompositeElement.k2')
   @DocsEditable()
-  AnimatedNumber get k2 => _blink.BlinkSVGFECompositeElement.k2_Getter(this);
+  AnimatedNumber get k2 => _blink.BlinkSVGFECompositeElement.instance.k2_Getter_(this);
 
   @DomName('SVGFECompositeElement.k3')
   @DocsEditable()
-  AnimatedNumber get k3 => _blink.BlinkSVGFECompositeElement.k3_Getter(this);
+  AnimatedNumber get k3 => _blink.BlinkSVGFECompositeElement.instance.k3_Getter_(this);
 
   @DomName('SVGFECompositeElement.k4')
   @DocsEditable()
-  AnimatedNumber get k4 => _blink.BlinkSVGFECompositeElement.k4_Getter(this);
+  AnimatedNumber get k4 => _blink.BlinkSVGFECompositeElement.instance.k4_Getter_(this);
 
   @DomName('SVGFECompositeElement.operator')
   @DocsEditable()
-  AnimatedEnumeration get operator => _blink.BlinkSVGFECompositeElement.operator_Getter(this);
+  AnimatedEnumeration get operator => _blink.BlinkSVGFECompositeElement.instance.operator_Getter_(this);
 
   @DomName('SVGFECompositeElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFECompositeElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFECompositeElement.instance.height_Getter_(this);
 
   @DomName('SVGFECompositeElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFECompositeElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFECompositeElement.instance.result_Getter_(this);
 
   @DomName('SVGFECompositeElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFECompositeElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFECompositeElement.instance.width_Getter_(this);
 
   @DomName('SVGFECompositeElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFECompositeElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFECompositeElement.instance.x_Getter_(this);
 
   @DomName('SVGFECompositeElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFECompositeElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFECompositeElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1341,71 +1341,71 @@
 
   @DomName('SVGFEConvolveMatrixElement.bias')
   @DocsEditable()
-  AnimatedNumber get bias => _blink.BlinkSVGFEConvolveMatrixElement.bias_Getter(this);
+  AnimatedNumber get bias => _blink.BlinkSVGFEConvolveMatrixElement.instance.bias_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.divisor')
   @DocsEditable()
-  AnimatedNumber get divisor => _blink.BlinkSVGFEConvolveMatrixElement.divisor_Getter(this);
+  AnimatedNumber get divisor => _blink.BlinkSVGFEConvolveMatrixElement.instance.divisor_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.edgeMode')
   @DocsEditable()
-  AnimatedEnumeration get edgeMode => _blink.BlinkSVGFEConvolveMatrixElement.edgeMode_Getter(this);
+  AnimatedEnumeration get edgeMode => _blink.BlinkSVGFEConvolveMatrixElement.instance.edgeMode_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEConvolveMatrixElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEConvolveMatrixElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.kernelMatrix')
   @DocsEditable()
-  AnimatedNumberList get kernelMatrix => _blink.BlinkSVGFEConvolveMatrixElement.kernelMatrix_Getter(this);
+  AnimatedNumberList get kernelMatrix => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelMatrix_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.kernelUnitLengthX')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEConvolveMatrixElement.kernelUnitLengthX_Getter(this);
+  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthX_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.kernelUnitLengthY')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEConvolveMatrixElement.kernelUnitLengthY_Getter(this);
+  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEConvolveMatrixElement.instance.kernelUnitLengthY_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.orderX')
   @DocsEditable()
-  AnimatedInteger get orderX => _blink.BlinkSVGFEConvolveMatrixElement.orderX_Getter(this);
+  AnimatedInteger get orderX => _blink.BlinkSVGFEConvolveMatrixElement.instance.orderX_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.orderY')
   @DocsEditable()
-  AnimatedInteger get orderY => _blink.BlinkSVGFEConvolveMatrixElement.orderY_Getter(this);
+  AnimatedInteger get orderY => _blink.BlinkSVGFEConvolveMatrixElement.instance.orderY_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.preserveAlpha')
   @DocsEditable()
-  AnimatedBoolean get preserveAlpha => _blink.BlinkSVGFEConvolveMatrixElement.preserveAlpha_Getter(this);
+  AnimatedBoolean get preserveAlpha => _blink.BlinkSVGFEConvolveMatrixElement.instance.preserveAlpha_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.targetX')
   @DocsEditable()
-  AnimatedInteger get targetX => _blink.BlinkSVGFEConvolveMatrixElement.targetX_Getter(this);
+  AnimatedInteger get targetX => _blink.BlinkSVGFEConvolveMatrixElement.instance.targetX_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.targetY')
   @DocsEditable()
-  AnimatedInteger get targetY => _blink.BlinkSVGFEConvolveMatrixElement.targetY_Getter(this);
+  AnimatedInteger get targetY => _blink.BlinkSVGFEConvolveMatrixElement.instance.targetY_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEConvolveMatrixElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEConvolveMatrixElement.instance.height_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEConvolveMatrixElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEConvolveMatrixElement.instance.result_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEConvolveMatrixElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEConvolveMatrixElement.instance.width_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEConvolveMatrixElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEConvolveMatrixElement.instance.x_Getter_(this);
 
   @DomName('SVGFEConvolveMatrixElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEConvolveMatrixElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEConvolveMatrixElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1441,43 +1441,43 @@
 
   @DomName('SVGFEDiffuseLightingElement.diffuseConstant')
   @DocsEditable()
-  AnimatedNumber get diffuseConstant => _blink.BlinkSVGFEDiffuseLightingElement.diffuseConstant_Getter(this);
+  AnimatedNumber get diffuseConstant => _blink.BlinkSVGFEDiffuseLightingElement.instance.diffuseConstant_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEDiffuseLightingElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEDiffuseLightingElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.kernelUnitLengthX')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEDiffuseLightingElement.kernelUnitLengthX_Getter(this);
+  AnimatedNumber get kernelUnitLengthX => _blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthX_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.kernelUnitLengthY')
   @DocsEditable()
-  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEDiffuseLightingElement.kernelUnitLengthY_Getter(this);
+  AnimatedNumber get kernelUnitLengthY => _blink.BlinkSVGFEDiffuseLightingElement.instance.kernelUnitLengthY_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.surfaceScale')
   @DocsEditable()
-  AnimatedNumber get surfaceScale => _blink.BlinkSVGFEDiffuseLightingElement.surfaceScale_Getter(this);
+  AnimatedNumber get surfaceScale => _blink.BlinkSVGFEDiffuseLightingElement.instance.surfaceScale_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEDiffuseLightingElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEDiffuseLightingElement.instance.height_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEDiffuseLightingElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEDiffuseLightingElement.instance.result_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEDiffuseLightingElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEDiffuseLightingElement.instance.width_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEDiffuseLightingElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEDiffuseLightingElement.instance.x_Getter_(this);
 
   @DomName('SVGFEDiffuseLightingElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEDiffuseLightingElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEDiffuseLightingElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1533,43 +1533,43 @@
 
   @DomName('SVGFEDisplacementMapElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEDisplacementMapElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEDisplacementMapElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.in2')
   @DocsEditable()
-  AnimatedString get in2 => _blink.BlinkSVGFEDisplacementMapElement.in2_Getter(this);
+  AnimatedString get in2 => _blink.BlinkSVGFEDisplacementMapElement.instance.in2_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.scale')
   @DocsEditable()
-  AnimatedNumber get scale => _blink.BlinkSVGFEDisplacementMapElement.scale_Getter(this);
+  AnimatedNumber get scale => _blink.BlinkSVGFEDisplacementMapElement.instance.scale_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.xChannelSelector')
   @DocsEditable()
-  AnimatedEnumeration get xChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.xChannelSelector_Getter(this);
+  AnimatedEnumeration get xChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.instance.xChannelSelector_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.yChannelSelector')
   @DocsEditable()
-  AnimatedEnumeration get yChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.yChannelSelector_Getter(this);
+  AnimatedEnumeration get yChannelSelector => _blink.BlinkSVGFEDisplacementMapElement.instance.yChannelSelector_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEDisplacementMapElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEDisplacementMapElement.instance.height_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEDisplacementMapElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEDisplacementMapElement.instance.result_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEDisplacementMapElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEDisplacementMapElement.instance.width_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEDisplacementMapElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEDisplacementMapElement.instance.x_Getter_(this);
 
   @DomName('SVGFEDisplacementMapElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEDisplacementMapElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEDisplacementMapElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1605,11 +1605,11 @@
 
   @DomName('SVGFEDistantLightElement.azimuth')
   @DocsEditable()
-  AnimatedNumber get azimuth => _blink.BlinkSVGFEDistantLightElement.azimuth_Getter(this);
+  AnimatedNumber get azimuth => _blink.BlinkSVGFEDistantLightElement.instance.azimuth_Getter_(this);
 
   @DomName('SVGFEDistantLightElement.elevation')
   @DocsEditable()
-  AnimatedNumber get elevation => _blink.BlinkSVGFEDistantLightElement.elevation_Getter(this);
+  AnimatedNumber get elevation => _blink.BlinkSVGFEDistantLightElement.instance.elevation_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1645,23 +1645,23 @@
 
   @DomName('SVGFEFloodElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEFloodElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEFloodElement.instance.height_Getter_(this);
 
   @DomName('SVGFEFloodElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEFloodElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEFloodElement.instance.result_Getter_(this);
 
   @DomName('SVGFEFloodElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEFloodElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEFloodElement.instance.width_Getter_(this);
 
   @DomName('SVGFEFloodElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEFloodElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEFloodElement.instance.x_Getter_(this);
 
   @DomName('SVGFEFloodElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEFloodElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEFloodElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1825,39 +1825,39 @@
 
   @DomName('SVGFEGaussianBlurElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEGaussianBlurElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEGaussianBlurElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.stdDeviationX')
   @DocsEditable()
-  AnimatedNumber get stdDeviationX => _blink.BlinkSVGFEGaussianBlurElement.stdDeviationX_Getter(this);
+  AnimatedNumber get stdDeviationX => _blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationX_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.stdDeviationY')
   @DocsEditable()
-  AnimatedNumber get stdDeviationY => _blink.BlinkSVGFEGaussianBlurElement.stdDeviationY_Getter(this);
+  AnimatedNumber get stdDeviationY => _blink.BlinkSVGFEGaussianBlurElement.instance.stdDeviationY_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.setStdDeviation')
   @DocsEditable()
-  void setStdDeviation(num stdDeviationX, num stdDeviationY) => _blink.BlinkSVGFEGaussianBlurElement.setStdDeviation_Callback_2(this, stdDeviationX, stdDeviationY);
+  void setStdDeviation(num stdDeviationX, num stdDeviationY) => _blink.BlinkSVGFEGaussianBlurElement.instance.setStdDeviation_Callback_2_(this, stdDeviationX, stdDeviationY);
 
   @DomName('SVGFEGaussianBlurElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEGaussianBlurElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEGaussianBlurElement.instance.height_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEGaussianBlurElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEGaussianBlurElement.instance.result_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEGaussianBlurElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEGaussianBlurElement.instance.width_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEGaussianBlurElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEGaussianBlurElement.instance.x_Getter_(this);
 
   @DomName('SVGFEGaussianBlurElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEGaussianBlurElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEGaussianBlurElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1893,31 +1893,31 @@
 
   @DomName('SVGFEImageElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGFEImageElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGFEImageElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGFEImageElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEImageElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEImageElement.instance.height_Getter_(this);
 
   @DomName('SVGFEImageElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEImageElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEImageElement.instance.result_Getter_(this);
 
   @DomName('SVGFEImageElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEImageElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEImageElement.instance.width_Getter_(this);
 
   @DomName('SVGFEImageElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEImageElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEImageElement.instance.x_Getter_(this);
 
   @DomName('SVGFEImageElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEImageElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEImageElement.instance.y_Getter_(this);
 
   @DomName('SVGFEImageElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGFEImageElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGFEImageElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1953,23 +1953,23 @@
 
   @DomName('SVGFEMergeElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEMergeElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEMergeElement.instance.height_Getter_(this);
 
   @DomName('SVGFEMergeElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEMergeElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEMergeElement.instance.result_Getter_(this);
 
   @DomName('SVGFEMergeElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEMergeElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEMergeElement.instance.width_Getter_(this);
 
   @DomName('SVGFEMergeElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEMergeElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEMergeElement.instance.x_Getter_(this);
 
   @DomName('SVGFEMergeElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEMergeElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEMergeElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2005,7 +2005,7 @@
 
   @DomName('SVGFEMergeNodeElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEMergeNodeElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEMergeNodeElement.instance.in1_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2046,39 +2046,39 @@
 
   @DomName('SVGFEMorphologyElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEMorphologyElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEMorphologyElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.operator')
   @DocsEditable()
-  AnimatedEnumeration get operator => _blink.BlinkSVGFEMorphologyElement.operator_Getter(this);
+  AnimatedEnumeration get operator => _blink.BlinkSVGFEMorphologyElement.instance.operator_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.radiusX')
   @DocsEditable()
-  AnimatedNumber get radiusX => _blink.BlinkSVGFEMorphologyElement.radiusX_Getter(this);
+  AnimatedNumber get radiusX => _blink.BlinkSVGFEMorphologyElement.instance.radiusX_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.radiusY')
   @DocsEditable()
-  AnimatedNumber get radiusY => _blink.BlinkSVGFEMorphologyElement.radiusY_Getter(this);
+  AnimatedNumber get radiusY => _blink.BlinkSVGFEMorphologyElement.instance.radiusY_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEMorphologyElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEMorphologyElement.instance.height_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEMorphologyElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEMorphologyElement.instance.result_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEMorphologyElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEMorphologyElement.instance.width_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEMorphologyElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEMorphologyElement.instance.x_Getter_(this);
 
   @DomName('SVGFEMorphologyElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEMorphologyElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEMorphologyElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2114,35 +2114,35 @@
 
   @DomName('SVGFEOffsetElement.dx')
   @DocsEditable()
-  AnimatedNumber get dx => _blink.BlinkSVGFEOffsetElement.dx_Getter(this);
+  AnimatedNumber get dx => _blink.BlinkSVGFEOffsetElement.instance.dx_Getter_(this);
 
   @DomName('SVGFEOffsetElement.dy')
   @DocsEditable()
-  AnimatedNumber get dy => _blink.BlinkSVGFEOffsetElement.dy_Getter(this);
+  AnimatedNumber get dy => _blink.BlinkSVGFEOffsetElement.instance.dy_Getter_(this);
 
   @DomName('SVGFEOffsetElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFEOffsetElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFEOffsetElement.instance.in1_Getter_(this);
 
   @DomName('SVGFEOffsetElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFEOffsetElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFEOffsetElement.instance.height_Getter_(this);
 
   @DomName('SVGFEOffsetElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFEOffsetElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFEOffsetElement.instance.result_Getter_(this);
 
   @DomName('SVGFEOffsetElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFEOffsetElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFEOffsetElement.instance.width_Getter_(this);
 
   @DomName('SVGFEOffsetElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFEOffsetElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFEOffsetElement.instance.x_Getter_(this);
 
   @DomName('SVGFEOffsetElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFEOffsetElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFEOffsetElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2178,15 +2178,15 @@
 
   @DomName('SVGFEPointLightElement.x')
   @DocsEditable()
-  AnimatedNumber get x => _blink.BlinkSVGFEPointLightElement.x_Getter(this);
+  AnimatedNumber get x => _blink.BlinkSVGFEPointLightElement.instance.x_Getter_(this);
 
   @DomName('SVGFEPointLightElement.y')
   @DocsEditable()
-  AnimatedNumber get y => _blink.BlinkSVGFEPointLightElement.y_Getter(this);
+  AnimatedNumber get y => _blink.BlinkSVGFEPointLightElement.instance.y_Getter_(this);
 
   @DomName('SVGFEPointLightElement.z')
   @DocsEditable()
-  AnimatedNumber get z => _blink.BlinkSVGFEPointLightElement.z_Getter(this);
+  AnimatedNumber get z => _blink.BlinkSVGFEPointLightElement.instance.z_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2222,39 +2222,39 @@
 
   @DomName('SVGFESpecularLightingElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFESpecularLightingElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFESpecularLightingElement.instance.in1_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.specularConstant')
   @DocsEditable()
-  AnimatedNumber get specularConstant => _blink.BlinkSVGFESpecularLightingElement.specularConstant_Getter(this);
+  AnimatedNumber get specularConstant => _blink.BlinkSVGFESpecularLightingElement.instance.specularConstant_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.specularExponent')
   @DocsEditable()
-  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpecularLightingElement.specularExponent_Getter(this);
+  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpecularLightingElement.instance.specularExponent_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.surfaceScale')
   @DocsEditable()
-  AnimatedNumber get surfaceScale => _blink.BlinkSVGFESpecularLightingElement.surfaceScale_Getter(this);
+  AnimatedNumber get surfaceScale => _blink.BlinkSVGFESpecularLightingElement.instance.surfaceScale_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFESpecularLightingElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFESpecularLightingElement.instance.height_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFESpecularLightingElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFESpecularLightingElement.instance.result_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFESpecularLightingElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFESpecularLightingElement.instance.width_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFESpecularLightingElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFESpecularLightingElement.instance.x_Getter_(this);
 
   @DomName('SVGFESpecularLightingElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFESpecularLightingElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFESpecularLightingElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2290,35 +2290,35 @@
 
   @DomName('SVGFESpotLightElement.limitingConeAngle')
   @DocsEditable()
-  AnimatedNumber get limitingConeAngle => _blink.BlinkSVGFESpotLightElement.limitingConeAngle_Getter(this);
+  AnimatedNumber get limitingConeAngle => _blink.BlinkSVGFESpotLightElement.instance.limitingConeAngle_Getter_(this);
 
   @DomName('SVGFESpotLightElement.pointsAtX')
   @DocsEditable()
-  AnimatedNumber get pointsAtX => _blink.BlinkSVGFESpotLightElement.pointsAtX_Getter(this);
+  AnimatedNumber get pointsAtX => _blink.BlinkSVGFESpotLightElement.instance.pointsAtX_Getter_(this);
 
   @DomName('SVGFESpotLightElement.pointsAtY')
   @DocsEditable()
-  AnimatedNumber get pointsAtY => _blink.BlinkSVGFESpotLightElement.pointsAtY_Getter(this);
+  AnimatedNumber get pointsAtY => _blink.BlinkSVGFESpotLightElement.instance.pointsAtY_Getter_(this);
 
   @DomName('SVGFESpotLightElement.pointsAtZ')
   @DocsEditable()
-  AnimatedNumber get pointsAtZ => _blink.BlinkSVGFESpotLightElement.pointsAtZ_Getter(this);
+  AnimatedNumber get pointsAtZ => _blink.BlinkSVGFESpotLightElement.instance.pointsAtZ_Getter_(this);
 
   @DomName('SVGFESpotLightElement.specularExponent')
   @DocsEditable()
-  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpotLightElement.specularExponent_Getter(this);
+  AnimatedNumber get specularExponent => _blink.BlinkSVGFESpotLightElement.instance.specularExponent_Getter_(this);
 
   @DomName('SVGFESpotLightElement.x')
   @DocsEditable()
-  AnimatedNumber get x => _blink.BlinkSVGFESpotLightElement.x_Getter(this);
+  AnimatedNumber get x => _blink.BlinkSVGFESpotLightElement.instance.x_Getter_(this);
 
   @DomName('SVGFESpotLightElement.y')
   @DocsEditable()
-  AnimatedNumber get y => _blink.BlinkSVGFESpotLightElement.y_Getter(this);
+  AnimatedNumber get y => _blink.BlinkSVGFESpotLightElement.instance.y_Getter_(this);
 
   @DomName('SVGFESpotLightElement.z')
   @DocsEditable()
-  AnimatedNumber get z => _blink.BlinkSVGFESpotLightElement.z_Getter(this);
+  AnimatedNumber get z => _blink.BlinkSVGFESpotLightElement.instance.z_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2354,27 +2354,27 @@
 
   @DomName('SVGFETileElement.in1')
   @DocsEditable()
-  AnimatedString get in1 => _blink.BlinkSVGFETileElement.in1_Getter(this);
+  AnimatedString get in1 => _blink.BlinkSVGFETileElement.instance.in1_Getter_(this);
 
   @DomName('SVGFETileElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFETileElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFETileElement.instance.height_Getter_(this);
 
   @DomName('SVGFETileElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFETileElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFETileElement.instance.result_Getter_(this);
 
   @DomName('SVGFETileElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFETileElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFETileElement.instance.width_Getter_(this);
 
   @DomName('SVGFETileElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFETileElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFETileElement.instance.x_Getter_(this);
 
   @DomName('SVGFETileElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFETileElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFETileElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2434,47 +2434,47 @@
 
   @DomName('SVGFETurbulenceElement.baseFrequencyX')
   @DocsEditable()
-  AnimatedNumber get baseFrequencyX => _blink.BlinkSVGFETurbulenceElement.baseFrequencyX_Getter(this);
+  AnimatedNumber get baseFrequencyX => _blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyX_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.baseFrequencyY')
   @DocsEditable()
-  AnimatedNumber get baseFrequencyY => _blink.BlinkSVGFETurbulenceElement.baseFrequencyY_Getter(this);
+  AnimatedNumber get baseFrequencyY => _blink.BlinkSVGFETurbulenceElement.instance.baseFrequencyY_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.numOctaves')
   @DocsEditable()
-  AnimatedInteger get numOctaves => _blink.BlinkSVGFETurbulenceElement.numOctaves_Getter(this);
+  AnimatedInteger get numOctaves => _blink.BlinkSVGFETurbulenceElement.instance.numOctaves_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.seed')
   @DocsEditable()
-  AnimatedNumber get seed => _blink.BlinkSVGFETurbulenceElement.seed_Getter(this);
+  AnimatedNumber get seed => _blink.BlinkSVGFETurbulenceElement.instance.seed_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.stitchTiles')
   @DocsEditable()
-  AnimatedEnumeration get stitchTiles => _blink.BlinkSVGFETurbulenceElement.stitchTiles_Getter(this);
+  AnimatedEnumeration get stitchTiles => _blink.BlinkSVGFETurbulenceElement.instance.stitchTiles_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.type')
   @DocsEditable()
-  AnimatedEnumeration get type => _blink.BlinkSVGFETurbulenceElement.type_Getter(this);
+  AnimatedEnumeration get type => _blink.BlinkSVGFETurbulenceElement.instance.type_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFETurbulenceElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFETurbulenceElement.instance.height_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFETurbulenceElement.result_Getter(this);
+  AnimatedString get result => _blink.BlinkSVGFETurbulenceElement.instance.result_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFETurbulenceElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFETurbulenceElement.instance.width_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFETurbulenceElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFETurbulenceElement.instance.x_Getter_(this);
 
   @DomName('SVGFETurbulenceElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFETurbulenceElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFETurbulenceElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2510,43 +2510,43 @@
 
   @DomName('SVGFilterElement.filterResX')
   @DocsEditable()
-  AnimatedInteger get filterResX => _blink.BlinkSVGFilterElement.filterResX_Getter(this);
+  AnimatedInteger get filterResX => _blink.BlinkSVGFilterElement.instance.filterResX_Getter_(this);
 
   @DomName('SVGFilterElement.filterResY')
   @DocsEditable()
-  AnimatedInteger get filterResY => _blink.BlinkSVGFilterElement.filterResY_Getter(this);
+  AnimatedInteger get filterResY => _blink.BlinkSVGFilterElement.instance.filterResY_Getter_(this);
 
   @DomName('SVGFilterElement.filterUnits')
   @DocsEditable()
-  AnimatedEnumeration get filterUnits => _blink.BlinkSVGFilterElement.filterUnits_Getter(this);
+  AnimatedEnumeration get filterUnits => _blink.BlinkSVGFilterElement.instance.filterUnits_Getter_(this);
 
   @DomName('SVGFilterElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFilterElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGFilterElement.instance.height_Getter_(this);
 
   @DomName('SVGFilterElement.primitiveUnits')
   @DocsEditable()
-  AnimatedEnumeration get primitiveUnits => _blink.BlinkSVGFilterElement.primitiveUnits_Getter(this);
+  AnimatedEnumeration get primitiveUnits => _blink.BlinkSVGFilterElement.instance.primitiveUnits_Getter_(this);
 
   @DomName('SVGFilterElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFilterElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGFilterElement.instance.width_Getter_(this);
 
   @DomName('SVGFilterElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFilterElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGFilterElement.instance.x_Getter_(this);
 
   @DomName('SVGFilterElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFilterElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGFilterElement.instance.y_Getter_(this);
 
   @DomName('SVGFilterElement.setFilterRes')
   @DocsEditable()
-  void setFilterRes(int filterResX, int filterResY) => _blink.BlinkSVGFilterElement.setFilterRes_Callback_2(this, filterResX, filterResY);
+  void setFilterRes(int filterResX, int filterResY) => _blink.BlinkSVGFilterElement.instance.setFilterRes_Callback_2_(this, filterResX, filterResY);
 
   @DomName('SVGFilterElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGFilterElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGFilterElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2565,23 +2565,23 @@
 
   @DomName('SVGFilterPrimitiveStandardAttributes.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGFilterPrimitiveStandardAttributes.height_Getter(this);
+  AnimatedLength get height;
 
   @DomName('SVGFilterPrimitiveStandardAttributes.result')
   @DocsEditable()
-  AnimatedString get result => _blink.BlinkSVGFilterPrimitiveStandardAttributes.result_Getter(this);
+  AnimatedString get result;
 
   @DomName('SVGFilterPrimitiveStandardAttributes.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGFilterPrimitiveStandardAttributes.width_Getter(this);
+  AnimatedLength get width;
 
   @DomName('SVGFilterPrimitiveStandardAttributes.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGFilterPrimitiveStandardAttributes.x_Getter(this);
+  AnimatedLength get x;
 
   @DomName('SVGFilterPrimitiveStandardAttributes.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGFilterPrimitiveStandardAttributes.y_Getter(this);
+  AnimatedLength get y;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2600,11 +2600,11 @@
 
   @DomName('SVGFitToViewBox.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGFitToViewBox.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio;
 
   @DomName('SVGFitToViewBox.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGFitToViewBox.viewBox_Getter(this);
+  AnimatedRect get viewBox;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2639,19 +2639,19 @@
 
   @DomName('SVGForeignObjectElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGForeignObjectElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGForeignObjectElement.instance.height_Getter_(this);
 
   @DomName('SVGForeignObjectElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGForeignObjectElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGForeignObjectElement.instance.width_Getter_(this);
 
   @DomName('SVGForeignObjectElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGForeignObjectElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGForeignObjectElement.instance.x_Getter_(this);
 
   @DomName('SVGForeignObjectElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGForeignObjectElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGForeignObjectElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2702,12 +2702,12 @@
   @DomName('SVGGeometryElement.isPointInFill')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isPointInFill(Point point) => _blink.BlinkSVGGeometryElement.isPointInFill_Callback_1(this, point);
+  bool isPointInFill(Point point) => _blink.BlinkSVGGeometryElement.instance.isPointInFill_Callback_1_(this, point);
 
   @DomName('SVGGeometryElement.isPointInStroke')
   @DocsEditable()
   @Experimental() // untriaged
-  bool isPointInStroke(Point point) => _blink.BlinkSVGGeometryElement.isPointInStroke_Callback_1(this, point);
+  bool isPointInStroke(Point point) => _blink.BlinkSVGGeometryElement.instance.isPointInStroke_Callback_1_(this, point);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2733,57 +2733,57 @@
   @DomName('SVGGraphicsElement.farthestViewportElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgElement get farthestViewportElement => _blink.BlinkSVGGraphicsElement.farthestViewportElement_Getter(this);
+  SvgElement get farthestViewportElement => _blink.BlinkSVGGraphicsElement.instance.farthestViewportElement_Getter_(this);
 
   @DomName('SVGGraphicsElement.nearestViewportElement')
   @DocsEditable()
   @Experimental() // untriaged
-  SvgElement get nearestViewportElement => _blink.BlinkSVGGraphicsElement.nearestViewportElement_Getter(this);
+  SvgElement get nearestViewportElement => _blink.BlinkSVGGraphicsElement.instance.nearestViewportElement_Getter_(this);
 
   @DomName('SVGGraphicsElement.transform')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedTransformList get transform => _blink.BlinkSVGGraphicsElement.transform_Getter(this);
+  AnimatedTransformList get transform => _blink.BlinkSVGGraphicsElement.instance.transform_Getter_(this);
 
   @DomName('SVGGraphicsElement.getBBox')
   @DocsEditable()
   @Experimental() // untriaged
-  Rect getBBox() => _blink.BlinkSVGGraphicsElement.getBBox_Callback(this);
+  Rect getBBox() => _blink.BlinkSVGGraphicsElement.instance.getBBox_Callback_0_(this);
 
   @DomName('SVGGraphicsElement.getCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getCtm() => _blink.BlinkSVGGraphicsElement.getCTM_Callback(this);
+  Matrix getCtm() => _blink.BlinkSVGGraphicsElement.instance.getCTM_Callback_0_(this);
 
   @DomName('SVGGraphicsElement.getScreenCTM')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getScreenCtm() => _blink.BlinkSVGGraphicsElement.getScreenCTM_Callback(this);
+  Matrix getScreenCtm() => _blink.BlinkSVGGraphicsElement.instance.getScreenCTM_Callback_0_(this);
 
   @DomName('SVGGraphicsElement.getTransformToElement')
   @DocsEditable()
   @Experimental() // untriaged
-  Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.getTransformToElement_Callback_1(this, element);
+  Matrix getTransformToElement(SvgElement element) => _blink.BlinkSVGGraphicsElement.instance.getTransformToElement_Callback_1_(this, element);
 
   @DomName('SVGGraphicsElement.requiredExtensions')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get requiredExtensions => _blink.BlinkSVGGraphicsElement.requiredExtensions_Getter(this);
+  StringList get requiredExtensions => _blink.BlinkSVGGraphicsElement.instance.requiredExtensions_Getter_(this);
 
   @DomName('SVGGraphicsElement.requiredFeatures')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get requiredFeatures => _blink.BlinkSVGGraphicsElement.requiredFeatures_Getter(this);
+  StringList get requiredFeatures => _blink.BlinkSVGGraphicsElement.instance.requiredFeatures_Getter_(this);
 
   @DomName('SVGGraphicsElement.systemLanguage')
   @DocsEditable()
   @Experimental() // untriaged
-  StringList get systemLanguage => _blink.BlinkSVGGraphicsElement.systemLanguage_Getter(this);
+  StringList get systemLanguage => _blink.BlinkSVGGraphicsElement.instance.systemLanguage_Getter_(this);
 
   @DomName('SVGGraphicsElement.hasExtension')
   @DocsEditable()
   @Experimental() // untriaged
-  bool hasExtension(String extension) => _blink.BlinkSVGGraphicsElement.hasExtension_Callback_1(this, extension);
+  bool hasExtension(String extension) => _blink.BlinkSVGGraphicsElement.instance.hasExtension_Callback_1_(this, extension);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2812,27 +2812,27 @@
 
   @DomName('SVGImageElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGImageElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGImageElement.instance.height_Getter_(this);
 
   @DomName('SVGImageElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGImageElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGImageElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGImageElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGImageElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGImageElement.instance.width_Getter_(this);
 
   @DomName('SVGImageElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGImageElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGImageElement.instance.x_Getter_(this);
 
   @DomName('SVGImageElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGImageElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGImageElement.instance.y_Getter_(this);
 
   @DomName('SVGImageElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGImageElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGImageElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2895,39 +2895,39 @@
 
   @DomName('SVGLength.unitType')
   @DocsEditable()
-  int get unitType => _blink.BlinkSVGLength.unitType_Getter(this);
+  int get unitType => _blink.BlinkSVGLength.instance.unitType_Getter_(this);
 
   @DomName('SVGLength.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGLength.value_Getter(this);
+  num get value => _blink.BlinkSVGLength.instance.value_Getter_(this);
 
   @DomName('SVGLength.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGLength.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkSVGLength.instance.value_Setter_(this, value);
 
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
-  String get valueAsString => _blink.BlinkSVGLength.valueAsString_Getter(this);
+  String get valueAsString => _blink.BlinkSVGLength.instance.valueAsString_Getter_(this);
 
   @DomName('SVGLength.valueAsString')
   @DocsEditable()
-  void set valueAsString(String value) => _blink.BlinkSVGLength.valueAsString_Setter(this, value);
+  void set valueAsString(String value) => _blink.BlinkSVGLength.instance.valueAsString_Setter_(this, value);
 
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
-  num get valueInSpecifiedUnits => _blink.BlinkSVGLength.valueInSpecifiedUnits_Getter(this);
+  num get valueInSpecifiedUnits => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Getter_(this);
 
   @DomName('SVGLength.valueInSpecifiedUnits')
   @DocsEditable()
-  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.valueInSpecifiedUnits_Setter(this, value);
+  void set valueInSpecifiedUnits(num value) => _blink.BlinkSVGLength.instance.valueInSpecifiedUnits_Setter_(this, value);
 
   @DomName('SVGLength.convertToSpecifiedUnits')
   @DocsEditable()
-  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGLength.convertToSpecifiedUnits_Callback_1(this, unitType);
+  void convertToSpecifiedUnits(int unitType) => _blink.BlinkSVGLength.instance.convertToSpecifiedUnits_Callback_1_(this, unitType);
 
   @DomName('SVGLength.newValueSpecifiedUnits')
   @DocsEditable()
-  void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGLength.newValueSpecifiedUnits_Callback_2(this, unitType, valueInSpecifiedUnits);
+  void newValueSpecifiedUnits(int unitType, num valueInSpecifiedUnits) => _blink.BlinkSVGLength.instance.newValueSpecifiedUnits_Callback_2_(this, unitType, valueInSpecifiedUnits);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2947,11 +2947,11 @@
   @DomName('SVGLengthList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGLengthList.length_Getter(this);
+  int get length => _blink.BlinkSVGLengthList.instance.length_Getter_(this);
 
   @DomName('SVGLengthList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGLengthList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGLengthList.instance.numberOfItems_Getter_(this);
 
   Length operator[](int index) {
     if (index < 0 || index >= length)
@@ -3000,35 +3000,35 @@
   @DomName('SVGLengthList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Length value) => _blink.BlinkSVGLengthList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, Length value) => _blink.BlinkSVGLengthList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGLengthList.appendItem')
   @DocsEditable()
-  Length appendItem(Length item) => _blink.BlinkSVGLengthList.appendItem_Callback_1(this, item);
+  Length appendItem(Length item) => _blink.BlinkSVGLengthList.instance.appendItem_Callback_1_(this, item);
 
   @DomName('SVGLengthList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGLengthList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGLengthList.instance.clear_Callback_0_(this);
 
   @DomName('SVGLengthList.getItem')
   @DocsEditable()
-  Length getItem(int index) => _blink.BlinkSVGLengthList.getItem_Callback_1(this, index);
+  Length getItem(int index) => _blink.BlinkSVGLengthList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGLengthList.initialize')
   @DocsEditable()
-  Length initialize(Length item) => _blink.BlinkSVGLengthList.initialize_Callback_1(this, item);
+  Length initialize(Length item) => _blink.BlinkSVGLengthList.instance.initialize_Callback_1_(this, item);
 
   @DomName('SVGLengthList.insertItemBefore')
   @DocsEditable()
-  Length insertItemBefore(Length item, int index) => _blink.BlinkSVGLengthList.insertItemBefore_Callback_2(this, item, index);
+  Length insertItemBefore(Length item, int index) => _blink.BlinkSVGLengthList.instance.insertItemBefore_Callback_2_(this, item, index);
 
   @DomName('SVGLengthList.removeItem')
   @DocsEditable()
-  Length removeItem(int index) => _blink.BlinkSVGLengthList.removeItem_Callback_1(this, index);
+  Length removeItem(int index) => _blink.BlinkSVGLengthList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGLengthList.replaceItem')
   @DocsEditable()
-  Length replaceItem(Length item, int index) => _blink.BlinkSVGLengthList.replaceItem_Callback_2(this, item, index);
+  Length replaceItem(Length item, int index) => _blink.BlinkSVGLengthList.instance.replaceItem_Callback_2_(this, item, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3057,19 +3057,19 @@
 
   @DomName('SVGLineElement.x1')
   @DocsEditable()
-  AnimatedLength get x1 => _blink.BlinkSVGLineElement.x1_Getter(this);
+  AnimatedLength get x1 => _blink.BlinkSVGLineElement.instance.x1_Getter_(this);
 
   @DomName('SVGLineElement.x2')
   @DocsEditable()
-  AnimatedLength get x2 => _blink.BlinkSVGLineElement.x2_Getter(this);
+  AnimatedLength get x2 => _blink.BlinkSVGLineElement.instance.x2_Getter_(this);
 
   @DomName('SVGLineElement.y1')
   @DocsEditable()
-  AnimatedLength get y1 => _blink.BlinkSVGLineElement.y1_Getter(this);
+  AnimatedLength get y1 => _blink.BlinkSVGLineElement.instance.y1_Getter_(this);
 
   @DomName('SVGLineElement.y2')
   @DocsEditable()
-  AnimatedLength get y2 => _blink.BlinkSVGLineElement.y2_Getter(this);
+  AnimatedLength get y2 => _blink.BlinkSVGLineElement.instance.y2_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3098,19 +3098,19 @@
 
   @DomName('SVGLinearGradientElement.x1')
   @DocsEditable()
-  AnimatedLength get x1 => _blink.BlinkSVGLinearGradientElement.x1_Getter(this);
+  AnimatedLength get x1 => _blink.BlinkSVGLinearGradientElement.instance.x1_Getter_(this);
 
   @DomName('SVGLinearGradientElement.x2')
   @DocsEditable()
-  AnimatedLength get x2 => _blink.BlinkSVGLinearGradientElement.x2_Getter(this);
+  AnimatedLength get x2 => _blink.BlinkSVGLinearGradientElement.instance.x2_Getter_(this);
 
   @DomName('SVGLinearGradientElement.y1')
   @DocsEditable()
-  AnimatedLength get y1 => _blink.BlinkSVGLinearGradientElement.y1_Getter(this);
+  AnimatedLength get y1 => _blink.BlinkSVGLinearGradientElement.instance.y1_Getter_(this);
 
   @DomName('SVGLinearGradientElement.y2')
   @DocsEditable()
-  AnimatedLength get y2 => _blink.BlinkSVGLinearGradientElement.y2_Getter(this);
+  AnimatedLength get y2 => _blink.BlinkSVGLinearGradientElement.instance.y2_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3163,47 +3163,47 @@
 
   @DomName('SVGMarkerElement.markerHeight')
   @DocsEditable()
-  AnimatedLength get markerHeight => _blink.BlinkSVGMarkerElement.markerHeight_Getter(this);
+  AnimatedLength get markerHeight => _blink.BlinkSVGMarkerElement.instance.markerHeight_Getter_(this);
 
   @DomName('SVGMarkerElement.markerUnits')
   @DocsEditable()
-  AnimatedEnumeration get markerUnits => _blink.BlinkSVGMarkerElement.markerUnits_Getter(this);
+  AnimatedEnumeration get markerUnits => _blink.BlinkSVGMarkerElement.instance.markerUnits_Getter_(this);
 
   @DomName('SVGMarkerElement.markerWidth')
   @DocsEditable()
-  AnimatedLength get markerWidth => _blink.BlinkSVGMarkerElement.markerWidth_Getter(this);
+  AnimatedLength get markerWidth => _blink.BlinkSVGMarkerElement.instance.markerWidth_Getter_(this);
 
   @DomName('SVGMarkerElement.orientAngle')
   @DocsEditable()
-  AnimatedAngle get orientAngle => _blink.BlinkSVGMarkerElement.orientAngle_Getter(this);
+  AnimatedAngle get orientAngle => _blink.BlinkSVGMarkerElement.instance.orientAngle_Getter_(this);
 
   @DomName('SVGMarkerElement.orientType')
   @DocsEditable()
-  AnimatedEnumeration get orientType => _blink.BlinkSVGMarkerElement.orientType_Getter(this);
+  AnimatedEnumeration get orientType => _blink.BlinkSVGMarkerElement.instance.orientType_Getter_(this);
 
   @DomName('SVGMarkerElement.refX')
   @DocsEditable()
-  AnimatedLength get refX => _blink.BlinkSVGMarkerElement.refX_Getter(this);
+  AnimatedLength get refX => _blink.BlinkSVGMarkerElement.instance.refX_Getter_(this);
 
   @DomName('SVGMarkerElement.refY')
   @DocsEditable()
-  AnimatedLength get refY => _blink.BlinkSVGMarkerElement.refY_Getter(this);
+  AnimatedLength get refY => _blink.BlinkSVGMarkerElement.instance.refY_Getter_(this);
 
   @DomName('SVGMarkerElement.setOrientToAngle')
   @DocsEditable()
-  void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.setOrientToAngle_Callback_1(this, angle);
+  void setOrientToAngle(Angle angle) => _blink.BlinkSVGMarkerElement.instance.setOrientToAngle_Callback_1_(this, angle);
 
   @DomName('SVGMarkerElement.setOrientToAuto')
   @DocsEditable()
-  void setOrientToAuto() => _blink.BlinkSVGMarkerElement.setOrientToAuto_Callback(this);
+  void setOrientToAuto() => _blink.BlinkSVGMarkerElement.instance.setOrientToAuto_Callback_0_(this);
 
   @DomName('SVGMarkerElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGMarkerElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGMarkerElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGMarkerElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGMarkerElement.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGMarkerElement.instance.viewBox_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3232,43 +3232,43 @@
 
   @DomName('SVGMaskElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGMaskElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGMaskElement.instance.height_Getter_(this);
 
   @DomName('SVGMaskElement.maskContentUnits')
   @DocsEditable()
-  AnimatedEnumeration get maskContentUnits => _blink.BlinkSVGMaskElement.maskContentUnits_Getter(this);
+  AnimatedEnumeration get maskContentUnits => _blink.BlinkSVGMaskElement.instance.maskContentUnits_Getter_(this);
 
   @DomName('SVGMaskElement.maskUnits')
   @DocsEditable()
-  AnimatedEnumeration get maskUnits => _blink.BlinkSVGMaskElement.maskUnits_Getter(this);
+  AnimatedEnumeration get maskUnits => _blink.BlinkSVGMaskElement.instance.maskUnits_Getter_(this);
 
   @DomName('SVGMaskElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGMaskElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGMaskElement.instance.width_Getter_(this);
 
   @DomName('SVGMaskElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGMaskElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGMaskElement.instance.x_Getter_(this);
 
   @DomName('SVGMaskElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGMaskElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGMaskElement.instance.y_Getter_(this);
 
   @DomName('SVGMaskElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => _blink.BlinkSVGMaskElement.requiredExtensions_Getter(this);
+  StringList get requiredExtensions => _blink.BlinkSVGMaskElement.instance.requiredExtensions_Getter_(this);
 
   @DomName('SVGMaskElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => _blink.BlinkSVGMaskElement.requiredFeatures_Getter(this);
+  StringList get requiredFeatures => _blink.BlinkSVGMaskElement.instance.requiredFeatures_Getter_(this);
 
   @DomName('SVGMaskElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => _blink.BlinkSVGMaskElement.systemLanguage_Getter(this);
+  StringList get systemLanguage => _blink.BlinkSVGMaskElement.instance.systemLanguage_Getter_(this);
 
   @DomName('SVGMaskElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGMaskElement.hasExtension_Callback_1(this, extension);
+  bool hasExtension(String extension) => _blink.BlinkSVGMaskElement.instance.hasExtension_Callback_1_(this, extension);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3287,95 +3287,95 @@
 
   @DomName('SVGMatrix.a')
   @DocsEditable()
-  num get a => _blink.BlinkSVGMatrix.a_Getter(this);
+  num get a => _blink.BlinkSVGMatrix.instance.a_Getter_(this);
 
   @DomName('SVGMatrix.a')
   @DocsEditable()
-  void set a(num value) => _blink.BlinkSVGMatrix.a_Setter(this, value);
+  void set a(num value) => _blink.BlinkSVGMatrix.instance.a_Setter_(this, value);
 
   @DomName('SVGMatrix.b')
   @DocsEditable()
-  num get b => _blink.BlinkSVGMatrix.b_Getter(this);
+  num get b => _blink.BlinkSVGMatrix.instance.b_Getter_(this);
 
   @DomName('SVGMatrix.b')
   @DocsEditable()
-  void set b(num value) => _blink.BlinkSVGMatrix.b_Setter(this, value);
+  void set b(num value) => _blink.BlinkSVGMatrix.instance.b_Setter_(this, value);
 
   @DomName('SVGMatrix.c')
   @DocsEditable()
-  num get c => _blink.BlinkSVGMatrix.c_Getter(this);
+  num get c => _blink.BlinkSVGMatrix.instance.c_Getter_(this);
 
   @DomName('SVGMatrix.c')
   @DocsEditable()
-  void set c(num value) => _blink.BlinkSVGMatrix.c_Setter(this, value);
+  void set c(num value) => _blink.BlinkSVGMatrix.instance.c_Setter_(this, value);
 
   @DomName('SVGMatrix.d')
   @DocsEditable()
-  num get d => _blink.BlinkSVGMatrix.d_Getter(this);
+  num get d => _blink.BlinkSVGMatrix.instance.d_Getter_(this);
 
   @DomName('SVGMatrix.d')
   @DocsEditable()
-  void set d(num value) => _blink.BlinkSVGMatrix.d_Setter(this, value);
+  void set d(num value) => _blink.BlinkSVGMatrix.instance.d_Setter_(this, value);
 
   @DomName('SVGMatrix.e')
   @DocsEditable()
-  num get e => _blink.BlinkSVGMatrix.e_Getter(this);
+  num get e => _blink.BlinkSVGMatrix.instance.e_Getter_(this);
 
   @DomName('SVGMatrix.e')
   @DocsEditable()
-  void set e(num value) => _blink.BlinkSVGMatrix.e_Setter(this, value);
+  void set e(num value) => _blink.BlinkSVGMatrix.instance.e_Setter_(this, value);
 
   @DomName('SVGMatrix.f')
   @DocsEditable()
-  num get f => _blink.BlinkSVGMatrix.f_Getter(this);
+  num get f => _blink.BlinkSVGMatrix.instance.f_Getter_(this);
 
   @DomName('SVGMatrix.f')
   @DocsEditable()
-  void set f(num value) => _blink.BlinkSVGMatrix.f_Setter(this, value);
+  void set f(num value) => _blink.BlinkSVGMatrix.instance.f_Setter_(this, value);
 
   @DomName('SVGMatrix.flipX')
   @DocsEditable()
-  Matrix flipX() => _blink.BlinkSVGMatrix.flipX_Callback(this);
+  Matrix flipX() => _blink.BlinkSVGMatrix.instance.flipX_Callback_0_(this);
 
   @DomName('SVGMatrix.flipY')
   @DocsEditable()
-  Matrix flipY() => _blink.BlinkSVGMatrix.flipY_Callback(this);
+  Matrix flipY() => _blink.BlinkSVGMatrix.instance.flipY_Callback_0_(this);
 
   @DomName('SVGMatrix.inverse')
   @DocsEditable()
-  Matrix inverse() => _blink.BlinkSVGMatrix.inverse_Callback(this);
+  Matrix inverse() => _blink.BlinkSVGMatrix.instance.inverse_Callback_0_(this);
 
   @DomName('SVGMatrix.multiply')
   @DocsEditable()
-  Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.multiply_Callback_1(this, secondMatrix);
+  Matrix multiply(Matrix secondMatrix) => _blink.BlinkSVGMatrix.instance.multiply_Callback_1_(this, secondMatrix);
 
   @DomName('SVGMatrix.rotate')
   @DocsEditable()
-  Matrix rotate(num angle) => _blink.BlinkSVGMatrix.rotate_Callback_1(this, angle);
+  Matrix rotate(num angle) => _blink.BlinkSVGMatrix.instance.rotate_Callback_1_(this, angle);
 
   @DomName('SVGMatrix.rotateFromVector')
   @DocsEditable()
-  Matrix rotateFromVector(num x, num y) => _blink.BlinkSVGMatrix.rotateFromVector_Callback_2(this, x, y);
+  Matrix rotateFromVector(num x, num y) => _blink.BlinkSVGMatrix.instance.rotateFromVector_Callback_2_(this, x, y);
 
   @DomName('SVGMatrix.scale')
   @DocsEditable()
-  Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.scale_Callback_1(this, scaleFactor);
+  Matrix scale(num scaleFactor) => _blink.BlinkSVGMatrix.instance.scale_Callback_1_(this, scaleFactor);
 
   @DomName('SVGMatrix.scaleNonUniform')
   @DocsEditable()
-  Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => _blink.BlinkSVGMatrix.scaleNonUniform_Callback_2(this, scaleFactorX, scaleFactorY);
+  Matrix scaleNonUniform(num scaleFactorX, num scaleFactorY) => _blink.BlinkSVGMatrix.instance.scaleNonUniform_Callback_2_(this, scaleFactorX, scaleFactorY);
 
   @DomName('SVGMatrix.skewX')
   @DocsEditable()
-  Matrix skewX(num angle) => _blink.BlinkSVGMatrix.skewX_Callback_1(this, angle);
+  Matrix skewX(num angle) => _blink.BlinkSVGMatrix.instance.skewX_Callback_1_(this, angle);
 
   @DomName('SVGMatrix.skewY')
   @DocsEditable()
-  Matrix skewY(num angle) => _blink.BlinkSVGMatrix.skewY_Callback_1(this, angle);
+  Matrix skewY(num angle) => _blink.BlinkSVGMatrix.instance.skewY_Callback_1_(this, angle);
 
   @DomName('SVGMatrix.translate')
   @DocsEditable()
-  Matrix translate(num x, num y) => _blink.BlinkSVGMatrix.translate_Callback_2(this, x, y);
+  Matrix translate(num x, num y) => _blink.BlinkSVGMatrix.instance.translate_Callback_2_(this, x, y);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3415,11 +3415,11 @@
 
   @DomName('SVGNumber.value')
   @DocsEditable()
-  num get value => _blink.BlinkSVGNumber.value_Getter(this);
+  num get value => _blink.BlinkSVGNumber.instance.value_Getter_(this);
 
   @DomName('SVGNumber.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkSVGNumber.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkSVGNumber.instance.value_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3439,11 +3439,11 @@
   @DomName('SVGNumberList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGNumberList.length_Getter(this);
+  int get length => _blink.BlinkSVGNumberList.instance.length_Getter_(this);
 
   @DomName('SVGNumberList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGNumberList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGNumberList.instance.numberOfItems_Getter_(this);
 
   Number operator[](int index) {
     if (index < 0 || index >= length)
@@ -3492,35 +3492,35 @@
   @DomName('SVGNumberList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Number value) => _blink.BlinkSVGNumberList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, Number value) => _blink.BlinkSVGNumberList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGNumberList.appendItem')
   @DocsEditable()
-  Number appendItem(Number item) => _blink.BlinkSVGNumberList.appendItem_Callback_1(this, item);
+  Number appendItem(Number item) => _blink.BlinkSVGNumberList.instance.appendItem_Callback_1_(this, item);
 
   @DomName('SVGNumberList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGNumberList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGNumberList.instance.clear_Callback_0_(this);
 
   @DomName('SVGNumberList.getItem')
   @DocsEditable()
-  Number getItem(int index) => _blink.BlinkSVGNumberList.getItem_Callback_1(this, index);
+  Number getItem(int index) => _blink.BlinkSVGNumberList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGNumberList.initialize')
   @DocsEditable()
-  Number initialize(Number item) => _blink.BlinkSVGNumberList.initialize_Callback_1(this, item);
+  Number initialize(Number item) => _blink.BlinkSVGNumberList.instance.initialize_Callback_1_(this, item);
 
   @DomName('SVGNumberList.insertItemBefore')
   @DocsEditable()
-  Number insertItemBefore(Number item, int index) => _blink.BlinkSVGNumberList.insertItemBefore_Callback_2(this, item, index);
+  Number insertItemBefore(Number item, int index) => _blink.BlinkSVGNumberList.instance.insertItemBefore_Callback_2_(this, item, index);
 
   @DomName('SVGNumberList.removeItem')
   @DocsEditable()
-  Number removeItem(int index) => _blink.BlinkSVGNumberList.removeItem_Callback_1(this, index);
+  Number removeItem(int index) => _blink.BlinkSVGNumberList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGNumberList.replaceItem')
   @DocsEditable()
-  Number replaceItem(Number item, int index) => _blink.BlinkSVGNumberList.replaceItem_Callback_2(this, item, index);
+  Number replaceItem(Number item, int index) => _blink.BlinkSVGNumberList.instance.replaceItem_Callback_2_(this, item, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3549,111 +3549,111 @@
 
   @DomName('SVGPathElement.animatedNormalizedPathSegList')
   @DocsEditable()
-  PathSegList get animatedNormalizedPathSegList => _blink.BlinkSVGPathElement.animatedNormalizedPathSegList_Getter(this);
+  PathSegList get animatedNormalizedPathSegList => _blink.BlinkSVGPathElement.instance.animatedNormalizedPathSegList_Getter_(this);
 
   @DomName('SVGPathElement.animatedPathSegList')
   @DocsEditable()
-  PathSegList get animatedPathSegList => _blink.BlinkSVGPathElement.animatedPathSegList_Getter(this);
+  PathSegList get animatedPathSegList => _blink.BlinkSVGPathElement.instance.animatedPathSegList_Getter_(this);
 
   @DomName('SVGPathElement.normalizedPathSegList')
   @DocsEditable()
-  PathSegList get normalizedPathSegList => _blink.BlinkSVGPathElement.normalizedPathSegList_Getter(this);
+  PathSegList get normalizedPathSegList => _blink.BlinkSVGPathElement.instance.normalizedPathSegList_Getter_(this);
 
   @DomName('SVGPathElement.pathLength')
   @DocsEditable()
-  AnimatedNumber get pathLength => _blink.BlinkSVGPathElement.pathLength_Getter(this);
+  AnimatedNumber get pathLength => _blink.BlinkSVGPathElement.instance.pathLength_Getter_(this);
 
   @DomName('SVGPathElement.pathSegList')
   @DocsEditable()
-  PathSegList get pathSegList => _blink.BlinkSVGPathElement.pathSegList_Getter(this);
+  PathSegList get pathSegList => _blink.BlinkSVGPathElement.instance.pathSegList_Getter_(this);
 
   @DomName('SVGPathElement.createSVGPathSegArcAbs')
   @DocsEditable()
-  PathSegArcAbs createSvgPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcAbs_Callback_7(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+  PathSegArcAbs createSvgPathSegArcAbs(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.instance.createSVGPathSegArcAbs_Callback_7_(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 
   @DomName('SVGPathElement.createSVGPathSegArcRel')
   @DocsEditable()
-  PathSegArcRel createSvgPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.createSVGPathSegArcRel_Callback_7(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+  PathSegArcRel createSvgPathSegArcRel(num x, num y, num r1, num r2, num angle, bool largeArcFlag, bool sweepFlag) => _blink.BlinkSVGPathElement.instance.createSVGPathSegArcRel_Callback_7_(this, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 
   @DomName('SVGPathElement.createSVGPathSegClosePath')
   @DocsEditable()
-  PathSegClosePath createSvgPathSegClosePath() => _blink.BlinkSVGPathElement.createSVGPathSegClosePath_Callback(this);
+  PathSegClosePath createSvgPathSegClosePath() => _blink.BlinkSVGPathElement.instance.createSVGPathSegClosePath_Callback_0_(this);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicAbs')
   @DocsEditable()
-  PathSegCurvetoCubicAbs createSvgPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicAbs_Callback_6(this, x, y, x1, y1, x2, y2);
+  PathSegCurvetoCubicAbs createSvgPathSegCurvetoCubicAbs(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicAbs_Callback_6_(this, x, y, x1, y1, x2, y2);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicRel')
   @DocsEditable()
-  PathSegCurvetoCubicRel createSvgPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicRel_Callback_6(this, x, y, x1, y1, x2, y2);
+  PathSegCurvetoCubicRel createSvgPathSegCurvetoCubicRel(num x, num y, num x1, num y1, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicRel_Callback_6_(this, x, y, x1, y1, x2, y2);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs')
   @DocsEditable()
-  PathSegCurvetoCubicSmoothAbs createSvgPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs_Callback_4(this, x, y, x2, y2);
+  PathSegCurvetoCubicSmoothAbs createSvgPathSegCurvetoCubicSmoothAbs(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothAbs_Callback_4_(this, x, y, x2, y2);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel')
   @DocsEditable()
-  PathSegCurvetoCubicSmoothRel createSvgPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoCubicSmoothRel_Callback_4(this, x, y, x2, y2);
+  PathSegCurvetoCubicSmoothRel createSvgPathSegCurvetoCubicSmoothRel(num x, num y, num x2, num y2) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoCubicSmoothRel_Callback_4_(this, x, y, x2, y2);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticAbs')
   @DocsEditable()
-  PathSegCurvetoQuadraticAbs createSvgPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticAbs_Callback_4(this, x, y, x1, y1);
+  PathSegCurvetoQuadraticAbs createSvgPathSegCurvetoQuadraticAbs(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticAbs_Callback_4_(this, x, y, x1, y1);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticRel')
   @DocsEditable()
-  PathSegCurvetoQuadraticRel createSvgPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticRel_Callback_4(this, x, y, x1, y1);
+  PathSegCurvetoQuadraticRel createSvgPathSegCurvetoQuadraticRel(num x, num y, num x1, num y1) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticRel_Callback_4_(this, x, y, x1, y1);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs')
   @DocsEditable()
-  PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2(this, x, y);
+  PathSegCurvetoQuadraticSmoothAbs createSvgPathSegCurvetoQuadraticSmoothAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothAbs_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel')
   @DocsEditable()
-  PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2(this, x, y);
+  PathSegCurvetoQuadraticSmoothRel createSvgPathSegCurvetoQuadraticSmoothRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegCurvetoQuadraticSmoothRel_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoAbs')
   @DocsEditable()
-  PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoAbs_Callback_2(this, x, y);
+  PathSegLinetoAbs createSvgPathSegLinetoAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoAbs_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalAbs')
   @DocsEditable()
-  PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalAbs_Callback_1(this, x);
+  PathSegLinetoHorizontalAbs createSvgPathSegLinetoHorizontalAbs(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalAbs_Callback_1_(this, x);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoHorizontalRel')
   @DocsEditable()
-  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoHorizontalRel_Callback_1(this, x);
+  PathSegLinetoHorizontalRel createSvgPathSegLinetoHorizontalRel(num x) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoHorizontalRel_Callback_1_(this, x);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoRel')
   @DocsEditable()
-  PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoRel_Callback_2(this, x, y);
+  PathSegLinetoRel createSvgPathSegLinetoRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoRel_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoVerticalAbs')
   @DocsEditable()
-  PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalAbs_Callback_1(this, y);
+  PathSegLinetoVerticalAbs createSvgPathSegLinetoVerticalAbs(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalAbs_Callback_1_(this, y);
 
   @DomName('SVGPathElement.createSVGPathSegLinetoVerticalRel')
   @DocsEditable()
-  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.createSVGPathSegLinetoVerticalRel_Callback_1(this, y);
+  PathSegLinetoVerticalRel createSvgPathSegLinetoVerticalRel(num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegLinetoVerticalRel_Callback_1_(this, y);
 
   @DomName('SVGPathElement.createSVGPathSegMovetoAbs')
   @DocsEditable()
-  PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoAbs_Callback_2(this, x, y);
+  PathSegMovetoAbs createSvgPathSegMovetoAbs(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoAbs_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.createSVGPathSegMovetoRel')
   @DocsEditable()
-  PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => _blink.BlinkSVGPathElement.createSVGPathSegMovetoRel_Callback_2(this, x, y);
+  PathSegMovetoRel createSvgPathSegMovetoRel(num x, num y) => _blink.BlinkSVGPathElement.instance.createSVGPathSegMovetoRel_Callback_2_(this, x, y);
 
   @DomName('SVGPathElement.getPathSegAtLength')
   @DocsEditable()
-  int getPathSegAtLength(num distance) => _blink.BlinkSVGPathElement.getPathSegAtLength_Callback_1(this, distance);
+  int getPathSegAtLength(num distance) => _blink.BlinkSVGPathElement.instance.getPathSegAtLength_Callback_1_(this, distance);
 
   @DomName('SVGPathElement.getPointAtLength')
   @DocsEditable()
-  Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.getPointAtLength_Callback_1(this, distance);
+  Point getPointAtLength(num distance) => _blink.BlinkSVGPathElement.instance.getPointAtLength_Callback_1_(this, distance);
 
   @DomName('SVGPathElement.getTotalLength')
   @DocsEditable()
-  double getTotalLength() => _blink.BlinkSVGPathElement.getTotalLength_Callback(this);
+  double getTotalLength() => _blink.BlinkSVGPathElement.instance.getTotalLength_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3752,11 +3752,11 @@
 
   @DomName('SVGPathSeg.pathSegType')
   @DocsEditable()
-  int get pathSegType => _blink.BlinkSVGPathSeg.pathSegType_Getter(this);
+  int get pathSegType => _blink.BlinkSVGPathSeg.instance.pathSegType_Getter_(this);
 
   @DomName('SVGPathSeg.pathSegTypeAsLetter')
   @DocsEditable()
-  String get pathSegTypeAsLetter => _blink.BlinkSVGPathSeg.pathSegTypeAsLetter_Getter(this);
+  String get pathSegTypeAsLetter => _blink.BlinkSVGPathSeg.instance.pathSegTypeAsLetter_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3775,59 +3775,59 @@
 
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
-  num get angle => _blink.BlinkSVGPathSegArcAbs.angle_Getter(this);
+  num get angle => _blink.BlinkSVGPathSegArcAbs.instance.angle_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.angle')
   @DocsEditable()
-  void set angle(num value) => _blink.BlinkSVGPathSegArcAbs.angle_Setter(this, value);
+  void set angle(num value) => _blink.BlinkSVGPathSegArcAbs.instance.angle_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
-  bool get largeArcFlag => _blink.BlinkSVGPathSegArcAbs.largeArcFlag_Getter(this);
+  bool get largeArcFlag => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.largeArcFlag')
   @DocsEditable()
-  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.largeArcFlag_Setter(this, value);
+  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.largeArcFlag_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
-  num get r1 => _blink.BlinkSVGPathSegArcAbs.r1_Getter(this);
+  num get r1 => _blink.BlinkSVGPathSegArcAbs.instance.r1_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.r1')
   @DocsEditable()
-  void set r1(num value) => _blink.BlinkSVGPathSegArcAbs.r1_Setter(this, value);
+  void set r1(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r1_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
-  num get r2 => _blink.BlinkSVGPathSegArcAbs.r2_Getter(this);
+  num get r2 => _blink.BlinkSVGPathSegArcAbs.instance.r2_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.r2')
   @DocsEditable()
-  void set r2(num value) => _blink.BlinkSVGPathSegArcAbs.r2_Setter(this, value);
+  void set r2(num value) => _blink.BlinkSVGPathSegArcAbs.instance.r2_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
-  bool get sweepFlag => _blink.BlinkSVGPathSegArcAbs.sweepFlag_Getter(this);
+  bool get sweepFlag => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.sweepFlag')
   @DocsEditable()
-  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.sweepFlag_Setter(this, value);
+  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcAbs.instance.sweepFlag_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegArcAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegArcAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegArcAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegArcAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegArcAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegArcAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegArcAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegArcAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegArcAbs.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3846,59 +3846,59 @@
 
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
-  num get angle => _blink.BlinkSVGPathSegArcRel.angle_Getter(this);
+  num get angle => _blink.BlinkSVGPathSegArcRel.instance.angle_Getter_(this);
 
   @DomName('SVGPathSegArcRel.angle')
   @DocsEditable()
-  void set angle(num value) => _blink.BlinkSVGPathSegArcRel.angle_Setter(this, value);
+  void set angle(num value) => _blink.BlinkSVGPathSegArcRel.instance.angle_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
-  bool get largeArcFlag => _blink.BlinkSVGPathSegArcRel.largeArcFlag_Getter(this);
+  bool get largeArcFlag => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Getter_(this);
 
   @DomName('SVGPathSegArcRel.largeArcFlag')
   @DocsEditable()
-  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.largeArcFlag_Setter(this, value);
+  void set largeArcFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.largeArcFlag_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
-  num get r1 => _blink.BlinkSVGPathSegArcRel.r1_Getter(this);
+  num get r1 => _blink.BlinkSVGPathSegArcRel.instance.r1_Getter_(this);
 
   @DomName('SVGPathSegArcRel.r1')
   @DocsEditable()
-  void set r1(num value) => _blink.BlinkSVGPathSegArcRel.r1_Setter(this, value);
+  void set r1(num value) => _blink.BlinkSVGPathSegArcRel.instance.r1_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
-  num get r2 => _blink.BlinkSVGPathSegArcRel.r2_Getter(this);
+  num get r2 => _blink.BlinkSVGPathSegArcRel.instance.r2_Getter_(this);
 
   @DomName('SVGPathSegArcRel.r2')
   @DocsEditable()
-  void set r2(num value) => _blink.BlinkSVGPathSegArcRel.r2_Setter(this, value);
+  void set r2(num value) => _blink.BlinkSVGPathSegArcRel.instance.r2_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
-  bool get sweepFlag => _blink.BlinkSVGPathSegArcRel.sweepFlag_Getter(this);
+  bool get sweepFlag => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Getter_(this);
 
   @DomName('SVGPathSegArcRel.sweepFlag')
   @DocsEditable()
-  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.sweepFlag_Setter(this, value);
+  void set sweepFlag(bool value) => _blink.BlinkSVGPathSegArcRel.instance.sweepFlag_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegArcRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegArcRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegArcRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegArcRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegArcRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegArcRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegArcRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegArcRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegArcRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegArcRel.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3932,51 +3932,51 @@
 
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.x1_Getter(this);
+  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x1_Setter(this, value);
+  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.x2_Getter(this);
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.x2_Setter(this, value);
+  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.x2_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.y1_Getter(this);
+  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y1_Setter(this, value);
+  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.y2_Getter(this);
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicAbs.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.y2_Setter(this, value);
+  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicAbs.instance.y2_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -3995,51 +3995,51 @@
 
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicRel.x1_Getter(this);
+  num get x1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x1_Setter(this, value);
+  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicRel.x2_Getter(this);
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.x2_Setter(this, value);
+  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.x2_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicRel.y1_Getter(this);
+  num get y1 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y1_Setter(this, value);
+  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicRel.y2_Getter(this);
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicRel.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.y2_Setter(this, value);
+  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicRel.instance.y2_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4058,35 +4058,35 @@
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x2_Getter(this);
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.x2_Setter(this, value);
+  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.x2_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y2_Getter(this);
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothAbs.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.y2_Setter(this, value);
+  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothAbs.instance.y2_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4105,35 +4105,35 @@
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
-  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x2_Getter(this);
+  num get x2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.x2')
   @DocsEditable()
-  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.x2_Setter(this, value);
+  void set x2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.x2_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
-  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y2_Getter(this);
+  num get y2 => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Getter_(this);
 
   @DomName('SVGPathSegCurvetoCubicSmoothRel.y2')
   @DocsEditable()
-  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.y2_Setter(this, value);
+  void set y2(num value) => _blink.BlinkSVGPathSegCurvetoCubicSmoothRel.instance.y2_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4152,35 +4152,35 @@
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x1_Getter(this);
+  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.x1_Setter(this, value);
+  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.x1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y1_Getter(this);
+  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticAbs.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.y1_Setter(this, value);
+  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticAbs.instance.y1_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4199,35 +4199,35 @@
 
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
-  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x1_Getter(this);
+  num get x1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.x1')
   @DocsEditable()
-  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.x1_Setter(this, value);
+  void set x1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.x1_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
-  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y1_Getter(this);
+  num get y1 => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticRel.y1')
   @DocsEditable()
-  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.y1_Setter(this, value);
+  void set y1(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticRel.instance.y1_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4246,19 +4246,19 @@
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothAbs.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4277,19 +4277,19 @@
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegCurvetoQuadraticSmoothRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegCurvetoQuadraticSmoothRel.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4308,19 +4308,19 @@
 
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegLinetoAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegLinetoAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegLinetoAbs.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4339,11 +4339,11 @@
 
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoHorizontalAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegLinetoHorizontalAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalAbs.instance.x_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4362,11 +4362,11 @@
 
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoHorizontalRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegLinetoHorizontalRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegLinetoHorizontalRel.instance.x_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4385,19 +4385,19 @@
 
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegLinetoRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegLinetoRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegLinetoRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegLinetoRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegLinetoRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegLinetoRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegLinetoRel.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4416,11 +4416,11 @@
 
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoVerticalAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegLinetoVerticalAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalAbs.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4439,11 +4439,11 @@
 
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegLinetoVerticalRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegLinetoVerticalRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegLinetoVerticalRel.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4463,11 +4463,11 @@
   @DomName('SVGPathSegList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGPathSegList.length_Getter(this);
+  int get length => _blink.BlinkSVGPathSegList.instance.length_Getter_(this);
 
   @DomName('SVGPathSegList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGPathSegList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGPathSegList.instance.numberOfItems_Getter_(this);
 
   PathSeg operator[](int index) {
     if (index < 0 || index >= length)
@@ -4516,35 +4516,35 @@
   @DomName('SVGPathSegList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, PathSeg value) => _blink.BlinkSVGPathSegList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, PathSeg value) => _blink.BlinkSVGPathSegList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGPathSegList.appendItem')
   @DocsEditable()
-  PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.appendItem_Callback_1(this, newItem);
+  PathSeg appendItem(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.appendItem_Callback_1_(this, newItem);
 
   @DomName('SVGPathSegList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGPathSegList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGPathSegList.instance.clear_Callback_0_(this);
 
   @DomName('SVGPathSegList.getItem')
   @DocsEditable()
-  PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.getItem_Callback_1(this, index);
+  PathSeg getItem(int index) => _blink.BlinkSVGPathSegList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGPathSegList.initialize')
   @DocsEditable()
-  PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.initialize_Callback_1(this, newItem);
+  PathSeg initialize(PathSeg newItem) => _blink.BlinkSVGPathSegList.instance.initialize_Callback_1_(this, newItem);
 
   @DomName('SVGPathSegList.insertItemBefore')
   @DocsEditable()
-  PathSeg insertItemBefore(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.insertItemBefore_Callback_2(this, newItem, index);
+  PathSeg insertItemBefore(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.instance.insertItemBefore_Callback_2_(this, newItem, index);
 
   @DomName('SVGPathSegList.removeItem')
   @DocsEditable()
-  PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.removeItem_Callback_1(this, index);
+  PathSeg removeItem(int index) => _blink.BlinkSVGPathSegList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGPathSegList.replaceItem')
   @DocsEditable()
-  PathSeg replaceItem(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.replaceItem_Callback_2(this, newItem, index);
+  PathSeg replaceItem(PathSeg newItem, int index) => _blink.BlinkSVGPathSegList.instance.replaceItem_Callback_2_(this, newItem, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4563,19 +4563,19 @@
 
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegMovetoAbs.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Getter_(this);
 
   @DomName('SVGPathSegMovetoAbs.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegMovetoAbs.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Getter_(this);
 
   @DomName('SVGPathSegMovetoAbs.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegMovetoAbs.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4594,19 +4594,19 @@
 
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPathSegMovetoRel.x_Getter(this);
+  num get x => _blink.BlinkSVGPathSegMovetoRel.instance.x_Getter_(this);
 
   @DomName('SVGPathSegMovetoRel.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPathSegMovetoRel.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.x_Setter_(this, value);
 
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPathSegMovetoRel.y_Getter(this);
+  num get y => _blink.BlinkSVGPathSegMovetoRel.instance.y_Getter_(this);
 
   @DomName('SVGPathSegMovetoRel.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPathSegMovetoRel.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPathSegMovetoRel.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4635,59 +4635,59 @@
 
   @DomName('SVGPatternElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGPatternElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGPatternElement.instance.height_Getter_(this);
 
   @DomName('SVGPatternElement.patternContentUnits')
   @DocsEditable()
-  AnimatedEnumeration get patternContentUnits => _blink.BlinkSVGPatternElement.patternContentUnits_Getter(this);
+  AnimatedEnumeration get patternContentUnits => _blink.BlinkSVGPatternElement.instance.patternContentUnits_Getter_(this);
 
   @DomName('SVGPatternElement.patternTransform')
   @DocsEditable()
-  AnimatedTransformList get patternTransform => _blink.BlinkSVGPatternElement.patternTransform_Getter(this);
+  AnimatedTransformList get patternTransform => _blink.BlinkSVGPatternElement.instance.patternTransform_Getter_(this);
 
   @DomName('SVGPatternElement.patternUnits')
   @DocsEditable()
-  AnimatedEnumeration get patternUnits => _blink.BlinkSVGPatternElement.patternUnits_Getter(this);
+  AnimatedEnumeration get patternUnits => _blink.BlinkSVGPatternElement.instance.patternUnits_Getter_(this);
 
   @DomName('SVGPatternElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGPatternElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGPatternElement.instance.width_Getter_(this);
 
   @DomName('SVGPatternElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGPatternElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGPatternElement.instance.x_Getter_(this);
 
   @DomName('SVGPatternElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGPatternElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGPatternElement.instance.y_Getter_(this);
 
   @DomName('SVGPatternElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGPatternElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGPatternElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGPatternElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGPatternElement.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGPatternElement.instance.viewBox_Getter_(this);
 
   @DomName('SVGPatternElement.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => _blink.BlinkSVGPatternElement.requiredExtensions_Getter(this);
+  StringList get requiredExtensions => _blink.BlinkSVGPatternElement.instance.requiredExtensions_Getter_(this);
 
   @DomName('SVGPatternElement.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => _blink.BlinkSVGPatternElement.requiredFeatures_Getter(this);
+  StringList get requiredFeatures => _blink.BlinkSVGPatternElement.instance.requiredFeatures_Getter_(this);
 
   @DomName('SVGPatternElement.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => _blink.BlinkSVGPatternElement.systemLanguage_Getter(this);
+  StringList get systemLanguage => _blink.BlinkSVGPatternElement.instance.systemLanguage_Getter_(this);
 
   @DomName('SVGPatternElement.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.hasExtension_Callback_1(this, extension);
+  bool hasExtension(String extension) => _blink.BlinkSVGPatternElement.instance.hasExtension_Callback_1_(this, extension);
 
   @DomName('SVGPatternElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGPatternElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGPatternElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4706,23 +4706,23 @@
 
   @DomName('SVGPoint.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGPoint.x_Getter(this);
+  num get x => _blink.BlinkSVGPoint.instance.x_Getter_(this);
 
   @DomName('SVGPoint.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGPoint.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGPoint.instance.x_Setter_(this, value);
 
   @DomName('SVGPoint.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGPoint.y_Getter(this);
+  num get y => _blink.BlinkSVGPoint.instance.y_Getter_(this);
 
   @DomName('SVGPoint.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGPoint.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGPoint.instance.y_Setter_(this, value);
 
   @DomName('SVGPoint.matrixTransform')
   @DocsEditable()
-  Point matrixTransform(Matrix matrix) => _blink.BlinkSVGPoint.matrixTransform_Callback_1(this, matrix);
+  Point matrixTransform(Matrix matrix) => _blink.BlinkSVGPoint.instance.matrixTransform_Callback_1_(this, matrix);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4742,44 +4742,44 @@
   @DomName('SVGPointList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGPointList.length_Getter(this);
+  int get length => _blink.BlinkSVGPointList.instance.length_Getter_(this);
 
   @DomName('SVGPointList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGPointList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGPointList.instance.numberOfItems_Getter_(this);
 
   @DomName('SVGPointList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Point value) => _blink.BlinkSVGPointList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, Point value) => _blink.BlinkSVGPointList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGPointList.appendItem')
   @DocsEditable()
-  Point appendItem(Point item) => _blink.BlinkSVGPointList.appendItem_Callback_1(this, item);
+  Point appendItem(Point item) => _blink.BlinkSVGPointList.instance.appendItem_Callback_1_(this, item);
 
   @DomName('SVGPointList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGPointList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGPointList.instance.clear_Callback_0_(this);
 
   @DomName('SVGPointList.getItem')
   @DocsEditable()
-  Point getItem(int index) => _blink.BlinkSVGPointList.getItem_Callback_1(this, index);
+  Point getItem(int index) => _blink.BlinkSVGPointList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGPointList.initialize')
   @DocsEditable()
-  Point initialize(Point item) => _blink.BlinkSVGPointList.initialize_Callback_1(this, item);
+  Point initialize(Point item) => _blink.BlinkSVGPointList.instance.initialize_Callback_1_(this, item);
 
   @DomName('SVGPointList.insertItemBefore')
   @DocsEditable()
-  Point insertItemBefore(Point item, int index) => _blink.BlinkSVGPointList.insertItemBefore_Callback_2(this, item, index);
+  Point insertItemBefore(Point item, int index) => _blink.BlinkSVGPointList.instance.insertItemBefore_Callback_2_(this, item, index);
 
   @DomName('SVGPointList.removeItem')
   @DocsEditable()
-  Point removeItem(int index) => _blink.BlinkSVGPointList.removeItem_Callback_1(this, index);
+  Point removeItem(int index) => _blink.BlinkSVGPointList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGPointList.replaceItem')
   @DocsEditable()
-  Point replaceItem(Point item, int index) => _blink.BlinkSVGPointList.replaceItem_Callback_2(this, item, index);
+  Point replaceItem(Point item, int index) => _blink.BlinkSVGPointList.instance.replaceItem_Callback_2_(this, item, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4808,11 +4808,11 @@
 
   @DomName('SVGPolygonElement.animatedPoints')
   @DocsEditable()
-  PointList get animatedPoints => _blink.BlinkSVGPolygonElement.animatedPoints_Getter(this);
+  PointList get animatedPoints => _blink.BlinkSVGPolygonElement.instance.animatedPoints_Getter_(this);
 
   @DomName('SVGPolygonElement.points')
   @DocsEditable()
-  PointList get points => _blink.BlinkSVGPolygonElement.points_Getter(this);
+  PointList get points => _blink.BlinkSVGPolygonElement.instance.points_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4841,11 +4841,11 @@
 
   @DomName('SVGPolylineElement.animatedPoints')
   @DocsEditable()
-  PointList get animatedPoints => _blink.BlinkSVGPolylineElement.animatedPoints_Getter(this);
+  PointList get animatedPoints => _blink.BlinkSVGPolylineElement.instance.animatedPoints_Getter_(this);
 
   @DomName('SVGPolylineElement.points')
   @DocsEditable()
-  PointList get points => _blink.BlinkSVGPolylineElement.points_Getter(this);
+  PointList get points => _blink.BlinkSVGPolylineElement.instance.points_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4920,19 +4920,19 @@
 
   @DomName('SVGPreserveAspectRatio.align')
   @DocsEditable()
-  int get align => _blink.BlinkSVGPreserveAspectRatio.align_Getter(this);
+  int get align => _blink.BlinkSVGPreserveAspectRatio.instance.align_Getter_(this);
 
   @DomName('SVGPreserveAspectRatio.align')
   @DocsEditable()
-  void set align(int value) => _blink.BlinkSVGPreserveAspectRatio.align_Setter(this, value);
+  void set align(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.align_Setter_(this, value);
 
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
-  int get meetOrSlice => _blink.BlinkSVGPreserveAspectRatio.meetOrSlice_Getter(this);
+  int get meetOrSlice => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Getter_(this);
 
   @DomName('SVGPreserveAspectRatio.meetOrSlice')
   @DocsEditable()
-  void set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.meetOrSlice_Setter(this, value);
+  void set meetOrSlice(int value) => _blink.BlinkSVGPreserveAspectRatio.instance.meetOrSlice_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -4961,27 +4961,27 @@
 
   @DomName('SVGRadialGradientElement.cx')
   @DocsEditable()
-  AnimatedLength get cx => _blink.BlinkSVGRadialGradientElement.cx_Getter(this);
+  AnimatedLength get cx => _blink.BlinkSVGRadialGradientElement.instance.cx_Getter_(this);
 
   @DomName('SVGRadialGradientElement.cy')
   @DocsEditable()
-  AnimatedLength get cy => _blink.BlinkSVGRadialGradientElement.cy_Getter(this);
+  AnimatedLength get cy => _blink.BlinkSVGRadialGradientElement.instance.cy_Getter_(this);
 
   @DomName('SVGRadialGradientElement.fr')
   @DocsEditable()
-  AnimatedLength get fr => _blink.BlinkSVGRadialGradientElement.fr_Getter(this);
+  AnimatedLength get fr => _blink.BlinkSVGRadialGradientElement.instance.fr_Getter_(this);
 
   @DomName('SVGRadialGradientElement.fx')
   @DocsEditable()
-  AnimatedLength get fx => _blink.BlinkSVGRadialGradientElement.fx_Getter(this);
+  AnimatedLength get fx => _blink.BlinkSVGRadialGradientElement.instance.fx_Getter_(this);
 
   @DomName('SVGRadialGradientElement.fy')
   @DocsEditable()
-  AnimatedLength get fy => _blink.BlinkSVGRadialGradientElement.fy_Getter(this);
+  AnimatedLength get fy => _blink.BlinkSVGRadialGradientElement.instance.fy_Getter_(this);
 
   @DomName('SVGRadialGradientElement.r')
   @DocsEditable()
-  AnimatedLength get r => _blink.BlinkSVGRadialGradientElement.r_Getter(this);
+  AnimatedLength get r => _blink.BlinkSVGRadialGradientElement.instance.r_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5000,35 +5000,35 @@
 
   @DomName('SVGRect.height')
   @DocsEditable()
-  num get height => _blink.BlinkSVGRect.height_Getter(this);
+  num get height => _blink.BlinkSVGRect.instance.height_Getter_(this);
 
   @DomName('SVGRect.height')
   @DocsEditable()
-  void set height(num value) => _blink.BlinkSVGRect.height_Setter(this, value);
+  void set height(num value) => _blink.BlinkSVGRect.instance.height_Setter_(this, value);
 
   @DomName('SVGRect.width')
   @DocsEditable()
-  num get width => _blink.BlinkSVGRect.width_Getter(this);
+  num get width => _blink.BlinkSVGRect.instance.width_Getter_(this);
 
   @DomName('SVGRect.width')
   @DocsEditable()
-  void set width(num value) => _blink.BlinkSVGRect.width_Setter(this, value);
+  void set width(num value) => _blink.BlinkSVGRect.instance.width_Setter_(this, value);
 
   @DomName('SVGRect.x')
   @DocsEditable()
-  num get x => _blink.BlinkSVGRect.x_Getter(this);
+  num get x => _blink.BlinkSVGRect.instance.x_Getter_(this);
 
   @DomName('SVGRect.x')
   @DocsEditable()
-  void set x(num value) => _blink.BlinkSVGRect.x_Setter(this, value);
+  void set x(num value) => _blink.BlinkSVGRect.instance.x_Setter_(this, value);
 
   @DomName('SVGRect.y')
   @DocsEditable()
-  num get y => _blink.BlinkSVGRect.y_Getter(this);
+  num get y => _blink.BlinkSVGRect.instance.y_Getter_(this);
 
   @DomName('SVGRect.y')
   @DocsEditable()
-  void set y(num value) => _blink.BlinkSVGRect.y_Setter(this, value);
+  void set y(num value) => _blink.BlinkSVGRect.instance.y_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5057,27 +5057,27 @@
 
   @DomName('SVGRectElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGRectElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGRectElement.instance.height_Getter_(this);
 
   @DomName('SVGRectElement.rx')
   @DocsEditable()
-  AnimatedLength get rx => _blink.BlinkSVGRectElement.rx_Getter(this);
+  AnimatedLength get rx => _blink.BlinkSVGRectElement.instance.rx_Getter_(this);
 
   @DomName('SVGRectElement.ry')
   @DocsEditable()
-  AnimatedLength get ry => _blink.BlinkSVGRectElement.ry_Getter(this);
+  AnimatedLength get ry => _blink.BlinkSVGRectElement.instance.ry_Getter_(this);
 
   @DomName('SVGRectElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGRectElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGRectElement.instance.width_Getter_(this);
 
   @DomName('SVGRectElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGRectElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGRectElement.instance.x_Getter_(this);
 
   @DomName('SVGRectElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGRectElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGRectElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5145,15 +5145,15 @@
 
   @DomName('SVGScriptElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkSVGScriptElement.type_Getter(this);
+  String get type => _blink.BlinkSVGScriptElement.instance.type_Getter_(this);
 
   @DomName('SVGScriptElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkSVGScriptElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkSVGScriptElement.instance.type_Setter_(this, value);
 
   @DomName('SVGScriptElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGScriptElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGScriptElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5213,7 +5213,7 @@
 
   @DomName('SVGStopElement.offset')
   @DocsEditable()
-  AnimatedNumber get gradientOffset => _blink.BlinkSVGStopElement.offset_Getter(this);
+  AnimatedNumber get gradientOffset => _blink.BlinkSVGStopElement.instance.offset_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5233,11 +5233,11 @@
   @DomName('SVGStringList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGStringList.length_Getter(this);
+  int get length => _blink.BlinkSVGStringList.instance.length_Getter_(this);
 
   @DomName('SVGStringList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGStringList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGStringList.instance.numberOfItems_Getter_(this);
 
   String operator[](int index) {
     if (index < 0 || index >= length)
@@ -5286,35 +5286,35 @@
   @DomName('SVGStringList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, String value) => _blink.BlinkSVGStringList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, String value) => _blink.BlinkSVGStringList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGStringList.appendItem')
   @DocsEditable()
-  String appendItem(String item) => _blink.BlinkSVGStringList.appendItem_Callback_1(this, item);
+  String appendItem(String item) => _blink.BlinkSVGStringList.instance.appendItem_Callback_1_(this, item);
 
   @DomName('SVGStringList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGStringList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGStringList.instance.clear_Callback_0_(this);
 
   @DomName('SVGStringList.getItem')
   @DocsEditable()
-  String getItem(int index) => _blink.BlinkSVGStringList.getItem_Callback_1(this, index);
+  String getItem(int index) => _blink.BlinkSVGStringList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGStringList.initialize')
   @DocsEditable()
-  String initialize(String item) => _blink.BlinkSVGStringList.initialize_Callback_1(this, item);
+  String initialize(String item) => _blink.BlinkSVGStringList.instance.initialize_Callback_1_(this, item);
 
   @DomName('SVGStringList.insertItemBefore')
   @DocsEditable()
-  String insertItemBefore(String item, int index) => _blink.BlinkSVGStringList.insertItemBefore_Callback_2(this, item, index);
+  String insertItemBefore(String item, int index) => _blink.BlinkSVGStringList.instance.insertItemBefore_Callback_2_(this, item, index);
 
   @DomName('SVGStringList.removeItem')
   @DocsEditable()
-  String removeItem(int index) => _blink.BlinkSVGStringList.removeItem_Callback_1(this, index);
+  String removeItem(int index) => _blink.BlinkSVGStringList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGStringList.replaceItem')
   @DocsEditable()
-  String replaceItem(String item, int index) => _blink.BlinkSVGStringList.replaceItem_Callback_2(this, item, index);
+  String replaceItem(String item, int index) => _blink.BlinkSVGStringList.instance.replaceItem_Callback_2_(this, item, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -5344,40 +5344,40 @@
 
   @DomName('SVGStyleElement.disabled')
   @DocsEditable()
-  bool get disabled => _blink.BlinkSVGStyleElement.disabled_Getter(this);
+  bool get disabled => _blink.BlinkSVGStyleElement.instance.disabled_Getter_(this);
 
   @DomName('SVGStyleElement.disabled')
   @DocsEditable()
-  void set disabled(bool value) => _blink.BlinkSVGStyleElement.disabled_Setter(this, value);
+  void set disabled(bool value) => _blink.BlinkSVGStyleElement.instance.disabled_Setter_(this, value);
 
   @DomName('SVGStyleElement.media')
   @DocsEditable()
-  String get media => _blink.BlinkSVGStyleElement.media_Getter(this);
+  String get media => _blink.BlinkSVGStyleElement.instance.media_Getter_(this);
 
   @DomName('SVGStyleElement.media')
   @DocsEditable()
-  void set media(String value) => _blink.BlinkSVGStyleElement.media_Setter(this, value);
+  void set media(String value) => _blink.BlinkSVGStyleElement.instance.media_Setter_(this, value);
 
   @DomName('SVGStyleElement.sheet')
   @DocsEditable()
   @Experimental() // untriaged
-  StyleSheet get sheet => _blink.BlinkSVGStyleElement.sheet_Getter(this);
+  StyleSheet get sheet => _blink.BlinkSVGStyleElement.instance.sheet_Getter_(this);
 
   @DomName('SVGStyleElement.title')
   @DocsEditable()
-  String get title => _blink.BlinkSVGStyleElement.title_Getter(this);
+  String get title => _blink.BlinkSVGStyleElement.instance.title_Getter_(this);
 
   @DomName('SVGStyleElement.title')
   @DocsEditable()
-  void set title(String value) => _blink.BlinkSVGStyleElement.title_Setter(this, value);
+  void set title(String value) => _blink.BlinkSVGStyleElement.instance.title_Setter_(this, value);
 
   @DomName('SVGStyleElement.type')
   @DocsEditable()
-  String get type => _blink.BlinkSVGStyleElement.type_Getter(this);
+  String get type => _blink.BlinkSVGStyleElement.instance.type_Getter_(this);
 
   @DomName('SVGStyleElement.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkSVGStyleElement.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkSVGStyleElement.instance.type_Setter_(this, value);
 
 }
 // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
@@ -5803,58 +5803,58 @@
   @DomName('SVGElement.className')
   @DocsEditable()
   @Experimental() // untriaged
-  AnimatedString get _svgClassName => _blink.BlinkSVGElement.className_Getter(this);
+  AnimatedString get _svgClassName => _blink.BlinkSVGElement.instance.className_Getter_(this);
 
   @DomName('SVGElement.ownerSVGElement')
   @DocsEditable()
-  SvgSvgElement get ownerSvgElement => _blink.BlinkSVGElement.ownerSVGElement_Getter(this);
+  SvgSvgElement get ownerSvgElement => _blink.BlinkSVGElement.instance.ownerSVGElement_Getter_(this);
 
   @DomName('SVGElement.style')
   @DocsEditable()
   @Experimental() // untriaged
-  CssStyleDeclaration get style => _blink.BlinkSVGElement.style_Getter(this);
+  CssStyleDeclaration get style => _blink.BlinkSVGElement.instance.style_Getter_(this);
 
   @DomName('SVGElement.tabIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  int get tabIndex => _blink.BlinkSVGElement.tabIndex_Getter(this);
+  int get tabIndex => _blink.BlinkSVGElement.instance.tabIndex_Getter_(this);
 
   @DomName('SVGElement.tabIndex')
   @DocsEditable()
   @Experimental() // untriaged
-  void set tabIndex(int value) => _blink.BlinkSVGElement.tabIndex_Setter(this, value);
+  void set tabIndex(int value) => _blink.BlinkSVGElement.instance.tabIndex_Setter_(this, value);
 
   @DomName('SVGElement.viewportElement')
   @DocsEditable()
-  SvgElement get viewportElement => _blink.BlinkSVGElement.viewportElement_Getter(this);
+  SvgElement get viewportElement => _blink.BlinkSVGElement.instance.viewportElement_Getter_(this);
 
   @DomName('SVGElement.xmlbase')
   @DocsEditable()
-  String get xmlbase => _blink.BlinkSVGElement.xmlbase_Getter(this);
+  String get xmlbase => _blink.BlinkSVGElement.instance.xmlbase_Getter_(this);
 
   @DomName('SVGElement.xmlbase')
   @DocsEditable()
-  void set xmlbase(String value) => _blink.BlinkSVGElement.xmlbase_Setter(this, value);
+  void set xmlbase(String value) => _blink.BlinkSVGElement.instance.xmlbase_Setter_(this, value);
 
   @DomName('SVGElement.xmllang')
   @DocsEditable()
   @Experimental() // untriaged
-  String get xmllang => _blink.BlinkSVGElement.xmllang_Getter(this);
+  String get xmllang => _blink.BlinkSVGElement.instance.xmllang_Getter_(this);
 
   @DomName('SVGElement.xmllang')
   @DocsEditable()
   @Experimental() // untriaged
-  void set xmllang(String value) => _blink.BlinkSVGElement.xmllang_Setter(this, value);
+  void set xmllang(String value) => _blink.BlinkSVGElement.instance.xmllang_Setter_(this, value);
 
   @DomName('SVGElement.xmlspace')
   @DocsEditable()
   @Experimental() // untriaged
-  String get xmlspace => _blink.BlinkSVGElement.xmlspace_Getter(this);
+  String get xmlspace => _blink.BlinkSVGElement.instance.xmlspace_Getter_(this);
 
   @DomName('SVGElement.xmlspace')
   @DocsEditable()
   @Experimental() // untriaged
-  void set xmlspace(String value) => _blink.BlinkSVGElement.xmlspace_Setter(this, value);
+  void set xmlspace(String value) => _blink.BlinkSVGElement.instance.xmlspace_Setter_(this, value);
 
   @DomName('SVGElement.onabort')
   @DocsEditable()
@@ -6143,167 +6143,167 @@
 
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
-  num get currentScale => _blink.BlinkSVGSVGElement.currentScale_Getter(this);
+  num get currentScale => _blink.BlinkSVGSVGElement.instance.currentScale_Getter_(this);
 
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
-  void set currentScale(num value) => _blink.BlinkSVGSVGElement.currentScale_Setter(this, value);
+  void set currentScale(num value) => _blink.BlinkSVGSVGElement.instance.currentScale_Setter_(this, value);
 
   @DomName('SVGSVGElement.currentTranslate')
   @DocsEditable()
-  Point get currentTranslate => _blink.BlinkSVGSVGElement.currentTranslate_Getter(this);
+  Point get currentTranslate => _blink.BlinkSVGSVGElement.instance.currentTranslate_Getter_(this);
 
   @DomName('SVGSVGElement.currentView')
   @DocsEditable()
-  ViewSpec get currentView => _blink.BlinkSVGSVGElement.currentView_Getter(this);
+  ViewSpec get currentView => _blink.BlinkSVGSVGElement.instance.currentView_Getter_(this);
 
   @DomName('SVGSVGElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGSVGElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGSVGElement.instance.height_Getter_(this);
 
   @DomName('SVGSVGElement.pixelUnitToMillimeterX')
   @DocsEditable()
-  double get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.pixelUnitToMillimeterX_Getter(this);
+  double get pixelUnitToMillimeterX => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterX_Getter_(this);
 
   @DomName('SVGSVGElement.pixelUnitToMillimeterY')
   @DocsEditable()
-  double get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.pixelUnitToMillimeterY_Getter(this);
+  double get pixelUnitToMillimeterY => _blink.BlinkSVGSVGElement.instance.pixelUnitToMillimeterY_Getter_(this);
 
   @DomName('SVGSVGElement.screenPixelToMillimeterX')
   @DocsEditable()
-  double get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.screenPixelToMillimeterX_Getter(this);
+  double get screenPixelToMillimeterX => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterX_Getter_(this);
 
   @DomName('SVGSVGElement.screenPixelToMillimeterY')
   @DocsEditable()
-  double get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.screenPixelToMillimeterY_Getter(this);
+  double get screenPixelToMillimeterY => _blink.BlinkSVGSVGElement.instance.screenPixelToMillimeterY_Getter_(this);
 
   @DomName('SVGSVGElement.useCurrentView')
   @DocsEditable()
-  bool get useCurrentView => _blink.BlinkSVGSVGElement.useCurrentView_Getter(this);
+  bool get useCurrentView => _blink.BlinkSVGSVGElement.instance.useCurrentView_Getter_(this);
 
   @DomName('SVGSVGElement.viewport')
   @DocsEditable()
-  Rect get viewport => _blink.BlinkSVGSVGElement.viewport_Getter(this);
+  Rect get viewport => _blink.BlinkSVGSVGElement.instance.viewport_Getter_(this);
 
   @DomName('SVGSVGElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGSVGElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGSVGElement.instance.width_Getter_(this);
 
   @DomName('SVGSVGElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGSVGElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGSVGElement.instance.x_Getter_(this);
 
   @DomName('SVGSVGElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGSVGElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGSVGElement.instance.y_Getter_(this);
 
   @DomName('SVGSVGElement.animationsPaused')
   @DocsEditable()
-  bool animationsPaused() => _blink.BlinkSVGSVGElement.animationsPaused_Callback(this);
+  bool animationsPaused() => _blink.BlinkSVGSVGElement.instance.animationsPaused_Callback_0_(this);
 
   @DomName('SVGSVGElement.checkEnclosure')
   @DocsEditable()
-  bool checkEnclosure(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkEnclosure_Callback_2(this, element, rect);
+  bool checkEnclosure(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.instance.checkEnclosure_Callback_2_(this, element, rect);
 
   @DomName('SVGSVGElement.checkIntersection')
   @DocsEditable()
-  bool checkIntersection(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.checkIntersection_Callback_2(this, element, rect);
+  bool checkIntersection(SvgElement element, Rect rect) => _blink.BlinkSVGSVGElement.instance.checkIntersection_Callback_2_(this, element, rect);
 
   @DomName('SVGSVGElement.createSVGAngle')
   @DocsEditable()
-  Angle createSvgAngle() => _blink.BlinkSVGSVGElement.createSVGAngle_Callback(this);
+  Angle createSvgAngle() => _blink.BlinkSVGSVGElement.instance.createSVGAngle_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGLength')
   @DocsEditable()
-  Length createSvgLength() => _blink.BlinkSVGSVGElement.createSVGLength_Callback(this);
+  Length createSvgLength() => _blink.BlinkSVGSVGElement.instance.createSVGLength_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGMatrix')
   @DocsEditable()
-  Matrix createSvgMatrix() => _blink.BlinkSVGSVGElement.createSVGMatrix_Callback(this);
+  Matrix createSvgMatrix() => _blink.BlinkSVGSVGElement.instance.createSVGMatrix_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGNumber')
   @DocsEditable()
-  Number createSvgNumber() => _blink.BlinkSVGSVGElement.createSVGNumber_Callback(this);
+  Number createSvgNumber() => _blink.BlinkSVGSVGElement.instance.createSVGNumber_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGPoint')
   @DocsEditable()
-  Point createSvgPoint() => _blink.BlinkSVGSVGElement.createSVGPoint_Callback(this);
+  Point createSvgPoint() => _blink.BlinkSVGSVGElement.instance.createSVGPoint_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGRect')
   @DocsEditable()
-  Rect createSvgRect() => _blink.BlinkSVGSVGElement.createSVGRect_Callback(this);
+  Rect createSvgRect() => _blink.BlinkSVGSVGElement.instance.createSVGRect_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGTransform')
   @DocsEditable()
-  Transform createSvgTransform() => _blink.BlinkSVGSVGElement.createSVGTransform_Callback(this);
+  Transform createSvgTransform() => _blink.BlinkSVGSVGElement.instance.createSVGTransform_Callback_0_(this);
 
   @DomName('SVGSVGElement.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.createSVGTransformFromMatrix_Callback_1(this, matrix);
+  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGSVGElement.instance.createSVGTransformFromMatrix_Callback_1_(this, matrix);
 
   @DomName('SVGSVGElement.deselectAll')
   @DocsEditable()
-  void deselectAll() => _blink.BlinkSVGSVGElement.deselectAll_Callback(this);
+  void deselectAll() => _blink.BlinkSVGSVGElement.instance.deselectAll_Callback_0_(this);
 
   @DomName('SVGSVGElement.forceRedraw')
   @DocsEditable()
-  void forceRedraw() => _blink.BlinkSVGSVGElement.forceRedraw_Callback(this);
+  void forceRedraw() => _blink.BlinkSVGSVGElement.instance.forceRedraw_Callback_0_(this);
 
   @DomName('SVGSVGElement.getCurrentTime')
   @DocsEditable()
-  double getCurrentTime() => _blink.BlinkSVGSVGElement.getCurrentTime_Callback(this);
+  double getCurrentTime() => _blink.BlinkSVGSVGElement.instance.getCurrentTime_Callback_0_(this);
 
   @DomName('SVGSVGElement.getElementById')
   @DocsEditable()
-  Element getElementById(String elementId) => _blink.BlinkSVGSVGElement.getElementById_Callback_1(this, elementId);
+  Element getElementById(String elementId) => _blink.BlinkSVGSVGElement.instance.getElementById_Callback_1_(this, elementId);
 
   @DomName('SVGSVGElement.getEnclosureList')
   @DocsEditable()
-  List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getEnclosureList_Callback_2(this, rect, referenceElement);
+  List<Node> getEnclosureList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.instance.getEnclosureList_Callback_2_(this, rect, referenceElement);
 
   @DomName('SVGSVGElement.getIntersectionList')
   @DocsEditable()
-  List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.getIntersectionList_Callback_2(this, rect, referenceElement);
+  List<Node> getIntersectionList(Rect rect, SvgElement referenceElement) => _blink.BlinkSVGSVGElement.instance.getIntersectionList_Callback_2_(this, rect, referenceElement);
 
   @DomName('SVGSVGElement.pauseAnimations')
   @DocsEditable()
-  void pauseAnimations() => _blink.BlinkSVGSVGElement.pauseAnimations_Callback(this);
+  void pauseAnimations() => _blink.BlinkSVGSVGElement.instance.pauseAnimations_Callback_0_(this);
 
   @DomName('SVGSVGElement.setCurrentTime')
   @DocsEditable()
-  void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.setCurrentTime_Callback_1(this, seconds);
+  void setCurrentTime(num seconds) => _blink.BlinkSVGSVGElement.instance.setCurrentTime_Callback_1_(this, seconds);
 
   @DomName('SVGSVGElement.suspendRedraw')
   @DocsEditable()
-  int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.suspendRedraw_Callback_1(this, maxWaitMilliseconds);
+  int suspendRedraw(int maxWaitMilliseconds) => _blink.BlinkSVGSVGElement.instance.suspendRedraw_Callback_1_(this, maxWaitMilliseconds);
 
   @DomName('SVGSVGElement.unpauseAnimations')
   @DocsEditable()
-  void unpauseAnimations() => _blink.BlinkSVGSVGElement.unpauseAnimations_Callback(this);
+  void unpauseAnimations() => _blink.BlinkSVGSVGElement.instance.unpauseAnimations_Callback_0_(this);
 
   @DomName('SVGSVGElement.unsuspendRedraw')
   @DocsEditable()
-  void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.unsuspendRedraw_Callback_1(this, suspendHandleId);
+  void unsuspendRedraw(int suspendHandleId) => _blink.BlinkSVGSVGElement.instance.unsuspendRedraw_Callback_1_(this, suspendHandleId);
 
   @DomName('SVGSVGElement.unsuspendRedrawAll')
   @DocsEditable()
-  void unsuspendRedrawAll() => _blink.BlinkSVGSVGElement.unsuspendRedrawAll_Callback(this);
+  void unsuspendRedrawAll() => _blink.BlinkSVGSVGElement.instance.unsuspendRedrawAll_Callback_0_(this);
 
   @DomName('SVGSVGElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSVGElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSVGElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGSVGElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGSVGElement.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGSVGElement.instance.viewBox_Getter_(this);
 
   @DomName('SVGSVGElement.zoomAndPan')
   @DocsEditable()
-  int get zoomAndPan => _blink.BlinkSVGSVGElement.zoomAndPan_Getter(this);
+  int get zoomAndPan => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Getter_(this);
 
   @DomName('SVGSVGElement.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.zoomAndPan_Setter(this, value);
+  void set zoomAndPan(int value) => _blink.BlinkSVGSVGElement.instance.zoomAndPan_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6357,11 +6357,11 @@
 
   @DomName('SVGSymbolElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSymbolElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGSymbolElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGSymbolElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGSymbolElement.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGSymbolElement.instance.viewBox_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6405,19 +6405,19 @@
 
   @DomName('SVGTests.requiredExtensions')
   @DocsEditable()
-  StringList get requiredExtensions => _blink.BlinkSVGTests.requiredExtensions_Getter(this);
+  StringList get requiredExtensions;
 
   @DomName('SVGTests.requiredFeatures')
   @DocsEditable()
-  StringList get requiredFeatures => _blink.BlinkSVGTests.requiredFeatures_Getter(this);
+  StringList get requiredFeatures;
 
   @DomName('SVGTests.systemLanguage')
   @DocsEditable()
-  StringList get systemLanguage => _blink.BlinkSVGTests.systemLanguage_Getter(this);
+  StringList get systemLanguage;
 
   @DomName('SVGTests.hasExtension')
   @DocsEditable()
-  bool hasExtension(String extension) => _blink.BlinkSVGTests.hasExtension_Callback_1(this, extension);
+  bool hasExtension(String extension);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6454,47 +6454,47 @@
 
   @DomName('SVGTextContentElement.lengthAdjust')
   @DocsEditable()
-  AnimatedEnumeration get lengthAdjust => _blink.BlinkSVGTextContentElement.lengthAdjust_Getter(this);
+  AnimatedEnumeration get lengthAdjust => _blink.BlinkSVGTextContentElement.instance.lengthAdjust_Getter_(this);
 
   @DomName('SVGTextContentElement.textLength')
   @DocsEditable()
-  AnimatedLength get textLength => _blink.BlinkSVGTextContentElement.textLength_Getter(this);
+  AnimatedLength get textLength => _blink.BlinkSVGTextContentElement.instance.textLength_Getter_(this);
 
   @DomName('SVGTextContentElement.getCharNumAtPosition')
   @DocsEditable()
-  int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.getCharNumAtPosition_Callback_1(this, point);
+  int getCharNumAtPosition(Point point) => _blink.BlinkSVGTextContentElement.instance.getCharNumAtPosition_Callback_1_(this, point);
 
   @DomName('SVGTextContentElement.getComputedTextLength')
   @DocsEditable()
-  double getComputedTextLength() => _blink.BlinkSVGTextContentElement.getComputedTextLength_Callback(this);
+  double getComputedTextLength() => _blink.BlinkSVGTextContentElement.instance.getComputedTextLength_Callback_0_(this);
 
   @DomName('SVGTextContentElement.getEndPositionOfChar')
   @DocsEditable()
-  Point getEndPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getEndPositionOfChar_Callback_1(this, offset);
+  Point getEndPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getEndPositionOfChar_Callback_1_(this, offset);
 
   @DomName('SVGTextContentElement.getExtentOfChar')
   @DocsEditable()
-  Rect getExtentOfChar(int offset) => _blink.BlinkSVGTextContentElement.getExtentOfChar_Callback_1(this, offset);
+  Rect getExtentOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getExtentOfChar_Callback_1_(this, offset);
 
   @DomName('SVGTextContentElement.getNumberOfChars')
   @DocsEditable()
-  int getNumberOfChars() => _blink.BlinkSVGTextContentElement.getNumberOfChars_Callback(this);
+  int getNumberOfChars() => _blink.BlinkSVGTextContentElement.instance.getNumberOfChars_Callback_0_(this);
 
   @DomName('SVGTextContentElement.getRotationOfChar')
   @DocsEditable()
-  double getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.getRotationOfChar_Callback_1(this, offset);
+  double getRotationOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getRotationOfChar_Callback_1_(this, offset);
 
   @DomName('SVGTextContentElement.getStartPositionOfChar')
   @DocsEditable()
-  Point getStartPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.getStartPositionOfChar_Callback_1(this, offset);
+  Point getStartPositionOfChar(int offset) => _blink.BlinkSVGTextContentElement.instance.getStartPositionOfChar_Callback_1_(this, offset);
 
   @DomName('SVGTextContentElement.getSubStringLength')
   @DocsEditable()
-  double getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.getSubStringLength_Callback_2(this, offset, length);
+  double getSubStringLength(int offset, int length) => _blink.BlinkSVGTextContentElement.instance.getSubStringLength_Callback_2_(this, offset, length);
 
   @DomName('SVGTextContentElement.selectSubString')
   @DocsEditable()
-  void selectSubString(int offset, int length) => _blink.BlinkSVGTextContentElement.selectSubString_Callback_2(this, offset, length);
+  void selectSubString(int offset, int length) => _blink.BlinkSVGTextContentElement.instance.selectSubString_Callback_2_(this, offset, length);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6568,19 +6568,19 @@
 
   @DomName('SVGTextPathElement.method')
   @DocsEditable()
-  AnimatedEnumeration get method => _blink.BlinkSVGTextPathElement.method_Getter(this);
+  AnimatedEnumeration get method => _blink.BlinkSVGTextPathElement.instance.method_Getter_(this);
 
   @DomName('SVGTextPathElement.spacing')
   @DocsEditable()
-  AnimatedEnumeration get spacing => _blink.BlinkSVGTextPathElement.spacing_Getter(this);
+  AnimatedEnumeration get spacing => _blink.BlinkSVGTextPathElement.instance.spacing_Getter_(this);
 
   @DomName('SVGTextPathElement.startOffset')
   @DocsEditable()
-  AnimatedLength get startOffset => _blink.BlinkSVGTextPathElement.startOffset_Getter(this);
+  AnimatedLength get startOffset => _blink.BlinkSVGTextPathElement.instance.startOffset_Getter_(this);
 
   @DomName('SVGTextPathElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGTextPathElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGTextPathElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6605,23 +6605,23 @@
 
   @DomName('SVGTextPositioningElement.dx')
   @DocsEditable()
-  AnimatedLengthList get dx => _blink.BlinkSVGTextPositioningElement.dx_Getter(this);
+  AnimatedLengthList get dx => _blink.BlinkSVGTextPositioningElement.instance.dx_Getter_(this);
 
   @DomName('SVGTextPositioningElement.dy')
   @DocsEditable()
-  AnimatedLengthList get dy => _blink.BlinkSVGTextPositioningElement.dy_Getter(this);
+  AnimatedLengthList get dy => _blink.BlinkSVGTextPositioningElement.instance.dy_Getter_(this);
 
   @DomName('SVGTextPositioningElement.rotate')
   @DocsEditable()
-  AnimatedNumberList get rotate => _blink.BlinkSVGTextPositioningElement.rotate_Getter(this);
+  AnimatedNumberList get rotate => _blink.BlinkSVGTextPositioningElement.instance.rotate_Getter_(this);
 
   @DomName('SVGTextPositioningElement.x')
   @DocsEditable()
-  AnimatedLengthList get x => _blink.BlinkSVGTextPositioningElement.x_Getter(this);
+  AnimatedLengthList get x => _blink.BlinkSVGTextPositioningElement.instance.x_Getter_(this);
 
   @DomName('SVGTextPositioningElement.y')
   @DocsEditable()
-  AnimatedLengthList get y => _blink.BlinkSVGTextPositioningElement.y_Getter(this);
+  AnimatedLengthList get y => _blink.BlinkSVGTextPositioningElement.instance.y_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6693,39 +6693,39 @@
 
   @DomName('SVGTransform.angle')
   @DocsEditable()
-  double get angle => _blink.BlinkSVGTransform.angle_Getter(this);
+  double get angle => _blink.BlinkSVGTransform.instance.angle_Getter_(this);
 
   @DomName('SVGTransform.matrix')
   @DocsEditable()
-  Matrix get matrix => _blink.BlinkSVGTransform.matrix_Getter(this);
+  Matrix get matrix => _blink.BlinkSVGTransform.instance.matrix_Getter_(this);
 
   @DomName('SVGTransform.type')
   @DocsEditable()
-  int get type => _blink.BlinkSVGTransform.type_Getter(this);
+  int get type => _blink.BlinkSVGTransform.instance.type_Getter_(this);
 
   @DomName('SVGTransform.setMatrix')
   @DocsEditable()
-  void setMatrix(Matrix matrix) => _blink.BlinkSVGTransform.setMatrix_Callback_1(this, matrix);
+  void setMatrix(Matrix matrix) => _blink.BlinkSVGTransform.instance.setMatrix_Callback_1_(this, matrix);
 
   @DomName('SVGTransform.setRotate')
   @DocsEditable()
-  void setRotate(num angle, num cx, num cy) => _blink.BlinkSVGTransform.setRotate_Callback_3(this, angle, cx, cy);
+  void setRotate(num angle, num cx, num cy) => _blink.BlinkSVGTransform.instance.setRotate_Callback_3_(this, angle, cx, cy);
 
   @DomName('SVGTransform.setScale')
   @DocsEditable()
-  void setScale(num sx, num sy) => _blink.BlinkSVGTransform.setScale_Callback_2(this, sx, sy);
+  void setScale(num sx, num sy) => _blink.BlinkSVGTransform.instance.setScale_Callback_2_(this, sx, sy);
 
   @DomName('SVGTransform.setSkewX')
   @DocsEditable()
-  void setSkewX(num angle) => _blink.BlinkSVGTransform.setSkewX_Callback_1(this, angle);
+  void setSkewX(num angle) => _blink.BlinkSVGTransform.instance.setSkewX_Callback_1_(this, angle);
 
   @DomName('SVGTransform.setSkewY')
   @DocsEditable()
-  void setSkewY(num angle) => _blink.BlinkSVGTransform.setSkewY_Callback_1(this, angle);
+  void setSkewY(num angle) => _blink.BlinkSVGTransform.instance.setSkewY_Callback_1_(this, angle);
 
   @DomName('SVGTransform.setTranslate')
   @DocsEditable()
-  void setTranslate(num tx, num ty) => _blink.BlinkSVGTransform.setTranslate_Callback_2(this, tx, ty);
+  void setTranslate(num tx, num ty) => _blink.BlinkSVGTransform.instance.setTranslate_Callback_2_(this, tx, ty);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6745,11 +6745,11 @@
   @DomName('SVGTransformList.length')
   @DocsEditable()
   @Experimental() // untriaged
-  int get length => _blink.BlinkSVGTransformList.length_Getter(this);
+  int get length => _blink.BlinkSVGTransformList.instance.length_Getter_(this);
 
   @DomName('SVGTransformList.numberOfItems')
   @DocsEditable()
-  int get numberOfItems => _blink.BlinkSVGTransformList.numberOfItems_Getter(this);
+  int get numberOfItems => _blink.BlinkSVGTransformList.instance.numberOfItems_Getter_(this);
 
   Transform operator[](int index) {
     if (index < 0 || index >= length)
@@ -6798,43 +6798,43 @@
   @DomName('SVGTransformList.__setter__')
   @DocsEditable()
   @Experimental() // untriaged
-  void __setter__(int index, Transform value) => _blink.BlinkSVGTransformList.$__setter___Callback_2(this, index, value);
+  void __setter__(int index, Transform value) => _blink.BlinkSVGTransformList.instance.$__setter___Callback_2_(this, index, value);
 
   @DomName('SVGTransformList.appendItem')
   @DocsEditable()
-  Transform appendItem(Transform item) => _blink.BlinkSVGTransformList.appendItem_Callback_1(this, item);
+  Transform appendItem(Transform item) => _blink.BlinkSVGTransformList.instance.appendItem_Callback_1_(this, item);
 
   @DomName('SVGTransformList.clear')
   @DocsEditable()
-  void clear() => _blink.BlinkSVGTransformList.clear_Callback(this);
+  void clear() => _blink.BlinkSVGTransformList.instance.clear_Callback_0_(this);
 
   @DomName('SVGTransformList.consolidate')
   @DocsEditable()
-  Transform consolidate() => _blink.BlinkSVGTransformList.consolidate_Callback(this);
+  Transform consolidate() => _blink.BlinkSVGTransformList.instance.consolidate_Callback_0_(this);
 
   @DomName('SVGTransformList.createSVGTransformFromMatrix')
   @DocsEditable()
-  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.createSVGTransformFromMatrix_Callback_1(this, matrix);
+  Transform createSvgTransformFromMatrix(Matrix matrix) => _blink.BlinkSVGTransformList.instance.createSVGTransformFromMatrix_Callback_1_(this, matrix);
 
   @DomName('SVGTransformList.getItem')
   @DocsEditable()
-  Transform getItem(int index) => _blink.BlinkSVGTransformList.getItem_Callback_1(this, index);
+  Transform getItem(int index) => _blink.BlinkSVGTransformList.instance.getItem_Callback_1_(this, index);
 
   @DomName('SVGTransformList.initialize')
   @DocsEditable()
-  Transform initialize(Transform item) => _blink.BlinkSVGTransformList.initialize_Callback_1(this, item);
+  Transform initialize(Transform item) => _blink.BlinkSVGTransformList.instance.initialize_Callback_1_(this, item);
 
   @DomName('SVGTransformList.insertItemBefore')
   @DocsEditable()
-  Transform insertItemBefore(Transform item, int index) => _blink.BlinkSVGTransformList.insertItemBefore_Callback_2(this, item, index);
+  Transform insertItemBefore(Transform item, int index) => _blink.BlinkSVGTransformList.instance.insertItemBefore_Callback_2_(this, item, index);
 
   @DomName('SVGTransformList.removeItem')
   @DocsEditable()
-  Transform removeItem(int index) => _blink.BlinkSVGTransformList.removeItem_Callback_1(this, index);
+  Transform removeItem(int index) => _blink.BlinkSVGTransformList.instance.removeItem_Callback_1_(this, index);
 
   @DomName('SVGTransformList.replaceItem')
   @DocsEditable()
-  Transform replaceItem(Transform item, int index) => _blink.BlinkSVGTransformList.replaceItem_Callback_2(this, item, index);
+  Transform replaceItem(Transform item, int index) => _blink.BlinkSVGTransformList.instance.replaceItem_Callback_2_(this, item, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6880,7 +6880,7 @@
 
   @DomName('SVGURIReference.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGURIReference.href_Getter(this);
+  AnimatedString get href;
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6909,23 +6909,23 @@
 
   @DomName('SVGUseElement.height')
   @DocsEditable()
-  AnimatedLength get height => _blink.BlinkSVGUseElement.height_Getter(this);
+  AnimatedLength get height => _blink.BlinkSVGUseElement.instance.height_Getter_(this);
 
   @DomName('SVGUseElement.width')
   @DocsEditable()
-  AnimatedLength get width => _blink.BlinkSVGUseElement.width_Getter(this);
+  AnimatedLength get width => _blink.BlinkSVGUseElement.instance.width_Getter_(this);
 
   @DomName('SVGUseElement.x')
   @DocsEditable()
-  AnimatedLength get x => _blink.BlinkSVGUseElement.x_Getter(this);
+  AnimatedLength get x => _blink.BlinkSVGUseElement.instance.x_Getter_(this);
 
   @DomName('SVGUseElement.y')
   @DocsEditable()
-  AnimatedLength get y => _blink.BlinkSVGUseElement.y_Getter(this);
+  AnimatedLength get y => _blink.BlinkSVGUseElement.instance.y_Getter_(this);
 
   @DomName('SVGUseElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGUseElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGUseElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6954,23 +6954,23 @@
 
   @DomName('SVGViewElement.viewTarget')
   @DocsEditable()
-  StringList get viewTarget => _blink.BlinkSVGViewElement.viewTarget_Getter(this);
+  StringList get viewTarget => _blink.BlinkSVGViewElement.instance.viewTarget_Getter_(this);
 
   @DomName('SVGViewElement.preserveAspectRatio')
   @DocsEditable()
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewElement.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewElement.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGViewElement.viewBox')
   @DocsEditable()
-  AnimatedRect get viewBox => _blink.BlinkSVGViewElement.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGViewElement.instance.viewBox_Getter_(this);
 
   @DomName('SVGViewElement.zoomAndPan')
   @DocsEditable()
-  int get zoomAndPan => _blink.BlinkSVGViewElement.zoomAndPan_Getter(this);
+  int get zoomAndPan => _blink.BlinkSVGViewElement.instance.zoomAndPan_Getter_(this);
 
   @DomName('SVGViewElement.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value) => _blink.BlinkSVGViewElement.zoomAndPan_Setter(this, value);
+  void set zoomAndPan(int value) => _blink.BlinkSVGViewElement.instance.zoomAndPan_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -6989,47 +6989,47 @@
 
   @DomName('SVGViewSpec.preserveAspectRatioString')
   @DocsEditable()
-  String get preserveAspectRatioString => _blink.BlinkSVGViewSpec.preserveAspectRatioString_Getter(this);
+  String get preserveAspectRatioString => _blink.BlinkSVGViewSpec.instance.preserveAspectRatioString_Getter_(this);
 
   @DomName('SVGViewSpec.transform')
   @DocsEditable()
-  TransformList get transform => _blink.BlinkSVGViewSpec.transform_Getter(this);
+  TransformList get transform => _blink.BlinkSVGViewSpec.instance.transform_Getter_(this);
 
   @DomName('SVGViewSpec.transformString')
   @DocsEditable()
-  String get transformString => _blink.BlinkSVGViewSpec.transformString_Getter(this);
+  String get transformString => _blink.BlinkSVGViewSpec.instance.transformString_Getter_(this);
 
   @DomName('SVGViewSpec.viewBoxString')
   @DocsEditable()
-  String get viewBoxString => _blink.BlinkSVGViewSpec.viewBoxString_Getter(this);
+  String get viewBoxString => _blink.BlinkSVGViewSpec.instance.viewBoxString_Getter_(this);
 
   @DomName('SVGViewSpec.viewTarget')
   @DocsEditable()
-  SvgElement get viewTarget => _blink.BlinkSVGViewSpec.viewTarget_Getter(this);
+  SvgElement get viewTarget => _blink.BlinkSVGViewSpec.instance.viewTarget_Getter_(this);
 
   @DomName('SVGViewSpec.viewTargetString')
   @DocsEditable()
-  String get viewTargetString => _blink.BlinkSVGViewSpec.viewTargetString_Getter(this);
+  String get viewTargetString => _blink.BlinkSVGViewSpec.instance.viewTargetString_Getter_(this);
 
   @DomName('SVGViewSpec.preserveAspectRatio')
   @DocsEditable()
   @Experimental() // nonstandard
-  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewSpec.preserveAspectRatio_Getter(this);
+  AnimatedPreserveAspectRatio get preserveAspectRatio => _blink.BlinkSVGViewSpec.instance.preserveAspectRatio_Getter_(this);
 
   @DomName('SVGViewSpec.viewBox')
   @DocsEditable()
   @Experimental() // nonstandard
-  AnimatedRect get viewBox => _blink.BlinkSVGViewSpec.viewBox_Getter(this);
+  AnimatedRect get viewBox => _blink.BlinkSVGViewSpec.instance.viewBox_Getter_(this);
 
   @DomName('SVGViewSpec.zoomAndPan')
   @DocsEditable()
   @Experimental() // nonstandard
-  int get zoomAndPan => _blink.BlinkSVGViewSpec.zoomAndPan_Getter(this);
+  int get zoomAndPan => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Getter_(this);
 
   @DomName('SVGViewSpec.zoomAndPan')
   @DocsEditable()
   @Experimental() // nonstandard
-  void set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.zoomAndPan_Setter(this, value);
+  void set zoomAndPan(int value) => _blink.BlinkSVGViewSpec.instance.zoomAndPan_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7060,11 +7060,11 @@
 
   @DomName('SVGZoomAndPan.zoomAndPan')
   @DocsEditable()
-  int get zoomAndPan => _blink.BlinkSVGZoomAndPan.zoomAndPan_Getter(this);
+  int get zoomAndPan;
 
   @DomName('SVGZoomAndPan.zoomAndPan')
   @DocsEditable()
-  void set zoomAndPan(int value) => _blink.BlinkSVGZoomAndPan.zoomAndPan_Setter(this, value);
+  void set zoomAndPan(int value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7083,23 +7083,23 @@
 
   @DomName('SVGZoomEvent.newScale')
   @DocsEditable()
-  double get newScale => _blink.BlinkSVGZoomEvent.newScale_Getter(this);
+  double get newScale => _blink.BlinkSVGZoomEvent.instance.newScale_Getter_(this);
 
   @DomName('SVGZoomEvent.newTranslate')
   @DocsEditable()
-  Point get newTranslate => _blink.BlinkSVGZoomEvent.newTranslate_Getter(this);
+  Point get newTranslate => _blink.BlinkSVGZoomEvent.instance.newTranslate_Getter_(this);
 
   @DomName('SVGZoomEvent.previousScale')
   @DocsEditable()
-  double get previousScale => _blink.BlinkSVGZoomEvent.previousScale_Getter(this);
+  double get previousScale => _blink.BlinkSVGZoomEvent.instance.previousScale_Getter_(this);
 
   @DomName('SVGZoomEvent.previousTranslate')
   @DocsEditable()
-  Point get previousTranslate => _blink.BlinkSVGZoomEvent.previousTranslate_Getter(this);
+  Point get previousTranslate => _blink.BlinkSVGZoomEvent.instance.previousTranslate_Getter_(this);
 
   @DomName('SVGZoomEvent.zoomRectScreen')
   @DocsEditable()
-  Rect get zoomRectScreen => _blink.BlinkSVGZoomEvent.zoomRectScreen_Getter(this);
+  Rect get zoomRectScreen => _blink.BlinkSVGZoomEvent.instance.zoomRectScreen_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -7140,19 +7140,19 @@
 
   @DomName('SVGGradientElement.gradientTransform')
   @DocsEditable()
-  AnimatedTransformList get gradientTransform => _blink.BlinkSVGGradientElement.gradientTransform_Getter(this);
+  AnimatedTransformList get gradientTransform => _blink.BlinkSVGGradientElement.instance.gradientTransform_Getter_(this);
 
   @DomName('SVGGradientElement.gradientUnits')
   @DocsEditable()
-  AnimatedEnumeration get gradientUnits => _blink.BlinkSVGGradientElement.gradientUnits_Getter(this);
+  AnimatedEnumeration get gradientUnits => _blink.BlinkSVGGradientElement.instance.gradientUnits_Getter_(this);
 
   @DomName('SVGGradientElement.spreadMethod')
   @DocsEditable()
-  AnimatedEnumeration get spreadMethod => _blink.BlinkSVGGradientElement.spreadMethod_Getter(this);
+  AnimatedEnumeration get spreadMethod => _blink.BlinkSVGGradientElement.instance.spreadMethod_Getter_(this);
 
   @DomName('SVGGradientElement.href')
   @DocsEditable()
-  AnimatedString get href => _blink.BlinkSVGGradientElement.href_Getter(this);
+  AnimatedString get href => _blink.BlinkSVGGradientElement.instance.href_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
index d21f80c..0178795 100644
--- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart
+++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
@@ -62,56 +62,56 @@
 
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
-  int get fftSize => _blink.BlinkAnalyserNode.fftSize_Getter(this);
+  int get fftSize => _blink.BlinkAnalyserNode.instance.fftSize_Getter_(this);
 
   @DomName('AnalyserNode.fftSize')
   @DocsEditable()
-  void set fftSize(int value) => _blink.BlinkAnalyserNode.fftSize_Setter(this, value);
+  void set fftSize(int value) => _blink.BlinkAnalyserNode.instance.fftSize_Setter_(this, value);
 
   @DomName('AnalyserNode.frequencyBinCount')
   @DocsEditable()
-  int get frequencyBinCount => _blink.BlinkAnalyserNode.frequencyBinCount_Getter(this);
+  int get frequencyBinCount => _blink.BlinkAnalyserNode.instance.frequencyBinCount_Getter_(this);
 
   @DomName('AnalyserNode.maxDecibels')
   @DocsEditable()
-  num get maxDecibels => _blink.BlinkAnalyserNode.maxDecibels_Getter(this);
+  num get maxDecibels => _blink.BlinkAnalyserNode.instance.maxDecibels_Getter_(this);
 
   @DomName('AnalyserNode.maxDecibels')
   @DocsEditable()
-  void set maxDecibels(num value) => _blink.BlinkAnalyserNode.maxDecibels_Setter(this, value);
+  void set maxDecibels(num value) => _blink.BlinkAnalyserNode.instance.maxDecibels_Setter_(this, value);
 
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
-  num get minDecibels => _blink.BlinkAnalyserNode.minDecibels_Getter(this);
+  num get minDecibels => _blink.BlinkAnalyserNode.instance.minDecibels_Getter_(this);
 
   @DomName('AnalyserNode.minDecibels')
   @DocsEditable()
-  void set minDecibels(num value) => _blink.BlinkAnalyserNode.minDecibels_Setter(this, value);
+  void set minDecibels(num value) => _blink.BlinkAnalyserNode.instance.minDecibels_Setter_(this, value);
 
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
-  num get smoothingTimeConstant => _blink.BlinkAnalyserNode.smoothingTimeConstant_Getter(this);
+  num get smoothingTimeConstant => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Getter_(this);
 
   @DomName('AnalyserNode.smoothingTimeConstant')
   @DocsEditable()
-  void set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.smoothingTimeConstant_Setter(this, value);
+  void set smoothingTimeConstant(num value) => _blink.BlinkAnalyserNode.instance.smoothingTimeConstant_Setter_(this, value);
 
   @DomName('AnalyserNode.getByteFrequencyData')
   @DocsEditable()
-  void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.getByteFrequencyData_Callback_1(this, array);
+  void getByteFrequencyData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteFrequencyData_Callback_1_(this, array);
 
   @DomName('AnalyserNode.getByteTimeDomainData')
   @DocsEditable()
-  void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.getByteTimeDomainData_Callback_1(this, array);
+  void getByteTimeDomainData(Uint8List array) => _blink.BlinkAnalyserNode.instance.getByteTimeDomainData_Callback_1_(this, array);
 
   @DomName('AnalyserNode.getFloatFrequencyData')
   @DocsEditable()
-  void getFloatFrequencyData(Float32List array) => _blink.BlinkAnalyserNode.getFloatFrequencyData_Callback_1(this, array);
+  void getFloatFrequencyData(Float32List array) => _blink.BlinkAnalyserNode.instance.getFloatFrequencyData_Callback_1_(this, array);
 
   @DomName('AnalyserNode.getFloatTimeDomainData')
   @DocsEditable()
   @Experimental() // untriaged
-  void getFloatTimeDomainData(Float32List array) => _blink.BlinkAnalyserNode.getFloatTimeDomainData_Callback_1(this, array);
+  void getFloatTimeDomainData(Float32List array) => _blink.BlinkAnalyserNode.instance.getFloatTimeDomainData_Callback_1_(this, array);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -131,23 +131,23 @@
 
   @DomName('AudioBuffer.duration')
   @DocsEditable()
-  double get duration => _blink.BlinkAudioBuffer.duration_Getter(this);
+  double get duration => _blink.BlinkAudioBuffer.instance.duration_Getter_(this);
 
   @DomName('AudioBuffer.length')
   @DocsEditable()
-  int get length => _blink.BlinkAudioBuffer.length_Getter(this);
+  int get length => _blink.BlinkAudioBuffer.instance.length_Getter_(this);
 
   @DomName('AudioBuffer.numberOfChannels')
   @DocsEditable()
-  int get numberOfChannels => _blink.BlinkAudioBuffer.numberOfChannels_Getter(this);
+  int get numberOfChannels => _blink.BlinkAudioBuffer.instance.numberOfChannels_Getter_(this);
 
   @DomName('AudioBuffer.sampleRate')
   @DocsEditable()
-  double get sampleRate => _blink.BlinkAudioBuffer.sampleRate_Getter(this);
+  double get sampleRate => _blink.BlinkAudioBuffer.instance.sampleRate_Getter_(this);
 
   @DomName('AudioBuffer.getChannelData')
   @DocsEditable()
-  Float32List getChannelData(int channelIndex) => _blink.BlinkAudioBuffer.getChannelData_Callback_1(this, channelIndex);
+  Float32List getChannelData(int channelIndex) => _blink.BlinkAudioBuffer.instance.getChannelData_Callback_1_(this, channelIndex);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -191,63 +191,63 @@
 
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
-  AudioBuffer get buffer => _blink.BlinkAudioBufferSourceNode.buffer_Getter(this);
+  AudioBuffer get buffer => _blink.BlinkAudioBufferSourceNode.instance.buffer_Getter_(this);
 
   @DomName('AudioBufferSourceNode.buffer')
   @DocsEditable()
-  void set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.buffer_Setter(this, value);
+  void set buffer(AudioBuffer value) => _blink.BlinkAudioBufferSourceNode.instance.buffer_Setter_(this, value);
 
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
-  bool get loop => _blink.BlinkAudioBufferSourceNode.loop_Getter(this);
+  bool get loop => _blink.BlinkAudioBufferSourceNode.instance.loop_Getter_(this);
 
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
-  void set loop(bool value) => _blink.BlinkAudioBufferSourceNode.loop_Setter(this, value);
+  void set loop(bool value) => _blink.BlinkAudioBufferSourceNode.instance.loop_Setter_(this, value);
 
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
-  num get loopEnd => _blink.BlinkAudioBufferSourceNode.loopEnd_Getter(this);
+  num get loopEnd => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Getter_(this);
 
   @DomName('AudioBufferSourceNode.loopEnd')
   @DocsEditable()
-  void set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.loopEnd_Setter(this, value);
+  void set loopEnd(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopEnd_Setter_(this, value);
 
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
-  num get loopStart => _blink.BlinkAudioBufferSourceNode.loopStart_Getter(this);
+  num get loopStart => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Getter_(this);
 
   @DomName('AudioBufferSourceNode.loopStart')
   @DocsEditable()
-  void set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.loopStart_Setter(this, value);
+  void set loopStart(num value) => _blink.BlinkAudioBufferSourceNode.instance.loopStart_Setter_(this, value);
 
   @DomName('AudioBufferSourceNode.playbackRate')
   @DocsEditable()
-  AudioParam get playbackRate => _blink.BlinkAudioBufferSourceNode.playbackRate_Getter(this);
+  AudioParam get playbackRate => _blink.BlinkAudioBufferSourceNode.instance.playbackRate_Getter_(this);
 
   void start([num when, num grainOffset, num grainDuration]) {
     if (grainDuration != null) {
-      _blink.BlinkAudioBufferSourceNode.start_Callback_3(this, when, grainOffset, grainDuration);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_3_(this, when, grainOffset, grainDuration);
       return;
     }
     if (grainOffset != null) {
-      _blink.BlinkAudioBufferSourceNode.start_Callback_2(this, when, grainOffset);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_2_(this, when, grainOffset);
       return;
     }
     if (when != null) {
-      _blink.BlinkAudioBufferSourceNode.start_Callback_1(this, when);
+      _blink.BlinkAudioBufferSourceNode.instance.start_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkAudioBufferSourceNode.start_Callback(this);
+    _blink.BlinkAudioBufferSourceNode.instance.start_Callback_0_(this);
     return;
   }
 
   void stop([num when]) {
     if (when != null) {
-      _blink.BlinkAudioBufferSourceNode.stop_Callback_1(this, when);
+      _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkAudioBufferSourceNode.stop_Callback(this);
+    _blink.BlinkAudioBufferSourceNode.instance.stop_Callback_0_(this);
     return;
   }
 
@@ -285,7 +285,7 @@
   @DomName('AudioContext.AudioContext')
   @DocsEditable()
   factory AudioContext() {
-    return _blink.BlinkAudioContext.constructorCallback();
+    return _blink.BlinkAudioContext.instance.constructorCallback_0_();
   }
 
   /// Checks if this type is supported on the current platform.
@@ -293,118 +293,118 @@
 
   @DomName('AudioContext.currentTime')
   @DocsEditable()
-  double get currentTime => _blink.BlinkAudioContext.currentTime_Getter(this);
+  double get currentTime => _blink.BlinkAudioContext.instance.currentTime_Getter_(this);
 
   @DomName('AudioContext.destination')
   @DocsEditable()
-  AudioDestinationNode get destination => _blink.BlinkAudioContext.destination_Getter(this);
+  AudioDestinationNode get destination => _blink.BlinkAudioContext.instance.destination_Getter_(this);
 
   @DomName('AudioContext.listener')
   @DocsEditable()
-  AudioListener get listener => _blink.BlinkAudioContext.listener_Getter(this);
+  AudioListener get listener => _blink.BlinkAudioContext.instance.listener_Getter_(this);
 
   @DomName('AudioContext.sampleRate')
   @DocsEditable()
-  double get sampleRate => _blink.BlinkAudioContext.sampleRate_Getter(this);
+  double get sampleRate => _blink.BlinkAudioContext.instance.sampleRate_Getter_(this);
 
   @DomName('AudioContext.createAnalyser')
   @DocsEditable()
-  AnalyserNode createAnalyser() => _blink.BlinkAudioContext.createAnalyser_Callback(this);
+  AnalyserNode createAnalyser() => _blink.BlinkAudioContext.instance.createAnalyser_Callback_0_(this);
 
   @DomName('AudioContext.createBiquadFilter')
   @DocsEditable()
-  BiquadFilterNode createBiquadFilter() => _blink.BlinkAudioContext.createBiquadFilter_Callback(this);
+  BiquadFilterNode createBiquadFilter() => _blink.BlinkAudioContext.instance.createBiquadFilter_Callback_0_(this);
 
   @DomName('AudioContext.createBuffer')
   @DocsEditable()
-  AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => _blink.BlinkAudioContext.createBuffer_Callback_3(this, numberOfChannels, numberOfFrames, sampleRate);
+  AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => _blink.BlinkAudioContext.instance.createBuffer_Callback_3_(this, numberOfChannels, numberOfFrames, sampleRate);
 
   @DomName('AudioContext.createBufferSource')
   @DocsEditable()
-  AudioBufferSourceNode createBufferSource() => _blink.BlinkAudioContext.createBufferSource_Callback(this);
+  AudioBufferSourceNode createBufferSource() => _blink.BlinkAudioContext.instance.createBufferSource_Callback_0_(this);
 
   ChannelMergerNode createChannelMerger([int numberOfInputs]) {
     if (numberOfInputs != null) {
-      return _blink.BlinkAudioContext.createChannelMerger_Callback_1(this, numberOfInputs);
+      return _blink.BlinkAudioContext.instance.createChannelMerger_Callback_1_(this, numberOfInputs);
     }
-    return _blink.BlinkAudioContext.createChannelMerger_Callback(this);
+    return _blink.BlinkAudioContext.instance.createChannelMerger_Callback_0_(this);
   }
 
   ChannelSplitterNode createChannelSplitter([int numberOfOutputs]) {
     if (numberOfOutputs != null) {
-      return _blink.BlinkAudioContext.createChannelSplitter_Callback_1(this, numberOfOutputs);
+      return _blink.BlinkAudioContext.instance.createChannelSplitter_Callback_1_(this, numberOfOutputs);
     }
-    return _blink.BlinkAudioContext.createChannelSplitter_Callback(this);
+    return _blink.BlinkAudioContext.instance.createChannelSplitter_Callback_0_(this);
   }
 
   @DomName('AudioContext.createConvolver')
   @DocsEditable()
-  ConvolverNode createConvolver() => _blink.BlinkAudioContext.createConvolver_Callback(this);
+  ConvolverNode createConvolver() => _blink.BlinkAudioContext.instance.createConvolver_Callback_0_(this);
 
   DelayNode createDelay([num maxDelayTime]) {
     if (maxDelayTime != null) {
-      return _blink.BlinkAudioContext.createDelay_Callback_1(this, maxDelayTime);
+      return _blink.BlinkAudioContext.instance.createDelay_Callback_1_(this, maxDelayTime);
     }
-    return _blink.BlinkAudioContext.createDelay_Callback(this);
+    return _blink.BlinkAudioContext.instance.createDelay_Callback_0_(this);
   }
 
   @DomName('AudioContext.createDynamicsCompressor')
   @DocsEditable()
-  DynamicsCompressorNode createDynamicsCompressor() => _blink.BlinkAudioContext.createDynamicsCompressor_Callback(this);
+  DynamicsCompressorNode createDynamicsCompressor() => _blink.BlinkAudioContext.instance.createDynamicsCompressor_Callback_0_(this);
 
   @DomName('AudioContext.createGain')
   @DocsEditable()
-  GainNode createGain() => _blink.BlinkAudioContext.createGain_Callback(this);
+  GainNode createGain() => _blink.BlinkAudioContext.instance.createGain_Callback_0_(this);
 
   @DomName('AudioContext.createMediaElementSource')
   @DocsEditable()
-  MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.BlinkAudioContext.createMediaElementSource_Callback_1(this, mediaElement);
+  MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.BlinkAudioContext.instance.createMediaElementSource_Callback_1_(this, mediaElement);
 
   @DomName('AudioContext.createMediaStreamDestination')
   @DocsEditable()
-  MediaStreamAudioDestinationNode createMediaStreamDestination() => _blink.BlinkAudioContext.createMediaStreamDestination_Callback(this);
+  MediaStreamAudioDestinationNode createMediaStreamDestination() => _blink.BlinkAudioContext.instance.createMediaStreamDestination_Callback_0_(this);
 
   @DomName('AudioContext.createMediaStreamSource')
   @DocsEditable()
-  MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => _blink.BlinkAudioContext.createMediaStreamSource_Callback_1(this, mediaStream);
+  MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream) => _blink.BlinkAudioContext.instance.createMediaStreamSource_Callback_1_(this, mediaStream);
 
   @DomName('AudioContext.createOscillator')
   @DocsEditable()
-  OscillatorNode createOscillator() => _blink.BlinkAudioContext.createOscillator_Callback(this);
+  OscillatorNode createOscillator() => _blink.BlinkAudioContext.instance.createOscillator_Callback_0_(this);
 
   @DomName('AudioContext.createPanner')
   @DocsEditable()
-  PannerNode createPanner() => _blink.BlinkAudioContext.createPanner_Callback(this);
+  PannerNode createPanner() => _blink.BlinkAudioContext.instance.createPanner_Callback_0_(this);
 
   @DomName('AudioContext.createPeriodicWave')
   @DocsEditable()
   @Experimental() // untriaged
-  PeriodicWave createPeriodicWave(Float32List real, Float32List imag) => _blink.BlinkAudioContext.createPeriodicWave_Callback_2(this, real, imag);
+  PeriodicWave createPeriodicWave(Float32List real, Float32List imag) => _blink.BlinkAudioContext.instance.createPeriodicWave_Callback_2_(this, real, imag);
 
   ScriptProcessorNode createScriptProcessor([int bufferSize, int numberOfInputChannels, int numberOfOutputChannels]) {
     if (numberOfOutputChannels != null) {
-      return _blink.BlinkAudioContext.createScriptProcessor_Callback_3(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_3_(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
     }
     if (numberOfInputChannels != null) {
-      return _blink.BlinkAudioContext.createScriptProcessor_Callback_2(this, bufferSize, numberOfInputChannels);
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_2_(this, bufferSize, numberOfInputChannels);
     }
     if (bufferSize != null) {
-      return _blink.BlinkAudioContext.createScriptProcessor_Callback_1(this, bufferSize);
+      return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_1_(this, bufferSize);
     }
-    return _blink.BlinkAudioContext.createScriptProcessor_Callback(this);
+    return _blink.BlinkAudioContext.instance.createScriptProcessor_Callback_0_(this);
   }
 
   @DomName('AudioContext.createWaveShaper')
   @DocsEditable()
-  WaveShaperNode createWaveShaper() => _blink.BlinkAudioContext.createWaveShaper_Callback(this);
+  WaveShaperNode createWaveShaper() => _blink.BlinkAudioContext.instance.createWaveShaper_Callback_0_(this);
 
   @DomName('AudioContext.decodeAudioData')
   @DocsEditable()
-  void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.decodeAudioData_Callback_3(this, audioData, successCallback, errorCallback);
+  void _decodeAudioData(ByteBuffer audioData, AudioBufferCallback successCallback, [AudioBufferCallback errorCallback]) => _blink.BlinkAudioContext.instance.decodeAudioData_Callback_3_(this, audioData, successCallback, errorCallback);
 
   @DomName('AudioContext.startRendering')
   @DocsEditable()
-  void startRendering() => _blink.BlinkAudioContext.startRendering_Callback(this);
+  void startRendering() => _blink.BlinkAudioContext.instance.startRendering_Callback_0_(this);
 
   /// Stream of `complete` events handled by this [AudioContext].
   @DomName('AudioContext.oncomplete')
@@ -443,7 +443,7 @@
 
   @DomName('AudioDestinationNode.maxChannelCount')
   @DocsEditable()
-  int get maxChannelCount => _blink.BlinkAudioDestinationNode.maxChannelCount_Getter(this);
+  int get maxChannelCount => _blink.BlinkAudioDestinationNode.instance.maxChannelCount_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -463,31 +463,31 @@
 
   @DomName('AudioListener.dopplerFactor')
   @DocsEditable()
-  num get dopplerFactor => _blink.BlinkAudioListener.dopplerFactor_Getter(this);
+  num get dopplerFactor => _blink.BlinkAudioListener.instance.dopplerFactor_Getter_(this);
 
   @DomName('AudioListener.dopplerFactor')
   @DocsEditable()
-  void set dopplerFactor(num value) => _blink.BlinkAudioListener.dopplerFactor_Setter(this, value);
+  void set dopplerFactor(num value) => _blink.BlinkAudioListener.instance.dopplerFactor_Setter_(this, value);
 
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
-  num get speedOfSound => _blink.BlinkAudioListener.speedOfSound_Getter(this);
+  num get speedOfSound => _blink.BlinkAudioListener.instance.speedOfSound_Getter_(this);
 
   @DomName('AudioListener.speedOfSound')
   @DocsEditable()
-  void set speedOfSound(num value) => _blink.BlinkAudioListener.speedOfSound_Setter(this, value);
+  void set speedOfSound(num value) => _blink.BlinkAudioListener.instance.speedOfSound_Setter_(this, value);
 
   @DomName('AudioListener.setOrientation')
   @DocsEditable()
-  void setOrientation(num x, num y, num z, num xUp, num yUp, num zUp) => _blink.BlinkAudioListener.setOrientation_Callback_6(this, x, y, z, xUp, yUp, zUp);
+  void setOrientation(num x, num y, num z, num xUp, num yUp, num zUp) => _blink.BlinkAudioListener.instance.setOrientation_Callback_6_(this, x, y, z, xUp, yUp, zUp);
 
   @DomName('AudioListener.setPosition')
   @DocsEditable()
-  void setPosition(num x, num y, num z) => _blink.BlinkAudioListener.setPosition_Callback_3(this, x, y, z);
+  void setPosition(num x, num y, num z) => _blink.BlinkAudioListener.instance.setPosition_Callback_3_(this, x, y, z);
 
   @DomName('AudioListener.setVelocity')
   @DocsEditable()
-  void setVelocity(num x, num y, num z) => _blink.BlinkAudioListener.setVelocity_Callback_3(this, x, y, z);
+  void setVelocity(num x, num y, num z) => _blink.BlinkAudioListener.instance.setVelocity_Callback_3_(this, x, y, z);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -504,47 +504,47 @@
 
   @DomName('AudioNode.channelCount')
   @DocsEditable()
-  int get channelCount => _blink.BlinkAudioNode.channelCount_Getter(this);
+  int get channelCount => _blink.BlinkAudioNode.instance.channelCount_Getter_(this);
 
   @DomName('AudioNode.channelCount')
   @DocsEditable()
-  void set channelCount(int value) => _blink.BlinkAudioNode.channelCount_Setter(this, value);
+  void set channelCount(int value) => _blink.BlinkAudioNode.instance.channelCount_Setter_(this, value);
 
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
-  String get channelCountMode => _blink.BlinkAudioNode.channelCountMode_Getter(this);
+  String get channelCountMode => _blink.BlinkAudioNode.instance.channelCountMode_Getter_(this);
 
   @DomName('AudioNode.channelCountMode')
   @DocsEditable()
-  void set channelCountMode(String value) => _blink.BlinkAudioNode.channelCountMode_Setter(this, value);
+  void set channelCountMode(String value) => _blink.BlinkAudioNode.instance.channelCountMode_Setter_(this, value);
 
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
-  String get channelInterpretation => _blink.BlinkAudioNode.channelInterpretation_Getter(this);
+  String get channelInterpretation => _blink.BlinkAudioNode.instance.channelInterpretation_Getter_(this);
 
   @DomName('AudioNode.channelInterpretation')
   @DocsEditable()
-  void set channelInterpretation(String value) => _blink.BlinkAudioNode.channelInterpretation_Setter(this, value);
+  void set channelInterpretation(String value) => _blink.BlinkAudioNode.instance.channelInterpretation_Setter_(this, value);
 
   @DomName('AudioNode.context')
   @DocsEditable()
-  AudioContext get context => _blink.BlinkAudioNode.context_Getter(this);
+  AudioContext get context => _blink.BlinkAudioNode.instance.context_Getter_(this);
 
   @DomName('AudioNode.numberOfInputs')
   @DocsEditable()
-  int get numberOfInputs => _blink.BlinkAudioNode.numberOfInputs_Getter(this);
+  int get numberOfInputs => _blink.BlinkAudioNode.instance.numberOfInputs_Getter_(this);
 
   @DomName('AudioNode.numberOfOutputs')
   @DocsEditable()
-  int get numberOfOutputs => _blink.BlinkAudioNode.numberOfOutputs_Getter(this);
+  int get numberOfOutputs => _blink.BlinkAudioNode.instance.numberOfOutputs_Getter_(this);
 
   void _connect(destination, int output, [int input]) {
     if ((input is int || input == null) && (output is int || output == null) && (destination is AudioNode || destination == null)) {
-      _blink.BlinkAudioNode.connect_Callback_3(this, destination, output, input);
+      _blink.BlinkAudioNode.instance.connect_Callback_3_(this, destination, output, input);
       return;
     }
     if ((output is int || output == null) && (destination is AudioParam || destination == null) && input == null) {
-      _blink.BlinkAudioNode.connect_Callback_2(this, destination, output);
+      _blink.BlinkAudioNode.instance.connect_Callback_2_(this, destination, output);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -552,7 +552,7 @@
 
   @DomName('AudioNode.disconnect')
   @DocsEditable()
-  void disconnect(int output) => _blink.BlinkAudioNode.disconnect_Callback_1(this, output);
+  void disconnect(int output) => _blink.BlinkAudioNode.instance.disconnect_Callback_1_(this, output);
 
   @DomName('AudioNode.connect')
   void connectNode(AudioNode destination, [int output = 0, int input = 0]) =>
@@ -579,39 +579,39 @@
 
   @DomName('AudioParam.defaultValue')
   @DocsEditable()
-  double get defaultValue => _blink.BlinkAudioParam.defaultValue_Getter(this);
+  double get defaultValue => _blink.BlinkAudioParam.instance.defaultValue_Getter_(this);
 
   @DomName('AudioParam.value')
   @DocsEditable()
-  num get value => _blink.BlinkAudioParam.value_Getter(this);
+  num get value => _blink.BlinkAudioParam.instance.value_Getter_(this);
 
   @DomName('AudioParam.value')
   @DocsEditable()
-  void set value(num value) => _blink.BlinkAudioParam.value_Setter(this, value);
+  void set value(num value) => _blink.BlinkAudioParam.instance.value_Setter_(this, value);
 
   @DomName('AudioParam.cancelScheduledValues')
   @DocsEditable()
-  void cancelScheduledValues(num startTime) => _blink.BlinkAudioParam.cancelScheduledValues_Callback_1(this, startTime);
+  void cancelScheduledValues(num startTime) => _blink.BlinkAudioParam.instance.cancelScheduledValues_Callback_1_(this, startTime);
 
   @DomName('AudioParam.exponentialRampToValueAtTime')
   @DocsEditable()
-  void exponentialRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.exponentialRampToValueAtTime_Callback_2(this, value, time);
+  void exponentialRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.instance.exponentialRampToValueAtTime_Callback_2_(this, value, time);
 
   @DomName('AudioParam.linearRampToValueAtTime')
   @DocsEditable()
-  void linearRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.linearRampToValueAtTime_Callback_2(this, value, time);
+  void linearRampToValueAtTime(num value, num time) => _blink.BlinkAudioParam.instance.linearRampToValueAtTime_Callback_2_(this, value, time);
 
   @DomName('AudioParam.setTargetAtTime')
   @DocsEditable()
-  void setTargetAtTime(num target, num time, num timeConstant) => _blink.BlinkAudioParam.setTargetAtTime_Callback_3(this, target, time, timeConstant);
+  void setTargetAtTime(num target, num time, num timeConstant) => _blink.BlinkAudioParam.instance.setTargetAtTime_Callback_3_(this, target, time, timeConstant);
 
   @DomName('AudioParam.setValueAtTime')
   @DocsEditable()
-  void setValueAtTime(num value, num time) => _blink.BlinkAudioParam.setValueAtTime_Callback_2(this, value, time);
+  void setValueAtTime(num value, num time) => _blink.BlinkAudioParam.instance.setValueAtTime_Callback_2_(this, value, time);
 
   @DomName('AudioParam.setValueCurveAtTime')
   @DocsEditable()
-  void setValueCurveAtTime(Float32List values, num time, num duration) => _blink.BlinkAudioParam.setValueCurveAtTime_Callback_3(this, values, time, duration);
+  void setValueCurveAtTime(Float32List values, num time, num duration) => _blink.BlinkAudioParam.instance.setValueCurveAtTime_Callback_3_(this, values, time, duration);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -631,16 +631,16 @@
 
   @DomName('AudioProcessingEvent.inputBuffer')
   @DocsEditable()
-  AudioBuffer get inputBuffer => _blink.BlinkAudioProcessingEvent.inputBuffer_Getter(this);
+  AudioBuffer get inputBuffer => _blink.BlinkAudioProcessingEvent.instance.inputBuffer_Getter_(this);
 
   @DomName('AudioProcessingEvent.outputBuffer')
   @DocsEditable()
-  AudioBuffer get outputBuffer => _blink.BlinkAudioProcessingEvent.outputBuffer_Getter(this);
+  AudioBuffer get outputBuffer => _blink.BlinkAudioProcessingEvent.instance.outputBuffer_Getter_(this);
 
   @DomName('AudioProcessingEvent.playbackTime')
   @DocsEditable()
   @Experimental() // untriaged
-  double get playbackTime => _blink.BlinkAudioProcessingEvent.playbackTime_Getter(this);
+  double get playbackTime => _blink.BlinkAudioProcessingEvent.instance.playbackTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -676,31 +676,31 @@
 
   @DomName('BiquadFilterNode.Q')
   @DocsEditable()
-  AudioParam get Q => _blink.BlinkBiquadFilterNode.Q_Getter(this);
+  AudioParam get Q => _blink.BlinkBiquadFilterNode.instance.Q_Getter_(this);
 
   @DomName('BiquadFilterNode.detune')
   @DocsEditable()
-  AudioParam get detune => _blink.BlinkBiquadFilterNode.detune_Getter(this);
+  AudioParam get detune => _blink.BlinkBiquadFilterNode.instance.detune_Getter_(this);
 
   @DomName('BiquadFilterNode.frequency')
   @DocsEditable()
-  AudioParam get frequency => _blink.BlinkBiquadFilterNode.frequency_Getter(this);
+  AudioParam get frequency => _blink.BlinkBiquadFilterNode.instance.frequency_Getter_(this);
 
   @DomName('BiquadFilterNode.gain')
   @DocsEditable()
-  AudioParam get gain => _blink.BlinkBiquadFilterNode.gain_Getter(this);
+  AudioParam get gain => _blink.BlinkBiquadFilterNode.instance.gain_Getter_(this);
 
   @DomName('BiquadFilterNode.type')
   @DocsEditable()
-  String get type => _blink.BlinkBiquadFilterNode.type_Getter(this);
+  String get type => _blink.BlinkBiquadFilterNode.instance.type_Getter_(this);
 
   @DomName('BiquadFilterNode.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkBiquadFilterNode.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkBiquadFilterNode.instance.type_Setter_(this, value);
 
   @DomName('BiquadFilterNode.getFrequencyResponse')
   @DocsEditable()
-  void getFrequencyResponse(Float32List frequencyHz, Float32List magResponse, Float32List phaseResponse) => _blink.BlinkBiquadFilterNode.getFrequencyResponse_Callback_3(this, frequencyHz, magResponse, phaseResponse);
+  void getFrequencyResponse(Float32List frequencyHz, Float32List magResponse, Float32List phaseResponse) => _blink.BlinkBiquadFilterNode.instance.getFrequencyResponse_Callback_3_(this, frequencyHz, magResponse, phaseResponse);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -752,19 +752,19 @@
 
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
-  AudioBuffer get buffer => _blink.BlinkConvolverNode.buffer_Getter(this);
+  AudioBuffer get buffer => _blink.BlinkConvolverNode.instance.buffer_Getter_(this);
 
   @DomName('ConvolverNode.buffer')
   @DocsEditable()
-  void set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.buffer_Setter(this, value);
+  void set buffer(AudioBuffer value) => _blink.BlinkConvolverNode.instance.buffer_Setter_(this, value);
 
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
-  bool get normalize => _blink.BlinkConvolverNode.normalize_Getter(this);
+  bool get normalize => _blink.BlinkConvolverNode.instance.normalize_Getter_(this);
 
   @DomName('ConvolverNode.normalize')
   @DocsEditable()
-  void set normalize(bool value) => _blink.BlinkConvolverNode.normalize_Setter(this, value);
+  void set normalize(bool value) => _blink.BlinkConvolverNode.instance.normalize_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -784,7 +784,7 @@
 
   @DomName('DelayNode.delayTime')
   @DocsEditable()
-  AudioParam get delayTime => _blink.BlinkDelayNode.delayTime_Getter(this);
+  AudioParam get delayTime => _blink.BlinkDelayNode.instance.delayTime_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -804,27 +804,27 @@
 
   @DomName('DynamicsCompressorNode.attack')
   @DocsEditable()
-  AudioParam get attack => _blink.BlinkDynamicsCompressorNode.attack_Getter(this);
+  AudioParam get attack => _blink.BlinkDynamicsCompressorNode.instance.attack_Getter_(this);
 
   @DomName('DynamicsCompressorNode.knee')
   @DocsEditable()
-  AudioParam get knee => _blink.BlinkDynamicsCompressorNode.knee_Getter(this);
+  AudioParam get knee => _blink.BlinkDynamicsCompressorNode.instance.knee_Getter_(this);
 
   @DomName('DynamicsCompressorNode.ratio')
   @DocsEditable()
-  AudioParam get ratio => _blink.BlinkDynamicsCompressorNode.ratio_Getter(this);
+  AudioParam get ratio => _blink.BlinkDynamicsCompressorNode.instance.ratio_Getter_(this);
 
   @DomName('DynamicsCompressorNode.reduction')
   @DocsEditable()
-  AudioParam get reduction => _blink.BlinkDynamicsCompressorNode.reduction_Getter(this);
+  AudioParam get reduction => _blink.BlinkDynamicsCompressorNode.instance.reduction_Getter_(this);
 
   @DomName('DynamicsCompressorNode.release')
   @DocsEditable()
-  AudioParam get release => _blink.BlinkDynamicsCompressorNode.release_Getter(this);
+  AudioParam get release => _blink.BlinkDynamicsCompressorNode.instance.release_Getter_(this);
 
   @DomName('DynamicsCompressorNode.threshold')
   @DocsEditable()
-  AudioParam get threshold => _blink.BlinkDynamicsCompressorNode.threshold_Getter(this);
+  AudioParam get threshold => _blink.BlinkDynamicsCompressorNode.instance.threshold_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -844,7 +844,7 @@
 
   @DomName('GainNode.gain')
   @DocsEditable()
-  AudioParam get gain => _blink.BlinkGainNode.gain_Getter(this);
+  AudioParam get gain => _blink.BlinkGainNode.instance.gain_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -865,7 +865,7 @@
   @DomName('MediaElementAudioSourceNode.mediaElement')
   @DocsEditable()
   @Experimental() // non-standard
-  MediaElement get mediaElement => _blink.BlinkMediaElementAudioSourceNode.mediaElement_Getter(this);
+  MediaElement get mediaElement => _blink.BlinkMediaElementAudioSourceNode.instance.mediaElement_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -885,7 +885,7 @@
 
   @DomName('MediaStreamAudioDestinationNode.stream')
   @DocsEditable()
-  MediaStream get stream => _blink.BlinkMediaStreamAudioDestinationNode.stream_Getter(this);
+  MediaStream get stream => _blink.BlinkMediaStreamAudioDestinationNode.instance.stream_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -905,7 +905,7 @@
 
   @DomName('MediaStreamAudioSourceNode.mediaStream')
   @DocsEditable()
-  MediaStream get mediaStream => _blink.BlinkMediaStreamAudioSourceNode.mediaStream_Getter(this);
+  MediaStream get mediaStream => _blink.BlinkMediaStreamAudioSourceNode.instance.mediaStream_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -925,7 +925,7 @@
 
   @DomName('OfflineAudioCompletionEvent.renderedBuffer')
   @DocsEditable()
-  AudioBuffer get renderedBuffer => _blink.BlinkOfflineAudioCompletionEvent.renderedBuffer_Getter(this);
+  AudioBuffer get renderedBuffer => _blink.BlinkOfflineAudioCompletionEvent.instance.renderedBuffer_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -946,7 +946,7 @@
   @DomName('OfflineAudioContext.OfflineAudioContext')
   @DocsEditable()
   factory OfflineAudioContext(int numberOfChannels, int numberOfFrames, num sampleRate) {
-    return _blink.BlinkOfflineAudioContext.constructorCallback_3(numberOfChannels, numberOfFrames, sampleRate);
+    return _blink.BlinkOfflineAudioContext.instance.constructorCallback_3_(numberOfChannels, numberOfFrames, sampleRate);
   }
 
 }
@@ -978,48 +978,48 @@
 
   @DomName('OscillatorNode.detune')
   @DocsEditable()
-  AudioParam get detune => _blink.BlinkOscillatorNode.detune_Getter(this);
+  AudioParam get detune => _blink.BlinkOscillatorNode.instance.detune_Getter_(this);
 
   @DomName('OscillatorNode.frequency')
   @DocsEditable()
-  AudioParam get frequency => _blink.BlinkOscillatorNode.frequency_Getter(this);
+  AudioParam get frequency => _blink.BlinkOscillatorNode.instance.frequency_Getter_(this);
 
   @DomName('OscillatorNode.type')
   @DocsEditable()
-  String get type => _blink.BlinkOscillatorNode.type_Getter(this);
+  String get type => _blink.BlinkOscillatorNode.instance.type_Getter_(this);
 
   @DomName('OscillatorNode.type')
   @DocsEditable()
-  void set type(String value) => _blink.BlinkOscillatorNode.type_Setter(this, value);
+  void set type(String value) => _blink.BlinkOscillatorNode.instance.type_Setter_(this, value);
 
   @DomName('OscillatorNode.noteOff')
   @DocsEditable()
-  void noteOff(num when) => _blink.BlinkOscillatorNode.noteOff_Callback_1(this, when);
+  void noteOff(num when) => _blink.BlinkOscillatorNode.instance.noteOff_Callback_1_(this, when);
 
   @DomName('OscillatorNode.noteOn')
   @DocsEditable()
-  void noteOn(num when) => _blink.BlinkOscillatorNode.noteOn_Callback_1(this, when);
+  void noteOn(num when) => _blink.BlinkOscillatorNode.instance.noteOn_Callback_1_(this, when);
 
   @DomName('OscillatorNode.setPeriodicWave')
   @DocsEditable()
   @Experimental() // untriaged
-  void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.setPeriodicWave_Callback_1(this, periodicWave);
+  void setPeriodicWave(PeriodicWave periodicWave) => _blink.BlinkOscillatorNode.instance.setPeriodicWave_Callback_1_(this, periodicWave);
 
   void start([num when]) {
     if (when != null) {
-      _blink.BlinkOscillatorNode.start_Callback_1(this, when);
+      _blink.BlinkOscillatorNode.instance.start_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkOscillatorNode.start_Callback(this);
+    _blink.BlinkOscillatorNode.instance.start_Callback_0_(this);
     return;
   }
 
   void stop([num when]) {
     if (when != null) {
-      _blink.BlinkOscillatorNode.stop_Callback_1(this, when);
+      _blink.BlinkOscillatorNode.instance.stop_Callback_1_(this, when);
       return;
     }
-    _blink.BlinkOscillatorNode.stop_Callback(this);
+    _blink.BlinkOscillatorNode.instance.stop_Callback_0_(this);
     return;
   }
 
@@ -1047,79 +1047,79 @@
 
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
-  num get coneInnerAngle => _blink.BlinkPannerNode.coneInnerAngle_Getter(this);
+  num get coneInnerAngle => _blink.BlinkPannerNode.instance.coneInnerAngle_Getter_(this);
 
   @DomName('PannerNode.coneInnerAngle')
   @DocsEditable()
-  void set coneInnerAngle(num value) => _blink.BlinkPannerNode.coneInnerAngle_Setter(this, value);
+  void set coneInnerAngle(num value) => _blink.BlinkPannerNode.instance.coneInnerAngle_Setter_(this, value);
 
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
-  num get coneOuterAngle => _blink.BlinkPannerNode.coneOuterAngle_Getter(this);
+  num get coneOuterAngle => _blink.BlinkPannerNode.instance.coneOuterAngle_Getter_(this);
 
   @DomName('PannerNode.coneOuterAngle')
   @DocsEditable()
-  void set coneOuterAngle(num value) => _blink.BlinkPannerNode.coneOuterAngle_Setter(this, value);
+  void set coneOuterAngle(num value) => _blink.BlinkPannerNode.instance.coneOuterAngle_Setter_(this, value);
 
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
-  num get coneOuterGain => _blink.BlinkPannerNode.coneOuterGain_Getter(this);
+  num get coneOuterGain => _blink.BlinkPannerNode.instance.coneOuterGain_Getter_(this);
 
   @DomName('PannerNode.coneOuterGain')
   @DocsEditable()
-  void set coneOuterGain(num value) => _blink.BlinkPannerNode.coneOuterGain_Setter(this, value);
+  void set coneOuterGain(num value) => _blink.BlinkPannerNode.instance.coneOuterGain_Setter_(this, value);
 
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
-  String get distanceModel => _blink.BlinkPannerNode.distanceModel_Getter(this);
+  String get distanceModel => _blink.BlinkPannerNode.instance.distanceModel_Getter_(this);
 
   @DomName('PannerNode.distanceModel')
   @DocsEditable()
-  void set distanceModel(String value) => _blink.BlinkPannerNode.distanceModel_Setter(this, value);
+  void set distanceModel(String value) => _blink.BlinkPannerNode.instance.distanceModel_Setter_(this, value);
 
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
-  num get maxDistance => _blink.BlinkPannerNode.maxDistance_Getter(this);
+  num get maxDistance => _blink.BlinkPannerNode.instance.maxDistance_Getter_(this);
 
   @DomName('PannerNode.maxDistance')
   @DocsEditable()
-  void set maxDistance(num value) => _blink.BlinkPannerNode.maxDistance_Setter(this, value);
+  void set maxDistance(num value) => _blink.BlinkPannerNode.instance.maxDistance_Setter_(this, value);
 
   @DomName('PannerNode.panningModel')
   @DocsEditable()
-  String get panningModel => _blink.BlinkPannerNode.panningModel_Getter(this);
+  String get panningModel => _blink.BlinkPannerNode.instance.panningModel_Getter_(this);
 
   @DomName('PannerNode.panningModel')
   @DocsEditable()
-  void set panningModel(String value) => _blink.BlinkPannerNode.panningModel_Setter(this, value);
+  void set panningModel(String value) => _blink.BlinkPannerNode.instance.panningModel_Setter_(this, value);
 
   @DomName('PannerNode.refDistance')
   @DocsEditable()
-  num get refDistance => _blink.BlinkPannerNode.refDistance_Getter(this);
+  num get refDistance => _blink.BlinkPannerNode.instance.refDistance_Getter_(this);
 
   @DomName('PannerNode.refDistance')
   @DocsEditable()
-  void set refDistance(num value) => _blink.BlinkPannerNode.refDistance_Setter(this, value);
+  void set refDistance(num value) => _blink.BlinkPannerNode.instance.refDistance_Setter_(this, value);
 
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
-  num get rolloffFactor => _blink.BlinkPannerNode.rolloffFactor_Getter(this);
+  num get rolloffFactor => _blink.BlinkPannerNode.instance.rolloffFactor_Getter_(this);
 
   @DomName('PannerNode.rolloffFactor')
   @DocsEditable()
-  void set rolloffFactor(num value) => _blink.BlinkPannerNode.rolloffFactor_Setter(this, value);
+  void set rolloffFactor(num value) => _blink.BlinkPannerNode.instance.rolloffFactor_Setter_(this, value);
 
   @DomName('PannerNode.setOrientation')
   @DocsEditable()
-  void setOrientation(num x, num y, num z) => _blink.BlinkPannerNode.setOrientation_Callback_3(this, x, y, z);
+  void setOrientation(num x, num y, num z) => _blink.BlinkPannerNode.instance.setOrientation_Callback_3_(this, x, y, z);
 
   @DomName('PannerNode.setPosition')
   @DocsEditable()
-  void setPosition(num x, num y, num z) => _blink.BlinkPannerNode.setPosition_Callback_3(this, x, y, z);
+  void setPosition(num x, num y, num z) => _blink.BlinkPannerNode.instance.setPosition_Callback_3_(this, x, y, z);
 
   @DomName('PannerNode.setVelocity')
   @DocsEditable()
-  void setVelocity(num x, num y, num z) => _blink.BlinkPannerNode.setVelocity_Callback_3(this, x, y, z);
+  void setVelocity(num x, num y, num z) => _blink.BlinkPannerNode.instance.setVelocity_Callback_3_(this, x, y, z);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1154,12 +1154,12 @@
 
   @DomName('ScriptProcessorNode.bufferSize')
   @DocsEditable()
-  int get bufferSize => _blink.BlinkScriptProcessorNode.bufferSize_Getter(this);
+  int get bufferSize => _blink.BlinkScriptProcessorNode.instance.bufferSize_Getter_(this);
 
   @DomName('ScriptProcessorNode.setEventListener')
   @DocsEditable()
   @Experimental() // untriaged
-  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.setEventListener_Callback_1(this, eventListener);
+  void setEventListener(EventListener eventListener) => _blink.BlinkScriptProcessorNode.instance.setEventListener_Callback_1_(this, eventListener);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1179,18 +1179,18 @@
 
   @DomName('WaveShaperNode.curve')
   @DocsEditable()
-  Float32List get curve => _blink.BlinkWaveShaperNode.curve_Getter(this);
+  Float32List get curve => _blink.BlinkWaveShaperNode.instance.curve_Getter_(this);
 
   @DomName('WaveShaperNode.curve')
   @DocsEditable()
-  void set curve(Float32List value) => _blink.BlinkWaveShaperNode.curve_Setter(this, value);
+  void set curve(Float32List value) => _blink.BlinkWaveShaperNode.instance.curve_Setter_(this, value);
 
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
-  String get oversample => _blink.BlinkWaveShaperNode.oversample_Getter(this);
+  String get oversample => _blink.BlinkWaveShaperNode.instance.oversample_Getter_(this);
 
   @DomName('WaveShaperNode.oversample')
   @DocsEditable()
-  void set oversample(String value) => _blink.BlinkWaveShaperNode.oversample_Setter(this, value);
+  void set oversample(String value) => _blink.BlinkWaveShaperNode.instance.oversample_Setter_(this, value);
 
 }
diff --git a/sdk/lib/web_gl/dartium/web_gl_dartium.dart b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
index ec946e4..7b9d549 100644
--- a/sdk/lib/web_gl/dartium/web_gl_dartium.dart
+++ b/sdk/lib/web_gl/dartium/web_gl_dartium.dart
@@ -371,15 +371,15 @@
 
   @DomName('WebGLActiveInfo.name')
   @DocsEditable()
-  String get name => _blink.BlinkWebGLActiveInfo.name_Getter(this);
+  String get name => _blink.BlinkWebGLActiveInfo.instance.name_Getter_(this);
 
   @DomName('WebGLActiveInfo.size')
   @DocsEditable()
-  int get size => _blink.BlinkWebGLActiveInfo.size_Getter(this);
+  int get size => _blink.BlinkWebGLActiveInfo.instance.size_Getter_(this);
 
   @DomName('WebGLActiveInfo.type')
   @DocsEditable()
-  int get type => _blink.BlinkWebGLActiveInfo.type_Getter(this);
+  int get type => _blink.BlinkWebGLActiveInfo.instance.type_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -404,17 +404,17 @@
   @DomName('ANGLEInstancedArrays.drawArraysInstancedANGLE')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawArraysInstancedAngle(int mode, int first, int count, int primcount) => _blink.BlinkANGLEInstancedArrays.drawArraysInstancedANGLE_Callback_4(this, mode, first, count, primcount);
+  void drawArraysInstancedAngle(int mode, int first, int count, int primcount) => _blink.BlinkANGLEInstancedArrays.instance.drawArraysInstancedANGLE_Callback_4_(this, mode, first, count, primcount);
 
   @DomName('ANGLEInstancedArrays.drawElementsInstancedANGLE')
   @DocsEditable()
   @Experimental() // untriaged
-  void drawElementsInstancedAngle(int mode, int count, int type, int offset, int primcount) => _blink.BlinkANGLEInstancedArrays.drawElementsInstancedANGLE_Callback_5(this, mode, count, type, offset, primcount);
+  void drawElementsInstancedAngle(int mode, int count, int type, int offset, int primcount) => _blink.BlinkANGLEInstancedArrays.instance.drawElementsInstancedANGLE_Callback_5_(this, mode, count, type, offset, primcount);
 
   @DomName('ANGLEInstancedArrays.vertexAttribDivisorANGLE')
   @DocsEditable()
   @Experimental() // untriaged
-  void vertexAttribDivisorAngle(int index, int divisor) => _blink.BlinkANGLEInstancedArrays.vertexAttribDivisorANGLE_Callback_2(this, index, divisor);
+  void vertexAttribDivisorAngle(int index, int divisor) => _blink.BlinkANGLEInstancedArrays.instance.vertexAttribDivisorANGLE_Callback_2_(this, index, divisor);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -582,61 +582,61 @@
 
   @DomName('WebGLContextAttributes.alpha')
   @DocsEditable()
-  bool get alpha => _blink.BlinkWebGLContextAttributes.alpha_Getter(this);
+  bool get alpha => _blink.BlinkWebGLContextAttributes.instance.alpha_Getter_(this);
 
   @DomName('WebGLContextAttributes.alpha')
   @DocsEditable()
-  void set alpha(bool value) => _blink.BlinkWebGLContextAttributes.alpha_Setter(this, value);
+  void set alpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.alpha_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.antialias')
   @DocsEditable()
-  bool get antialias => _blink.BlinkWebGLContextAttributes.antialias_Getter(this);
+  bool get antialias => _blink.BlinkWebGLContextAttributes.instance.antialias_Getter_(this);
 
   @DomName('WebGLContextAttributes.antialias')
   @DocsEditable()
-  void set antialias(bool value) => _blink.BlinkWebGLContextAttributes.antialias_Setter(this, value);
+  void set antialias(bool value) => _blink.BlinkWebGLContextAttributes.instance.antialias_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.depth')
   @DocsEditable()
-  bool get depth => _blink.BlinkWebGLContextAttributes.depth_Getter(this);
+  bool get depth => _blink.BlinkWebGLContextAttributes.instance.depth_Getter_(this);
 
   @DomName('WebGLContextAttributes.depth')
   @DocsEditable()
-  void set depth(bool value) => _blink.BlinkWebGLContextAttributes.depth_Setter(this, value);
+  void set depth(bool value) => _blink.BlinkWebGLContextAttributes.instance.depth_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat')
   @DocsEditable()
   @Experimental() // untriaged
-  bool get failIfMajorPerformanceCaveat => _blink.BlinkWebGLContextAttributes.failIfMajorPerformanceCaveat_Getter(this);
+  bool get failIfMajorPerformanceCaveat => _blink.BlinkWebGLContextAttributes.instance.failIfMajorPerformanceCaveat_Getter_(this);
 
   @DomName('WebGLContextAttributes.failIfMajorPerformanceCaveat')
   @DocsEditable()
   @Experimental() // untriaged
-  void set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.failIfMajorPerformanceCaveat_Setter(this, value);
+  void set failIfMajorPerformanceCaveat(bool value) => _blink.BlinkWebGLContextAttributes.instance.failIfMajorPerformanceCaveat_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.premultipliedAlpha')
   @DocsEditable()
-  bool get premultipliedAlpha => _blink.BlinkWebGLContextAttributes.premultipliedAlpha_Getter(this);
+  bool get premultipliedAlpha => _blink.BlinkWebGLContextAttributes.instance.premultipliedAlpha_Getter_(this);
 
   @DomName('WebGLContextAttributes.premultipliedAlpha')
   @DocsEditable()
-  void set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.premultipliedAlpha_Setter(this, value);
+  void set premultipliedAlpha(bool value) => _blink.BlinkWebGLContextAttributes.instance.premultipliedAlpha_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.preserveDrawingBuffer')
   @DocsEditable()
-  bool get preserveDrawingBuffer => _blink.BlinkWebGLContextAttributes.preserveDrawingBuffer_Getter(this);
+  bool get preserveDrawingBuffer => _blink.BlinkWebGLContextAttributes.instance.preserveDrawingBuffer_Getter_(this);
 
   @DomName('WebGLContextAttributes.preserveDrawingBuffer')
   @DocsEditable()
-  void set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.preserveDrawingBuffer_Setter(this, value);
+  void set preserveDrawingBuffer(bool value) => _blink.BlinkWebGLContextAttributes.instance.preserveDrawingBuffer_Setter_(this, value);
 
   @DomName('WebGLContextAttributes.stencil')
   @DocsEditable()
-  bool get stencil => _blink.BlinkWebGLContextAttributes.stencil_Getter(this);
+  bool get stencil => _blink.BlinkWebGLContextAttributes.instance.stencil_Getter_(this);
 
   @DomName('WebGLContextAttributes.stencil')
   @DocsEditable()
-  void set stencil(bool value) => _blink.BlinkWebGLContextAttributes.stencil_Setter(this, value);
+  void set stencil(bool value) => _blink.BlinkWebGLContextAttributes.instance.stencil_Setter_(this, value);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -655,7 +655,7 @@
 
   @DomName('WebGLContextEvent.statusMessage')
   @DocsEditable()
-  String get statusMessage => _blink.BlinkWebGLContextEvent.statusMessage_Getter(this);
+  String get statusMessage => _blink.BlinkWebGLContextEvent.instance.statusMessage_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -699,7 +699,7 @@
 
   @DomName('WebGLDebugShaders.getTranslatedShaderSource')
   @DocsEditable()
-  String getTranslatedShaderSource(Shader shader) => _blink.BlinkWebGLDebugShaders.getTranslatedShaderSource_Callback_1(this, shader);
+  String getTranslatedShaderSource(Shader shader) => _blink.BlinkWebGLDebugShaders.instance.getTranslatedShaderSource_Callback_1_(this, shader);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -875,7 +875,7 @@
 
   @DomName('WebGLDrawBuffers.drawBuffersWEBGL')
   @DocsEditable()
-  void drawBuffersWebgl(List<int> buffers) => _blink.BlinkWebGLDrawBuffers.drawBuffersWEBGL_Callback_1(this, buffers);
+  void drawBuffersWebgl(List<int> buffers) => _blink.BlinkWebGLDrawBuffers.instance.drawBuffersWEBGL_Callback_1_(this, buffers);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -990,11 +990,11 @@
 
   @DomName('WebGLLoseContext.loseContext')
   @DocsEditable()
-  void loseContext() => _blink.BlinkWebGLLoseContext.loseContext_Callback(this);
+  void loseContext() => _blink.BlinkWebGLLoseContext.instance.loseContext_Callback_0_(this);
 
   @DomName('WebGLLoseContext.restoreContext')
   @DocsEditable()
-  void restoreContext() => _blink.BlinkWebGLLoseContext.restoreContext_Callback(this);
+  void restoreContext() => _blink.BlinkWebGLLoseContext.instance.restoreContext_Callback_0_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -1122,19 +1122,19 @@
 
   @DomName('OESVertexArrayObject.bindVertexArrayOES')
   @DocsEditable()
-  void bindVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.bindVertexArrayOES_Callback_1(this, arrayObject);
+  void bindVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.instance.bindVertexArrayOES_Callback_1_(this, arrayObject);
 
   @DomName('OESVertexArrayObject.createVertexArrayOES')
   @DocsEditable()
-  VertexArrayObject createVertexArray() => _blink.BlinkOESVertexArrayObject.createVertexArrayOES_Callback(this);
+  VertexArrayObject createVertexArray() => _blink.BlinkOESVertexArrayObject.instance.createVertexArrayOES_Callback_0_(this);
 
   @DomName('OESVertexArrayObject.deleteVertexArrayOES')
   @DocsEditable()
-  void deleteVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.deleteVertexArrayOES_Callback_1(this, arrayObject);
+  void deleteVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.instance.deleteVertexArrayOES_Callback_1_(this, arrayObject);
 
   @DomName('OESVertexArrayObject.isVertexArrayOES')
   @DocsEditable()
-  bool isVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.isVertexArrayOES_Callback_1(this, arrayObject);
+  bool isVertexArray(VertexArrayObject arrayObject) => _blink.BlinkOESVertexArrayObject.instance.isVertexArrayOES_Callback_1_(this, arrayObject);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -2377,79 +2377,79 @@
   @DomName('WebGLRenderingContext.canvas')
   @DocsEditable()
   @Experimental() // untriaged
-  CanvasElement get canvas => _blink.BlinkWebGLRenderingContext.canvas_Getter(this);
+  CanvasElement get canvas => _blink.BlinkWebGLRenderingContext.instance.canvas_Getter_(this);
 
   @DomName('WebGLRenderingContext.drawingBufferHeight')
   @DocsEditable()
-  int get drawingBufferHeight => _blink.BlinkWebGLRenderingContext.drawingBufferHeight_Getter(this);
+  int get drawingBufferHeight => _blink.BlinkWebGLRenderingContext.instance.drawingBufferHeight_Getter_(this);
 
   @DomName('WebGLRenderingContext.drawingBufferWidth')
   @DocsEditable()
-  int get drawingBufferWidth => _blink.BlinkWebGLRenderingContext.drawingBufferWidth_Getter(this);
+  int get drawingBufferWidth => _blink.BlinkWebGLRenderingContext.instance.drawingBufferWidth_Getter_(this);
 
   @DomName('WebGLRenderingContext.activeTexture')
   @DocsEditable()
-  void activeTexture(int texture) => _blink.BlinkWebGLRenderingContext.activeTexture_Callback_1(this, texture);
+  void activeTexture(int texture) => _blink.BlinkWebGLRenderingContext.instance.activeTexture_Callback_1_(this, texture);
 
   @DomName('WebGLRenderingContext.attachShader')
   @DocsEditable()
-  void attachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.attachShader_Callback_2(this, program, shader);
+  void attachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.instance.attachShader_Callback_2_(this, program, shader);
 
   @DomName('WebGLRenderingContext.bindAttribLocation')
   @DocsEditable()
-  void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGLRenderingContext.bindAttribLocation_Callback_3(this, program, index, name);
+  void bindAttribLocation(Program program, int index, String name) => _blink.BlinkWebGLRenderingContext.instance.bindAttribLocation_Callback_3_(this, program, index, name);
 
   @DomName('WebGLRenderingContext.bindBuffer')
   @DocsEditable()
-  void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGLRenderingContext.bindBuffer_Callback_2(this, target, buffer);
+  void bindBuffer(int target, Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.bindBuffer_Callback_2_(this, target, buffer);
 
   @DomName('WebGLRenderingContext.bindFramebuffer')
   @DocsEditable()
-  void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.bindFramebuffer_Callback_2(this, target, framebuffer);
+  void bindFramebuffer(int target, Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.bindFramebuffer_Callback_2_(this, target, framebuffer);
 
   @DomName('WebGLRenderingContext.bindRenderbuffer')
   @DocsEditable()
-  void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.bindRenderbuffer_Callback_2(this, target, renderbuffer);
+  void bindRenderbuffer(int target, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.bindRenderbuffer_Callback_2_(this, target, renderbuffer);
 
   @DomName('WebGLRenderingContext.bindTexture')
   @DocsEditable()
-  void bindTexture(int target, Texture texture) => _blink.BlinkWebGLRenderingContext.bindTexture_Callback_2(this, target, texture);
+  void bindTexture(int target, Texture texture) => _blink.BlinkWebGLRenderingContext.instance.bindTexture_Callback_2_(this, target, texture);
 
   @DomName('WebGLRenderingContext.blendColor')
   @DocsEditable()
-  void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.blendColor_Callback_4(this, red, green, blue, alpha);
+  void blendColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.instance.blendColor_Callback_4_(this, red, green, blue, alpha);
 
   @DomName('WebGLRenderingContext.blendEquation')
   @DocsEditable()
-  void blendEquation(int mode) => _blink.BlinkWebGLRenderingContext.blendEquation_Callback_1(this, mode);
+  void blendEquation(int mode) => _blink.BlinkWebGLRenderingContext.instance.blendEquation_Callback_1_(this, mode);
 
   @DomName('WebGLRenderingContext.blendEquationSeparate')
   @DocsEditable()
-  void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGLRenderingContext.blendEquationSeparate_Callback_2(this, modeRGB, modeAlpha);
+  void blendEquationSeparate(int modeRGB, int modeAlpha) => _blink.BlinkWebGLRenderingContext.instance.blendEquationSeparate_Callback_2_(this, modeRGB, modeAlpha);
 
   @DomName('WebGLRenderingContext.blendFunc')
   @DocsEditable()
-  void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGLRenderingContext.blendFunc_Callback_2(this, sfactor, dfactor);
+  void blendFunc(int sfactor, int dfactor) => _blink.BlinkWebGLRenderingContext.instance.blendFunc_Callback_2_(this, sfactor, dfactor);
 
   @DomName('WebGLRenderingContext.blendFuncSeparate')
   @DocsEditable()
-  void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGLRenderingContext.blendFuncSeparate_Callback_4(this, srcRGB, dstRGB, srcAlpha, dstAlpha);
+  void blendFuncSeparate(int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) => _blink.BlinkWebGLRenderingContext.instance.blendFuncSeparate_Callback_4_(this, srcRGB, dstRGB, srcAlpha, dstAlpha);
 
   @DomName('WebGLRenderingContext.bufferByteData')
   @DocsEditable()
-  void bufferByteData(int target, ByteBuffer data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data, usage);
+  void bufferByteData(int target, ByteBuffer data, int usage) => _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(this, target, data, usage);
 
   void bufferData(int target, data_OR_size, int usage) {
     if ((usage is int) && (data_OR_size is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage);
+      _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(this, target, data_OR_size, usage);
       return;
     }
     if ((usage is int) && (data_OR_size is TypedData) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage);
+      _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(this, target, data_OR_size, usage);
       return;
     }
     if ((usage is int) && (data_OR_size is ByteBuffer || data_OR_size == null) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data_OR_size, usage);
+      _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(this, target, data_OR_size, usage);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2457,19 +2457,19 @@
 
   @DomName('WebGLRenderingContext.bufferDataTyped')
   @DocsEditable()
-  void bufferDataTyped(int target, TypedData data, int usage) => _blink.BlinkWebGLRenderingContext.bufferData_Callback_3(this, target, data, usage);
+  void bufferDataTyped(int target, TypedData data, int usage) => _blink.BlinkWebGLRenderingContext.instance.bufferData_Callback_3_(this, target, data, usage);
 
   @DomName('WebGLRenderingContext.bufferSubByteData')
   @DocsEditable()
-  void bufferSubByteData(int target, int offset, ByteBuffer data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data);
+  void bufferSubByteData(int target, int offset, ByteBuffer data) => _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
 
   void bufferSubData(int target, int offset, data) {
     if ((data is TypedData) && (offset is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data);
+      _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
       return;
     }
     if ((data is ByteBuffer || data == null) && (offset is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data);
+      _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2477,375 +2477,375 @@
 
   @DomName('WebGLRenderingContext.bufferSubDataTyped')
   @DocsEditable()
-  void bufferSubDataTyped(int target, int offset, TypedData data) => _blink.BlinkWebGLRenderingContext.bufferSubData_Callback_3(this, target, offset, data);
+  void bufferSubDataTyped(int target, int offset, TypedData data) => _blink.BlinkWebGLRenderingContext.instance.bufferSubData_Callback_3_(this, target, offset, data);
 
   @DomName('WebGLRenderingContext.checkFramebufferStatus')
   @DocsEditable()
-  int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.checkFramebufferStatus_Callback_1(this, target);
+  int checkFramebufferStatus(int target) => _blink.BlinkWebGLRenderingContext.instance.checkFramebufferStatus_Callback_1_(this, target);
 
   @DomName('WebGLRenderingContext.clear')
   @DocsEditable()
-  void clear(int mask) => _blink.BlinkWebGLRenderingContext.clear_Callback_1(this, mask);
+  void clear(int mask) => _blink.BlinkWebGLRenderingContext.instance.clear_Callback_1_(this, mask);
 
   @DomName('WebGLRenderingContext.clearColor')
   @DocsEditable()
-  void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.clearColor_Callback_4(this, red, green, blue, alpha);
+  void clearColor(num red, num green, num blue, num alpha) => _blink.BlinkWebGLRenderingContext.instance.clearColor_Callback_4_(this, red, green, blue, alpha);
 
   @DomName('WebGLRenderingContext.clearDepth')
   @DocsEditable()
-  void clearDepth(num depth) => _blink.BlinkWebGLRenderingContext.clearDepth_Callback_1(this, depth);
+  void clearDepth(num depth) => _blink.BlinkWebGLRenderingContext.instance.clearDepth_Callback_1_(this, depth);
 
   @DomName('WebGLRenderingContext.clearStencil')
   @DocsEditable()
-  void clearStencil(int s) => _blink.BlinkWebGLRenderingContext.clearStencil_Callback_1(this, s);
+  void clearStencil(int s) => _blink.BlinkWebGLRenderingContext.instance.clearStencil_Callback_1_(this, s);
 
   @DomName('WebGLRenderingContext.colorMask')
   @DocsEditable()
-  void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGLRenderingContext.colorMask_Callback_4(this, red, green, blue, alpha);
+  void colorMask(bool red, bool green, bool blue, bool alpha) => _blink.BlinkWebGLRenderingContext.instance.colorMask_Callback_4_(this, red, green, blue, alpha);
 
   @DomName('WebGLRenderingContext.compileShader')
   @DocsEditable()
-  void compileShader(Shader shader) => _blink.BlinkWebGLRenderingContext.compileShader_Callback_1(this, shader);
+  void compileShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.compileShader_Callback_1_(this, shader);
 
   @DomName('WebGLRenderingContext.compressedTexImage2D')
   @DocsEditable()
-  void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexImage2D_Callback_7(this, target, level, internalformat, width, height, border, data);
+  void compressedTexImage2D(int target, int level, int internalformat, int width, int height, int border, TypedData data) => _blink.BlinkWebGLRenderingContext.instance.compressedTexImage2D_Callback_7_(this, target, level, internalformat, width, height, border, data);
 
   @DomName('WebGLRenderingContext.compressedTexSubImage2D')
   @DocsEditable()
-  void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGLRenderingContext.compressedTexSubImage2D_Callback_8(this, target, level, xoffset, yoffset, width, height, format, data);
+  void compressedTexSubImage2D(int target, int level, int xoffset, int yoffset, int width, int height, int format, TypedData data) => _blink.BlinkWebGLRenderingContext.instance.compressedTexSubImage2D_Callback_8_(this, target, level, xoffset, yoffset, width, height, format, data);
 
   @DomName('WebGLRenderingContext.copyTexImage2D')
   @DocsEditable()
-  void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) => _blink.BlinkWebGLRenderingContext.copyTexImage2D_Callback_8(this, target, level, internalformat, x, y, width, height, border);
+  void copyTexImage2D(int target, int level, int internalformat, int x, int y, int width, int height, int border) => _blink.BlinkWebGLRenderingContext.instance.copyTexImage2D_Callback_8_(this, target, level, internalformat, x, y, width, height, border);
 
   @DomName('WebGLRenderingContext.copyTexSubImage2D')
   @DocsEditable()
-  void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.copyTexSubImage2D_Callback_8(this, target, level, xoffset, yoffset, x, y, width, height);
+  void copyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.instance.copyTexSubImage2D_Callback_8_(this, target, level, xoffset, yoffset, x, y, width, height);
 
   @DomName('WebGLRenderingContext.createBuffer')
   @DocsEditable()
-  Buffer createBuffer() => _blink.BlinkWebGLRenderingContext.createBuffer_Callback(this);
+  Buffer createBuffer() => _blink.BlinkWebGLRenderingContext.instance.createBuffer_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.createFramebuffer')
   @DocsEditable()
-  Framebuffer createFramebuffer() => _blink.BlinkWebGLRenderingContext.createFramebuffer_Callback(this);
+  Framebuffer createFramebuffer() => _blink.BlinkWebGLRenderingContext.instance.createFramebuffer_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.createProgram')
   @DocsEditable()
-  Program createProgram() => _blink.BlinkWebGLRenderingContext.createProgram_Callback(this);
+  Program createProgram() => _blink.BlinkWebGLRenderingContext.instance.createProgram_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.createRenderbuffer')
   @DocsEditable()
-  Renderbuffer createRenderbuffer() => _blink.BlinkWebGLRenderingContext.createRenderbuffer_Callback(this);
+  Renderbuffer createRenderbuffer() => _blink.BlinkWebGLRenderingContext.instance.createRenderbuffer_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.createShader')
   @DocsEditable()
-  Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.createShader_Callback_1(this, type);
+  Shader createShader(int type) => _blink.BlinkWebGLRenderingContext.instance.createShader_Callback_1_(this, type);
 
   @DomName('WebGLRenderingContext.createTexture')
   @DocsEditable()
-  Texture createTexture() => _blink.BlinkWebGLRenderingContext.createTexture_Callback(this);
+  Texture createTexture() => _blink.BlinkWebGLRenderingContext.instance.createTexture_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.cullFace')
   @DocsEditable()
-  void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.cullFace_Callback_1(this, mode);
+  void cullFace(int mode) => _blink.BlinkWebGLRenderingContext.instance.cullFace_Callback_1_(this, mode);
 
   @DomName('WebGLRenderingContext.deleteBuffer')
   @DocsEditable()
-  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.deleteBuffer_Callback_1(this, buffer);
+  void deleteBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.deleteBuffer_Callback_1_(this, buffer);
 
   @DomName('WebGLRenderingContext.deleteFramebuffer')
   @DocsEditable()
-  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.deleteFramebuffer_Callback_1(this, framebuffer);
+  void deleteFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteFramebuffer_Callback_1_(this, framebuffer);
 
   @DomName('WebGLRenderingContext.deleteProgram')
   @DocsEditable()
-  void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.deleteProgram_Callback_1(this, program);
+  void deleteProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.deleteProgram_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.deleteRenderbuffer')
   @DocsEditable()
-  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.deleteRenderbuffer_Callback_1(this, renderbuffer);
+  void deleteRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.deleteRenderbuffer_Callback_1_(this, renderbuffer);
 
   @DomName('WebGLRenderingContext.deleteShader')
   @DocsEditable()
-  void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.deleteShader_Callback_1(this, shader);
+  void deleteShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.deleteShader_Callback_1_(this, shader);
 
   @DomName('WebGLRenderingContext.deleteTexture')
   @DocsEditable()
-  void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.deleteTexture_Callback_1(this, texture);
+  void deleteTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.deleteTexture_Callback_1_(this, texture);
 
   @DomName('WebGLRenderingContext.depthFunc')
   @DocsEditable()
-  void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.depthFunc_Callback_1(this, func);
+  void depthFunc(int func) => _blink.BlinkWebGLRenderingContext.instance.depthFunc_Callback_1_(this, func);
 
   @DomName('WebGLRenderingContext.depthMask')
   @DocsEditable()
-  void depthMask(bool flag) => _blink.BlinkWebGLRenderingContext.depthMask_Callback_1(this, flag);
+  void depthMask(bool flag) => _blink.BlinkWebGLRenderingContext.instance.depthMask_Callback_1_(this, flag);
 
   @DomName('WebGLRenderingContext.depthRange')
   @DocsEditable()
-  void depthRange(num zNear, num zFar) => _blink.BlinkWebGLRenderingContext.depthRange_Callback_2(this, zNear, zFar);
+  void depthRange(num zNear, num zFar) => _blink.BlinkWebGLRenderingContext.instance.depthRange_Callback_2_(this, zNear, zFar);
 
   @DomName('WebGLRenderingContext.detachShader')
   @DocsEditable()
-  void detachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.detachShader_Callback_2(this, program, shader);
+  void detachShader(Program program, Shader shader) => _blink.BlinkWebGLRenderingContext.instance.detachShader_Callback_2_(this, program, shader);
 
   @DomName('WebGLRenderingContext.disable')
   @DocsEditable()
-  void disable(int cap) => _blink.BlinkWebGLRenderingContext.disable_Callback_1(this, cap);
+  void disable(int cap) => _blink.BlinkWebGLRenderingContext.instance.disable_Callback_1_(this, cap);
 
   @DomName('WebGLRenderingContext.disableVertexAttribArray')
   @DocsEditable()
-  void disableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.disableVertexAttribArray_Callback_1(this, index);
+  void disableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.instance.disableVertexAttribArray_Callback_1_(this, index);
 
   @DomName('WebGLRenderingContext.drawArrays')
   @DocsEditable()
-  void drawArrays(int mode, int first, int count) => _blink.BlinkWebGLRenderingContext.drawArrays_Callback_3(this, mode, first, count);
+  void drawArrays(int mode, int first, int count) => _blink.BlinkWebGLRenderingContext.instance.drawArrays_Callback_3_(this, mode, first, count);
 
   @DomName('WebGLRenderingContext.drawElements')
   @DocsEditable()
-  void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGLRenderingContext.drawElements_Callback_4(this, mode, count, type, offset);
+  void drawElements(int mode, int count, int type, int offset) => _blink.BlinkWebGLRenderingContext.instance.drawElements_Callback_4_(this, mode, count, type, offset);
 
   @DomName('WebGLRenderingContext.enable')
   @DocsEditable()
-  void enable(int cap) => _blink.BlinkWebGLRenderingContext.enable_Callback_1(this, cap);
+  void enable(int cap) => _blink.BlinkWebGLRenderingContext.instance.enable_Callback_1_(this, cap);
 
   @DomName('WebGLRenderingContext.enableVertexAttribArray')
   @DocsEditable()
-  void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.enableVertexAttribArray_Callback_1(this, index);
+  void enableVertexAttribArray(int index) => _blink.BlinkWebGLRenderingContext.instance.enableVertexAttribArray_Callback_1_(this, index);
 
   @DomName('WebGLRenderingContext.finish')
   @DocsEditable()
-  void finish() => _blink.BlinkWebGLRenderingContext.finish_Callback(this);
+  void finish() => _blink.BlinkWebGLRenderingContext.instance.finish_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.flush')
   @DocsEditable()
-  void flush() => _blink.BlinkWebGLRenderingContext.flush_Callback(this);
+  void flush() => _blink.BlinkWebGLRenderingContext.instance.flush_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.framebufferRenderbuffer')
   @DocsEditable()
-  void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.framebufferRenderbuffer_Callback_4(this, target, attachment, renderbuffertarget, renderbuffer);
+  void framebufferRenderbuffer(int target, int attachment, int renderbuffertarget, Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.framebufferRenderbuffer_Callback_4_(this, target, attachment, renderbuffertarget, renderbuffer);
 
   @DomName('WebGLRenderingContext.framebufferTexture2D')
   @DocsEditable()
-  void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGLRenderingContext.framebufferTexture2D_Callback_5(this, target, attachment, textarget, texture, level);
+  void framebufferTexture2D(int target, int attachment, int textarget, Texture texture, int level) => _blink.BlinkWebGLRenderingContext.instance.framebufferTexture2D_Callback_5_(this, target, attachment, textarget, texture, level);
 
   @DomName('WebGLRenderingContext.frontFace')
   @DocsEditable()
-  void frontFace(int mode) => _blink.BlinkWebGLRenderingContext.frontFace_Callback_1(this, mode);
+  void frontFace(int mode) => _blink.BlinkWebGLRenderingContext.instance.frontFace_Callback_1_(this, mode);
 
   @DomName('WebGLRenderingContext.generateMipmap')
   @DocsEditable()
-  void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.generateMipmap_Callback_1(this, target);
+  void generateMipmap(int target) => _blink.BlinkWebGLRenderingContext.instance.generateMipmap_Callback_1_(this, target);
 
   @DomName('WebGLRenderingContext.getActiveAttrib')
   @DocsEditable()
-  ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveAttrib_Callback_2(this, program, index);
+  ActiveInfo getActiveAttrib(Program program, int index) => _blink.BlinkWebGLRenderingContext.instance.getActiveAttrib_Callback_2_(this, program, index);
 
   @DomName('WebGLRenderingContext.getActiveUniform')
   @DocsEditable()
-  ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGLRenderingContext.getActiveUniform_Callback_2(this, program, index);
+  ActiveInfo getActiveUniform(Program program, int index) => _blink.BlinkWebGLRenderingContext.instance.getActiveUniform_Callback_2_(this, program, index);
 
   @DomName('WebGLRenderingContext.getAttachedShaders')
   @DocsEditable()
-  List<Shader> getAttachedShaders(Program program) => _blink.BlinkWebGLRenderingContext.getAttachedShaders_Callback_1(this, program);
+  List<Shader> getAttachedShaders(Program program) => _blink.BlinkWebGLRenderingContext.instance.getAttachedShaders_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.getAttribLocation')
   @DocsEditable()
-  int getAttribLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getAttribLocation_Callback_2(this, program, name);
+  int getAttribLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.instance.getAttribLocation_Callback_2_(this, program, name);
 
   @DomName('WebGLRenderingContext.getBufferParameter')
   @DocsEditable()
-  Object getBufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getBufferParameter_Callback_2(this, target, pname);
+  Object getBufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.instance.getBufferParameter_Callback_2_(this, target, pname);
 
   @DomName('WebGLRenderingContext.getContextAttributes')
   @DocsEditable()
-  ContextAttributes getContextAttributes() => _blink.BlinkWebGLRenderingContext.getContextAttributes_Callback(this);
+  ContextAttributes getContextAttributes() => _blink.BlinkWebGLRenderingContext.instance.getContextAttributes_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.getError')
   @DocsEditable()
-  int getError() => _blink.BlinkWebGLRenderingContext.getError_Callback(this);
+  int getError() => _blink.BlinkWebGLRenderingContext.instance.getError_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.getExtension')
   @DocsEditable()
-  Object getExtension(String name) => _blink.BlinkWebGLRenderingContext.getExtension_Callback_1(this, name);
+  Object getExtension(String name) => _blink.BlinkWebGLRenderingContext.instance.getExtension_Callback_1_(this, name);
 
   @DomName('WebGLRenderingContext.getFramebufferAttachmentParameter')
   @DocsEditable()
-  Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => _blink.BlinkWebGLRenderingContext.getFramebufferAttachmentParameter_Callback_3(this, target, attachment, pname);
+  Object getFramebufferAttachmentParameter(int target, int attachment, int pname) => _blink.BlinkWebGLRenderingContext.instance.getFramebufferAttachmentParameter_Callback_3_(this, target, attachment, pname);
 
   @DomName('WebGLRenderingContext.getParameter')
   @DocsEditable()
-  Object getParameter(int pname) => _blink.BlinkWebGLRenderingContext.getParameter_Callback_1(this, pname);
+  Object getParameter(int pname) => _blink.BlinkWebGLRenderingContext.instance.getParameter_Callback_1_(this, pname);
 
   @DomName('WebGLRenderingContext.getProgramInfoLog')
   @DocsEditable()
-  String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.getProgramInfoLog_Callback_1(this, program);
+  String getProgramInfoLog(Program program) => _blink.BlinkWebGLRenderingContext.instance.getProgramInfoLog_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.getProgramParameter')
   @DocsEditable()
-  Object getProgramParameter(Program program, int pname) => _blink.BlinkWebGLRenderingContext.getProgramParameter_Callback_2(this, program, pname);
+  Object getProgramParameter(Program program, int pname) => _blink.BlinkWebGLRenderingContext.instance.getProgramParameter_Callback_2_(this, program, pname);
 
   @DomName('WebGLRenderingContext.getRenderbufferParameter')
   @DocsEditable()
-  Object getRenderbufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getRenderbufferParameter_Callback_2(this, target, pname);
+  Object getRenderbufferParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.instance.getRenderbufferParameter_Callback_2_(this, target, pname);
 
   @DomName('WebGLRenderingContext.getShaderInfoLog')
   @DocsEditable()
-  String getShaderInfoLog(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderInfoLog_Callback_1(this, shader);
+  String getShaderInfoLog(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.getShaderInfoLog_Callback_1_(this, shader);
 
   @DomName('WebGLRenderingContext.getShaderParameter')
   @DocsEditable()
-  Object getShaderParameter(Shader shader, int pname) => _blink.BlinkWebGLRenderingContext.getShaderParameter_Callback_2(this, shader, pname);
+  Object getShaderParameter(Shader shader, int pname) => _blink.BlinkWebGLRenderingContext.instance.getShaderParameter_Callback_2_(this, shader, pname);
 
   @DomName('WebGLRenderingContext.getShaderPrecisionFormat')
   @DocsEditable()
-  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGLRenderingContext.getShaderPrecisionFormat_Callback_2(this, shadertype, precisiontype);
+  ShaderPrecisionFormat getShaderPrecisionFormat(int shadertype, int precisiontype) => _blink.BlinkWebGLRenderingContext.instance.getShaderPrecisionFormat_Callback_2_(this, shadertype, precisiontype);
 
   @DomName('WebGLRenderingContext.getShaderSource')
   @DocsEditable()
-  String getShaderSource(Shader shader) => _blink.BlinkWebGLRenderingContext.getShaderSource_Callback_1(this, shader);
+  String getShaderSource(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.getShaderSource_Callback_1_(this, shader);
 
   @DomName('WebGLRenderingContext.getSupportedExtensions')
   @DocsEditable()
-  List<String> getSupportedExtensions() => _blink.BlinkWebGLRenderingContext.getSupportedExtensions_Callback(this);
+  List<String> getSupportedExtensions() => _blink.BlinkWebGLRenderingContext.instance.getSupportedExtensions_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.getTexParameter')
   @DocsEditable()
-  Object getTexParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.getTexParameter_Callback_2(this, target, pname);
+  Object getTexParameter(int target, int pname) => _blink.BlinkWebGLRenderingContext.instance.getTexParameter_Callback_2_(this, target, pname);
 
   @DomName('WebGLRenderingContext.getUniform')
   @DocsEditable()
-  Object getUniform(Program program, UniformLocation location) => _blink.BlinkWebGLRenderingContext.getUniform_Callback_2(this, program, location);
+  Object getUniform(Program program, UniformLocation location) => _blink.BlinkWebGLRenderingContext.instance.getUniform_Callback_2_(this, program, location);
 
   @DomName('WebGLRenderingContext.getUniformLocation')
   @DocsEditable()
-  UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.getUniformLocation_Callback_2(this, program, name);
+  UniformLocation getUniformLocation(Program program, String name) => _blink.BlinkWebGLRenderingContext.instance.getUniformLocation_Callback_2_(this, program, name);
 
   @DomName('WebGLRenderingContext.getVertexAttrib')
   @DocsEditable()
-  Object getVertexAttrib(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttrib_Callback_2(this, index, pname);
+  Object getVertexAttrib(int index, int pname) => _blink.BlinkWebGLRenderingContext.instance.getVertexAttrib_Callback_2_(this, index, pname);
 
   @DomName('WebGLRenderingContext.getVertexAttribOffset')
   @DocsEditable()
-  int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGLRenderingContext.getVertexAttribOffset_Callback_2(this, index, pname);
+  int getVertexAttribOffset(int index, int pname) => _blink.BlinkWebGLRenderingContext.instance.getVertexAttribOffset_Callback_2_(this, index, pname);
 
   @DomName('WebGLRenderingContext.hint')
   @DocsEditable()
-  void hint(int target, int mode) => _blink.BlinkWebGLRenderingContext.hint_Callback_2(this, target, mode);
+  void hint(int target, int mode) => _blink.BlinkWebGLRenderingContext.instance.hint_Callback_2_(this, target, mode);
 
   @DomName('WebGLRenderingContext.isBuffer')
   @DocsEditable()
-  bool isBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.isBuffer_Callback_1(this, buffer);
+  bool isBuffer(Buffer buffer) => _blink.BlinkWebGLRenderingContext.instance.isBuffer_Callback_1_(this, buffer);
 
   @DomName('WebGLRenderingContext.isContextLost')
   @DocsEditable()
-  bool isContextLost() => _blink.BlinkWebGLRenderingContext.isContextLost_Callback(this);
+  bool isContextLost() => _blink.BlinkWebGLRenderingContext.instance.isContextLost_Callback_0_(this);
 
   @DomName('WebGLRenderingContext.isEnabled')
   @DocsEditable()
-  bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.isEnabled_Callback_1(this, cap);
+  bool isEnabled(int cap) => _blink.BlinkWebGLRenderingContext.instance.isEnabled_Callback_1_(this, cap);
 
   @DomName('WebGLRenderingContext.isFramebuffer')
   @DocsEditable()
-  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.isFramebuffer_Callback_1(this, framebuffer);
+  bool isFramebuffer(Framebuffer framebuffer) => _blink.BlinkWebGLRenderingContext.instance.isFramebuffer_Callback_1_(this, framebuffer);
 
   @DomName('WebGLRenderingContext.isProgram')
   @DocsEditable()
-  bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.isProgram_Callback_1(this, program);
+  bool isProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.isProgram_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.isRenderbuffer')
   @DocsEditable()
-  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.isRenderbuffer_Callback_1(this, renderbuffer);
+  bool isRenderbuffer(Renderbuffer renderbuffer) => _blink.BlinkWebGLRenderingContext.instance.isRenderbuffer_Callback_1_(this, renderbuffer);
 
   @DomName('WebGLRenderingContext.isShader')
   @DocsEditable()
-  bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.isShader_Callback_1(this, shader);
+  bool isShader(Shader shader) => _blink.BlinkWebGLRenderingContext.instance.isShader_Callback_1_(this, shader);
 
   @DomName('WebGLRenderingContext.isTexture')
   @DocsEditable()
-  bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.isTexture_Callback_1(this, texture);
+  bool isTexture(Texture texture) => _blink.BlinkWebGLRenderingContext.instance.isTexture_Callback_1_(this, texture);
 
   @DomName('WebGLRenderingContext.lineWidth')
   @DocsEditable()
-  void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.lineWidth_Callback_1(this, width);
+  void lineWidth(num width) => _blink.BlinkWebGLRenderingContext.instance.lineWidth_Callback_1_(this, width);
 
   @DomName('WebGLRenderingContext.linkProgram')
   @DocsEditable()
-  void linkProgram(Program program) => _blink.BlinkWebGLRenderingContext.linkProgram_Callback_1(this, program);
+  void linkProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.linkProgram_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.pixelStorei')
   @DocsEditable()
-  void pixelStorei(int pname, int param) => _blink.BlinkWebGLRenderingContext.pixelStorei_Callback_2(this, pname, param);
+  void pixelStorei(int pname, int param) => _blink.BlinkWebGLRenderingContext.instance.pixelStorei_Callback_2_(this, pname, param);
 
   @DomName('WebGLRenderingContext.polygonOffset')
   @DocsEditable()
-  void polygonOffset(num factor, num units) => _blink.BlinkWebGLRenderingContext.polygonOffset_Callback_2(this, factor, units);
+  void polygonOffset(num factor, num units) => _blink.BlinkWebGLRenderingContext.instance.polygonOffset_Callback_2_(this, factor, units);
 
   @DomName('WebGLRenderingContext.readPixels')
   @DocsEditable()
-  void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGLRenderingContext.readPixels_Callback_7(this, x, y, width, height, format, type, pixels);
+  void readPixels(int x, int y, int width, int height, int format, int type, TypedData pixels) => _blink.BlinkWebGLRenderingContext.instance.readPixels_Callback_7_(this, x, y, width, height, format, type, pixels);
 
   @DomName('WebGLRenderingContext.renderbufferStorage')
   @DocsEditable()
-  void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGLRenderingContext.renderbufferStorage_Callback_4(this, target, internalformat, width, height);
+  void renderbufferStorage(int target, int internalformat, int width, int height) => _blink.BlinkWebGLRenderingContext.instance.renderbufferStorage_Callback_4_(this, target, internalformat, width, height);
 
   @DomName('WebGLRenderingContext.sampleCoverage')
   @DocsEditable()
-  void sampleCoverage(num value, bool invert) => _blink.BlinkWebGLRenderingContext.sampleCoverage_Callback_2(this, value, invert);
+  void sampleCoverage(num value, bool invert) => _blink.BlinkWebGLRenderingContext.instance.sampleCoverage_Callback_2_(this, value, invert);
 
   @DomName('WebGLRenderingContext.scissor')
   @DocsEditable()
-  void scissor(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.scissor_Callback_4(this, x, y, width, height);
+  void scissor(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.instance.scissor_Callback_4_(this, x, y, width, height);
 
   @DomName('WebGLRenderingContext.shaderSource')
   @DocsEditable()
-  void shaderSource(Shader shader, String string) => _blink.BlinkWebGLRenderingContext.shaderSource_Callback_2(this, shader, string);
+  void shaderSource(Shader shader, String string) => _blink.BlinkWebGLRenderingContext.instance.shaderSource_Callback_2_(this, shader, string);
 
   @DomName('WebGLRenderingContext.stencilFunc')
   @DocsEditable()
-  void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFunc_Callback_3(this, func, ref, mask);
+  void stencilFunc(int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.instance.stencilFunc_Callback_3_(this, func, ref, mask);
 
   @DomName('WebGLRenderingContext.stencilFuncSeparate')
   @DocsEditable()
-  void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.stencilFuncSeparate_Callback_4(this, face, func, ref, mask);
+  void stencilFuncSeparate(int face, int func, int ref, int mask) => _blink.BlinkWebGLRenderingContext.instance.stencilFuncSeparate_Callback_4_(this, face, func, ref, mask);
 
   @DomName('WebGLRenderingContext.stencilMask')
   @DocsEditable()
-  void stencilMask(int mask) => _blink.BlinkWebGLRenderingContext.stencilMask_Callback_1(this, mask);
+  void stencilMask(int mask) => _blink.BlinkWebGLRenderingContext.instance.stencilMask_Callback_1_(this, mask);
 
   @DomName('WebGLRenderingContext.stencilMaskSeparate')
   @DocsEditable()
-  void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGLRenderingContext.stencilMaskSeparate_Callback_2(this, face, mask);
+  void stencilMaskSeparate(int face, int mask) => _blink.BlinkWebGLRenderingContext.instance.stencilMaskSeparate_Callback_2_(this, face, mask);
 
   @DomName('WebGLRenderingContext.stencilOp')
   @DocsEditable()
-  void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOp_Callback_3(this, fail, zfail, zpass);
+  void stencilOp(int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.instance.stencilOp_Callback_3_(this, fail, zfail, zpass);
 
   @DomName('WebGLRenderingContext.stencilOpSeparate')
   @DocsEditable()
-  void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.stencilOpSeparate_Callback_4(this, face, fail, zfail, zpass);
+  void stencilOpSeparate(int face, int fail, int zfail, int zpass) => _blink.BlinkWebGLRenderingContext.instance.stencilOpSeparate_Callback_4_(this, face, fail, zfail, zpass);
 
   void texImage2D(int target, int level, int internalformat, int format_OR_width, int height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, [int format, int type, TypedData pixels]) {
     if ((pixels is TypedData || pixels == null) && (type is int) && (format is int) && (border_OR_canvas_OR_image_OR_pixels_OR_video is int) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.texImage2D_Callback_9(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
+      _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_9_(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video, format, type, pixels);
       return;
     }
     if ((border_OR_canvas_OR_image_OR_pixels_OR_video is ImageData || border_OR_canvas_OR_image_OR_pixels_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((border_OR_canvas_OR_image_OR_pixels_OR_video is ImageElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((border_OR_canvas_OR_image_OR_pixels_OR_video is CanvasElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((border_OR_canvas_OR_image_OR_pixels_OR_video is VideoElement) && (height_OR_type is int) && (format_OR_width is int) && (internalformat is int) && (level is int) && (target is int) && format == null && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format_OR_width, height_OR_type, border_OR_canvas_OR_image_OR_pixels_OR_video);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2853,47 +2853,47 @@
 
   @DomName('WebGLRenderingContext.texImage2DCanvas')
   @DocsEditable()
-  void texImage2DCanvas(int target, int level, int internalformat, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, canvas);
+  void texImage2DCanvas(int target, int level, int internalformat, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format, type, canvas);
 
   @DomName('WebGLRenderingContext.texImage2DImage')
   @DocsEditable()
-  void texImage2DImage(int target, int level, int internalformat, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, image);
+  void texImage2DImage(int target, int level, int internalformat, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format, type, image);
 
   @DomName('WebGLRenderingContext.texImage2DImageData')
   @DocsEditable()
-  void texImage2DImageData(int target, int level, int internalformat, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, pixels);
+  void texImage2DImageData(int target, int level, int internalformat, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format, type, pixels);
 
   @DomName('WebGLRenderingContext.texImage2DVideo')
   @DocsEditable()
-  void texImage2DVideo(int target, int level, int internalformat, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texImage2D_Callback_6(this, target, level, internalformat, format, type, video);
+  void texImage2DVideo(int target, int level, int internalformat, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.instance.texImage2D_Callback_6_(this, target, level, internalformat, format, type, video);
 
   @DomName('WebGLRenderingContext.texParameterf')
   @DocsEditable()
-  void texParameterf(int target, int pname, num param) => _blink.BlinkWebGLRenderingContext.texParameterf_Callback_3(this, target, pname, param);
+  void texParameterf(int target, int pname, num param) => _blink.BlinkWebGLRenderingContext.instance.texParameterf_Callback_3_(this, target, pname, param);
 
   @DomName('WebGLRenderingContext.texParameteri')
   @DocsEditable()
-  void texParameteri(int target, int pname, int param) => _blink.BlinkWebGLRenderingContext.texParameteri_Callback_3(this, target, pname, param);
+  void texParameteri(int target, int pname, int param) => _blink.BlinkWebGLRenderingContext.instance.texParameteri_Callback_3_(this, target, pname, param);
 
   void texSubImage2D(int target, int level, int xoffset, int yoffset, int format_OR_width, int height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, [int type, TypedData pixels]) {
     if ((pixels is TypedData || pixels == null) && (type is int) && (canvas_OR_format_OR_image_OR_pixels_OR_video is int) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int)) {
-      _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_9(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
+      _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_9_(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video, type, pixels);
       return;
     }
     if ((canvas_OR_format_OR_image_OR_pixels_OR_video is ImageData || canvas_OR_format_OR_image_OR_pixels_OR_video == null) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((canvas_OR_format_OR_image_OR_pixels_OR_video is ImageElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((canvas_OR_format_OR_image_OR_pixels_OR_video is CanvasElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
       return;
     }
     if ((canvas_OR_format_OR_image_OR_pixels_OR_video is VideoElement) && (height_OR_type is int) && (format_OR_width is int) && (yoffset is int) && (xoffset is int) && (level is int) && (target is int) && type == null && pixels == null) {
-      _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
+      _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format_OR_width, height_OR_type, canvas_OR_format_OR_image_OR_pixels_OR_video);
       return;
     }
     throw new ArgumentError("Incorrect number or type of arguments");
@@ -2901,143 +2901,143 @@
 
   @DomName('WebGLRenderingContext.texSubImage2DCanvas')
   @DocsEditable()
-  void texSubImage2DCanvas(int target, int level, int xoffset, int yoffset, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, canvas);
+  void texSubImage2DCanvas(int target, int level, int xoffset, int yoffset, int format, int type, CanvasElement canvas) => _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format, type, canvas);
 
   @DomName('WebGLRenderingContext.texSubImage2DImage')
   @DocsEditable()
-  void texSubImage2DImage(int target, int level, int xoffset, int yoffset, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, image);
+  void texSubImage2DImage(int target, int level, int xoffset, int yoffset, int format, int type, ImageElement image) => _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format, type, image);
 
   @DomName('WebGLRenderingContext.texSubImage2DImageData')
   @DocsEditable()
-  void texSubImage2DImageData(int target, int level, int xoffset, int yoffset, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, pixels);
+  void texSubImage2DImageData(int target, int level, int xoffset, int yoffset, int format, int type, ImageData pixels) => _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format, type, pixels);
 
   @DomName('WebGLRenderingContext.texSubImage2DVideo')
   @DocsEditable()
-  void texSubImage2DVideo(int target, int level, int xoffset, int yoffset, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.texSubImage2D_Callback_7(this, target, level, xoffset, yoffset, format, type, video);
+  void texSubImage2DVideo(int target, int level, int xoffset, int yoffset, int format, int type, VideoElement video) => _blink.BlinkWebGLRenderingContext.instance.texSubImage2D_Callback_7_(this, target, level, xoffset, yoffset, format, type, video);
 
   @DomName('WebGLRenderingContext.uniform1f')
   @DocsEditable()
-  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.uniform1f_Callback_2(this, location, x);
+  void uniform1f(UniformLocation location, num x) => _blink.BlinkWebGLRenderingContext.instance.uniform1f_Callback_2_(this, location, x);
 
   @DomName('WebGLRenderingContext.uniform1fv')
   @DocsEditable()
-  void uniform1fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform1fv_Callback_2(this, location, v);
+  void uniform1fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform1fv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform1i')
   @DocsEditable()
-  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.uniform1i_Callback_2(this, location, x);
+  void uniform1i(UniformLocation location, int x) => _blink.BlinkWebGLRenderingContext.instance.uniform1i_Callback_2_(this, location, x);
 
   @DomName('WebGLRenderingContext.uniform1iv')
   @DocsEditable()
-  void uniform1iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform1iv_Callback_2(this, location, v);
+  void uniform1iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform1iv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform2f')
   @DocsEditable()
-  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.uniform2f_Callback_3(this, location, x, y);
+  void uniform2f(UniformLocation location, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.uniform2f_Callback_3_(this, location, x, y);
 
   @DomName('WebGLRenderingContext.uniform2fv')
   @DocsEditable()
-  void uniform2fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform2fv_Callback_2(this, location, v);
+  void uniform2fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform2fv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform2i')
   @DocsEditable()
-  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.uniform2i_Callback_3(this, location, x, y);
+  void uniform2i(UniformLocation location, int x, int y) => _blink.BlinkWebGLRenderingContext.instance.uniform2i_Callback_3_(this, location, x, y);
 
   @DomName('WebGLRenderingContext.uniform2iv')
   @DocsEditable()
-  void uniform2iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform2iv_Callback_2(this, location, v);
+  void uniform2iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform2iv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform3f')
   @DocsEditable()
-  void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.uniform3f_Callback_4(this, location, x, y, z);
+  void uniform3f(UniformLocation location, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.instance.uniform3f_Callback_4_(this, location, x, y, z);
 
   @DomName('WebGLRenderingContext.uniform3fv')
   @DocsEditable()
-  void uniform3fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform3fv_Callback_2(this, location, v);
+  void uniform3fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform3fv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform3i')
   @DocsEditable()
-  void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGLRenderingContext.uniform3i_Callback_4(this, location, x, y, z);
+  void uniform3i(UniformLocation location, int x, int y, int z) => _blink.BlinkWebGLRenderingContext.instance.uniform3i_Callback_4_(this, location, x, y, z);
 
   @DomName('WebGLRenderingContext.uniform3iv')
   @DocsEditable()
-  void uniform3iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform3iv_Callback_2(this, location, v);
+  void uniform3iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform3iv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform4f')
   @DocsEditable()
-  void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.uniform4f_Callback_5(this, location, x, y, z, w);
+  void uniform4f(UniformLocation location, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.instance.uniform4f_Callback_5_(this, location, x, y, z, w);
 
   @DomName('WebGLRenderingContext.uniform4fv')
   @DocsEditable()
-  void uniform4fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.uniform4fv_Callback_2(this, location, v);
+  void uniform4fv(UniformLocation location, Float32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform4fv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniform4i')
   @DocsEditable()
-  void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGLRenderingContext.uniform4i_Callback_5(this, location, x, y, z, w);
+  void uniform4i(UniformLocation location, int x, int y, int z, int w) => _blink.BlinkWebGLRenderingContext.instance.uniform4i_Callback_5_(this, location, x, y, z, w);
 
   @DomName('WebGLRenderingContext.uniform4iv')
   @DocsEditable()
-  void uniform4iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.uniform4iv_Callback_2(this, location, v);
+  void uniform4iv(UniformLocation location, Int32List v) => _blink.BlinkWebGLRenderingContext.instance.uniform4iv_Callback_2_(this, location, v);
 
   @DomName('WebGLRenderingContext.uniformMatrix2fv')
   @DocsEditable()
-  void uniformMatrix2fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix2fv_Callback_3(this, location, transpose, array);
+  void uniformMatrix2fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.instance.uniformMatrix2fv_Callback_3_(this, location, transpose, array);
 
   @DomName('WebGLRenderingContext.uniformMatrix3fv')
   @DocsEditable()
-  void uniformMatrix3fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix3fv_Callback_3(this, location, transpose, array);
+  void uniformMatrix3fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.instance.uniformMatrix3fv_Callback_3_(this, location, transpose, array);
 
   @DomName('WebGLRenderingContext.uniformMatrix4fv')
   @DocsEditable()
-  void uniformMatrix4fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.uniformMatrix4fv_Callback_3(this, location, transpose, array);
+  void uniformMatrix4fv(UniformLocation location, bool transpose, Float32List array) => _blink.BlinkWebGLRenderingContext.instance.uniformMatrix4fv_Callback_3_(this, location, transpose, array);
 
   @DomName('WebGLRenderingContext.useProgram')
   @DocsEditable()
-  void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.useProgram_Callback_1(this, program);
+  void useProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.useProgram_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.validateProgram')
   @DocsEditable()
-  void validateProgram(Program program) => _blink.BlinkWebGLRenderingContext.validateProgram_Callback_1(this, program);
+  void validateProgram(Program program) => _blink.BlinkWebGLRenderingContext.instance.validateProgram_Callback_1_(this, program);
 
   @DomName('WebGLRenderingContext.vertexAttrib1f')
   @DocsEditable()
-  void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGLRenderingContext.vertexAttrib1f_Callback_2(this, indx, x);
+  void vertexAttrib1f(int indx, num x) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1f_Callback_2_(this, indx, x);
 
   @DomName('WebGLRenderingContext.vertexAttrib1fv')
   @DocsEditable()
-  void vertexAttrib1fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib1fv_Callback_2(this, indx, values);
+  void vertexAttrib1fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib1fv_Callback_2_(this, indx, values);
 
   @DomName('WebGLRenderingContext.vertexAttrib2f')
   @DocsEditable()
-  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.vertexAttrib2f_Callback_3(this, indx, x, y);
+  void vertexAttrib2f(int indx, num x, num y) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2f_Callback_3_(this, indx, x, y);
 
   @DomName('WebGLRenderingContext.vertexAttrib2fv')
   @DocsEditable()
-  void vertexAttrib2fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib2fv_Callback_2(this, indx, values);
+  void vertexAttrib2fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib2fv_Callback_2_(this, indx, values);
 
   @DomName('WebGLRenderingContext.vertexAttrib3f')
   @DocsEditable()
-  void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.vertexAttrib3f_Callback_4(this, indx, x, y, z);
+  void vertexAttrib3f(int indx, num x, num y, num z) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3f_Callback_4_(this, indx, x, y, z);
 
   @DomName('WebGLRenderingContext.vertexAttrib3fv')
   @DocsEditable()
-  void vertexAttrib3fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib3fv_Callback_2(this, indx, values);
+  void vertexAttrib3fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib3fv_Callback_2_(this, indx, values);
 
   @DomName('WebGLRenderingContext.vertexAttrib4f')
   @DocsEditable()
-  void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.vertexAttrib4f_Callback_5(this, indx, x, y, z, w);
+  void vertexAttrib4f(int indx, num x, num y, num z, num w) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4f_Callback_5_(this, indx, x, y, z, w);
 
   @DomName('WebGLRenderingContext.vertexAttrib4fv')
   @DocsEditable()
-  void vertexAttrib4fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.vertexAttrib4fv_Callback_2(this, indx, values);
+  void vertexAttrib4fv(int indx, Float32List values) => _blink.BlinkWebGLRenderingContext.instance.vertexAttrib4fv_Callback_2_(this, indx, values);
 
   @DomName('WebGLRenderingContext.vertexAttribPointer')
   @DocsEditable()
-  void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGLRenderingContext.vertexAttribPointer_Callback_6(this, indx, size, type, normalized, stride, offset);
+  void vertexAttribPointer(int indx, int size, int type, bool normalized, int stride, int offset) => _blink.BlinkWebGLRenderingContext.instance.vertexAttribPointer_Callback_6_(this, indx, size, type, normalized, stride, offset);
 
   @DomName('WebGLRenderingContext.viewport')
   @DocsEditable()
-  void viewport(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.viewport_Callback_4(this, x, y, width, height);
+  void viewport(int x, int y, int width, int height) => _blink.BlinkWebGLRenderingContext.instance.viewport_Callback_4_(this, x, y, width, height);
 
 
   /**
@@ -3129,15 +3129,15 @@
 
   @DomName('WebGLShaderPrecisionFormat.precision')
   @DocsEditable()
-  int get precision => _blink.BlinkWebGLShaderPrecisionFormat.precision_Getter(this);
+  int get precision => _blink.BlinkWebGLShaderPrecisionFormat.instance.precision_Getter_(this);
 
   @DomName('WebGLShaderPrecisionFormat.rangeMax')
   @DocsEditable()
-  int get rangeMax => _blink.BlinkWebGLShaderPrecisionFormat.rangeMax_Getter(this);
+  int get rangeMax => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMax_Getter_(this);
 
   @DomName('WebGLShaderPrecisionFormat.rangeMin')
   @DocsEditable()
-  int get rangeMin => _blink.BlinkWebGLShaderPrecisionFormat.rangeMin_Getter(this);
+  int get rangeMin => _blink.BlinkWebGLShaderPrecisionFormat.instance.rangeMin_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
diff --git a/sdk/lib/web_sql/dartium/web_sql_dartium.dart b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
index 2494889..e976cde 100644
--- a/sdk/lib/web_sql/dartium/web_sql_dartium.dart
+++ b/sdk/lib/web_sql/dartium/web_sql_dartium.dart
@@ -101,48 +101,48 @@
 
   @DomName('Database.version')
   @DocsEditable()
-  String get version => _blink.BlinkDatabase.version_Getter(this);
+  String get version => _blink.BlinkDatabase.instance.version_Getter_(this);
 
   void changeVersion(String oldVersion, String newVersion, [SqlTransactionCallback callback, SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.changeVersion_Callback_5(this, oldVersion, newVersion, callback, errorCallback, successCallback);
+      _blink.BlinkDatabase.instance.changeVersion_Callback_5_(this, oldVersion, newVersion, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.changeVersion_Callback_4(this, oldVersion, newVersion, callback, errorCallback);
+      _blink.BlinkDatabase.instance.changeVersion_Callback_4_(this, oldVersion, newVersion, callback, errorCallback);
       return;
     }
     if (callback != null) {
-      _blink.BlinkDatabase.changeVersion_Callback_3(this, oldVersion, newVersion, callback);
+      _blink.BlinkDatabase.instance.changeVersion_Callback_3_(this, oldVersion, newVersion, callback);
       return;
     }
-    _blink.BlinkDatabase.changeVersion_Callback_2(this, oldVersion, newVersion);
+    _blink.BlinkDatabase.instance.changeVersion_Callback_2_(this, oldVersion, newVersion);
     return;
   }
 
   void readTransaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.readTransaction_Callback_3(this, callback, errorCallback, successCallback);
+      _blink.BlinkDatabase.instance.readTransaction_Callback_3_(this, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.readTransaction_Callback_2(this, callback, errorCallback);
+      _blink.BlinkDatabase.instance.readTransaction_Callback_2_(this, callback, errorCallback);
       return;
     }
-    _blink.BlinkDatabase.readTransaction_Callback_1(this, callback);
+    _blink.BlinkDatabase.instance.readTransaction_Callback_1_(this, callback);
     return;
   }
 
   void transaction(SqlTransactionCallback callback, [SqlTransactionErrorCallback errorCallback, VoidCallback successCallback]) {
     if (successCallback != null) {
-      _blink.BlinkDatabase.transaction_Callback_3(this, callback, errorCallback, successCallback);
+      _blink.BlinkDatabase.instance.transaction_Callback_3_(this, callback, errorCallback, successCallback);
       return;
     }
     if (errorCallback != null) {
-      _blink.BlinkDatabase.transaction_Callback_2(this, callback, errorCallback);
+      _blink.BlinkDatabase.instance.transaction_Callback_2_(this, callback, errorCallback);
       return;
     }
-    _blink.BlinkDatabase.transaction_Callback_1(this, callback);
+    _blink.BlinkDatabase.instance.transaction_Callback_1_(this, callback);
     return;
   }
 
@@ -196,11 +196,11 @@
 
   @DomName('SQLError.code')
   @DocsEditable()
-  int get code => _blink.BlinkSQLError.code_Getter(this);
+  int get code => _blink.BlinkSQLError.instance.code_Getter_(this);
 
   @DomName('SQLError.message')
   @DocsEditable()
-  String get message => _blink.BlinkSQLError.message_Getter(this);
+  String get message => _blink.BlinkSQLError.instance.message_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -220,15 +220,15 @@
 
   @DomName('SQLResultSet.insertId')
   @DocsEditable()
-  int get insertId => _blink.BlinkSQLResultSet.insertId_Getter(this);
+  int get insertId => _blink.BlinkSQLResultSet.instance.insertId_Getter_(this);
 
   @DomName('SQLResultSet.rows')
   @DocsEditable()
-  SqlResultSetRowList get rows => _blink.BlinkSQLResultSet.rows_Getter(this);
+  SqlResultSetRowList get rows => _blink.BlinkSQLResultSet.instance.rows_Getter_(this);
 
   @DomName('SQLResultSet.rowsAffected')
   @DocsEditable()
-  int get rowsAffected => _blink.BlinkSQLResultSet.rowsAffected_Getter(this);
+  int get rowsAffected => _blink.BlinkSQLResultSet.instance.rowsAffected_Getter_(this);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -248,15 +248,15 @@
 
   @DomName('SQLResultSetRowList.length')
   @DocsEditable()
-  int get length => _blink.BlinkSQLResultSetRowList.length_Getter(this);
+  int get length => _blink.BlinkSQLResultSetRowList.instance.length_Getter_(this);
 
   Map operator[](int index) {
     if (index < 0 || index >= length)
       throw new RangeError.range(index, 0, length);
-    return _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index);
+    return _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(this, index);
   }
 
-  Map _nativeIndexedGetter(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index);
+  Map _nativeIndexedGetter(int index) => _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(this, index);
 
   void operator[]=(int index, Map value) {
     throw new UnsupportedError("Cannot assign element of immutable List.");
@@ -298,7 +298,7 @@
 
   @DomName('SQLResultSetRowList.item')
   @DocsEditable()
-  Map item(int index) => _blink.BlinkSQLResultSetRowList.item_Callback_1(this, index);
+  Map item(int index) => _blink.BlinkSQLResultSetRowList.instance.item_Callback_1_(this, index);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -321,7 +321,7 @@
 
   @DomName('SQLTransaction.executeSql')
   @DocsEditable()
-  void executeSql(String sqlStatement, List<Object> arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _blink.BlinkSQLTransaction.executeSql_Callback_4(this, sqlStatement, arguments, callback, errorCallback);
+  void executeSql(String sqlStatement, List<Object> arguments, [SqlStatementCallback callback, SqlStatementErrorCallback errorCallback]) => _blink.BlinkSQLTransaction.instance.executeSql_Callback_4_(this, sqlStatement, arguments, callback, errorCallback);
 
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
index e385acc..fcc4f77 100644
--- a/tests/co19/co19-dart2js.status
+++ b/tests/co19/co19-dart2js.status
@@ -453,8 +453,6 @@
 LibTest/core/DateTime/DateTime_A01_t03: fail # co19-roll r546: Please triage this failure
 LibTest/core/DateTime/parse_A03_t01: fail # co19-roll r546: Please triage this failure
 LibTest/core/Duration/operator_div_A01_t01: fail # co19-roll r546: Please triage this failure
-LibTest/core/Match/pattern_A01_t01: fail # co19-roll r559: Please triage this failure
-LibTest/core/RegExp/allMatches_A01_t01: fail # co19-roll r559: Please triage this failure
 LibTest/isolate/IsolateStream/any_A02_t01: fail # co19-roll r546: Please triage this failure
 LibTest/isolate/IsolateStream/contains_A02_t01: fail # co19-roll r546: Please triage this failure
 LibTest/typed_data/Float32List/Float32List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
diff --git a/tests/co19/co19-dartium.status b/tests/co19/co19-dartium.status
index f0b2ae2..2da9167 100644
--- a/tests/co19/co19-dartium.status
+++ b/tests/co19/co19-dartium.status
@@ -687,7 +687,7 @@
 LayoutTests/fast/events/document-elementFromPoint_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/event-creation_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: RuntimeError # co19-roll r786: Please triage this failure.
-LayoutTests/fast/events/initkeyboardevent-crash_t01: RuntimeError # co19-roll r786: Please triage this failure.
+LayoutTests/fast/events/initkeyboardevent-crash_t01: RuntimeError, Timeout # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/input-focus-no-duplicate-events_t01: Pass, RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/invalid-003_t01: RuntimeError # co19-roll r786: Please triage this failure.
 LayoutTests/fast/events/invalid-004_t01: RuntimeError # co19-roll r786: Please triage this failure.
diff --git a/tests/compiler/dart2js/backend_dart/end2end_test.dart b/tests/compiler/dart2js/backend_dart/end2end_test.dart
new file mode 100644
index 0000000..1808d6b
--- /dev/null
+++ b/tests/compiler/dart2js/backend_dart/end2end_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file

+// for details. All rights reserved. Use of this source code is governed by a

+// BSD-style license that can be found in the LICENSE file.

+

+/// End-to-end test of the dart2dart compiler.

+library dart_backend.end2end_test;

+

+import 'package:async_helper/async_helper.dart';

+import 'package:compiler/implementation/dart2jslib.dart';

+import 'package:compiler/implementation/dart_backend/dart_backend.dart';

+import 'package:expect/expect.dart';

+

+import '../../../../pkg/analyzer2dart/test/test_helper.dart' hide TestSpec;

+import '../../../../pkg/analyzer2dart/test/end2end_data.dart';

+

+import 'test_helper.dart';

+

+main() {

+  performTests(TEST_DATA, asyncTester, (TestSpec result) {

+    asyncTest(() => compilerFor(result.input).then((Compiler compiler) {

+      String expectedOutput = result.output.trim();

+      compiler.phase = Compiler.PHASE_COMPILING;

+      DartBackend backend = compiler.backend;

+      backend.assembleProgram();

+      String output = compiler.assembledCode.trim();

+      Expect.equals(expectedOutput, output,

+          '\nInput:\n${result.input}\n'

+          'Expected:\n$expectedOutput\n'

+          'Actual:\n$output\n');

+    }));

+  });

+}
\ No newline at end of file
diff --git a/tests/compiler/dart2js/backend_dart/sexpr2_test.dart b/tests/compiler/dart2js/backend_dart/sexpr2_test.dart
new file mode 100644
index 0000000..835dd89
--- /dev/null
+++ b/tests/compiler/dart2js/backend_dart/sexpr2_test.dart
@@ -0,0 +1,29 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file

+// for details. All rights reserved. Use of this source code is governed by a

+// BSD-style license that can be found in the LICENSE file.

+

+/// Unittest test of the CPS ir generated by the dart2dart compiler.

+library dart_backend.sexpr2_test;

+

+import 'package:compiler/implementation/dart2jslib.dart';

+import 'package:compiler/implementation/cps_ir/cps_ir_nodes_sexpr.dart';

+import 'package:expect/expect.dart';

+

+import '../../../../pkg/analyzer2dart/test/test_helper.dart';

+import '../../../../pkg/analyzer2dart/test/sexpr_data.dart';

+

+import 'test_helper.dart';

+

+main() {

+  performTests(TEST_DATA, asyncTester, (TestSpec result) {

+    return compilerFor(result.input).then((Compiler compiler) {

+      String expectedOutput = result.output.trim();

+      String output = compiler.irBuilder.getIr(compiler.mainFunction)

+          .accept(new SExpressionStringifier()).trim();

+      Expect.equals(expectedOutput, output,

+          '\nInput:\n${result.input}\n'

+          'Expected:\n$expectedOutput\n'

+          'Actual:\n$output\n');

+    });

+  });

+}
\ No newline at end of file
diff --git a/tests/compiler/dart2js/backend_dart/sexpr_test.dart b/tests/compiler/dart2js/backend_dart/sexpr_test.dart
index 9ed629c..2539d7b 100644
--- a/tests/compiler/dart2js/backend_dart/sexpr_test.dart
+++ b/tests/compiler/dart2js/backend_dart/sexpr_test.dart
@@ -2,14 +2,19 @@
 // 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 '../compiler_helper.dart';
-import 'sexpr_unstringifier.dart';
+library dart_backend.sexpr_test;
+
 import 'dart:async';
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
+
+import 'package:async_helper/async_helper.dart';
 import 'package:compiler/implementation/dart2jslib.dart';
 import 'package:compiler/implementation/cps_ir/cps_ir_nodes.dart';
 import 'package:compiler/implementation/cps_ir/cps_ir_nodes_sexpr.dart';
+import 'package:expect/expect.dart';
+
+import '../compiler_helper.dart' hide compilerFor;
+import 'sexpr_unstringifier.dart';
+import 'test_helper.dart';
 
 const String CODE = """
 class Foo {
@@ -23,7 +28,7 @@
     Foo.x = 2;
   }
   foo() =>  this.y + super.foo();
-} 
+}
 
 class FooBar<T> {
   bool foobar() => T is int;
@@ -83,26 +88,7 @@
 /// Compiles the given dart code (which must include a 'main' function) and
 /// returns a list of all generated CPS IR definitions.
 Future<List<FunctionDefinition>> compile(String code) {
-  MockCompiler compiler = new MockCompiler.internal(
-      emitJavaScript: false,
-      enableMinification: false);
-
-  return compiler.init().then((_) {
-    compiler.parseScript(code);
-
-    Element element = compiler.mainApp.find('main');
-    if (element == null) return null;
-
-    compiler.mainFunction = element;
-    compiler.phase = Compiler.PHASE_RESOLVING;
-    compiler.backend.enqueueHelpers(compiler.enqueuer.resolution,
-                                    compiler.globalDependencies);
-    compiler.processQueue(compiler.enqueuer.resolution, element);
-    compiler.world.populate();
-    compiler.backend.onResolutionComplete();
-
-    compiler.irBuilder.buildNodes(useNewBackend: true);
-
+  return compilerFor(code).then((Compiler compiler) {
     return compiler.enqueuer.resolution.resolvedElements
               .where(shouldOutput)
               .map(compiler.irBuilder.getIr)
diff --git a/tests/compiler/dart2js/backend_dart/test_helper.dart b/tests/compiler/dart2js/backend_dart/test_helper.dart
new file mode 100644
index 0000000..a5d5b20
--- /dev/null
+++ b/tests/compiler/dart2js/backend_dart/test_helper.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file

+// for details. All rights reserved. Use of this source code is governed by a

+// BSD-style license that can be found in the LICENSE file.

+

+library dart_backend.test_helper;

+

+import 'dart:async';

+import 'package:async_helper/async_helper.dart';

+import 'package:compiler/implementation/dart2jslib.dart';

+import '../../../../pkg/analyzer2dart/test/test_helper.dart';

+import '../compiler_helper.dart';

+

+/// Compiles the given dart code (which must include a 'main' function) and

+/// returns the compiler.

+Future<Compiler> compilerFor(String code) {

+  MockCompiler compiler = new MockCompiler.internal(

+      emitJavaScript: false,

+      enableMinification: false);

+  compiler.diagnosticHandler = createHandler(compiler, code);

+  return compiler.init().then((_) {

+    compiler.parseScript(code);

+

+    Element element = compiler.mainApp.find('main');

+    if (element == null) return null;

+

+    compiler.mainFunction = element;

+    compiler.phase = Compiler.PHASE_RESOLVING;

+    compiler.backend.enqueueHelpers(compiler.enqueuer.resolution,

+                                    compiler.globalDependencies);

+    compiler.processQueue(compiler.enqueuer.resolution, element);

+    compiler.world.populate();

+    compiler.backend.onResolutionComplete();

+

+    compiler.irBuilder.buildNodes(useNewBackend: true);

+

+    return compiler;

+  });

+}

+

+/// Test group using async_helper.

+asyncTester(Group group, RunTest runTest) {

+  asyncTest(() => Future.forEach(group.results, runTest));

+}

diff --git a/tests/compiler/dart2js/constant_folding_codeUnitAt_test.dart b/tests/compiler/dart2js/constant_folding_codeUnitAt_test.dart
new file mode 100644
index 0000000..1238724
--- /dev/null
+++ b/tests/compiler/dart2js/constant_folding_codeUnitAt_test.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+// Test constant folding on numbers.
+
+import 'dart:async';
+import 'package:expect/expect.dart';
+import 'package:async_helper/async_helper.dart';
+import 'compiler_helper.dart';
+
+const String TEST_1 = """
+foo() {
+  var a = 'Hello';
+  var b = 0;
+  return a.codeUnitAt(b);
+}
+""";
+
+// No folding of index type error.
+const String TEST_2 = """
+foo() {
+  var a = 'Hello';
+  var b = 1.5;
+  return a.codeUnitAt(b);
+}
+""";
+
+// No folding of index range error.
+const String TEST_3 = """
+foo() {
+  var a = 'Hello';
+  var b = 55;
+  return a.codeUnitAt(b);
+}
+""";
+
+main() {
+  asyncTest(() => Future.wait([
+    compileAndMatch(TEST_1, 'foo', new RegExp(r'return 72')),
+    compileAndDoNotMatch(TEST_1, 'foo', new RegExp(r'Hello')),
+
+    compileAndMatch(TEST_2, 'foo', new RegExp(r'Hello')),
+    compileAndMatch(TEST_3, 'foo', new RegExp(r'Hello')),
+  ]));
+}
diff --git a/tests/compiler/dart2js/mock_libraries.dart b/tests/compiler/dart2js/mock_libraries.dart
index 734db25..5f5cc74 100644
--- a/tests/compiler/dart2js/mock_libraries.dart
+++ b/tests/compiler/dart2js/mock_libraries.dart
@@ -22,11 +22,18 @@
 
 const Map<String, String> DEFAULT_CORE_LIBRARY = const <String, String>{
   'bool': 'class bool {}',
+  'Comparator': 'abstract class Comparator<T> {}',
   'DateTime': r'''
       class DateTime {
         DateTime(year);
         DateTime.utc(year);
       }''',
+      'Deprecated': r'''
+      class Deprecated extends Object {
+        final String expires;
+        const Deprecated(this.expires);
+      }''',
+  'deprecated': 'const Object deprecated = const Deprecated("next release");',
   'double': r'''
       abstract class double extends num {
         static var NAN = 0;
@@ -332,6 +339,7 @@
         operator[](index) {}
         toString() {}
         operator+(other) => this;
+        codeUnitAt(index) => 42;
       }''',
   'JSUInt31': 'class JSUInt31 extends JSUInt32 {}',
   'JSUInt32': 'class JSUInt32 extends JSPositiveInt {}',
@@ -354,4 +362,3 @@
   'MirrorSystem': 'class MirrorSystem {}',
   'MirrorsUsed': 'class MirrorsUsed {}',
 };
-
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
index e3e092e..831c989 100644
--- a/tests/corelib/corelib.status
+++ b/tests/corelib/corelib.status
@@ -6,6 +6,8 @@
 bool_from_environment2_test: Skip
 bool_from_environment_default_value_test: Skip
 bool_from_environment_test: Skip
+from_environment_const_type_test: Skip
+from_environment_const_type_undefined_test: Skip
 int_from_environment2_test: Skip
 int_from_environment3_test: Skip
 int_from_environment_default_value_test: Skip
@@ -19,6 +21,8 @@
 bool_from_environment2_test: Skip
 bool_from_environment_default_value_test: Skip
 bool_from_environment_test: Skip
+from_environment_const_type_test: Skip
+from_environment_const_type_undefined_test: Skip
 int_from_environment2_test: Skip
 int_from_environment3_test: Skip
 int_from_environment_default_value_test: Skip
@@ -120,8 +124,10 @@
 
 [ $compiler == dart2js && ($runtime == firefox || $runtime == safari || $runtime == chrome || $runtime == drt) ]
 
-[ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim) ]
+[ $compiler == dart2js && (($runtime == safari && $builder_tag == mac10_7) || $runtime == safarimobilesim) ]
+list_test/01: Fail # Safari bug: Array(-2) seen as dead code.
 string_trimlr_test/none: Fail
+string_split_test: RuntimeError # Issue 21431
 
 [ $compiler == dart2js && $runtime == ie10 ]
 string_case_test/01: Fail, OK  # Bug in IE.
@@ -137,6 +143,7 @@
 [ $compiler == dart2dart ]
 compare_to2_test: Fail # inherited from VM
 unicode_test: Fail # inherited from VM
+string_split_test: RuntimeError # Issue 21441.
 
 [ $compiler == dart2dart && $minified ]
 error_stack_trace1_test: Fail # Fails in minified mode, test depends on method names.
@@ -146,6 +153,41 @@
 list_insert_test: Fail, OK # Test contains errors but doesn’t mark them as expected
 list_removeat_test: Fail, OK # Test contains errors but doesn’t mark them as expected
 
+# Issue 16391. These tests are supposed to produce a compile time
+# error in checked mode, but they don't:
+[ $compiler == dartanalyzer && $checked ]
+from_environment_const_type_test/02: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/03: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/04: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/06: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/07: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/08: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/09: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/11: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/12: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/13: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/14: MissingCompileTimeError # Issue 16391
+from_environment_const_type_test/16: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/02: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/03: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/04: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/06: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/07: MissingCompileTimeError # Issue 16391
+from_environment_const_type_undefined_test/08: MissingCompileTimeError # Issue 16391
+
+# Analyzer's implementation of fromEnvironment assumes that undefined
+# environment variables have an unspecified value (rather than being
+# null) because it is expected that the user will supply a value when
+# the code is run.  This means that it produces slightly different
+# error messages than the VM and Dart2js.
+[ $compiler == dart2analyzer && $checked ]
+from_environment_const_type_undefined_test/09: CompileTimeError
+from_environment_const_type_undefined_test/11: CompileTimeError
+from_environment_const_type_undefined_test/12: CompileTimeError
+from_environment_const_type_undefined_test/13: CompileTimeError
+from_environment_const_type_undefined_test/14: CompileTimeError
+from_environment_const_type_undefined_test/16: CompileTimeError
+
 [ $compiler == dart2analyzer ]
 int_parse_radix_test: fail
 list_insert_test: fail
@@ -170,13 +212,9 @@
 num_clamp_test: StaticWarning, OK # Test generates errors on purpose.
 string_test: StaticWarning, OK # Test generates error on purpose.
 
-[ $compiler == dart2js && ($runtime == safari || $runtime == safarimobilesim) ]
-list_test/01: Fail # Safari bug: Array(-2) seen as dead code.
-
 [ $runtime == ie10 ]
 num_parse_test: RuntimeError  # Issue 15316
 num_parse_test/01: RuntimeError  # Issue 15316
 
 [ $system == windows && $arch == x64 ]
 stopwatch_test: Skip  # Flaky test due to expected performance behaviour.
-
diff --git a/tests/corelib/from_environment_const_type_test.dart b/tests/corelib/from_environment_const_type_test.dart
new file mode 100644
index 0000000..bb011ff
--- /dev/null
+++ b/tests/corelib/from_environment_const_type_test.dart
@@ -0,0 +1,43 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+// SharedOptions=-Da=true -Db=false -Dc=3 -Dd=STRING
+
+import "package:expect/expect.dart";
+
+class Foo {}
+
+const
+    bool   /// 01: ok
+    int    /// 02: static type warning, checked mode compile-time error
+    String /// 03: static type warning, checked mode compile-time error
+    Foo    /// 04: static type warning, checked mode compile-time error
+    a = const bool.fromEnvironment('a');
+
+const
+    bool   /// 05: ok
+    int    /// 06: static type warning, checked mode compile-time error
+    String /// 07: static type warning, checked mode compile-time error
+    Foo    /// 08: static type warning, checked mode compile-time error
+    b = const bool.fromEnvironment('b');
+
+const
+    bool   /// 09: static type warning, checked mode compile-time error
+    int    /// 10: ok
+    String /// 11: static type warning, checked mode compile-time error
+    Foo    /// 12: static type warning, checked mode compile-time error
+    c = const int.fromEnvironment('c');
+
+const
+    bool   /// 13: static type warning, checked mode compile-time error
+    int    /// 14: static type warning, checked mode compile-time error
+    String /// 15: ok
+    Foo    /// 16: static type warning, checked mode compile-time error
+    d = const String.fromEnvironment('d');
+
+main() {
+  Expect.equals(a, true);
+  Expect.equals(b, false);
+  Expect.equals(c, 3);
+  Expect.equals(d, 'STRING');
+}
diff --git a/tests/corelib/from_environment_const_type_undefined_test.dart b/tests/corelib/from_environment_const_type_undefined_test.dart
new file mode 100644
index 0000000..dd89c83
--- /dev/null
+++ b/tests/corelib/from_environment_const_type_undefined_test.dart
@@ -0,0 +1,42 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import "package:expect/expect.dart";
+
+class Foo {}
+
+const
+    bool   /// 01: ok
+    int    /// 02: static type warning, checked mode compile-time error
+    String /// 03: static type warning, checked mode compile-time error
+    Foo    /// 04: static type warning, checked mode compile-time error
+    a = const bool.fromEnvironment('a');
+
+const
+    bool   /// 05: ok
+    int    /// 06: static type warning, checked mode compile-time error
+    String /// 07: static type warning, checked mode compile-time error
+    Foo    /// 08: static type warning, checked mode compile-time error
+    b = const bool.fromEnvironment('b');
+
+const
+    bool   /// 09: static type warning
+    int    /// 10: ok
+    String /// 11: static type warning
+    Foo    /// 12: static type warning
+    c = const int.fromEnvironment('c');
+
+const
+    bool   /// 13: static type warning
+    int    /// 14: static type warning
+    String /// 15: ok
+    Foo    /// 16: static type warning
+    d = const String.fromEnvironment('d');
+
+main() {
+  Expect.equals(a, false);
+  Expect.equals(b, false);
+  Expect.equals(c, null);
+  Expect.equals(d, null);
+}
diff --git a/tests/corelib/string_split_reg_exp_test.dart b/tests/corelib/string_split_reg_exp_test.dart
deleted file mode 100644
index f742128..0000000
--- a/tests/corelib/string_split_reg_exp_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "package:expect/expect.dart";
-
-main() {
-  var list = "a b c".split(new RegExp(" "));
-  Expect.equals(3, list.length);
-  Expect.equals("a", list[0]);
-  Expect.equals("b", list[1]);
-  Expect.equals("c", list[2]);
-
-  list = "adbdc".split(new RegExp("[dz]"));
-  Expect.equals(3, list.length);
-  Expect.equals("a", list[0]);
-  Expect.equals("b", list[1]);
-  Expect.equals("c", list[2]);
-
-  list = "addbddc".split(new RegExp("dd"));
-  Expect.equals(3, list.length);
-  Expect.equals("a", list[0]);
-  Expect.equals("b", list[1]);
-  Expect.equals("c", list[2]);
-
-  list = "abc".split(new RegExp(r"b$"));
-  Expect.equals(1, list.length);
-  Expect.equals("abc", list[0]);
-
-  list = "abc".split(new RegExp(""));
-  Expect.equals(3, list.length);
-  Expect.equals("a", list[0]);
-  Expect.equals("b", list[1]);
-  Expect.equals("c", list[2]);
-
-  list = "   ".split(new RegExp("[ ]"));
-  Expect.equals(4, list.length);
-  Expect.equals("", list[0]);
-  Expect.equals("", list[1]);
-  Expect.equals("", list[2]);
-  Expect.equals("", list[3]);
-
-  list = "aaa".split(new RegExp(r"a$"));
-  Expect.equals(2, list.length);
-  Expect.equals("aa", list[0]);
-  Expect.equals("", list[1]);
-}
diff --git a/tests/corelib/string_split_test.dart b/tests/corelib/string_split_test.dart
index 9eee525..3f63ed1 100644
--- a/tests/corelib/string_split_test.dart
+++ b/tests/corelib/string_split_test.dart
@@ -4,45 +4,133 @@
 
 import "package:expect/expect.dart";
 
-class StringSplitTest {
-  static testMain() {
-    var list = "a b c".split(" ");
-    Expect.equals(3, list.length);
-    Expect.equals("a", list[0]);
-    Expect.equals("b", list[1]);
-    Expect.equals("c", list[2]);
-
-    list = "adbdc".split("d");
-    Expect.equals(3, list.length);
-    Expect.equals("a", list[0]);
-    Expect.equals("b", list[1]);
-    Expect.equals("c", list[2]);
-
-    list = "addbddc".split("dd");
-    Expect.equals(3, list.length);
-    Expect.equals("a", list[0]);
-    Expect.equals("b", list[1]);
-    Expect.equals("c", list[2]);
-
-    list = "abc".split(" ");
-    Expect.equals(1, list.length);
-    Expect.equals("abc", list[0]);
-
-    list = "abc".split("");
-    Expect.equals(3, list.length);
-    Expect.equals("a", list[0]);
-    Expect.equals("b", list[1]);
-    Expect.equals("c", list[2]);
-
-    list = "   ".split(" ");
-    Expect.equals(4, list.length);
-    Expect.equals("", list[0]);
-    Expect.equals("", list[1]);
-    Expect.equals("", list[2]);
-    Expect.equals("", list[3]);
-  }
+main() {
+  testSplitString();
+  testSplitRegExp();
+  testSplitPattern();
 }
 
-main() {
-  StringSplitTest.testMain();
+
+testSplit(List expect, String string, Pattern pattern) {
+  String patternString;
+  if (pattern is String) {
+    patternString = '"$pattern"';
+  } else if (pattern is RegExp) {
+    patternString = "/${pattern.pattern}/";
+  } else {
+    patternString = pattern.toString();
+  }
+  Expect.listEquals(expect, string.split(pattern),
+                    '"$string".split($patternString)');
+}
+
+/** String patterns. */
+void testSplitString() {
+  // Normal match.
+  testSplit(["a", "b", "c"], "a b c", " ");
+  testSplit(["a", "b", "c"], "adbdc", "d");
+  testSplit(["a", "b", "c"], "addbddc", "dd");
+  // No match.
+  testSplit(["abc"], "abc", " ");
+  testSplit(["a"], "a", "b");
+  testSplit([""], "", "b");
+  // Empty match matches everywhere except start/end.
+  testSplit(["a", "b", "c"], "abc", "");
+  // All empty parts.
+  testSplit(["", "", "", "", ""], "aaaa", "a");
+  testSplit(["", "", "", "", ""], "    ", " ");
+  testSplit(["", ""], "a", "a");
+  // No overlapping matches. Match as early as possible.
+  testSplit(["", "", "", "a"], "aaaaaaa", "aa");
+  // Cannot split the empty string.
+  testSplit([], "", "");  // Match.
+  testSplit([""], "", "a");  // No match.
+}
+
+/** RegExp patterns. */
+void testSplitRegExp() {
+  testSplitWithRegExp((s) => new RegExp(s));
+}
+
+/** Non-String, non-RegExp patterns. */
+void testSplitPattern() {
+  testSplitWithRegExp((s) => new RegExpWrap(s));
+}
+
+void testSplitWithRegExp(makePattern) {
+  testSplit(["a", "b", "c"], "a b c", makePattern(r" "));
+
+  testSplit(["a", "b", "c"], "adbdc", makePattern(r"[dz]"));
+
+  testSplit(["a", "b", "c"], "addbddc", makePattern(r"dd"));
+
+  testSplit(["abc"], "abc", makePattern(r"b$"));
+
+  testSplit(["a", "b", "c"], "abc", makePattern(r""));
+
+  testSplit(["", "", "", ""], "   ", makePattern(r"[ ]"));
+
+  // Non-zero-length match at end.
+  testSplit(["aa", ""], "aaa", makePattern(r"a$"));
+
+  // Zero-length match at end.
+  testSplit(["aaa"], "aaa", makePattern(r"$"));
+
+  // Non-zero-length match at start.
+  testSplit(["", "aa"], "aaa", makePattern(r"^a"));
+
+  // Zero-length match at start.
+  testSplit(["aaa"], "aaa", makePattern(r"^"));
+
+  // Picks first match, not longest or shortest.
+  testSplit(["", "", "", "a"], "aaaaaaa", makePattern(r"aa|aaa"));
+
+  testSplit(["", "", "", "a"], "aaaaaaa", makePattern(r"aa|"));
+
+  testSplit(["", "", "a"], "aaaaaaa", makePattern(r"aaa|aa"));
+
+  // Zero-width match depending on the following.
+  testSplit(["a", "bc"], "abc", makePattern(r"(?=[ab])"));
+
+  testSplit(["a", "b", "c"], "abc", makePattern(r"(?!^)"));
+
+  // Cannot split empty string.
+  testSplit([], "", makePattern(r""));
+
+  testSplit([], "", makePattern(r"(?:)"));
+
+  testSplit([], "", makePattern(r"$|(?=.)"));
+
+  testSplit([""], "", makePattern(r"a"));
+
+  // Can split singleton string if it matches.
+  testSplit(["", ""], "a", makePattern(r"a"));
+
+  testSplit(["a"], "a", makePattern(r"b"));
+
+  // Do not include captures.
+  testSplit(["a", "", "a"], "abba", makePattern(r"(b)"));
+
+  testSplit(["a", "a"], "abba", makePattern(r"(bb)"));
+
+  testSplit(["a", "a"], "abba", makePattern(r"(b*)"));
+
+  testSplit(["a", "a"], "aa", makePattern(r"(b*)"));
+
+  // But captures are still there, and do work with backreferences.
+  testSplit(["a", "cba"], "abcba", makePattern(r"([bc])(?=.*\1)"));
+}
+
+// A Pattern implementation with the same capabilities as a RegExp, but not
+// directly recognizable as a RegExp.
+class RegExpWrap implements Pattern {
+  final regexp;
+  RegExpWrap(String source) : regexp = new RegExp(source);
+  Iterable<Match> allMatches(String string, [int start = 0]) =>
+      regexp.allMatches(string, start);
+
+  Match matchAsPrefix(String string, [int start = 0]) =>
+      regexp.matchAsPrefix(string, start);
+
+  String toString() => "Wrap(/${regexp.pattern}/)";
 }
diff --git a/tests/html/html.status b/tests/html/html.status
index 0f65c7f..8fadbe3 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -234,9 +234,7 @@
 element_types_test/supported_content: Fail
 element_types_test/supported_datalist: Fail
 element_types_test/supported_shadow: Fail
-element_types_test/supported_template: Fail
 fileapi_test/supported: Fail
-indexeddb_1_test/supported: Fail
 indexeddb_1_test/supportsDatabaseNames: Fail
 media_stream_test/supported_MediaStreamEvent: Fail
 media_stream_test/supported_MediaStreamTrackEvent: Fail
@@ -245,6 +243,10 @@
 rtc_test/supported: Fail
 shadow_dom_test/supported: Fail
 speechrecognition_test/supported: Fail
+
+[ ($runtime == safari && $builder_tag == mac10_7) || $runtime == safarimobilesim ]
+indexeddb_1_test/supported: Fail
+element_types_test/supported_template: Fail
 xhr_test/json: Fail # Safari doesn't support JSON response type
 
 [ $runtime == safari ]
@@ -255,6 +257,15 @@
 input_element_test/supported_datetime-local: Fail
 touchevent_test/supported: Fail
 
+[ $runtime == safari && $builder_tag == mac10_8 ]
+element_test/_ElementList: RuntimeError # Issue 21434
+indexeddb_1_test/functional: RuntimeError # Issue 21433
+indexeddb_2_test: RuntimeError # Issue 21433
+indexeddb_4_test: RuntimeError # Issue 21433
+indexeddb_5_test: RuntimeError # Issue 21433
+wheelevent_test: RuntimeError # Issue 21434
+js_test: RuntimeError # Issue 21434
+
 [ $runtime == opera ]
 blob_constructor_test: Fail
 canvas_test: Fail
diff --git a/tests/language/await_for_test.dart b/tests/language/await_for_test.dart
new file mode 100644
index 0000000..fbf504b
--- /dev/null
+++ b/tests/language/await_for_test.dart
@@ -0,0 +1,97 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// VMOptions=--enable_async
+
+import "dart:async";
+import "package:expect/expect.dart";
+import "package:async_helper/async_helper.dart";
+
+class Trace {
+  String trace = "";
+  record(x) {
+    trace += x.toString();
+  }
+  toString() => trace;
+}
+
+
+Stream makeMeAStream() {
+  return timedCounter(5);
+}
+
+Trace t1 = new Trace();
+
+consumeOne() async {
+  // Equivalent to await for (x in makeMeAStream()) { ... }
+  var s = makeMeAStream();
+  var it = new StreamIterator(s);
+  while (await it.moveNext()) {
+    var x = it.current;
+    t1.record(x);
+  }
+  t1.record("X");
+}
+
+Trace t2 = new Trace();
+
+consumeTwo() async {
+  await for (var x in makeMeAStream()) {
+    t2.record(x);
+  }
+  t2.record("X");
+}
+
+main() {
+  var f1 = consumeOne();
+  t1.record("T1:");
+
+  var f2 = consumeTwo();
+  t2.record("T2:");
+
+  asyncStart();
+  Future.wait([f1, f2]).then((_) {
+    print("Trace 1: $t1");
+    print("Trace 2: $t2");
+    Expect.equals("T1:12345X", t1.toString());
+    Expect.equals("T2:12345X", t2.toString());
+    asyncEnd();
+  });
+}
+
+
+// Create a stream that produces numbers [1, 2, ... maxCount]
+Stream timedCounter(int maxCount) {
+  StreamController controller;
+  Timer timer;
+  int counter = 0;
+
+  void tick(_) {
+    counter++;
+    controller.add(counter); // Ask stream to send counter values as event.
+    if (counter >= maxCount) {
+      timer.cancel();
+      controller.close();    // Ask stream to shut down and tell listeners.
+    }
+  }
+
+  void startTimer() {
+    timer = new Timer.periodic(const Duration(milliseconds: 10), tick);
+  }
+
+  void stopTimer() {
+    if (timer != null) {
+      timer.cancel();
+      timer = null;
+    }
+  }
+
+  controller = new StreamController(
+      onListen: startTimer,
+      onPause: stopTimer,
+      onResume: startTimer,
+      onCancel: stopTimer);
+
+  return controller.stream;
+}
diff --git a/tests/language/compile_time_constant_c_test.dart b/tests/language/compile_time_constant_c_test.dart
index e55e0c7..089da3d 100644
--- a/tests/language/compile_time_constant_c_test.dart
+++ b/tests/language/compile_time_constant_c_test.dart
@@ -2,16 +2,24 @@
 // 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.
 
-const m1 = const {
+const m0 = const {
   499: 400 + 99
 };
+const m1 = const {
+  "foo" + "bar": 42            /// 01: compile-time error
+};
 const m2 = const {
-  "foo" + "bar": 42 /// 01: compile-time error
+  "foo" * 4: 42                /// 02: compile-time error
+};
+const m3 = const {
+  "foo".codeUnitAt(0): 42      /// 03: compile-time error
 };
 
 use(x) => x;
 
 main() {
+  use(m0);
   use(m1);
   use(m2);
+  use(m3);
 }
diff --git a/tests/language/language.status b/tests/language/language.status
index 1b4afdf..5df118e 100644
--- a/tests/language/language.status
+++ b/tests/language/language.status
@@ -26,6 +26,7 @@
 async_test/*: Skip
 async_control_structures_test: Skip
 await_test: Skip
+await_for_test: Skip
 await_future_test: Skip
 await_nonfuture_test: Skip
 await_exceptions_test: Skip
@@ -37,6 +38,7 @@
 async_test/*: Skip
 async_control_structures_test: Skip
 await_test: Skip
+await_for_test: Skip
 await_future_test: Skip
 await_nonfuture_test: Skip
 await_exceptions_test: Skip
diff --git a/tests/lib/convert/json_chunk_test.dart b/tests/lib/convert/json_chunk_test.dart
new file mode 100644
index 0000000..28e9297
--- /dev/null
+++ b/tests/lib/convert/json_chunk_test.dart
@@ -0,0 +1,173 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library json_test;
+
+import "package:expect/expect.dart";
+import "dart:convert";
+
+bool badFormat(e) => e is FormatException;
+
+jsonTest(testName, expect, action(sink)) {
+  var sink = new ChunkedConversionSink.withCallback((values) {
+    var value = values[0];
+    Expect.equals(expect, value, "$testName:$value");
+  });
+  var decoderSink = JSON.decoder.startChunkedConversion(sink);
+  action(decoderSink);
+}
+
+jsonThrowsTest(testName, action(sink)) {
+  var sink = new ChunkedConversionSink.withCallback((values) {
+    Expect.fail("Should have thrown: $testName");
+  });
+  var decoderSink = JSON.decoder.startChunkedConversion(sink);
+  Expect.throws(() { action(decoderSink); }, (e) => e is FormatException,
+                testName);
+}
+
+main() {
+  testNumbers();
+  testStrings();
+  testKeywords();
+}
+
+void testStrings() {
+  var s = r'"abc\f\n\r\t\b\"\/\\\u0001\u9999\uffff"';
+  var expected = "abc\f\n\r\t\b\"\/\\\u0001\u9999\uffff";
+  for (var i = 1; i < s.length - 1; i++) {
+    var s1 = s.substring(0, i);
+    var s2 = s.substring(i);
+    jsonTest("$s1|$s2", expected, (sink) {
+      sink.add(s1);
+      sink.add(s2);
+      sink.close();
+    });
+    jsonTest("$s1|$s2", expected, (sink) {
+      sink.addSlice(s, 0, i, false);
+      sink.addSlice(s, i, s.length, true);
+    });
+    for (var j = i; j < s.length - 1; j++) {
+      var s2a = s.substring(i, j);
+      var s2b = s.substring(j);
+      jsonTest("$s1|$s2a|$s2b", expected, (sink) {
+        sink.add(s1);
+        sink.add(s2a);
+        sink.add(s2b);
+        sink.close();
+      });
+    }
+  }
+}
+
+void testNumbers() {
+  void testNumber(number) {
+    var expected = num.parse(number);
+    for (int i = 1; i < number.length - 1; i++) {
+      var p1 = number.substring(0, i);
+      var p2 = number.substring(i);
+      jsonTest("$p1|$p2", expected, (sink) {
+        sink.add(p1);
+        sink.add(p2);
+        sink.close();
+      });
+
+      jsonTest("$p1|$p2/slice", expected, (sink) {
+        sink.addSlice(number, 0, i, false);
+        sink.addSlice(number, i, number.length, true);
+      });
+
+      for (int j = i; j < number.length - 1; j++) {
+        var p2a = number.substring(i, j);
+        var p2b = number.substring(j);
+        jsonTest("$p1|$p2a|$p2b", expected, (sink) {
+          sink.add(p1);
+          sink.add(p2a);
+          sink.add(p2b);
+          sink.close();
+        });
+      }
+    }
+  }
+  for (var sign in ["-", ""]) {
+    for (var intPart in ["0", "1", "99"]) {
+      for (var decimalPoint in [".", ""]) {
+        for (var decimals in decimalPoint.isEmpty ? [""] : ["0", "99"]) {
+          for (var e in ["e", "e-", "e+", ""]) {
+            for (var exp in e.isEmpty ? [""] : ["0", "2", "22", "34"]) {
+              testNumber("$sign$intPart$decimalPoint$decimals$e$exp");
+            }
+          }
+        }
+      }
+    }
+  }
+
+  void negativeTest(number) {
+    for (int i = 1; i < number.length - 1; i++) {
+      var p1 = number.substring(0, i);
+      var p2 = number.substring(i);
+      jsonThrowsTest("$p1|$p2", (sink) {
+        sink.add(p1);
+        sink.add(p2);
+        sink.close();
+      });
+
+      jsonThrowsTest("$p1|$p2/slice", (sink) {
+        sink.addSlice(number, 0, i, false);
+        sink.addSlice(number, i, number.length, true);
+      });
+
+      for (int j = i; j < number.length - 1; j++) {
+        var p2a = number.substring(i, j);
+        var p2b = number.substring(j);
+        jsonThrowsTest("$p1|$p2a|$p2b", (sink) {
+          sink.add(p1);
+          sink.add(p2a);
+          sink.add(p2b);
+          sink.close();
+        });
+      }
+    }
+  }
+
+  negativeTest("+1e");
+  negativeTest("-00");
+  negativeTest("01");
+  negativeTest(".1");
+  negativeTest("0.");
+  negativeTest("0.e1");
+  negativeTest("1e");
+  negativeTest("1e+");
+  negativeTest("1e-");
+}
+
+void testKeywords() {
+  for (var expected in [null, true, false]) {
+    var s = "$expected";
+    for (int i = 1; i < s.length - 1; i++) {
+      var s1 = s.substring(0, i);
+      var s2 = s.substring(i);
+      jsonTest("$s1|$s2", expected, (sink) {
+        sink.add(s1);
+        sink.add(s2);
+        sink.close();
+      });
+      jsonTest("$s1|$s2", expected, (sink) {
+        sink.addSlice(s, 0, i, false);
+        sink.addSlice(s, i, s.length, true);
+      });
+      for (var j = i; j < s.length - 1; j++) {
+        var s2a = s.substring(i, j);
+        var s2b = s.substring(j);
+        jsonTest("$s1|$s2a|$s2b", expected, (sink) {
+          sink.add(s1);
+          sink.add(s2a);
+          sink.add(s2b);
+          sink.close();
+        });
+      }
+    }
+  }
+}
diff --git a/tests/lib/convert/json_test.dart b/tests/lib/convert/json_test.dart
index 0cf3048..cfed8d9 100644
--- a/tests/lib/convert/json_test.dart
+++ b/tests/lib/convert/json_test.dart
@@ -27,22 +27,52 @@
     } else if (expected is num) {
       Expect.equals(expected is int, actual is int, "$path: same number type");
       Expect.isTrue(expected.compareTo(actual) == 0,
-                    "$path: $expected vs. $actual");
+                    "$path: Expected: $expected, was: $actual");
     } else {
       // String, bool, null.
       Expect.equals(expected, actual, path);
     }
   }
   for (var reviver in [null, (k, v) => v]) {
-    var name = (reviver == null) ? "" : "reviver:";
-    var value = JSON.decode(json, reviver: reviver);
-    compare(expected, value, "$name$value");
-    value = JSON.decode(" $json ", reviver: reviver);
-    compare(expected, value, "$name-$value-");
-    value = JSON.decode("[$json]", reviver: reviver);
-    compare([expected], value, "$name[$value]");
-    value = JSON.decode('{"x":$json}', reviver: reviver);
-    compare({"x":expected}, value, "$name{x:$value}");
+    for (var split in [0, 1, 2, 3]) {
+      var name = (reviver == null) ? "" : "reviver:";
+      var sink = new ChunkedConversionSink.withCallback((values) {
+        var value = values[0];
+        compare(expected, value, "$name$value");
+      });
+      var decoderSink = JSON.decoder.startChunkedConversion(sink);
+      switch (split) {
+        case 0:
+          // Split after first char.
+          decoderSink.add(json.substring(0, 1));
+          decoderSink.add(json.substring(1));
+          decoderSink.close();
+          break;
+        case 1:
+          // Split before last char.
+          int length = json.length;
+          decoderSink.add(json.substring(0, length - 1));
+          decoderSink.add(json.substring(length - 1));
+          decoderSink.close();
+          break;
+        case 2:
+          // Split in middle.
+          int half = json.length ~/ 2;
+          decoderSink.add(json.substring(0, half));
+          decoderSink.add(json.substring(half));
+          decoderSink.close();
+          break;
+        case 3:
+          // Split in three chunks.
+          int length = json.length;
+          int third = length ~/ 3;
+          decoderSink.add(json.substring(0, third));
+          decoderSink.add(json.substring(third, 2 * third));
+          decoderSink.add(json.substring(2 * third));
+          decoderSink.close();
+          break;
+      }
+    }
   }
 }
 
@@ -81,9 +111,11 @@
     for (var sign in signList) {
       for (var fraction in fractionList) {
         for (var exp in exponentList) {
-          var literal = "$sign$integer$fraction$exp";
-          var expectedValue = num.parse(literal);
-          testJson(literal, expectedValue);
+          for (var ws in ["", " ", "\t"]) {
+            var literal = "$ws$sign$integer$fraction$exp$ws";
+            var expectedValue = num.parse(literal);
+            testJson(literal, expectedValue);
+          }
         }
       }
     }
diff --git a/tests/lib/convert/json_utf8_chunk_test.dart b/tests/lib/convert/json_utf8_chunk_test.dart
new file mode 100644
index 0000000..efa8593
--- /dev/null
+++ b/tests/lib/convert/json_utf8_chunk_test.dart
@@ -0,0 +1,450 @@
+// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library test;
+
+import "package:expect/expect.dart";
+import "dart:convert";
+import "unicode_tests.dart" show UNICODE_TESTS;
+
+bool badFormat(e) => e is FormatException;
+
+main() {
+  testNumbers();
+  testStrings();
+  testKeywords();
+  testAll();
+  testMalformed();
+  testUnicodeTests();
+}
+
+// Create an UTF-8 sink from a chunked JSON decoder, then let [action]
+// put data into it, and check that what comes out is equal to [expect].
+void jsonTest(testName, expect, action(sink), [bool allowMalformed = false]) {
+  jsonParse(testName, (value) {
+    Expect.equals(expect, value, "$testName:$value");
+  }, action, allowMalformed);
+}
+
+void jsonParse(testName, check, action, [bool allowMalformed = false]) {
+  var sink = new ChunkedConversionSink.withCallback((values) {
+    var value = values[0];
+    check(value);
+  });
+  var decoderSink = JSON.decoder.startChunkedConversion(sink)
+                                .asUtf8Sink(allowMalformed);
+  try {
+    action(decoderSink);
+  } on FormatException catch (e, s) {
+    print("Source: ${e.source} @ ${e.offset}");
+    Expect.fail("Unexpected throw($testName): $e\n$s");
+  }
+}
+
+void testStrings() {
+  // String literal containing characters, all escape types,
+  // and a number of UTF-8 encoded characters.
+  var s = r'"abc\f\ndef\r\t\b\"\/\\\u0001\u9999\uffff'
+           '\x7f\xc2\x80\xdf\xbf\xe0\xa0\x80\xef\xbf\xbf'
+           '\xf0\x90\x80\x80\xf4\x8f\xbf\xbf"';  // UTF-8.
+  var expected = "abc\f\ndef\r\t\b\"\/\\\u0001\u9999\uffff"
+                 "\x7f\x80\u07ff\u0800\uffff"
+                 "\u{10000}\u{10ffff}";
+  for (var i = 1; i < s.length - 1; i++) {
+    var s1 = s.substring(0, i);
+    var s2 = s.substring(i);
+    jsonTest("$s1|$s2-$i", expected, (sink) {
+      sink.add(s1.codeUnits);
+      sink.add(s2.codeUnits);
+      sink.close();
+    });
+    jsonTest("$s1|$s2-$i-slice", expected, (sink) {
+      sink.addSlice(s.codeUnits, 0, i, false);
+      sink.addSlice(s.codeUnits, i, s.length, true);
+    });
+    for (var j = i; j < s.length - 1; j++) {
+      var s2a = s.substring(i, j);
+      var s2b = s.substring(j);
+      jsonTest("$s1|$s2a|$s2b-$i-$j", expected, (sink) {
+        sink.add(s1.codeUnits);
+        sink.add(s2a.codeUnits);
+        sink.add(s2b.codeUnits);
+        sink.close();
+      });
+    }
+  }
+}
+
+void testNumbers() {
+  for (var number in ["-0.12e-12", "-34.12E+12", "0.0e0", "9.9E9", "0", "9"
+                      "1234.56789123456701418035663664340972900390625",
+                      "1.2345678912345671e-14",
+                      "99999999999999999999"]) {
+    var expected = num.parse(number);
+    for (int i = 1; i < number.length - 1; i++) {
+      var p1 = number.substring(0, i);
+      var p2 = number.substring(i);
+      jsonTest("$p1|$p2", expected, (sink) {
+        sink.add(p1.codeUnits);
+        sink.add(p2.codeUnits);
+        sink.close();
+      });
+
+      jsonTest("$p1|$p2/slice", expected, (sink) {
+        sink.addSlice(number.codeUnits, 0, i, false);
+        sink.addSlice(number.codeUnits, i, number.length, true);
+      });
+
+      for (int j = i; j < number.length - 1; j++) {
+        var p2a = number.substring(i, j);
+        var p2b = number.substring(j);
+        jsonTest("$p1|$p2a|$p2b", expected, (sink) {
+          sink.add(p1.codeUnits);
+          sink.add(p2a.codeUnits);
+          sink.add(p2b.codeUnits);
+          sink.close();
+        });
+      }
+    }
+  }
+}
+
+// Test that `null`, `true`, and `false` keywords are decoded correctly.
+void testKeywords() {
+  for (var expected in [null, true, false]) {
+    var s = "$expected";
+    for (int i = 1; i < s.length - 1; i++) {
+      var s1 = s.substring(0, i);
+      var s2 = s.substring(i);
+      jsonTest("$s1|$s2", expected, (sink) {
+        sink.add(s1.codeUnits);
+        sink.add(s2.codeUnits);
+        sink.close();
+      });
+      jsonTest("$s1|$s2", expected, (sink) {
+        sink.addSlice(s.codeUnits, 0, i, false);
+        sink.addSlice(s.codeUnits, i, s.length, true);
+      });
+      for (var j = i; j < s.length - 1; j++) {
+        var s2a = s.substring(i, j);
+        var s2b = s.substring(j);
+        jsonTest("$s1|$s2a|$s2b", expected, (sink) {
+          sink.add(s1.codeUnits);
+          sink.add(s2a.codeUnits);
+          sink.add(s2b.codeUnits);
+          sink.close();
+        });
+      }
+    }
+  }
+}
+
+// Tests combinations of numbers, strings and keywords.
+void testAll() {
+  var s = r'{"":[true,false,42, -33e-3,null,"\u0080"], "z": 0}';
+  bool check(o) {
+    if (o is Map) {
+      Expect.equals(2, o.length);
+      Expect.equals(0, o["z"]);
+      var v = o[""];
+      if (v is List) {
+        Expect.listEquals([true, false, 42, -33e-3, null, "\u0080"], v);
+      } else {
+        Expect.fail("Expected list, found ${v.runtimeType}");
+      }
+    } else {
+      Expect.fail("Expected map, found ${o.runtimeType}");
+    }
+  }
+  for (var i = 1; i < s.length - 1; i++) {
+  var s1 = s.substring(0, i);
+  var s2 = s.substring(i);
+  jsonParse("$s1|$s2-$i", check, (sink) {
+    sink.add(s1.codeUnits);
+    sink.add(s2.codeUnits);
+    sink.close();
+  });
+  jsonParse("$s1|$s2-$i-slice", check, (sink) {
+    sink.addSlice(s.codeUnits, 0, i, false);
+    sink.addSlice(s.codeUnits, i, s.length, true);
+  });
+  for (var j = i; j < s.length - 1; j++) {
+    var s2a = s.substring(i, j);
+    var s2b = s.substring(j);
+    jsonParse("$s1|$s2a|$s2b-$i-$j", check, (sink) {
+      sink.add(s1.codeUnits);
+      sink.add(s2a.codeUnits);
+      sink.add(s2b.codeUnits);
+      sink.close();
+    });
+  }
+}
+
+}
+
+// Check that [codes] decode to [expect] when allowing malformed UTF-8,
+// and throws otherwise.
+void jsonMalformedTest(name, expect, codes) {
+  // Helper method.
+  void test(name, expect, action(sink)) {
+    var tag = "Malform:$name-$expect";
+    {  // Allowing malformed, expect [expect]
+      var sink = new ChunkedConversionSink.withCallback((values) {
+        var value = values[0];
+        Expect.equals(expect, value, tag);
+      });
+      var decoderSink = JSON.decoder.startChunkedConversion(sink)
+                                    .asUtf8Sink(true);
+      try {
+        action(decoderSink);
+      } catch (e, s) {
+        Expect.fail("Unexpected throw ($tag): $e\n$s");
+      }
+    }
+    {  // Not allowing malformed, expect throw.
+      var sink = new ChunkedConversionSink.withCallback((values) {
+        Expect.fail(tag);
+      });
+      var decoderSink = JSON.decoder.startChunkedConversion(sink)
+                                    .asUtf8Sink(false);
+      Expect.throws(() { action(decoderSink); }, null, tag);
+    }
+  }
+
+  // Test all two and three part slices.
+  for (int i = 1; i < codes.length - 1; i++) {
+    test("$name:$i", expect, (sink) {
+      sink.add(codes.sublist(0, i));
+      sink.add(codes.sublist(i));
+      sink.close();
+    });
+    test("$name:$i-slice", expect, (sink) {
+      sink.addSlice(codes, 0, i, false);
+      sink.addSlice(codes, i, codes.length, true);
+    });
+    for (int j = i; j < codes.length - 1; j++) {
+      test("$name:$i|$j", expect, (sink) {
+        sink.add(codes.sublist(0, i));
+        sink.add(codes.sublist(i, j));
+        sink.add(codes.sublist(j));
+        sink.close();
+      });
+    }
+  }
+}
+
+// Test that `codeString.codeUnits` fails to parse as UTF-8 JSON,
+// even with decoder not throwing on malformed encodings.
+void jsonThrows(String name, String codeString) {
+  testJsonThrows(tag, action) {
+    // Not allowing malformed, expect throw.
+    var sink = new ChunkedConversionSink.withCallback((values) {
+      Expect.fail(tag);
+    });
+    var decoderSink = JSON.decoder.startChunkedConversion(sink)
+                                  .asUtf8Sink(true);
+    Expect.throws(() { action(decoderSink); }, null, tag);
+  }
+
+  var codes = codeString.codeUnits;
+  for (int i = 1; i < codes.length - 1; i++) {
+    testJsonThrows("$name:$i", (sink) {
+      sink.add(codes.sublist(0, i));
+      sink.add(codes.sublist(i));
+      sink.close();
+    });
+    testJsonThrows("$name:$i-slice", (sink) {
+      sink.addSlice(codes, 0, i, false);
+      sink.addSlice(codes, i, codes.length, true);
+    });
+    for (int j = i; j < codes.length - 1; j++) {
+      testJsonThrows("$name:$i|$j", (sink) {
+        sink.add(codes.sublist(0, i));
+        sink.add(codes.sublist(i, j));
+        sink.add(codes.sublist(j));
+        sink.close();
+      });
+    }
+  }
+}
+
+// Malformed UTF-8 encodings.
+void testMalformed() {
+  // Overlong encodings.
+  jsonMalformedTest("overlong-0-2", "@\uFFFD@",
+                    [0x22, 0x40, 0xc0, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("overlong-0-3", "@\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0x80, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("overlong-0-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("overlong-7f-2", "@\uFFFD@",
+                    [0x22, 0x40, 0xc1, 0xbf, 0x40, 0x22]);
+  jsonMalformedTest("overlong-7f-3", "@\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0x81, 0xbf, 0x40, 0x22]);
+  jsonMalformedTest("overlong-7f-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x81, 0xbf, 0x40, 0x22]);
+
+  jsonMalformedTest("overlong-80-3", "@\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0x82, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("overlong-80-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x82, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("overlong-7ff-3", "@\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0x9f, 0xbf, 0x40, 0x22]);
+  jsonMalformedTest("overlong-7ff-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x9f, 0xbf, 0x40, 0x22]);
+
+  jsonMalformedTest("overlong-800-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0xa0, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("overlong-ffff-4", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x8f, 0xbf, 0xbf, 0x40, 0x22]);
+
+  // Unterminated multibyte sequences.
+  jsonMalformedTest("unterminated-2-normal", "@\uFFFD@",
+                    [0x22, 0x40, 0xc0, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-3-normal", "@\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-4-normal", "@\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-2-multi", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xc0, 0xc2, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-3-multi", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xe0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-4-multi", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0xc2, 0x80, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-2-escape", "@\uFFFD\n@",
+                    [0x22, 0x40, 0xc0, 0x5c, 0x6e, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-3-escape", "@\uFFFD\n@",
+                    [0x22, 0x40, 0xe0, 0x80, 0x5c, 0x6e, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-4-escape", "@\uFFFD\n@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0x5c, 0x6e, 0x40, 0x22]);
+
+  jsonMalformedTest("unterminated-2-end", "@\uFFFD",
+                    [0x22, 0x40, 0xc0, 0x22]);
+
+  jsonMalformedTest("unterminated-3-end", "@\uFFFD",
+                    [0x22, 0x40, 0xe0, 0x80, 0x22]);
+
+  jsonMalformedTest("unterminated-4-end", "@\uFFFD",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0x22]);
+
+  // Unexpected continuation byte
+  // - after a normal character.
+  jsonMalformedTest("continuation-normal", "@\uFFFD@",
+                    [0x22, 0x40, 0x80, 0x40, 0x22]);
+
+  // - after a valid continuation byte.
+  jsonMalformedTest("continuation-continuation-2", "@\x80\uFFFD@",
+                    [0x22, 0x40, 0xc2, 0x80, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("continuation-continuation-3", "@\u0800\uFFFD@",
+                    [0x22, 0x40, 0xe0, 0xa0, 0x80, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("continuation-continuation-4", "@\u{10000}\uFFFD@",
+                    [0x22, 0x40, 0xf0, 0x90, 0x80, 0x80, 0x80, 0x40, 0x22]);
+
+  // - after another invalid continuation byte
+  jsonMalformedTest("continuation-twice", "@\uFFFD\uFFFD\uFFFD@",
+                    [0x22, 0x40, 0x80, 0x80, 0x80, 0x40, 0x22]);
+  // - at start.
+  jsonMalformedTest("continuation-start", "\uFFFD@",
+                    [0x22, 0x80, 0x40, 0x22]);
+
+  // Unexpected leading byte where continuation byte expected.
+  jsonMalformedTest("leading-2", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xc0, 0xc2, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("leading-3-1", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xe0, 0xc2, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("leading-3-2", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xe0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("leading-4-1", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xf0, 0xc2, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("leading-4-2", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xf0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
+  jsonMalformedTest("leading-4-3", "@\uFFFD\x80@",
+                    [0x22, 0x40, 0xf0, 0x80, 0x80, 0xc2, 0x80, 0x40, 0x22]);
+
+  // Overlong encodings of ASCII outside of strings always fail.
+  // Use Latin-1 strings as argument since most chars are correct,
+  // pass string.codeUnits to decoder as UTF-8.
+  jsonThrows("number-1", "\xc0\xab0.0e-0");  // '-' is 0x2b => \xc0\xab
+  jsonThrows("number-2", "-\xc0\xb0.0e-0");  // '0' is 0x30 => \xc0\xb0
+  jsonThrows("number-3", "-0\xc0\xae0e-0");  // '.' is 0x2e => \xc0\xae
+  jsonThrows("number-4", "-0.\xc0\xb0e-0");
+  jsonThrows("number-5", "-0.0\xc1\xa5-0");  // 'e' is 0x65 => \xc1\xa5
+  jsonThrows("number-6", "-0.0e\xc0\xab0");
+  jsonThrows("number-7", "-0.0e-\xc0\xb0");
+
+  jsonThrows("true-1", "\xc1\xb4rue");  // 't' is 0x74
+  jsonThrows("true-2", "t\xc1\xb2ue");  // 'r' is 0x72
+  jsonThrows("true-3", "tr\xc1\xb5e");  // 'u' is 0x75
+  jsonThrows("true-4", "tru\xc1\xa5");  // 'e' is 0x65
+
+  jsonThrows("false-1", "\xc1\xa6alse");  // 'f' is 0x66
+  jsonThrows("false-2", "f\xc1\xa1lse");  // 'a' is 0x61
+  jsonThrows("false-3", "fa\xc1\xacse");  // 'l' is 0x6c
+  jsonThrows("false-4", "fal\xc1\xb3e");  // 's' is 0x73
+  jsonThrows("false-5", "fals\xc1\xa5");  // 'e' is 0x65
+
+  jsonThrows("null-1", "\xc1\xaeull");  // 'n' is 0x6e
+  jsonThrows("null-2", "n\xc1\xb5ll");  // 'u' is 0x75
+  jsonThrows("null-3", "nu\xc1\xacl");  // 'l' is 0x6c
+  jsonThrows("null-4", "nul\xc1\xac");  // 'l' is 0x6c
+
+  jsonThrows("array-1", "\xc1\x9b0,0]");  // '[' is 0x5b
+  jsonThrows("array-2", "[0,0\xc1\x9d");  // ']' is 0x5d
+  jsonThrows("array-2", "[0\xc0\xac0]");  // ',' is 0x2c
+
+  jsonThrows("object-1", '\xc1\xbb"x":0}');  // '{' is 0x7b
+  jsonThrows("object-2", '{"x":0\xc1\xbd');  // '}' is 0x7d
+  jsonThrows("object-2", '{"x\xc0\xba0}');  // ':' is 0x3a
+
+  jsonThrows("string-1", '\xc0\xa2x"');  // '"' is 0x22
+  jsonThrows("string-1", '"x\xc0\xa2');  // Unterminated string.
+
+  jsonThrows("whitespace-1", "\xc0\xa01");  // ' ' is 0x20
+}
+
+void testUnicodeTests() {
+  for (var pair in UNICODE_TESTS) {
+    var bytes = pair[0];
+    var string = pair[1];
+    int step = 1;
+    if (bytes.length > 100) step = bytes.length ~/ 13;
+    for (int i = 1; i < bytes.length - 1; i += step) {
+      jsonTest("$string:$i", string, (sink) {
+        sink.add([0x22]);  // Double-quote.
+        sink.add(bytes.sublist(0, i));
+        sink.add(bytes.sublist(i));
+        sink.add([0x22]);
+        sink.close();
+      });
+      jsonTest("$string:$i-slice", string, (sink) {
+        sink.addSlice([0x22], 0, 1, false);
+        sink.addSlice(bytes, 0, i, false);
+        sink.addSlice(bytes, i, bytes.length, false);
+        sink.addSlice([0x22], 0, 1, true);
+      });
+      int skip = 1;
+      if (bytes.length > 25) skip = bytes.length ~/ 17;
+      for (int j = i; j < bytes.length - 1; j += skip) {
+        jsonTest("$string:$i|$j", string, (sink) {
+          sink.add([0x22]);
+          sink.add(bytes.sublist(0, i));
+          sink.add(bytes.sublist(i, j));
+          sink.add(bytes.sublist(j));
+          sink.add([0x22]);
+          sink.close();
+        });
+      }
+    }
+  }
+}
diff --git a/tests/lib/convert/unicode_tests.dart b/tests/lib/convert/unicode_tests.dart
index 47bd510..a750016 100644
--- a/tests/lib/convert/unicode_tests.dart
+++ b/tests/lib/convert/unicode_tests.dart
@@ -88,7 +88,7 @@
   assert(2 == BEE_STRING.length);
   var tests = [];
   tests.addAll(_TEST_PAIRS);
-  tests.addAll(_TEST_PAIRS.expand((test) {
+  tests.addAll(_TEST_PAIRS.map((test) {
     var bytes = test[0];
     var string = test[1];
     var longBytes = [];
@@ -97,7 +97,7 @@
       longBytes.addAll(bytes);
       longString += string;
     }
-    return [test, [longBytes, longString]];
+    return [longBytes, longString];
   }));
   return tests;
 }
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
index 12b7bf0..97c7512 100644
--- a/tests/lib/lib.status
+++ b/tests/lib/lib.status
@@ -100,14 +100,20 @@
 mirrors/mirrors_reader_test: Slow, RuntimeError # Issue 16589
 
 [ $runtime == safari || $runtime == safarimobilesim ]
-typed_data/setRange_2_test: Fail # Safari doesn't fully implement spec for TypedArray.set
-typed_data/setRange_3_test: Fail # Safari doesn't fully implement spec for TypedArray.set
-typed_data/setRange_4_test: Fail # Safari doesn't fully implement spec for TypedArray.set
 typed_data/int32x4_test: Fail, Pass # Safari has an optimization bug (nightlies are already fine).
 typed_data/float32x4_test: Fail, Pass # Safari has an optimization bug (nightlies are already fine).
 mirrors/null_test: Fail # http://dartbug.com/16831
 convert/json_test: Fail # https://bugs.webkit.org/show_bug.cgi?id=134920
 
+[ ($runtime == safari && $builder_tag == mac10_7)|| $runtime == safarimobilesim ]
+typed_data/setRange_2_test: Fail # Safari doesn't fully implement spec for TypedArray.set
+typed_data/setRange_3_test: Fail # Safari doesn't fully implement spec for TypedArray.set
+typed_data/setRange_4_test: Fail # Safari doesn't fully implement spec for TypedArray.set
+
+
+[ $runtime == safari && $builder_tag == mac10_8 ]
+mirrors/generics_test/none: RuntimeError # Issue 21427
+
 [ $compiler == dart2js && $runtime == chromeOnAndroid ]
 typed_data/setRange_2_test: RuntimeError # TODO(dart2js-team): Please triage this failure.
 typed_data/setRange_3_test: RuntimeError # TODO(dart2js-team): Please triage this failure.
diff --git a/tests/standalone/io/server_socket_reference_issue21383_and_issue21384_test.dart b/tests/standalone/io/server_socket_reference_issue21383_and_issue21384_test.dart
new file mode 100644
index 0000000..95e0363
--- /dev/null
+++ b/tests/standalone/io/server_socket_reference_issue21383_and_issue21384_test.dart
@@ -0,0 +1,73 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'dart:async';
+import 'dart:io';
+
+import 'package:async_helper/async_helper.dart';
+
+
+testBothListen() {
+  asyncStart();
+  ServerSocket.bind('127.0.0.1', 0).then((mainServer) {
+    mainServer.reference.create().then((refServer) {
+      refServer.listen((_) {});
+      mainServer.listen((_) {});
+      Timer.run(() {
+        mainServer.close();
+        refServer.close();
+        asyncEnd();
+      });
+    });
+  });
+}
+
+testRefServerListen() {
+  asyncStart();
+  ServerSocket.bind('127.0.0.1', 0).then((mainServer) {
+    mainServer.reference.create().then((refServer) {
+      refServer.listen((_) {});
+      Timer.run(() {
+        mainServer.close();
+        refServer.close();
+        asyncEnd();
+      });
+    });
+  });
+}
+
+testMainServerListen() {
+  asyncStart();
+  ServerSocket.bind('127.0.0.1', 0).then((mainServer) {
+    mainServer.reference.create().then((refServer) {
+      mainServer.listen((_) {});
+      Timer.run(() {
+        mainServer.close();
+        refServer.close();
+        asyncEnd();
+      });
+    });
+  });
+}
+
+testNoneListen() {
+  asyncStart();
+  ServerSocket.bind('127.0.0.1', 0).then((mainServer) {
+    mainServer.reference.create().then((refServer) {
+      Timer.run(() {
+        mainServer.close();
+        refServer.close();
+        asyncEnd();
+      });
+    });
+  });
+}
+
+main() {
+  testNoneListen();
+  testMainServerListen();
+  testRefServerListen();
+  testBothListen();
+}
+
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 6e16f0d..d51d56e 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -156,3 +156,7 @@
 
 [ $system == windows ]
 io/skipping_dart2js_compilations_test: Fail # Issue 19551.
+
+[ $system != linux ]
+io/server_socket_reference_issue21383_and_issue21384_test: Skip # Not supported on other platforms so far
+
diff --git a/tools/VERSION b/tools/VERSION
index d4dc650..6f49db1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 1
 MINOR 8
 PATCH 0
-PRERELEASE 1
-PRERELEASE_PATCH 1
+PRERELEASE 2
+PRERELEASE_PATCH 0
diff --git a/tools/bots/compiler.py b/tools/bots/compiler.py
index 05b178b..246e87f 100644
--- a/tools/bots/compiler.py
+++ b/tools/bots/compiler.py
@@ -139,6 +139,7 @@
 
   # We have both 10.8 and 10.7 bots, functionality is the same.
   if system == 'mac10.8' or system == 'mac10.7':
+    builder_tag = system.replace('.', '_')
     system = 'mac'
 
   if (system == 'windows' and platform.system() != 'Windows') or (
@@ -348,6 +349,8 @@
   if build_info.minified: test_flags += ['--minified']
   if build_info.host_checked: test_flags += ['--host-checked']
   if build_info.batch: test_flags += ['--dart2js-batch']
+  if build_info.builder_tag: test_flags += ['--builder-tag=' +
+                                             build_info.builder_tag]
 
   if build_info.dart2js_full:
     compiler = build_info.compiler
diff --git a/tools/dom/dom.json b/tools/dom/dom.json
index 7be54d7..31cc95b 100644
--- a/tools/dom/dom.json
+++ b/tools/dom/dom.json
@@ -7668,6 +7668,9 @@
         "comment": "http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#navigatorstorageutils",
         "support_level": "experimental"
       },
+      "hardwareConcurrency": {
+        "support_level": "untriaged"
+      },
       "isProtocolHandlerRegistered": {
         "support_level": "untriaged"
       },
diff --git a/tools/dom/scripts/dartdomgenerator.py b/tools/dom/scripts/dartdomgenerator.py
index cc0d07c..a3fcece 100755
--- a/tools/dom/scripts/dartdomgenerator.py
+++ b/tools/dom/scripts/dartdomgenerator.py
@@ -50,8 +50,7 @@
 from systemhtml import DartLibraryEmitter, Dart2JSBackend,\
                        HtmlDartInterfaceGenerator, DartLibrary, DartLibraries,\
                        HTML_LIBRARY_NAMES
-from systemnative import CPPLibraryEmitter, DartiumBackend, \
-                         GetNativeLibraryEmitter
+from systemnative import CPPLibraryEmitter, DartiumBackend
 from templateloader import TemplateLoader
 
 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
@@ -167,13 +166,8 @@
     cpp_output_dir = os.path.join(dartium_output_dir, 'cpp')
     cpp_library_emitter = CPPLibraryEmitter(emitters, cpp_output_dir)
     dart_output_dir = os.path.join(dartium_output_dir, 'dart')
-    native_library_emitter = \
-        GetNativeLibraryEmitter(emitters, template_loader,
-                                dartium_output_dir, dart_output_dir,
-                                auxiliary_dir)
     backend_factory = lambda interface:\
-        DartiumBackend(interface, native_library_emitter,
-                       cpp_library_emitter, backend_options)
+        DartiumBackend(interface, cpp_library_emitter, backend_options)
     dart_libraries = DartLibraries(
         HTML_LIBRARY_NAMES, template_loader, 'dartium', dartium_output_dir)
 
@@ -292,9 +286,6 @@
       GenerateSingleFile(
           os.path.join(dartium_output_dir, '%s_dartium.dart' % library_name),
           os.path.join('..', '..', '..', 'sdk', 'lib', library_name, 'dartium'))
-    GenerateSingleFile(
-        os.path.join(dartium_output_dir, '_blink_dartium.dart'),
-        os.path.join('..', '..', '..', 'sdk', 'lib', '_blink', 'dartium'))
 
   print '\nGenerating single file %s seconds' % round(time.time() - file_generation_start_time, 2)
 
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 37117e7..48bb24a 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -17,15 +17,28 @@
 _pure_interfaces = monitored.Set('generator._pure_interfaces', [
     # TODO(sra): DOMStringMap should be a class implementing Map<String,String>.
     'DOMStringMap',
+    'AbstractWorker',
     'CanvasPathMethods',
     'ChildNode',
+    'DocumentAnimation',
+    'DocumentFontFaceSet',
+    'DocumentFullscreen',
+    'DocumentXPathEvaluator',
+    'ElementAnimation',
+    'ElementFullscreen',
     'EventListener',
     'GlobalEventHandlers',
+    'ImageBitmapFactories',
     'MediaQueryListListener',
+    'MouseEventHitRegion',
     'MutationCallback',
+    'NavigatorCPU',
+    'NavigatorEvents',
     'NavigatorID',
+    'NavigatorLanguage',
     'NavigatorOnLine',
     'ParentNode',
+    'SVGDocument',
     'SVGExternalResourcesRequired',
     'SVGFilterPrimitiveStandardAttributes',
     'SVGFitToViewBox',
@@ -38,6 +51,8 @@
     'WebGLRenderingContextBase',
     'WindowBase64',
     'WindowEventHandlers',
+    'WindowImageBitmapFactories',
+    'WindowPagePopup',
     'WindowTimers',
     ])
 
diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py
index 84bfa75..432d68d 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -13,40 +13,6 @@
 from idlnode import IDLArgument, IDLAttribute, IDLEnum, IDLMember
 from systemhtml import js_support_checks, GetCallbackInfo, HTML_LIBRARY_NAMES
 
-# This is an ugly hack to get things working on the M35 roll.  Once we
-# generate dart:blink from the new scripts, this shouldn't be needed.
-_cpp_resolver_string_map = {
-    # These custom constructors all resolve to a common entry, so choosing any
-    # of the generated strings works.
-    'ConsoleBase_assertCondition_Callback_boolean_object':
-        'ConsoleBase_assert_Callback_boolean_object',
-    'FormData_constructorCallback':
-        'FormData_constructorCallback_HTMLFormElement',
-    # This callback name just gets generated sligtly different and we don't
-    # want to bother fixing it.
-    'ScriptProcessorNode__setEventListener_Callback':
-        'ScriptProcessorNode_setEventListener_Callback',
-    # We don't know how to get GLenum to show up as the correct type in this
-    # script and don't want to bother fixing it the right way.
-    'WebGLDrawBuffers_drawBuffersWEBGL_Callback_sequence<GLenum>' :
-        'WebGLDrawBuffers_drawBuffersWEBGL_Callback_sequence<unsigned long>',
-    # Blink 36 fixes.
-    'CanvasRenderingContext2D_setLineDash_Callback_sequence<float>' :
-        'CanvasRenderingContext2D_setLineDash_Callback_sequence<unrestricted float>',
-
-    # SVGGraphicsElement is base class.
-    'SVGUseElement_hasExtension_Callback_DOMString' :
-        'SVGGraphicsElement_hasExtension_Callback_DOMString',
-    'SVGUseElement_systemLanguage_Getter' :
-        'SVGGraphicsElement_systemLanguage_Getter',
-    'SVGUseElement_requiredFeatures_Getter' :
-        'SVGGraphicsElement_requiredFeatures_Getter',
-    'SVGUseElement_requiredExtensions_Getter' :
-        'SVGGraphicsElement_requiredExtensions_Getter',
-
-    'Gamepad_buttons_Getter' : 'WebKitGamepad_buttons_Getter',
-}
-
 # TODO(vsm): This logic needs to pulled from the source IDL.  These tables are
 # an ugly workaround.
 _cpp_callback_map = {
@@ -170,18 +136,6 @@
   ('DOMURL', '_createObjectURL_3Callback'): 'URLMediaStream',
 }
 
-_blink_1916_rename_map = {
-  'NavigatorID': 'Navigator',
-  'CanvasRenderingContext' : 'CanvasRenderingContext2D',
-  'Clipboard': 'DataTransfer',
-  'Player': 'AnimationPlayer',
-  'Algorithm': 'KeyAlgorithm',
-  'any': 'ScriptValue',
-  'URLUtils': 'URL',
-  'URLUtilsReadOnly': 'WorkerLocation',
-  'Path': 'Path2D'
-}
-
 _cpp_partial_map = {}
 
 _cpp_no_auto_scope_list = set([
@@ -364,8 +318,6 @@
     t = TypeIdToBlinkName(arr_match, database)
     return "%s[]" % t
 
-  if interface_id in _blink_1916_rename_map:
-    interface_id = _blink_1916_rename_map[interface_id]
   return interface_id
 
 def _GetCPPTypeName(interface_name, callback_name, cpp_name):
@@ -409,42 +361,21 @@
 
   return _type_encoding_map.get(t) or t
 
-# FIXME(leafp) This should really go elsewhere.  I think the right thing
-# to do is to add support in the DartLibraries objects in systemhtml
-# for emitting top level code in libraries.  This can then just be a
-# normal use of that kind of object
-def GetNativeLibraryEmitter(emitters, template_loader, 
-                            dartium_output_dir, dart_output_dir,
-                            auxiliary_dir):
-    def massage_path(path):
-        # The most robust way to emit path separators is to use / always.
-        return path.replace('\\', '/')
-    template = template_loader.Load('_blink_dartium.darttemplate')
-    dart_path = os.path.join(dartium_output_dir, '_blink_dartium.dart')
-    library_emitter = emitters.FileEmitter(dart_path)
-    auxiliary_dir = os.path.relpath(auxiliary_dir, dartium_output_dir)
-    emitter = \
-        library_emitter.Emit(template,
-                             AUXILIARY_DIR=massage_path(auxiliary_dir))
-    return emitter
-
 class DartiumBackend(HtmlDartGenerator):
   """Generates Dart implementation for one DOM IDL interface."""
 
-  def __init__(self, interface, native_library_emitter,
+  def __init__(self, interface, 
                cpp_library_emitter, options):
     super(DartiumBackend, self).__init__(interface, options, True)
 
     self._interface = interface
     self._cpp_library_emitter = cpp_library_emitter
-    self._native_library_emitter = native_library_emitter
     self._database = options.database
     self._template_loader = options.templates
     self._type_registry = options.type_registry
     self._interface_type_info = self._type_registry.TypeInfo(self._interface.id)
     self._metadata = options.metadata
     # These get initialized by StartInterface
-    self._blink_entries = None
     self._cpp_header_emitter = None
     self._cpp_impl_emitter = None
     self._members_emitter = None
@@ -452,7 +383,6 @@
     self._cpp_impl_includes = None
     self._cpp_definitions_emitter = None
     self._cpp_resolver_emitter = None
-    self._native_class_emitter = None
 
   def ImplementsMergedMembers(self):
     # We could not add merged functions to implementation class because
@@ -611,7 +541,7 @@
         return "$" + s
       return s
 
-    if count:
+    if count is not None:
       arity = str(count)
       dart_name = mkPublic("_".join([tag, arity]))
     else:
@@ -628,9 +558,10 @@
       return "_".join(fields)
 
   def DeriveQualifiedBlinkName(self, interface_name, name):
-      return DeriveQualifiedName(
-          "_blink", DeriveQualifiedName(DeriveBlinkClassName(interface_name),
-                                        name))
+      blinkClass = DeriveQualifiedName(
+        "_blink", DeriveBlinkClassName(interface_name))
+      blinkInstance = DeriveQualifiedName(blinkClass, "instance")
+      return DeriveQualifiedName(blinkInstance, name + "_")
 
   def NativeSpec(self):
     return ''
@@ -681,21 +612,6 @@
         '    WebCore::DartArrayBufferViewInternal::constructWebGLArray<Dart$(INTERFACE_NAME)>(args);\n'
         '}\n',
         INTERFACE_NAME=self._interface.id);
-    self._native_class_emitter = self._native_library_emitter.Emit(
-      '\n'
-      'class $INTERFACE_NAME {'
-      '$!METHODS'
-      '}\n',
-      INTERFACE_NAME=DeriveBlinkClassName(self._interface.id))
-    # TODO(vsm): Should we check for collisions between EventConstructors and others?
-    # Should we unify at some point?
-    if 'EventConstructor' in self._interface.ext_attrs:
-        self._native_class_emitter.Emit(
-            '\n'
-            '  static constructorCallback(type, options) native "$(INTERFACE_NAME)_constructorCallback";\n',
-            INTERFACE_NAME=self._interface.id
-            )
-    self._blink_entries = set()
 
   def _EmitConstructorInfrastructure(self,
       constructor_info, cpp_prefix, cpp_suffix, factory_method_name,
@@ -715,17 +631,6 @@
 
     dart_native_name, constructor_callback_id = \
         self.DeriveNativeEntry(cpp_suffix, 'Constructor', argument_count)
-    if constructor_callback_id in _cpp_resolver_string_map:
-        constructor_callback_id = \
-            _cpp_resolver_string_map[constructor_callback_id]
-    if dart_native_name not in self._blink_entries:
-      self._blink_entries.add(dart_native_name)
-      self._native_class_emitter.Emit(
-        '\n'
-        '  static $FACTORY_METHOD_NAME($PARAMETERS) native "$ID";\n',
-        FACTORY_METHOD_NAME=dart_native_name,
-        PARAMETERS=parameters,
-        ID=constructor_callback_id)
 
     # Then we emit the impedance matching wrapper to call out to the
     # toplevel wrapper
@@ -1016,7 +921,7 @@
     native_entry = \
         self.DeriveNativeEntry(attr.id, 'Getter', None)
     cpp_callback_name = self._GenerateNativeBinding(attr.id, 1,
-        dart_declaration, False, return_type, parameters,
+        dart_declaration, attr.is_static, return_type, parameters,
         native_suffix, is_custom, auto_scope_setup, native_entry=native_entry)
     if is_custom:
       return
@@ -1071,7 +976,7 @@
     native_entry = \
         self.DeriveNativeEntry(attr.id, 'Setter', None)
     cpp_callback_name = self._GenerateNativeBinding(attr.id, 2,
-        dart_declaration, False, return_type, parameters,
+        dart_declaration, attr.is_static, return_type, parameters,
         native_suffix, is_custom, auto_scope_setup, native_entry=native_entry)
     if is_custom:
       return
@@ -1133,9 +1038,6 @@
       # Calls to this are emitted elsewhere,
       dart_native_name, resolver_string = \
           self.DeriveNativeEntry("item", 'Method', 1)
-      if resolver_string in _cpp_resolver_string_map:
-          resolver_string = \
-              _cpp_resolver_string_map[resolver_string]
 
       # Emit the method which calls the toplevel function, along with
       # the [] operator.
@@ -1714,30 +1616,26 @@
     else:
         formals = ", ".join(parameters)
         actuals = ", ".join(parameters)
-    if native_binding in _cpp_resolver_string_map:
-        native_binding = \
-            _cpp_resolver_string_map[native_binding]
-    if dart_native_name not in self._blink_entries:
-      self._blink_entries.add(dart_native_name)
-      self._native_class_emitter.Emit(
-        '\n'
-        '  static $DART_NAME($FORMALS) native "$NATIVE_BINDING";\n',
-        DART_NAME=dart_native_name,
-        FORMALS=formals,
-        NATIVE_BINDING=native_binding)
 
     if not emit_to_native:
         caller_emitter = self._members_emitter
         full_dart_name = \
             self.DeriveQualifiedBlinkName(self._interface.id,
                                           dart_native_name)
-        caller_emitter.Emit(
-            '\n'
-            '  $METADATA$DART_DECLARATION => $DART_NAME($ACTUALS);\n',
-            METADATA=metadata,
-            DART_DECLARATION=dart_declaration,
-            DART_NAME=full_dart_name,
-            ACTUALS=actuals)
+        if IsPureInterface(self._interface.id):
+            caller_emitter.Emit(
+                '\n'
+                '  $METADATA$DART_DECLARATION;\n',
+                METADATA=metadata,
+                DART_DECLARATION=dart_declaration)
+        else:
+            caller_emitter.Emit(
+                '\n'
+                '  $METADATA$DART_DECLARATION => $DART_NAME($ACTUALS);\n',
+                METADATA=metadata,
+                DART_DECLARATION=dart_declaration,
+                DART_NAME=full_dart_name,
+                ACTUALS=actuals)
     cpp_callback_name = '%s%s' % (idl_name, native_suffix)
 
     self._cpp_resolver_emitter.Emit(
diff --git a/tools/dom/src/blink_native_DOMImplementation.dart b/tools/dom/src/blink_native_DOMImplementation.dart
deleted file mode 100644
index bc274e4..0000000
--- a/tools/dom/src/blink_native_DOMImplementation.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of _blink;
-
-// _Utils native entry points
-class Blink_Utils {
-  static window() native "Utils_window";
-
-  static forwardingPrint(message) native "Utils_forwardingPrint";
-
-  static spawnDomUri(uri) native "Utils_spawnDomUri";
-
-  static register(document, tag, customType, extendsTagName) native "Utils_register";
-
-  static createElement(document, tagName) native "Utils_createElement";
-
-  static initializeCustomElement(element) native "Utils_initializeCustomElement";
-
-  static changeElementWrapper(element, type) native "Utils_changeElementWrapper";
-}
-
-class Blink_DOMWindowCrossFrame {
-  // FIXME: Return to using explicit cross frame entry points after roll to M35
-  static get_history(_DOMWindowCrossFrame) native "Window_history_cross_frame_Getter";
-
-  static get_location(_DOMWindowCrossFrame) native "Window_location_cross_frame_Getter";
-
-  static get_closed(_DOMWindowCrossFrame) native "Window_closed_Getter";
-
-  static get_opener(_DOMWindowCrossFrame) native "Window_opener_Getter";
-
-  static get_parent(_DOMWindowCrossFrame) native "Window_parent_Getter";
-
-  static get_top(_DOMWindowCrossFrame) native "Window_top_Getter";
-
-  static close(_DOMWindowCrossFrame) native "Window_close_Callback";
-
-  static postMessage(_DOMWindowCrossFrame, message, targetOrigin, [messagePorts]) native "Window_postMessage_Callback";
-}
-
-class Blink_HistoryCrossFrame {
-  // _HistoryCrossFrame native entry points
-  static back(_HistoryCrossFrame) native "History_back_Callback";
-
-  static forward(_HistoryCrossFrame) native "History_forward_Callback";
-
-  static go(_HistoryCrossFrame, distance) native "History_go_Callback";
-}
-
-class Blink_LocationCrossFrame {
-  // _LocationCrossFrame native entry points
-  static set_href(_LocationCrossFrame, h) native "Location_href_Setter";
-}
-
-class Blink_DOMStringMap {
-  // _DOMStringMap native entry  points
-  static containsKey(_DOMStringMap, key) native "DOMStringMap_containsKey_Callback";
-
-  static item(_DOMStringMap, key) native "DOMStringMap_item_Callback";
-
-  static setItem(_DOMStringMap, key, value) native "DOMStringMap_setItem_Callback";
-
-  static remove(_DOMStringMap, key) native "DOMStringMap_remove_Callback";
-
-  static get_keys(_DOMStringMap) native "DOMStringMap_getKeys_Callback";
-}
\ No newline at end of file
diff --git a/tools/dom/src/html_native_DOMImplementation.dart b/tools/dom/src/html_native_DOMImplementation.dart
deleted file mode 100644
index fe47388..0000000
--- a/tools/dom/src/html_native_DOMImplementation.dart
+++ /dev/null
@@ -1,1004 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-part of html;
-
-class _Property {
-  _Property(this.name) :
-      _hasValue = false,
-      writable = false,
-      isMethod = false,
-      isOwn = true,
-      wasThrown = false;
-
-  bool get hasValue => _hasValue;
-  get value => _value;
-  set value(v) {
-    _value = v;
-    _hasValue = true;
-  }
-
-  final String name;
-  Function setter;
-  Function getter;
-  var _value;
-  bool _hasValue;
-  bool writable;
-  bool isMethod;
-  bool isOwn;
-  bool wasThrown;
-}
-
-class _ConsoleVariables {
-  Map<String, Object> _data = new Map<String, Object>();
-
-  /**
-   * Forward member accesses to the backing JavaScript object.
-   */
-  noSuchMethod(Invocation invocation) {
-    String member = MirrorSystem.getName(invocation.memberName);
-    if (invocation.isGetter) {
-      return _data[member];
-    } else if (invocation.isSetter) {
-      assert(member.endsWith('='));
-      member = member.substring(0, member.length - 1);
-      _data[member] = invocation.positionalArguments[0];
-    } else {
-      return Function.apply(_data[member], invocation.positionalArguments,
-          invocation.namedArguments);
-    }
-  }
-
-  void clear() => _data.clear();
-
-  /**
-   * List all variables currently defined.
-   */
-  List variables() => _data.keys.toList();
-
-  void setVariable(String name, value) {
-    _data[name] = value;
-  }
-}
-
-/**
- * Base class for invocation trampolines used to closurize methods, getters
- * and setters.
- */
-abstract class _Trampoline implements Function {
-  final ObjectMirror _receiver;
-  final MethodMirror _methodMirror;
-  final Symbol _selector;
-
-  _Trampoline(this._receiver, this._methodMirror, this._selector);
-}
-
-class _MethodTrampoline extends _Trampoline {
-  _MethodTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
-      Symbol selector) :
-      super(receiver, methodMirror, selector);
-
-  noSuchMethod(Invocation msg) {
-    if (msg.memberName != #call) return super.noSuchMethod(msg);
-    return _receiver.invoke(_selector,
-                            msg.positionalArguments,
-                            msg.namedArguments).reflectee;
-  }
-}
-
-/**
- * Invocation trampoline class used to closurize getters.
- */
-class _GetterTrampoline extends _Trampoline {
-  _GetterTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
-      Symbol selector) :
-      super(receiver, methodMirror, selector);
-
-  call() => _receiver.getField(_selector).reflectee;
-}
-
-/**
- * Invocation trampoline class used to closurize setters.
- */
-class _SetterTrampoline extends _Trampoline {
-  _SetterTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
-      Symbol selector) :
-      super(receiver, methodMirror, selector);
-
-  call(value) {
-    _receiver.setField(_selector, value);
-  }
-}
-
-class _Utils {
-  static double dateTimeToDouble(DateTime dateTime) =>
-      dateTime.millisecondsSinceEpoch.toDouble();
-  static DateTime doubleToDateTime(double dateTime) {
-    try {
-      return new DateTime.fromMillisecondsSinceEpoch(dateTime.toInt());
-    } catch(_) {
-      // TODO(antonnm): treat exceptions properly in bindings and
-      // find out how to treat NaNs.
-      return null;
-    }
-  }
-
-  static List convertToList(List list) {
-    // FIXME: [possible optimization]: do not copy the array if Dart_IsArray is fine w/ it.
-    final length = list.length;
-    List result = new List(length);
-    result.setRange(0, length, list);
-    return result;
-  }
-
-  static List convertMapToList(Map map) {
-    List result = [];
-    map.forEach((k, v) => result.addAll([k, v]));
-    return result;
-  }
-
-  static int convertCanvasElementGetContextMap(Map map) {
-    int result = 0;
-    if (map['alpha'] == true) result |= 0x01;
-    if (map['depth'] == true) result |= 0x02;
-    if (map['stencil'] == true) result |= 0x4;
-    if (map['antialias'] == true) result |= 0x08;
-    if (map['premultipliedAlpha'] == true) result |= 0x10;
-    if (map['preserveDrawingBuffer'] == true) result |= 0x20;
-
-    return result;
-  }
-
-  static void populateMap(Map result, List list) {
-    for (int i = 0; i < list.length; i += 2) {
-      result[list[i]] = list[i + 1];
-    }
-  }
-
-  static bool isMap(obj) => obj is Map;
-
-  static List toListIfIterable(obj) => obj is Iterable ? obj.toList() : null;
-
-  static Map createMap() => {};
-
-  static parseJson(String jsonSource) => const JsonDecoder().convert(jsonSource);
-
-  static makeUnimplementedError(String fileName, int lineNo) {
-    return new UnsupportedError('[info: $fileName:$lineNo]');
-  }
-
-  static bool isTypeSubclassOf(Type type, Type other) {
-    if (type == other) {
-      return true;
-    }
-    var superclass = reflectClass(type).superclass;
-    if (superclass != null) {
-      return isTypeSubclassOf(superclass.reflectedType, other);
-    }
-    return false;
-  }
-
-  static Element getAndValidateNativeType(Type type, String tagName) {
-    var element = new Element.tag(tagName);
-    if (!isTypeSubclassOf(type, element.runtimeType)) {
-      return null;
-    }
-    return element;
-  }
-
-  static window() => _blink.Blink_Utils.window();
-  static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
-  // TODO(vsm): Make this API compatible with spawnUri.  It should also
-  // return a Future<Isolate>.
-  static spawnDomUri(String uri) => _blink.Blink_Utils.spawnDomUri(uri);
-
-  // The following methods were added for debugger integration to make working
-  // with the Dart C mirrors API simpler.
-  // TODO(jacobr): consider moving them to a separate library.
-  // If Dart supported dynamic code injection, we would only inject this code
-  // when the debugger is invoked.
-
-  /**
-   * Strips the private secret prefix from member names of the form
-   * someName@hash.
-   */
-  static String stripMemberName(String name) {
-    int endIndex = name.indexOf('@');
-    return endIndex > 0 ? name.substring(0, endIndex) : name;
-  }
-
-  /**
-   * Takes a list containing variable names and corresponding values and
-   * returns a map from normalized names to values. Variable names are assumed
-   * to have list offsets 2*n values at offset 2*n+1. This method is required
-   * because Dart_GetLocalVariables returns a list instead of an object that
-   * can be queried to lookup names and values.
-   */
-  static Map<String, dynamic> createLocalVariablesMap(List localVariables) {
-    var map = {};
-    for (int i = 0; i < localVariables.length; i+=2) {
-      map[stripMemberName(localVariables[i])] = localVariables[i+1];
-    }
-    return map;
-  }
-
-  static _ConsoleVariables _consoleTempVariables = new _ConsoleVariables();
-
-  /**
-   * Takes an [expression] and a list of [local] variable and returns an
-   * expression for a closure with a body matching the original expression
-   * where locals are passed in as arguments. Returns a list containing the
-   * String expression for the closure and the list of arguments that should
-   * be passed to it. The expression should then be evaluated using
-   * Dart_EvaluateExpr which will generate a closure that should be invoked
-   * with the list of arguments passed to this method.
-   *
-   * For example:
-   * <code>
-   * _consoleTempVariables = {'a' : someValue, 'b': someOtherValue}
-   * wrapExpressionAsClosure("foo + bar + a", ["bar", 40, "foo", 2], true)
-   * </code>
-   * will return:
-   * <code>
-   * ["""(final $consoleVariables, final bar, final foo, final a, final b) =>
-   * (foo + bar + a
-   * )""",
-   * [_consoleTempVariables, 40, 2, someValue, someOtherValue]]
-   * </code>
-   */
-  static List wrapExpressionAsClosure(String expression, List locals,
-      bool includeCommandLineAPI) {
-    var args = {};
-    var sb = new StringBuffer("(");
-    addArg(arg, value) {
-      arg = stripMemberName(arg);
-      if (args.containsKey(arg)) return;
-      // We ignore arguments with the name 'this' rather than throwing an
-      // exception because Dart_GetLocalVariables includes 'this' and it
-      // is more convenient to filter it out here than from C++ code.
-      // 'this' needs to be handled by calling Dart_EvaluateExpr with
-      // 'this' as the target rather than by passing it as an argument.
-      if (arg == 'this') return;
-      if (args.isNotEmpty) {
-        sb.write(", ");
-      }
-      sb.write("final $arg");
-      args[arg] = value;
-    }
-
-    if (includeCommandLineAPI) {
-      addArg("\$consoleVariables", _consoleTempVariables);
-
-      // FIXME: use a real Dart tokenizer. The following regular expressions
-      // only allow setting variables at the immediate start of the expression
-      // to limit the number of edge cases we have to handle.
-
-      // Match expressions that start with "var x"
-      final _VARIABLE_DECLARATION = new RegExp("^(\\s*)var\\s+(\\w+)");
-      // Match expressions that start with "someExistingConsoleVar ="
-      final _SET_VARIABLE = new RegExp("^(\\s*)(\\w+)(\\s*=)");
-      // Match trailing semicolons.
-      final _ENDING_SEMICOLONS = new RegExp("(;\\s*)*\$");
-      expression = expression.replaceAllMapped(_VARIABLE_DECLARATION,
-          (match) {
-            var variableName = match[2];
-            // Set the console variable if it isn't already set.
-            if (!_consoleTempVariables._data.containsKey(variableName)) {
-              _consoleTempVariables._data[variableName] = null;
-            }
-            return "${match[1]}\$consoleVariables.${variableName}";
-          });
-
-      expression = expression.replaceAllMapped(_SET_VARIABLE,
-          (match) {
-            var variableName = match[2];
-            // Only rewrite if the name matches an existing console variable.
-            if (_consoleTempVariables._data.containsKey(variableName)) {
-              return "${match[1]}\$consoleVariables.${variableName}${match[3]}";
-            } else {
-              return match[0];
-            }
-          });
-
-      // We only allow dart expressions not Dart statements. Silently remove
-      // trailing semicolons the user might have added by accident to reduce the
-      // number of spurious compile errors.
-      expression = expression.replaceFirst(_ENDING_SEMICOLONS, "");
-    }
-
-    if (locals != null) {
-      for (int i = 0; i < locals.length; i+= 2) {
-        addArg(locals[i], locals[i+1]);
-      }
-    }
-    // Inject all the already defined console variables.
-    _consoleTempVariables._data.forEach(addArg);
-
-    // TODO(jacobr): remove the parentheses around the expresson once
-    // dartbug.com/13723 is fixed. Currently we wrap expression in parentheses
-    // to ensure only valid Dart expressions are allowed. Otherwise the DartVM
-    // quietly ignores trailing Dart statements resulting in user confusion
-    // when part of an invalid expression they entered is ignored.
-    sb..write(') => (\n$expression\n)');
-    return [sb.toString(), args.values.toList(growable: false)];
-  }
-
-  static String _getShortSymbolName(Symbol symbol,
-                                    DeclarationMirror declaration) {
-    var name = MirrorSystem.getName(symbol);
-    if (declaration is MethodMirror) {
-      if (declaration.isSetter && name[name.length-1] == "=") {
-        return name.substring(0, name.length-1);
-      }
-      if (declaration.isConstructor) {
-        return name.substring(name.indexOf('.') + 1);
-      }
-    }
-    return name;
-  }
-
-  /**
-   * Returns a list of completions to use if the receiver is o.
-   */
-  static List<String> getCompletions(o) {
-    MirrorSystem system = currentMirrorSystem();
-    var completions = new Set<String>();
-    addAll(Map<Symbol, dynamic> map, bool isStatic) {
-      map.forEach((symbol, mirror) {
-        if (mirror.isStatic == isStatic && !mirror.isPrivate) {
-          var name = MirrorSystem.getName(symbol);
-          if (mirror is MethodMirror && mirror.isSetter)
-            name = name.substring(0, name.length - 1);
-          completions.add(name);
-        }
-      });
-    }
-
-    addForClass(ClassMirror mirror, bool isStatic) {
-      if (mirror == null)
-        return;
-      addAll(mirror.declarations, isStatic);
-      if (mirror.superclass != null)
-        addForClass(mirror.superclass, isStatic);
-      for (var interface in mirror.superinterfaces) {
-        addForClass(interface, isStatic);
-      }
-    }
-
-    if (o is Type) {
-      addForClass(reflectClass(o), true);
-    } else {
-      addForClass(reflect(o).type, false);
-    }
-    return completions.toList(growable: false);
-  }
-
-  /**
-   * Adds all candidate String completitions from [declarations] to [output]
-   * filtering based on [staticContext] and [includePrivate].
-   */
-  static void _getCompletionsHelper(ClassMirror classMirror,
-      bool staticContext, LibraryMirror libraryMirror, Set<String> output) {
-    bool includePrivate = libraryMirror == classMirror.owner;
-    classMirror.declarations.forEach((symbol, declaration) {
-      if (!includePrivate && declaration.isPrivate) return;
-      if (declaration is VariableMirror) {
-        if (staticContext != declaration.isStatic) return;
-      } else if (declaration is MethodMirror) {
-        if (declaration.isOperator) return;
-        if (declaration.isConstructor) {
-          if (!staticContext) return;
-          var name = MirrorSystem.getName(declaration.constructorName);
-          if (name.isNotEmpty) output.add(name);
-          return;
-        }
-        if (staticContext != declaration.isStatic) return;
-      } else if (declaration is TypeMirror) {
-        return;
-      }
-      output.add(_getShortSymbolName(symbol, declaration));
-    });
-
-    if (!staticContext) {
-      for (var interface in classMirror.superinterfaces) {
-        _getCompletionsHelper(interface, staticContext,
-            libraryMirror, output);
-      }
-      if (classMirror.superclass != null) {
-        _getCompletionsHelper(classMirror.superclass, staticContext,
-            libraryMirror, output);
-      }
-    }
-  }
-
-  static void _getLibraryCompletionsHelper(
-      LibraryMirror library, bool includePrivate, Set<String> output) {
-    library.declarations.forEach((symbol, declaration) {
-      if (!includePrivate && declaration.isPrivate) return;
-      output.add(_getShortSymbolName(symbol, declaration));
-    });
-  }
-
-  static LibraryMirror getLibraryMirror(String url) =>
-      currentMirrorSystem().libraries[Uri.parse(url)];
-
-  /**
-   * Get code completions for [o] only showing privates from [libraryUrl].
-   */
-  static List<String> getObjectCompletions(o, String libraryUrl) {
-    var classMirror;
-    bool staticContext;
-    if (o is Type) {
-      classMirror = reflectClass(o);
-      staticContext = true;
-    } else {
-      classMirror = reflect(o).type;
-      staticContext = false;
-    }
-    var names = new Set<String>();
-    getClassCompletions(classMirror, names, staticContext, libraryUrl);
-    return names.toList()..sort();
-  }
-
-  static void getClassCompletions(ClassMirror classMirror, Set<String> names,
-      bool staticContext, String libraryUrl) {
-    LibraryMirror libraryMirror = getLibraryMirror(libraryUrl);
-    _getCompletionsHelper(classMirror, staticContext, libraryMirror, names);
-  }
-
-  static List<String> getLibraryCompletions(String url) {
-    var names = new Set<String>();
-    _getLibraryCompletionsHelper(getLibraryMirror(url), true, names);
-    return names.toList();
-  }
-
-  /**
-   * Get valid code completitions from within a library and all libraries
-   * imported by that library.
-   */
-  static List<String> getLibraryCompletionsIncludingImports(String url) {
-    var names = new Set<String>();
-    var libraryMirror = getLibraryMirror(url);
-    _getLibraryCompletionsHelper(libraryMirror, true, names);
-    for (var dependency in libraryMirror.libraryDependencies) {
-      if (dependency.isImport) {
-        if (dependency.prefix == null) {
-          _getLibraryCompletionsHelper(dependency.targetLibrary, false, names);
-        } else {
-          names.add(MirrorSystem.getName(dependency.prefix));
-        }
-      }
-    }
-    return names.toList();
-  }
-
-  static final SIDE_EFFECT_FREE_LIBRARIES = new Set<String>()
-      ..add('dart:html')
-      ..add('dart:indexed_db')
-      ..add('dart:svg')
-      ..add('dart:typed_data')
-      ..add('dart:web_audio')
-      ..add('dart:web_gl')
-      ..add('dart:web_sql');
-
-  static LibraryMirror _getLibrary(MethodMirror methodMirror) {
-    var owner = methodMirror.owner;
-    if (owner is ClassMirror) {
-      return owner;
-    } else if (owner is LibraryMirror) {
-      return owner;
-    }
-    return null;
-  }
-
-  /**
-   * For parity with the JavaScript debugger, we treat some getters as if
-   * they are fields so that users can see their values immediately.
-   * This matches JavaScript's behavior for getters on DOM objects.
-   * In the future we should consider adding an annotation to tag getters
-   * in user libraries as side effect free.
-   */
-  static bool _isSideEffectFreeGetter(MethodMirror methodMirror,
-      LibraryMirror libraryMirror) {
-    // This matches JavaScript behavior. We should consider displaying
-    // getters for all dart platform libraries rather than just the DOM
-    // libraries.
-    return libraryMirror.uri.scheme == 'dart' &&
-        SIDE_EFFECT_FREE_LIBRARIES.contains(libraryMirror.uri.toString());
-  }
-  
-  /**
-   * Whether we should treat a property as a field for the purposes of the
-   * debugger.
-   */
-  static bool treatPropertyAsField(MethodMirror methodMirror,
-      LibraryMirror libraryMirror) {
-    return (methodMirror.isGetter || methodMirror.isSetter) &&
-          (methodMirror.isSynthetic ||
-              _isSideEffectFreeGetter(methodMirror,libraryMirror));
-  }
-
-  // TODO(jacobr): generate more concise function descriptions instead of
-  // dumping the entire function source.
-  static String describeFunction(function) {
-    if (function is _Trampoline) return function._methodMirror.source;
-    try {
-      var mirror = reflect(function);
-      return mirror.function.source;
-    } catch (e) {
-      return function.toString();
-    }
-  }
-
-  static List getInvocationTrampolineDetails(_Trampoline method) {
-    var loc = method._methodMirror.location;
-    return [loc.line, loc.column, loc.sourceUri.toString(),
-        MirrorSystem.getName(method._selector)];
-  }
-
-  static List getLibraryProperties(String libraryUrl, bool ownProperties,
-      bool accessorPropertiesOnly) {
-    var properties = new Map<String, _Property>();
-    var libraryMirror = getLibraryMirror(libraryUrl);
-    _addInstanceMirrors(libraryMirror, libraryMirror,
-        libraryMirror.declarations,
-        ownProperties, accessorPropertiesOnly, false, false,
-        properties);
-    if (!accessorPropertiesOnly) {
-      // We need to add class properties for all classes in the library.
-      libraryMirror.declarations.forEach((symbol, declarationMirror) {
-        if (declarationMirror is ClassMirror) {
-          var name = MirrorSystem.getName(symbol);
-          if (declarationMirror.hasReflectedType
-              && !properties.containsKey(name)) {
-            properties[name] = new _Property(name)
-                ..value = declarationMirror.reflectedType;
-          }
-        }
-      });
-    }
-    return packageProperties(properties);
-  }
-
-  static List getObjectProperties(o, bool ownProperties,
-      bool accessorPropertiesOnly) {
-    var properties = new Map<String, _Property>();
-    var names = new Set<String>();
-    var objectMirror = reflect(o);
-    var classMirror = objectMirror.type;
-    _addInstanceMirrors(objectMirror, classMirror.owner,
-        classMirror.instanceMembers,
-        ownProperties, accessorPropertiesOnly, false, true,
-        properties);
-    return packageProperties(properties);
-  }
-
-  static List getObjectClassProperties(o, bool ownProperties,
-      bool accessorPropertiesOnly) {
-    var properties = new Map<String, _Property>();
-    var objectMirror = reflect(o);
-    var classMirror = objectMirror.type;
-    _addInstanceMirrors(objectMirror, classMirror.owner,
-        classMirror.instanceMembers,
-        ownProperties, accessorPropertiesOnly, true, false,
-        properties);
-    _addStatics(classMirror, properties, accessorPropertiesOnly);
-    return packageProperties(properties);
-  }
-
-  static List getClassProperties(Type t, bool ownProperties,
-      bool accessorPropertiesOnly) {
-    var properties = new Map<String, _Property>();
-    var classMirror = reflectClass(t);
-    _addStatics(classMirror, properties, accessorPropertiesOnly);
-    return packageProperties(properties);
-  }
-
-  static void _addStatics(ClassMirror classMirror,
-                          Map<String, _Property> properties,
-                          bool accessorPropertiesOnly) {
-    var libraryMirror = classMirror.owner;
-    classMirror.declarations.forEach((symbol, declaration) {
-      var name = _getShortSymbolName(symbol, declaration);
-      if (name.isEmpty) return;
-      if (declaration is VariableMirror) {
-        if (accessorPropertiesOnly) return;
-        if (!declaration.isStatic) return;
-        properties.putIfAbsent(name, () => new _Property(name))
-            ..value = classMirror.getField(symbol).reflectee
-            ..writable = !declaration.isFinal && !declaration.isConst;
-      } else if (declaration is MethodMirror) {
-        MethodMirror methodMirror = declaration;
-        // FIXMEDART: should we display constructors?
-        if (methodMirror.isConstructor) return;
-        if (!methodMirror.isStatic) return;
-        if (accessorPropertiesOnly) {
-          if (methodMirror.isRegularMethod ||
-              treatPropertyAsField(methodMirror, libraryMirror)) {
-            return;
-          }
-        } else if (!methodMirror.isRegularMethod &&
-            !treatPropertyAsField(methodMirror, libraryMirror)) {
-          return;
-        }
-        var property = properties.putIfAbsent(name, () => new _Property(name));
-        _fillMethodMirrorProperty(libraryMirror, classMirror, methodMirror,
-            symbol, accessorPropertiesOnly, property);
-      }
-    });
-  }
-
-  static void _fillMethodMirrorProperty(LibraryMirror libraryMirror,
-        methodOwner, MethodMirror methodMirror, Symbol symbol,
-        bool accessorPropertiesOnly, _Property property) {
-    if (methodMirror.isRegularMethod) {
-      property
-          ..value = new _MethodTrampoline(methodOwner, methodMirror, symbol)
-          ..isMethod = true;
-    } else if (methodMirror.isGetter) {
-      if (treatPropertyAsField(methodMirror, libraryMirror)) {
-        try {
-          property.value = methodOwner.getField(symbol).reflectee;
-        } catch (e) {
-          property
-              ..wasThrown = true
-              ..value = e;
-        }
-      } else if (accessorPropertiesOnly) {
-        property.getter = new _GetterTrampoline(methodOwner,
-            methodMirror, symbol);
-      }
-    } else if (methodMirror.isSetter) {
-      if (accessorPropertiesOnly &&
-          !treatPropertyAsField(methodMirror, libraryMirror)) {
-        property.setter = new _SetterTrampoline(methodOwner,
-            methodMirror, MirrorSystem.getSymbol(property.name, libraryMirror));
-      }
-      property.writable = true;
-    }
-  }
-
-  /**
-   * Helper method that handles collecting up properties from classes
-   * or libraries using the filters [ownProperties], [accessorPropertiesOnly],
-   * [hideFields], and [hideMethods] to determine which properties are
-   * collected. [accessorPropertiesOnly] specifies whether all properties
-   * should be returned or just accessors. [hideFields] specifies whether
-   * fields should be hidden. hideMethods specifies whether methods should be
-   * shown or hidden. [ownProperties] is not currently used but is part of the
-   * Blink devtools API for enumerating properties.
-   */
-  static void _addInstanceMirrors(
-      ObjectMirror objectMirror,
-      LibraryMirror libraryMirror,
-      Map<Symbol, Mirror> declarations,
-      bool ownProperties, bool accessorPropertiesOnly,
-      bool hideFields, bool hideMethods,
-      Map<String, _Property> properties) {
-    declarations.forEach((symbol, declaration) {
-      if (declaration is TypedefMirror || declaration is ClassMirror) return;
-      var name = _getShortSymbolName(symbol, declaration);
-      if (name.isEmpty) return;
-      bool isField = declaration is VariableMirror ||
-          (declaration is MethodMirror &&
-              treatPropertyAsField(declaration, libraryMirror));
-      if ((isField && hideFields) || (hideMethods && !isField)) return;
-      if (accessorPropertiesOnly) {
-        if (declaration is VariableMirror || declaration.isRegularMethod ||
-            isField) {
-          return;
-        }
-      } else if (declaration is MethodMirror &&
-          (declaration.isGetter || declaration.isSetter) &&
-          !treatPropertyAsField(declaration, libraryMirror)) {
-        return;
-      }
-      var property = properties.putIfAbsent(name, () => new _Property(name));
-      if (declaration is VariableMirror) {
-        property
-            ..value = objectMirror.getField(symbol).reflectee
-            ..writable = !declaration.isFinal && !declaration.isConst;
-        return;
-      }
-      _fillMethodMirrorProperty(libraryMirror, objectMirror, declaration,
-          symbol, accessorPropertiesOnly, property);
-    });
-  }
-
-  /**
-   * Flatten down the properties data structure into a List that is easy to
-   * access from native code.
-   */
-  static List packageProperties(Map<String, _Property> properties) {
-    var ret = [];
-    for (var property in properties.values) {
-      ret.addAll([property.name,
-                  property.setter,
-                  property.getter,
-                  property.value,
-                  property.hasValue,
-                  property.writable,
-                  property.isMethod,
-                  property.isOwn,
-                  property.wasThrown]);
-    }
-    return ret;
-  }
-  
-  /**
-   * Get a property, returning null if the property does not exist.
-   * For private property names, we attempt to resolve the property in the
-   * context of each library that the property name could be associated with.
-   */
-  static getObjectPropertySafe(o, String propertyName) {
-    var objectMirror = reflect(o);
-    var classMirror = objectMirror.type;
-    if (propertyName.startsWith("_")) {
-      var attemptedLibraries = new Set<LibraryMirror>(); 
-      while (classMirror != null) {
-        LibraryMirror library = classMirror.owner;
-        if (!attemptedLibraries.contains(library)) {
-          try {
-            return objectMirror.getField(
-                MirrorSystem.getSymbol(propertyName, library)).reflectee;
-          } catch (e) { }
-          attemptedLibraries.add(library);
-        }
-        classMirror = classMirror.superclass;
-      }
-      return null;     
-    }
-    try {
-      return objectMirror.getField(
-          MirrorSystem.getSymbol(propertyName)).reflectee;
-    } catch (e) {
-      return null;
-    }
-  }
-
-  /**
-   * Helper to wrap the inspect method on InjectedScriptHost to provide the
-   * inspect method required for the 
-   */
-  static List consoleApi(host) {
-    return [
-        "inspect",
-        (o) {
-          host.inspect(o, null);
-          return o;
-        },
-        "dir",
-        window().console.dir,
-        "dirxml",
-        window().console.dirxml
-        // FIXME: add copy method.
-        ];
-  }
-
-  static List getMapKeyList(Map map) => map.keys.toList();
-
-  static bool isNoSuchMethodError(obj) => obj is NoSuchMethodError;
-
-  static void register(Document document, String tag, Type type,
-      String extendsTagName) {
-    var nativeClass = _validateCustomType(type);
-
-    if (extendsTagName == null) {
-      if (nativeClass.reflectedType != HtmlElement) {
-        throw new UnsupportedError('Class must provide extendsTag if base '
-            'native class is not HTMLElement');
-      }
-    }
-
-    _register(document, tag, type, extendsTagName);
-  }
-
-  static void _register(Document document, String tag, Type customType,
-    String extendsTagName) => _blink.Blink_Utils.register(document, tag, customType, extendsTagName);
-
-  static Element createElement(Document document, String tagName) =>
-    _blink.Blink_Utils.createElement(document, tagName);
-
-  static void initializeCustomElement(HtmlElement element) =>
-    _blink.Blink_Utils.initializeCustomElement(element);
-
-  static Element changeElementWrapper(HtmlElement element, Type type) =>
-    _blink.Blink_Utils.changeElementWrapper(element, type);
-}
-
-class _DOMWindowCrossFrame extends NativeFieldWrapperClass2 implements
-    WindowBase {
-  _DOMWindowCrossFrame.internal();
-
-  // Fields.
-  HistoryBase get history => _blink.Blink_DOMWindowCrossFrame.get_history(this);
-  LocationBase get location => _blink.Blink_DOMWindowCrossFrame.get_location(this);
-  bool get closed => _blink.Blink_DOMWindowCrossFrame.get_closed(this);
-  WindowBase get opener => _blink.Blink_DOMWindowCrossFrame.get_opener(this);
-  WindowBase get parent => _blink.Blink_DOMWindowCrossFrame.get_parent(this);
-  WindowBase get top => _blink.Blink_DOMWindowCrossFrame.get_top(this);
-
-  // Methods.
-  void close() => _blink.Blink_DOMWindowCrossFrame.close(this);
-  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) =>
-    _blink.Blink_DOMWindowCrossFrame.postMessage(this, message, targetOrigin, messagePorts);
-
-  // Implementation support.
-  String get typeName => "Window";
-
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  Events get on => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  void _addEventListener([String type, EventListener listener, bool useCapture])
-      => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  void addEventListener(String type, EventListener listener, [bool useCapture])
-      => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  bool dispatchEvent(Event event) => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  void _removeEventListener([String type, EventListener listener,
-      bool useCapture]) => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-  // TODO(efortuna): Remove this method. dartbug.com/16814
-  void removeEventListener(String type, EventListener listener,
-      [bool useCapture]) => throw new UnsupportedError(
-    'You can only attach EventListeners to your own window.');
-}
-
-class _HistoryCrossFrame extends NativeFieldWrapperClass2 implements HistoryBase {
-  _HistoryCrossFrame.internal();
-
-  // Methods.
-  void back() => _blink.Blink_HistoryCrossFrame.back(this);
-  void forward() => _blink.Blink_HistoryCrossFrame.forward(this);
-  void go(int distance) => _blink.Blink_HistoryCrossFrame.go(this, distance);
-
-  // Implementation support.
-  String get typeName => "History";
-}
-
-class _LocationCrossFrame extends NativeFieldWrapperClass2 implements LocationBase {
-  _LocationCrossFrame.internal();
-
-  // Fields.
-  void set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
-
-  // Implementation support.
-  String get typeName => "Location";
-}
-
-class _DOMStringMap extends NativeFieldWrapperClass2 implements Map<String, String> {
-  _DOMStringMap.internal();
-
-  bool containsValue(String value) => Maps.containsValue(this, value);
-  bool containsKey(String key) => _blink.Blink_DOMStringMap.containsKey(this, key);
-  String operator [](String key) => _blink.Blink_DOMStringMap.item(this, key);
-  void operator []=(String key, String value) => _blink.Blink_DOMStringMap.setItem(this, key, value);
-  String putIfAbsent(String key, String ifAbsent()) => Maps.putIfAbsent(this, key, ifAbsent);
-  String remove(String key) => _blink.Blink_DOMStringMap.remove(this, key);
-  void clear() => Maps.clear(this);
-  void forEach(void f(String key, String value)) => Maps.forEach(this, f);
-  Iterable<String> get keys => _blink.Blink_DOMStringMap.get_keys(this);
-  Iterable<String> get values => Maps.getValues(this);
-  int get length => Maps.length(this);
-  bool get isEmpty => Maps.isEmpty(this);
-  bool get isNotEmpty => Maps.isNotEmpty(this);
-  void addAll(Map<String, String> other) {
-    other.forEach((key, value) => this[key] = value);
-  }
-}
-
-final _printClosure = (s) => window.console.log(s);
-final _pureIsolatePrintClosure = (s) {
-  throw new UnimplementedError("Printing from a background isolate "
-                               "is not supported in the browser");
-};
-
-final _forwardingPrintClosure = _Utils.forwardingPrint;
-
-final _uriBaseClosure = () => Uri.parse(window.location.href);
-
-final _pureIsolateUriBaseClosure = () {
-  throw new UnimplementedError("Uri.base on a background isolate "
-                               "is not supported in the browser");
-};
-
-class _Timer implements Timer {
-  static const int _STATE_TIMEOUT = 0;
-  static const int _STATE_INTERVAL = 1;
-  int _state;
-
-  _Timer(int milliSeconds, void callback(Timer timer), bool repeating) {
-    if (repeating) {
-      _state = (window._setInterval(() {
-        callback(this);
-      }, milliSeconds) << 1) | _STATE_INTERVAL;
-    } else {
-      _state = (window._setTimeout(() {
-        _state = null;
-        callback(this);
-      }, milliSeconds) << 1) | _STATE_TIMEOUT;
-    }
-  }
-
-  void cancel() {
-    if (_state == null) return;
-    int id = _state >> 1;
-    if ((_state & 1) == _STATE_TIMEOUT) {
-      window._clearTimeout(id);
-    } else {
-      window._clearInterval(id);
-    }
-    _state = null;
-  }
-
-  bool get isActive => _state != null;
-}
-
-get _timerFactoryClosure =>
-    (int milliSeconds, void callback(Timer timer), bool repeating) {
-  return new _Timer(milliSeconds, callback, repeating);
-};
-
-get _pureIsolateTimerFactoryClosure =>
-    ((int milliSeconds, void callback(Timer time), bool repeating) =>
-  throw new UnimplementedError("Timers on background isolates "
-                               "are not supported in the browser"));
-
-class _ScheduleImmediateHelper {
-  MutationObserver _observer;
-  final DivElement _div = new DivElement();
-  Function _callback;
-
-  _ScheduleImmediateHelper() {
-    // Run in the root-zone as the DOM callback would otherwise execute in the
-    // current zone.
-    Zone.ROOT.run(() {
-      // Mutation events get fired as soon as the current event stack is unwound
-      // so we just make a dummy event and listen for that.
-      _observer = new MutationObserver(_handleMutation);
-      _observer.observe(_div, attributes: true);
-    });
-  }
-
-  void _schedule(callback) {
-    if (_callback != null) {
-      throw new StateError(
-          'Only one immediate callback can be scheduled at once');
-    }
-    _callback = callback;
-    // Toggle it to trigger the mutation event.
-    _div.hidden = !_div.hidden;
-  }
-
-  _handleMutation(List<MutationRecord> mutations, MutationObserver observer) {
-    var tmp = _callback;
-    _callback = null;
-    tmp();
-  }
-}
-
-final _ScheduleImmediateHelper _scheduleImmediateHelper =
-    new _ScheduleImmediateHelper();
-
-get _scheduleImmediateClosure => (void callback()) {
-  _scheduleImmediateHelper._schedule(callback);
-};
-
-get _pureIsolateScheduleImmediateClosure => ((void callback()) =>
-  throw new UnimplementedError("scheduleMicrotask in background isolates "
-                               "are not supported in the browser"));
-
-void _initializeCustomElement(Element e) {
-  _Utils.initializeCustomElement(e);
-}
-
-// Class for unsupported native browser 'DOM' objects.
-class _UnsupportedBrowserObject extends NativeFieldWrapperClass2 {
-}
diff --git a/tools/dom/src/native_DOMImplementation.dart b/tools/dom/src/native_DOMImplementation.dart
index d8d603b..fe47388 100644
--- a/tools/dom/src/native_DOMImplementation.dart
+++ b/tools/dom/src/native_DOMImplementation.dart
@@ -4,6 +4,32 @@
 
 part of html;
 
+class _Property {
+  _Property(this.name) :
+      _hasValue = false,
+      writable = false,
+      isMethod = false,
+      isOwn = true,
+      wasThrown = false;
+
+  bool get hasValue => _hasValue;
+  get value => _value;
+  set value(v) {
+    _value = v;
+    _hasValue = true;
+  }
+
+  final String name;
+  Function setter;
+  Function getter;
+  var _value;
+  bool _hasValue;
+  bool writable;
+  bool isMethod;
+  bool isOwn;
+  bool wasThrown;
+}
+
 class _ConsoleVariables {
   Map<String, Object> _data = new Map<String, Object>();
 
@@ -19,7 +45,8 @@
       member = member.substring(0, member.length - 1);
       _data[member] = invocation.positionalArguments[0];
     } else {
-      return Function.apply(_data[member], invocation.positionalArguments, invocation.namedArguments);
+      return Function.apply(_data[member], invocation.positionalArguments,
+          invocation.namedArguments);
     }
   }
 
@@ -28,7 +55,60 @@
   /**
    * List all variables currently defined.
    */
-  List variables() => _data.keys.toList(growable: false);
+  List variables() => _data.keys.toList();
+
+  void setVariable(String name, value) {
+    _data[name] = value;
+  }
+}
+
+/**
+ * Base class for invocation trampolines used to closurize methods, getters
+ * and setters.
+ */
+abstract class _Trampoline implements Function {
+  final ObjectMirror _receiver;
+  final MethodMirror _methodMirror;
+  final Symbol _selector;
+
+  _Trampoline(this._receiver, this._methodMirror, this._selector);
+}
+
+class _MethodTrampoline extends _Trampoline {
+  _MethodTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
+      Symbol selector) :
+      super(receiver, methodMirror, selector);
+
+  noSuchMethod(Invocation msg) {
+    if (msg.memberName != #call) return super.noSuchMethod(msg);
+    return _receiver.invoke(_selector,
+                            msg.positionalArguments,
+                            msg.namedArguments).reflectee;
+  }
+}
+
+/**
+ * Invocation trampoline class used to closurize getters.
+ */
+class _GetterTrampoline extends _Trampoline {
+  _GetterTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
+      Symbol selector) :
+      super(receiver, methodMirror, selector);
+
+  call() => _receiver.getField(_selector).reflectee;
+}
+
+/**
+ * Invocation trampoline class used to closurize setters.
+ */
+class _SetterTrampoline extends _Trampoline {
+  _SetterTrampoline(ObjectMirror receiver, MethodMirror methodMirror,
+      Symbol selector) :
+      super(receiver, methodMirror, selector);
+
+  call(value) {
+    _receiver.setField(_selector, value);
+  }
 }
 
 class _Utils {
@@ -82,6 +162,8 @@
 
   static Map createMap() => {};
 
+  static parseJson(String jsonSource) => const JsonDecoder().convert(jsonSource);
+
   static makeUnimplementedError(String fileName, int lineNo) {
     return new UnsupportedError('[info: $fileName:$lineNo]');
   }
@@ -105,11 +187,11 @@
     return element;
   }
 
-  static window() native "Utils_window";
-  static forwardingPrint(String message) native "Utils_forwardingPrint";
+  static window() => _blink.Blink_Utils.window();
+  static forwardingPrint(String message) => _blink.Blink_Utils.forwardingPrint(message);
   // TODO(vsm): Make this API compatible with spawnUri.  It should also
   // return a Future<Isolate>.
-  static spawnDomUri(String uri) native "Utils_spawnDomUri";
+  static spawnDomUri(String uri) => _blink.Blink_Utils.spawnDomUri(uri);
 
   // The following methods were added for debugger integration to make working
   // with the Dart C mirrors API simpler.
@@ -144,17 +226,6 @@
   static _ConsoleVariables _consoleTempVariables = new _ConsoleVariables();
 
   /**
-   * Header passed in from the Dartium Developer Tools when an expression is
-   * evaluated in the console as opposed to the watch window or another context
-   * that does not expect REPL support.
-   */
-  static const _CONSOLE_API_SUPPORT_HEADER =
-      'with ((console && console._commandLineAPI) || { __proto__: null }) {\n';
-  static bool expectsConsoleApi(String expression) {
-    return expression.indexOf(_CONSOLE_API_SUPPORT_HEADER) == 0;;
-  }
-
-  /**
    * Takes an [expression] and a list of [local] variable and returns an
    * expression for a closure with a body matching the original expression
    * where locals are passed in as arguments. Returns a list containing the
@@ -166,8 +237,7 @@
    * For example:
    * <code>
    * _consoleTempVariables = {'a' : someValue, 'b': someOtherValue}
-   * wrapExpressionAsClosure("${_CONSOLE_API_SUPPORT_HEADER}foo + bar + a",
-   *                         ["bar", 40, "foo", 2])
+   * wrapExpressionAsClosure("foo + bar + a", ["bar", 40, "foo", 2], true)
    * </code>
    * will return:
    * <code>
@@ -177,9 +247,8 @@
    * [_consoleTempVariables, 40, 2, someValue, someOtherValue]]
    * </code>
    */
-  static List wrapExpressionAsClosure(String expression, List locals) {
-    // FIXME: dartbug.com/10434 find a less fragile way to determine whether
-    // we need to strip off console API support added by InjectedScript.
+  static List wrapExpressionAsClosure(String expression, List locals,
+      bool includeCommandLineAPI) {
     var args = {};
     var sb = new StringBuffer("(");
     addArg(arg, value) {
@@ -198,10 +267,7 @@
       args[arg] = value;
     }
 
-    if (expectsConsoleApi(expression)) {
-      expression = expression.substring(expression.indexOf('\n') + 1);
-      expression = expression.substring(0, expression.lastIndexOf('\n'));
-
+    if (includeCommandLineAPI) {
       addArg("\$consoleVariables", _consoleTempVariables);
 
       // FIXME: use a real Dart tokenizer. The following regular expressions
@@ -258,13 +324,19 @@
     return [sb.toString(), args.values.toList(growable: false)];
   }
 
-  /**
-   * TODO(jacobr): this is a big hack to get around the fact that we are still
-   * passing some JS expression to the evaluate method even when in a Dart
-   * context.
-   */
-  static bool isJsExpression(String expression) =>
-    expression.startsWith("(function getCompletions");
+  static String _getShortSymbolName(Symbol symbol,
+                                    DeclarationMirror declaration) {
+    var name = MirrorSystem.getName(symbol);
+    if (declaration is MethodMirror) {
+      if (declaration.isSetter && name[name.length-1] == "=") {
+        return name.substring(0, name.length-1);
+      }
+      if (declaration.isConstructor) {
+        return name.substring(name.indexOf('.') + 1);
+      }
+    }
+    return name;
+  }
 
   /**
    * Returns a list of completions to use if the receiver is o.
@@ -303,97 +375,409 @@
   }
 
   /**
-   * Convenience helper to get the keys of a [Map] as a [List].
+   * Adds all candidate String completitions from [declarations] to [output]
+   * filtering based on [staticContext] and [includePrivate].
    */
-  static List getMapKeyList(Map map) => map.keys.toList();
-
- /**
-   * Returns the keys of an arbitrary Dart Map encoded as unique Strings.
-   * Keys that are strings are left unchanged except that the prefix ":" is
-   * added to disambiguate keys from other Dart members.
-   * Keys that are not strings have # followed by the index of the key in the map
-   * prepended to disambuguate. This scheme is simplistic but easy to encode and
-   * decode. The use case for this method is displaying all map keys in a human
-   * readable way in debugging tools.
-   */
-  static List<String> getEncodedMapKeyList(dynamic obj) {
-    if (obj is! Map) return null;
-
-    var ret = new List<String>();
-    int i = 0;
-    return obj.keys.map((key) {
-      var encodedKey;
-      if (key is String) {
-        encodedKey = ':$key';
-      } else {
-        // If the key isn't a string, return a guaranteed unique for this map
-        // string representation of the key that is still somewhat human
-        // readable.
-        encodedKey = '#${i}:$key';
+  static void _getCompletionsHelper(ClassMirror classMirror,
+      bool staticContext, LibraryMirror libraryMirror, Set<String> output) {
+    bool includePrivate = libraryMirror == classMirror.owner;
+    classMirror.declarations.forEach((symbol, declaration) {
+      if (!includePrivate && declaration.isPrivate) return;
+      if (declaration is VariableMirror) {
+        if (staticContext != declaration.isStatic) return;
+      } else if (declaration is MethodMirror) {
+        if (declaration.isOperator) return;
+        if (declaration.isConstructor) {
+          if (!staticContext) return;
+          var name = MirrorSystem.getName(declaration.constructorName);
+          if (name.isNotEmpty) output.add(name);
+          return;
+        }
+        if (staticContext != declaration.isStatic) return;
+      } else if (declaration is TypeMirror) {
+        return;
       }
-      i++;
-      return encodedKey;
-    }).toList(growable: false);
+      output.add(_getShortSymbolName(symbol, declaration));
+    });
+
+    if (!staticContext) {
+      for (var interface in classMirror.superinterfaces) {
+        _getCompletionsHelper(interface, staticContext,
+            libraryMirror, output);
+      }
+      if (classMirror.superclass != null) {
+        _getCompletionsHelper(classMirror.superclass, staticContext,
+            libraryMirror, output);
+      }
+    }
   }
 
-  static final RegExp _NON_STRING_KEY_REGEXP = new RegExp("^#(\\d+):(.+)\$");
+  static void _getLibraryCompletionsHelper(
+      LibraryMirror library, bool includePrivate, Set<String> output) {
+    library.declarations.forEach((symbol, declaration) {
+      if (!includePrivate && declaration.isPrivate) return;
+      output.add(_getShortSymbolName(symbol, declaration));
+    });
+  }
 
-  static _decodeKey(Map map, String key) {
-    // The key is a regular old String.
-    if (key.startsWith(':')) return key.substring(1);
+  static LibraryMirror getLibraryMirror(String url) =>
+      currentMirrorSystem().libraries[Uri.parse(url)];
 
-    var match = _NON_STRING_KEY_REGEXP.firstMatch(key);
-    if (match != null) {
-      int index = int.parse(match.group(1));
-      var iter = map.keys.skip(index);
-      if (iter.isNotEmpty) {
-        var ret = iter.first;
-        // Validate that the toString representation of the key matches what we
-        // expect. FIXME: throw an error if it does not.
-        assert(match.group(2) == '$ret');
-        return ret;
+  /**
+   * Get code completions for [o] only showing privates from [libraryUrl].
+   */
+  static List<String> getObjectCompletions(o, String libraryUrl) {
+    var classMirror;
+    bool staticContext;
+    if (o is Type) {
+      classMirror = reflectClass(o);
+      staticContext = true;
+    } else {
+      classMirror = reflect(o).type;
+      staticContext = false;
+    }
+    var names = new Set<String>();
+    getClassCompletions(classMirror, names, staticContext, libraryUrl);
+    return names.toList()..sort();
+  }
+
+  static void getClassCompletions(ClassMirror classMirror, Set<String> names,
+      bool staticContext, String libraryUrl) {
+    LibraryMirror libraryMirror = getLibraryMirror(libraryUrl);
+    _getCompletionsHelper(classMirror, staticContext, libraryMirror, names);
+  }
+
+  static List<String> getLibraryCompletions(String url) {
+    var names = new Set<String>();
+    _getLibraryCompletionsHelper(getLibraryMirror(url), true, names);
+    return names.toList();
+  }
+
+  /**
+   * Get valid code completitions from within a library and all libraries
+   * imported by that library.
+   */
+  static List<String> getLibraryCompletionsIncludingImports(String url) {
+    var names = new Set<String>();
+    var libraryMirror = getLibraryMirror(url);
+    _getLibraryCompletionsHelper(libraryMirror, true, names);
+    for (var dependency in libraryMirror.libraryDependencies) {
+      if (dependency.isImport) {
+        if (dependency.prefix == null) {
+          _getLibraryCompletionsHelper(dependency.targetLibrary, false, names);
+        } else {
+          names.add(MirrorSystem.getName(dependency.prefix));
+        }
       }
     }
+    return names.toList();
+  }
+
+  static final SIDE_EFFECT_FREE_LIBRARIES = new Set<String>()
+      ..add('dart:html')
+      ..add('dart:indexed_db')
+      ..add('dart:svg')
+      ..add('dart:typed_data')
+      ..add('dart:web_audio')
+      ..add('dart:web_gl')
+      ..add('dart:web_sql');
+
+  static LibraryMirror _getLibrary(MethodMirror methodMirror) {
+    var owner = methodMirror.owner;
+    if (owner is ClassMirror) {
+      return owner;
+    } else if (owner is LibraryMirror) {
+      return owner;
+    }
     return null;
   }
 
   /**
-   * Converts keys encoded with [getEncodedMapKeyList] to their actual keys.
+   * For parity with the JavaScript debugger, we treat some getters as if
+   * they are fields so that users can see their values immediately.
+   * This matches JavaScript's behavior for getters on DOM objects.
+   * In the future we should consider adding an annotation to tag getters
+   * in user libraries as side effect free.
    */
-  static lookupValueForEncodedMapKey(Map obj, String key) => obj[_decodeKey(obj, key)];
-
+  static bool _isSideEffectFreeGetter(MethodMirror methodMirror,
+      LibraryMirror libraryMirror) {
+    // This matches JavaScript behavior. We should consider displaying
+    // getters for all dart platform libraries rather than just the DOM
+    // libraries.
+    return libraryMirror.uri.scheme == 'dart' &&
+        SIDE_EFFECT_FREE_LIBRARIES.contains(libraryMirror.uri.toString());
+  }
+  
   /**
-   * Builds a constructor name with the form expected by the C Dart mirrors API.
+   * Whether we should treat a property as a field for the purposes of the
+   * debugger.
    */
-  static String buildConstructorName(String className, String constructorName) => '$className.$constructorName';
+  static bool treatPropertyAsField(MethodMirror methodMirror,
+      LibraryMirror libraryMirror) {
+    return (methodMirror.isGetter || methodMirror.isSetter) &&
+          (methodMirror.isSynthetic ||
+              _isSideEffectFreeGetter(methodMirror,libraryMirror));
+  }
 
-  /**
-   * Strips the class name from an expression of the form "className.someName".
-   */
-  static String stripClassName(String str, String className) {
-    if (str.length > className.length + 1 &&
-        str.startsWith(className) && str[className.length] == '.') {
-      return str.substring(className.length + 1);
-    } else {
-      return str;
+  // TODO(jacobr): generate more concise function descriptions instead of
+  // dumping the entire function source.
+  static String describeFunction(function) {
+    if (function is _Trampoline) return function._methodMirror.source;
+    try {
+      var mirror = reflect(function);
+      return mirror.function.source;
+    } catch (e) {
+      return function.toString();
+    }
+  }
+
+  static List getInvocationTrampolineDetails(_Trampoline method) {
+    var loc = method._methodMirror.location;
+    return [loc.line, loc.column, loc.sourceUri.toString(),
+        MirrorSystem.getName(method._selector)];
+  }
+
+  static List getLibraryProperties(String libraryUrl, bool ownProperties,
+      bool accessorPropertiesOnly) {
+    var properties = new Map<String, _Property>();
+    var libraryMirror = getLibraryMirror(libraryUrl);
+    _addInstanceMirrors(libraryMirror, libraryMirror,
+        libraryMirror.declarations,
+        ownProperties, accessorPropertiesOnly, false, false,
+        properties);
+    if (!accessorPropertiesOnly) {
+      // We need to add class properties for all classes in the library.
+      libraryMirror.declarations.forEach((symbol, declarationMirror) {
+        if (declarationMirror is ClassMirror) {
+          var name = MirrorSystem.getName(symbol);
+          if (declarationMirror.hasReflectedType
+              && !properties.containsKey(name)) {
+            properties[name] = new _Property(name)
+                ..value = declarationMirror.reflectedType;
+          }
+        }
+      });
+    }
+    return packageProperties(properties);
+  }
+
+  static List getObjectProperties(o, bool ownProperties,
+      bool accessorPropertiesOnly) {
+    var properties = new Map<String, _Property>();
+    var names = new Set<String>();
+    var objectMirror = reflect(o);
+    var classMirror = objectMirror.type;
+    _addInstanceMirrors(objectMirror, classMirror.owner,
+        classMirror.instanceMembers,
+        ownProperties, accessorPropertiesOnly, false, true,
+        properties);
+    return packageProperties(properties);
+  }
+
+  static List getObjectClassProperties(o, bool ownProperties,
+      bool accessorPropertiesOnly) {
+    var properties = new Map<String, _Property>();
+    var objectMirror = reflect(o);
+    var classMirror = objectMirror.type;
+    _addInstanceMirrors(objectMirror, classMirror.owner,
+        classMirror.instanceMembers,
+        ownProperties, accessorPropertiesOnly, true, false,
+        properties);
+    _addStatics(classMirror, properties, accessorPropertiesOnly);
+    return packageProperties(properties);
+  }
+
+  static List getClassProperties(Type t, bool ownProperties,
+      bool accessorPropertiesOnly) {
+    var properties = new Map<String, _Property>();
+    var classMirror = reflectClass(t);
+    _addStatics(classMirror, properties, accessorPropertiesOnly);
+    return packageProperties(properties);
+  }
+
+  static void _addStatics(ClassMirror classMirror,
+                          Map<String, _Property> properties,
+                          bool accessorPropertiesOnly) {
+    var libraryMirror = classMirror.owner;
+    classMirror.declarations.forEach((symbol, declaration) {
+      var name = _getShortSymbolName(symbol, declaration);
+      if (name.isEmpty) return;
+      if (declaration is VariableMirror) {
+        if (accessorPropertiesOnly) return;
+        if (!declaration.isStatic) return;
+        properties.putIfAbsent(name, () => new _Property(name))
+            ..value = classMirror.getField(symbol).reflectee
+            ..writable = !declaration.isFinal && !declaration.isConst;
+      } else if (declaration is MethodMirror) {
+        MethodMirror methodMirror = declaration;
+        // FIXMEDART: should we display constructors?
+        if (methodMirror.isConstructor) return;
+        if (!methodMirror.isStatic) return;
+        if (accessorPropertiesOnly) {
+          if (methodMirror.isRegularMethod ||
+              treatPropertyAsField(methodMirror, libraryMirror)) {
+            return;
+          }
+        } else if (!methodMirror.isRegularMethod &&
+            !treatPropertyAsField(methodMirror, libraryMirror)) {
+          return;
+        }
+        var property = properties.putIfAbsent(name, () => new _Property(name));
+        _fillMethodMirrorProperty(libraryMirror, classMirror, methodMirror,
+            symbol, accessorPropertiesOnly, property);
+      }
+    });
+  }
+
+  static void _fillMethodMirrorProperty(LibraryMirror libraryMirror,
+        methodOwner, MethodMirror methodMirror, Symbol symbol,
+        bool accessorPropertiesOnly, _Property property) {
+    if (methodMirror.isRegularMethod) {
+      property
+          ..value = new _MethodTrampoline(methodOwner, methodMirror, symbol)
+          ..isMethod = true;
+    } else if (methodMirror.isGetter) {
+      if (treatPropertyAsField(methodMirror, libraryMirror)) {
+        try {
+          property.value = methodOwner.getField(symbol).reflectee;
+        } catch (e) {
+          property
+              ..wasThrown = true
+              ..value = e;
+        }
+      } else if (accessorPropertiesOnly) {
+        property.getter = new _GetterTrampoline(methodOwner,
+            methodMirror, symbol);
+      }
+    } else if (methodMirror.isSetter) {
+      if (accessorPropertiesOnly &&
+          !treatPropertyAsField(methodMirror, libraryMirror)) {
+        property.setter = new _SetterTrampoline(methodOwner,
+            methodMirror, MirrorSystem.getSymbol(property.name, libraryMirror));
+      }
+      property.writable = true;
     }
   }
 
   /**
-   * Removes the trailing dot from an expression ending in a dot.
-   * This method is used as Library prefixes include a trailing dot when using
-   * the C Dart debugger API.
+   * Helper method that handles collecting up properties from classes
+   * or libraries using the filters [ownProperties], [accessorPropertiesOnly],
+   * [hideFields], and [hideMethods] to determine which properties are
+   * collected. [accessorPropertiesOnly] specifies whether all properties
+   * should be returned or just accessors. [hideFields] specifies whether
+   * fields should be hidden. hideMethods specifies whether methods should be
+   * shown or hidden. [ownProperties] is not currently used but is part of the
+   * Blink devtools API for enumerating properties.
    */
-  static String stripTrailingDot(String str) =>
-    (str != null && str[str.length - 1] == '.') ? str.substring(0, str.length - 1) : str;
-
-  static String addTrailingDot(String str) => '${str}.';
-
-  static String demangle(String str) {
-    var atPos = str.indexOf('@');
-    return atPos == -1 ? str : str.substring(0, atPos);
+  static void _addInstanceMirrors(
+      ObjectMirror objectMirror,
+      LibraryMirror libraryMirror,
+      Map<Symbol, Mirror> declarations,
+      bool ownProperties, bool accessorPropertiesOnly,
+      bool hideFields, bool hideMethods,
+      Map<String, _Property> properties) {
+    declarations.forEach((symbol, declaration) {
+      if (declaration is TypedefMirror || declaration is ClassMirror) return;
+      var name = _getShortSymbolName(symbol, declaration);
+      if (name.isEmpty) return;
+      bool isField = declaration is VariableMirror ||
+          (declaration is MethodMirror &&
+              treatPropertyAsField(declaration, libraryMirror));
+      if ((isField && hideFields) || (hideMethods && !isField)) return;
+      if (accessorPropertiesOnly) {
+        if (declaration is VariableMirror || declaration.isRegularMethod ||
+            isField) {
+          return;
+        }
+      } else if (declaration is MethodMirror &&
+          (declaration.isGetter || declaration.isSetter) &&
+          !treatPropertyAsField(declaration, libraryMirror)) {
+        return;
+      }
+      var property = properties.putIfAbsent(name, () => new _Property(name));
+      if (declaration is VariableMirror) {
+        property
+            ..value = objectMirror.getField(symbol).reflectee
+            ..writable = !declaration.isFinal && !declaration.isConst;
+        return;
+      }
+      _fillMethodMirrorProperty(libraryMirror, objectMirror, declaration,
+          symbol, accessorPropertiesOnly, property);
+    });
   }
 
+  /**
+   * Flatten down the properties data structure into a List that is easy to
+   * access from native code.
+   */
+  static List packageProperties(Map<String, _Property> properties) {
+    var ret = [];
+    for (var property in properties.values) {
+      ret.addAll([property.name,
+                  property.setter,
+                  property.getter,
+                  property.value,
+                  property.hasValue,
+                  property.writable,
+                  property.isMethod,
+                  property.isOwn,
+                  property.wasThrown]);
+    }
+    return ret;
+  }
+  
+  /**
+   * Get a property, returning null if the property does not exist.
+   * For private property names, we attempt to resolve the property in the
+   * context of each library that the property name could be associated with.
+   */
+  static getObjectPropertySafe(o, String propertyName) {
+    var objectMirror = reflect(o);
+    var classMirror = objectMirror.type;
+    if (propertyName.startsWith("_")) {
+      var attemptedLibraries = new Set<LibraryMirror>(); 
+      while (classMirror != null) {
+        LibraryMirror library = classMirror.owner;
+        if (!attemptedLibraries.contains(library)) {
+          try {
+            return objectMirror.getField(
+                MirrorSystem.getSymbol(propertyName, library)).reflectee;
+          } catch (e) { }
+          attemptedLibraries.add(library);
+        }
+        classMirror = classMirror.superclass;
+      }
+      return null;     
+    }
+    try {
+      return objectMirror.getField(
+          MirrorSystem.getSymbol(propertyName)).reflectee;
+    } catch (e) {
+      return null;
+    }
+  }
+
+  /**
+   * Helper to wrap the inspect method on InjectedScriptHost to provide the
+   * inspect method required for the 
+   */
+  static List consoleApi(host) {
+    return [
+        "inspect",
+        (o) {
+          host.inspect(o, null);
+          return o;
+        },
+        "dir",
+        window().console.dir,
+        "dirxml",
+        window().console.dirxml
+        // FIXME: add copy method.
+        ];
+  }
+
+  static List getMapKeyList(Map map) => map.keys.toList();
+
   static bool isNoSuchMethodError(obj) => obj is NoSuchMethodError;
 
   static void register(Document document, String tag, Type type,
@@ -411,13 +795,16 @@
   }
 
   static void _register(Document document, String tag, Type customType,
-      String extendsTagName) native "Utils_register";
+    String extendsTagName) => _blink.Blink_Utils.register(document, tag, customType, extendsTagName);
 
-  static Element createElement(Document document, String tagName) native "Utils_createElement";
+  static Element createElement(Document document, String tagName) =>
+    _blink.Blink_Utils.createElement(document, tagName);
 
-  static void initializeCustomElement(HtmlElement element) native "Utils_initializeCustomElement";
+  static void initializeCustomElement(HtmlElement element) =>
+    _blink.Blink_Utils.initializeCustomElement(element);
 
-  static Element changeElementWrapper(HtmlElement element, Type type) native "Utils_changeElementWrapper";
+  static Element changeElementWrapper(HtmlElement element, Type type) =>
+    _blink.Blink_Utils.changeElementWrapper(element, type);
 }
 
 class _DOMWindowCrossFrame extends NativeFieldWrapperClass2 implements
@@ -425,17 +812,17 @@
   _DOMWindowCrossFrame.internal();
 
   // Fields.
-  HistoryBase get history native "Window_history_cross_frame_Getter";
-  LocationBase get location native "Window_location_cross_frame_Getter";
-  bool get closed native "Window_closed_Getter";
-  int get length native "Window_length_Getter";
-  WindowBase get opener native "Window_opener_Getter";
-  WindowBase get parent native "Window_parent_Getter";
-  WindowBase get top native "Window_top_Getter";
+  HistoryBase get history => _blink.Blink_DOMWindowCrossFrame.get_history(this);
+  LocationBase get location => _blink.Blink_DOMWindowCrossFrame.get_location(this);
+  bool get closed => _blink.Blink_DOMWindowCrossFrame.get_closed(this);
+  WindowBase get opener => _blink.Blink_DOMWindowCrossFrame.get_opener(this);
+  WindowBase get parent => _blink.Blink_DOMWindowCrossFrame.get_parent(this);
+  WindowBase get top => _blink.Blink_DOMWindowCrossFrame.get_top(this);
 
   // Methods.
-  void close() native "Window_close_Callback";
-  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) native "Window_postMessage_Callback";
+  void close() => _blink.Blink_DOMWindowCrossFrame.close(this);
+  void postMessage(/*SerializedScriptValue*/ message, String targetOrigin, [List messagePorts]) =>
+    _blink.Blink_DOMWindowCrossFrame.postMessage(this, message, targetOrigin, messagePorts);
 
   // Implementation support.
   String get typeName => "Window";
@@ -444,6 +831,10 @@
   Events get on => throw new UnsupportedError(
     'You can only attach EventListeners to your own window.');
   // TODO(efortuna): Remove this method. dartbug.com/16814
+  void _addEventListener([String type, EventListener listener, bool useCapture])
+      => throw new UnsupportedError(
+    'You can only attach EventListeners to your own window.');
+  // TODO(efortuna): Remove this method. dartbug.com/16814
   void addEventListener(String type, EventListener listener, [bool useCapture])
       => throw new UnsupportedError(
     'You can only attach EventListeners to your own window.');
@@ -451,6 +842,10 @@
   bool dispatchEvent(Event event) => throw new UnsupportedError(
     'You can only attach EventListeners to your own window.');
   // TODO(efortuna): Remove this method. dartbug.com/16814
+  void _removeEventListener([String type, EventListener listener,
+      bool useCapture]) => throw new UnsupportedError(
+    'You can only attach EventListeners to your own window.');
+  // TODO(efortuna): Remove this method. dartbug.com/16814
   void removeEventListener(String type, EventListener listener,
       [bool useCapture]) => throw new UnsupportedError(
     'You can only attach EventListeners to your own window.');
@@ -460,9 +855,9 @@
   _HistoryCrossFrame.internal();
 
   // Methods.
-  void back() native "History_back_Callback";
-  void forward() native "History_forward_Callback";
-  void go(int distance) native "History_go_Callback";
+  void back() => _blink.Blink_HistoryCrossFrame.back(this);
+  void forward() => _blink.Blink_HistoryCrossFrame.forward(this);
+  void go(int distance) => _blink.Blink_HistoryCrossFrame.go(this, distance);
 
   // Implementation support.
   String get typeName => "History";
@@ -472,7 +867,7 @@
   _LocationCrossFrame.internal();
 
   // Fields.
-  void set href(String) native "Location_href_Setter";
+  void set href(String h) => _blink.Blink_LocationCrossFrame.set_href(this, h);
 
   // Implementation support.
   String get typeName => "Location";
@@ -482,14 +877,14 @@
   _DOMStringMap.internal();
 
   bool containsValue(String value) => Maps.containsValue(this, value);
-  bool containsKey(String key) native "DOMStringMap_containsKey_Callback";
-  String operator [](String key) native "DOMStringMap_item_Callback";
-  void operator []=(String key, String value) native "DOMStringMap_setItem_Callback";
+  bool containsKey(String key) => _blink.Blink_DOMStringMap.containsKey(this, key);
+  String operator [](String key) => _blink.Blink_DOMStringMap.item(this, key);
+  void operator []=(String key, String value) => _blink.Blink_DOMStringMap.setItem(this, key, value);
   String putIfAbsent(String key, String ifAbsent()) => Maps.putIfAbsent(this, key, ifAbsent);
-  String remove(String key) native "DOMStringMap_remove_Callback";
+  String remove(String key) => _blink.Blink_DOMStringMap.remove(this, key);
   void clear() => Maps.clear(this);
   void forEach(void f(String key, String value)) => Maps.forEach(this, f);
-  Iterable<String> get keys native "DOMStringMap_getKeys_Callback";
+  Iterable<String> get keys => _blink.Blink_DOMStringMap.get_keys(this);
   Iterable<String> get values => Maps.getValues(this);
   int get length => Maps.length(this);
   bool get isEmpty => Maps.isEmpty(this);
@@ -603,3 +998,7 @@
 void _initializeCustomElement(Element e) {
   _Utils.initializeCustomElement(e);
 }
+
+// Class for unsupported native browser 'DOM' objects.
+class _UnsupportedBrowserObject extends NativeFieldWrapperClass2 {
+}
diff --git a/tools/dom/templates/html/dartium/_blink_dartium.darttemplate b/tools/dom/templates/html/dartium/_blink_dartium.darttemplate
deleted file mode 100644
index eb09773..0000000
--- a/tools/dom/templates/html/dartium/_blink_dartium.darttemplate
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// DO NOT EDIT
-// Auto-generated dart:_blink library.
-
-/**
- * This library provides entry points to the native Blink code which backs
- * up the dart:html library.
- */
-library dart.dom._blink;
-
-part '$AUXILIARY_DIR/blink_native_DOMImplementation.dart';
-
-$!GENERATED_DART_FILES
-
diff --git a/tools/dom/templates/html/dartium/html_dartium.darttemplate b/tools/dom/templates/html/dartium/html_dartium.darttemplate
index e368fe1..348057d 100644
--- a/tools/dom/templates/html/dartium/html_dartium.darttemplate
+++ b/tools/dom/templates/html/dartium/html_dartium.darttemplate
@@ -89,7 +89,7 @@
 part '$AUXILIARY_DIR/dartium_WrappedEvent.dart';
 part '$AUXILIARY_DIR/shared_html.dart';
 
-part '$AUXILIARY_DIR/html_native_DOMImplementation.dart';
+part '$AUXILIARY_DIR/native_DOMImplementation.dart';
 
 Window _window;
 
diff --git a/tools/dom/templates/html/impl/impl_AbstractWorker.darttemplate b/tools/dom/templates/html/impl/impl_AbstractWorker.darttemplate
index d019184..8bb0f41 100644
--- a/tools/dom/templates/html/impl/impl_AbstractWorker.darttemplate
+++ b/tools/dom/templates/html/impl/impl_AbstractWorker.darttemplate
@@ -5,5 +5,5 @@
 part of $LIBRARYNAME;
 
 @DocsEditable()
-$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)abstract class $CLASSNAME$EXTENDS$MIXINS implements EventTarget {
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$MIXINS implements EventTarget {
 $!MEMBERS}
diff --git a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
index a78dca8..307d6b3 100644
--- a/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
+++ b/tools/dom/templates/html/impl/impl_WheelEvent.darttemplate
@@ -95,7 +95,7 @@
       'metaKey': metaKey,
       'relatedTarget': relatedTarget,
     };
-    return _blink.BlinkWheelEvent.constructorCallback(type, options);
+    return _blink.BlinkWheelEvent.constructorCallback_2(type, options);
 $endif
   }
 
diff --git a/tools/testing/dart/status_expression.dart b/tools/testing/dart/status_expression.dart
index 96396ea..5cd0a34 100644
--- a/tools/testing/dart/status_expression.dart
+++ b/tools/testing/dart/status_expression.dart
@@ -298,8 +298,8 @@
       return value;
     }
 
-    // The only atomic booleans are of the form $variable == value or the
-    // form $variable.
+    // The only atomic booleans are of the form $variable == value or
+    // of the form $variable.
     if (scanner.current != Token.DOLLAR_SYMBOL) {
       throw new FormatException(
           "Expected \$ in expression, got ${scanner.current}");
@@ -317,7 +317,7 @@
       scanner.advance();
       if (!new RegExp(r"^\w+$").hasMatch(scanner.current)) {
         throw new FormatException(
-            "Expected identifier in expression, got ${scanner.current}");
+            "Expected value in expression, got ${scanner.current}");
       }
       TermConstant right = new TermConstant(scanner.current);
       scanner.advance();